]>
git.proxmox.com Git - ceph.git/blob - ceph/src/c-ares/test/dns-proto-test.cc
9 TEST(DNSProto
, EncodeQuestions
) {
11 pkt
.set_qid(0x1234).set_response().set_aa()
12 .add_question(new DNSQuestion("example.com.", ns_t_a
))
13 .add_question(new DNSQuestion("www.example.com", ns_t_aaaa
, ns_c_chaos
));
15 std::vector
<byte
> data
= {
17 0x84, // response + query + AA + not-TC + not-RD
18 0x00, // not-RA + not-Z + not-AD + not-CD + rc=NoError
19 0x00, 0x02, // num questions
20 0x00, 0x00, // num answer RRs
21 0x00, 0x00, // num authority RRs
22 0x00, 0x00, // num additional RRs
24 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
28 0x00, 0x01, // class IN
31 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
34 0x00, 0x1C, // type AAAA = 28
35 0x00, 0x03, // class CHAOS = 3
37 EXPECT_EQ(data
, pkt
.data());
40 TEST(DNSProto
, EncodeSingleNameAnswers
) {
45 pkt
.opcode_
= ns_o_query
;
46 pkt
.add_answer(new DNSCnameRR("example.com", 0x01020304, "other.com."));
47 pkt
.add_auth(new DNSPtrRR("www.example.com", 0x01020304, "www.other.com"));
49 std::vector
<byte
> data
= {
51 0x84, // response + query + AA + not-TC + not-RD
52 0x00, // not-RA + not-Z + not-AD + not-CD + rc=NoError
53 0x00, 0x00, // num questions
54 0x00, 0x01, // num answer RRs
55 0x00, 0x01, // num authority RRs
56 0x00, 0x00, // num additional RRs
58 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
61 0x00, 0x05, // RR type
62 0x00, 0x01, // class IN
63 0x01, 0x02, 0x03, 0x04, // TTL
64 0x00, 0x0B, // rdata length
65 0x05, 'o', 't', 'h', 'e', 'r',
70 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
73 0x00, 0x0c, // RR type
74 0x00, 0x01, // class IN
75 0x01, 0x02, 0x03, 0x04, // TTL
76 0x00, 0x0F, // rdata length
78 0x05, 'o', 't', 'h', 'e', 'r',
82 EXPECT_EQ(data
, pkt
.data());
85 TEST(DNSProto
, EncodeAddressAnswers
) {
90 pkt
.opcode_
= ns_o_query
;
91 std::vector
<byte
> addrv4
= {0x02, 0x03, 0x04, 0x05};
92 pkt
.add_answer(new DNSARR("example.com", 0x01020304, addrv4
));
93 byte addrv6
[16] = {0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
94 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04};
95 pkt
.add_additional(new DNSAaaaRR("www.example.com", 0x01020304, addrv6
, 16));
97 std::vector
<byte
> data
= {
99 0x84, // response + query + AA + not-TC + not-RD
100 0x00, // not-RA + not-Z + not-AD + not-CD + rc=NoError
101 0x00, 0x00, // num questions
102 0x00, 0x01, // num answer RRs
103 0x00, 0x00, // num authority RRs
104 0x00, 0x01, // num additional RRs
106 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
109 0x00, 0x01, // RR type
110 0x00, 0x01, // class IN
111 0x01, 0x02, 0x03, 0x04, // TTL
112 0x00, 0x04, // rdata length
113 0x02, 0x03, 0x04, 0x05,
116 0x07, 'e', 'x', 'a', 'm', 'p', 'l', 'e',
119 0x00, 0x1c, // RR type
120 0x00, 0x01, // class IN
121 0x01, 0x02, 0x03, 0x04, // TTL
122 0x00, 0x10, // rdata length
123 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
124 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04
126 EXPECT_EQ(data
, pkt
.data());