17 for (
size_t ii = 0; ii <
data.size(); ii++) {
60 default:
return "UNKNOWN";
70 case NOTIMP:
return "NOTIMP";
80 default:
return "UNKNOWN";
87 case T_NS:
return "NS";
88 case T_MD:
return "MD";
89 case T_MF:
return "MF";
91 case T_SOA:
return "SOA";
92 case T_MB:
return "MB";
93 case T_MG:
return "MG";
94 case T_MR:
return "MR";
95 case T_NULL:
return "NULL";
96 case T_WKS:
return "WKS";
97 case T_PTR:
return "PTR";
100 case T_MX:
return "MX";
101 case T_TXT:
return "TXT";
102 case T_RP:
return "RP";
104 case T_X25:
return "X25";
105 case T_ISDN:
return "ISDN";
106 case T_RT:
return "RT";
107 case T_NSAP:
return "NSAP";
109 case T_SIG:
return "SIG";
110 case T_KEY:
return "KEY";
111 case T_PX:
return "PX";
112 case T_GPOS:
return "GPOS";
113 case T_AAAA:
return "AAAA";
114 case T_LOC:
return "LOC";
115 case T_NXT:
return "NXT";
116 case T_EID:
return "EID";
118 case T_SRV:
return "SRV";
119 case T_ATMA:
return "ATMA";
121 case T_KX:
return "KX";
122 case T_CERT:
return "CERT";
123 case T_A6:
return "A6";
125 case T_SINK:
return "SINK";
126 case T_OPT:
return "OPT";
127 case T_APL:
return "APL";
128 case T_DS:
return "DS";
131 case T_NSEC:
return "NSEC";
133 case T_TKEY:
return "TKEY";
134 case T_TSIG:
return "TSIG";
135 case T_IXFR:
return "IXFR";
136 case T_AXFR:
return "AXFR";
139 case T_ANY:
return "ANY";
140 case T_ZXFR:
return "ZXFR";
141 case T_MAX:
return "MAX";
142 default:
return "UNKNOWN";
148 case C_IN:
return "IN";
150 case C_HS:
return "HESIOD";
151 case C_NONE:
return "NONE";
152 case C_ANY:
return "ANY";
153 default:
return "UNKNOWN";
158 const byte*
addr =
reinterpret_cast<const byte*
>(vaddr);
159 std::stringstream ss;
162 sprintf(
buffer,
"%u.%u.%u.%u",
163 (
unsigned char)
addr[0],
164 (
unsigned char)
addr[1],
165 (
unsigned char)
addr[2],
166 (
unsigned char)
addr[3]);
168 }
else if (
len == 16) {
169 for (
int ii = 0; ii < 16; ii+=2) {
170 if (ii > 0) ss <<
':';
172 sprintf(
buffer,
"%02x%02x", (
unsigned char)
addr[ii], (
unsigned char)
addr[ii+1]);
182 const byte*
data = packet.data();
183 int len = packet.size();
184 std::stringstream ss;
186 ss <<
"(too short, len " <<
len <<
")";
191 case O_QUERY: ss <<
"QRY ";
break;
192 case O_IQUERY: ss <<
"IQRY ";
break;
193 case O_STATUS: ss <<
"STATUS ";
break;
194 case O_NOTIFY: ss <<
"NOTIFY ";
break;
195 case O_UPDATE: ss <<
"UPDATE ";
break;
212 for (
int ii = 0; ii < nquestions; ii++) {
215 const byte* prr = pq;
216 for (
int ii = 0; ii < nanswers; ii++) {
219 for (
int ii = 0; ii < nauths; ii++) {
222 for (
int ii = 0; ii < nadds; ii++) {
230 std::stringstream ss;
233 ss <<
"(too short, len " << *
len <<
")";
237 char *
name =
nullptr;
241 ss <<
"(error from ares_expand_name)";
245 ss <<
"(error, encoded name len " << enclen <<
"bigger than remaining data " << *
len <<
" bytes)";
250 ss <<
"'" <<
name <<
"' ";
253 ss <<
"(too short, len left " << *
len <<
")";
266 std::stringstream ss;
269 ss <<
"too short, len " << *
len <<
")";
273 char *
name =
nullptr;
277 ss <<
"(error from ares_expand_name)";
281 ss <<
"(error, encoded name len " << enclen <<
"bigger than remaining data " << *
len <<
" bytes)";
286 ss <<
"'" <<
name <<
"' ";
291 ss <<
"(too short, len left " << *
len <<
")";
295 if (rrtype ==
T_OPT) {
308 if (*
len < rdatalen) {
309 ss <<
"(RR too long at " << rdatalen <<
", len left " << *
len <<
")";
317 const byte* p = *
data;
318 while (p < (*
data + rdatalen)) {
320 if ((p +
len) <= (*
data + rdatalen)) {
322 ss <<
" " <<
len <<
":'" << txt <<
"'";
324 ss <<
"(string too long)";
335 ss <<
"(error from ares_expand_name)";
338 ss <<
" '" <<
name <<
"'";
346 ss <<
"(error from ares_expand_name)";
352 ss <<
"(RR too short)";
357 const byte* p = *
data;
364 ss <<
"(error from ares_expand_name)";
367 ss << prio <<
" " <<
weight <<
" " <<
port <<
" '" <<
name <<
"'";
370 ss <<
"(RR too short)";
375 const byte* p = *
data;
378 ss <<
"(error from ares_expand_name)";
381 ss <<
" '" <<
name <<
"'";
386 ss <<
"(error from ares_expand_name)";
389 ss <<
" '" <<
name <<
"'";
392 if ((p + 20) <= (*
data + rdatalen)) {
398 ss <<
" " << serial <<
" " << refresh <<
" " <<
retry <<
" " << expire <<
" " << minimum;
400 ss <<
"(RR too short)";
406 const byte* p = *
data;
410 ss << order <<
" " << pref;
424 ss <<
" '" << regexp <<
"'";
429 ss <<
"(error from ares_expand_name)";
432 ss <<
" '" <<
name <<
"'";
435 ss <<
"(RR too short)";
452 data->push_back((
value & 0xff000000) >> 24);
453 data->push_back((
value & 0x00ff0000) >> 16);
454 data->push_back((
value & 0x0000ff00) >> 8);
464 std::vector<byte>
data;
465 std::stringstream ss(
name);
468 while (std::getline(ss,
label,
'.')) {
477 std::vector<byte>
data;
479 data.insert(
data.end(), encname.begin(), encname.end());
494 int len = encname.size();
496 data.insert(
data.end(), encname.begin(), encname.end());
504 len += (1 + txt.size());
508 data.push_back(txt.size());
509 data.insert(
data.end(), txt.begin(), txt.end());
517 int len = 2 + encname.size();
520 data.insert(
data.end(), encname.begin(), encname.end());
527 int len = 6 + encname.size();
532 data.insert(
data.end(), encname.begin(), encname.end());
548 int len = encname1.size() + encname2.size() + 5*4;
550 data.insert(
data.end(), encname1.begin(), encname1.end());
551 data.insert(
data.end(), encname2.begin(), encname2.end());
564 len += (4 + opt.data_.size());
570 data.insert(
data.end(), opt.data_.begin(), opt.data_.end());
588 data.insert(
data.end(), encname.begin(), encname.end());
593 std::vector<byte>
data;
619 for (
const std::unique_ptr<DNSQuestion>& question :
questions_) {
620 std::vector<byte> qdata = question->data();
621 data.insert(
data.end(), qdata.begin(), qdata.end());
623 for (
const std::unique_ptr<DNSRR>& rr :
answers_) {
624 std::vector<byte> rrdata = rr->data();
625 data.insert(
data.end(), rrdata.begin(), rrdata.end());
627 for (
const std::unique_ptr<DNSRR>& rr :
auths_) {
628 std::vector<byte> rrdata = rr->data();
629 data.insert(
data.end(), rrdata.begin(), rrdata.end());
631 for (
const std::unique_ptr<DNSRR>& rr :
adds_) {
632 std::vector<byte> rrdata = rr->data();
633 data.insert(
data.end(), rrdata.begin(), rrdata.end());