1:
2:
3: /*********************
4: * *
5: * PROJECT INCLUDES *
6: * *
7: *********************/
8:
9:
10: #include "ex.h"
11: #include "rdata_mx.h"
12:
13:
14: /************************
15: * *
16: * RDATAMX CONSTRUCTOR *
17: * *
18: ************************/
19:
20:
21: RDataMX::RDataMX() {
22: m_llp = NULL;
23: }
24:
25:
26: /*****************
27: * *
28: * METHOD CLONE *
29: * *
30: *****************/
31:
32:
33: RDataPtr RDataMX::Clone() const {
34: RDataMX *rdpOut = new RDataMX;
35: rdpOut->m_llp = new LabelList(*m_llp);
36: return (RDataPtr)rdpOut;
37: }
38:
39:
40: /*******************
41: * *
42: * METHOD COMPARE *
43: * *
44: *******************/
45:
46:
47: bool RDataMX::Compare(const RData &ci_rdr) const {
48: const RDataMX *c_rdp = ci_rdr.As<RDataMX>();
49: if (c_rdp->m_us!=m_us) return false;
50: return (*(c_rdp->m_llp)==(*m_llp));
51: }
52:
53:
54: /****************
55: * *
56: * METHOD DUMP *
57: * *
58: ****************/
59:
60:
61: void RDataMX::Dump(ostream &io_smr) const {
62: io_smr << m_us << " " << m_llp;
63: }
64:
65:
66: /*******************
67: * *
68: * METHOD ISMATCH *
69: * *
70: *******************/
71:
72:
73: bool RDataMX::IsMatch(RRType i_ty, RRClass i_cl) {
74: // RFC 1035 says this is class-independent.
75: return (i_ty==TY_MX);
76: }
77:
78:
79: /*********************
80: * *
81: * METHOD READRDATA *
82: * *
83: *********************/
84:
85:
86: void RDataMX::ReadRData(BufferConstPtr ci_dpp) {
87: unsigned short usLength;
88:
89: ci_dpp->ReadNBO(usLength);
90: ci_dpp->ReadNBO(m_us);
91: ci_dpp->ReadLabelList(m_llp,true);
92: }
93:
94:
95: /********************
96: * *
97: * METHOD SETRDATA *
98: * *
99: ********************/
100:
101:
102: void RDataMX::SetRData(const char *ci_strRData) {
103: EX_MIND("RDataMX::SetRData: I was too lazy too implement this.");
104: }
105:
106:
107: /**********************
108: * *
109: * METHOD WRITERDATA *
110: * *
111: **********************/
112:
113:
114: void RDataMX::WriteRData(BufferPtr io_dpp) const {
115: unsigned short usLength;
116: off_t ofPos;
117:
118: ofPos = io_dpp->GetPos();
119: io_dpp->WriteNBO((unsigned short)0);
120: io_dpp->WriteNBO(m_us);
121: usLength = io_dpp->WriteLabelList(m_llp,true) + sizeof(m_us);
122: io_dpp->PWriteNBO(usLength,ofPos);
123: }
124:
125:
126: /***********************
127: * *
128: * RDATAMX DESTRUCTOR *
129: * *
130: ***********************/
131:
132:
133: RDataMX::~RDataMX() {
134: SoftDelete(m_llp);
135: }
136:
137:
138: