annotate http_resolver_aaaa.t @ 747:50a0001a56f2

Tests: rethought 78b4e12e6efe to fix http_resolver_aaaa.t tests. Connecting to ::1 on solaris may get enormous time to complete, and instead of adjusting proxy_connect_timeout to get a connection, test the resolved address.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 20 Oct 2015 14:07:00 +0300
parents 78b4e12e6efe
children a6764c2a9f12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
6 # Tests for AAAA capable http resolver.
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 use lib 'lib';
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18 use Test::Nginx;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 ###############################################################################
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 select STDERR; $| = 1;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23 select STDOUT; $| = 1;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
25 my $t = Test::Nginx->new()->has(qw/http proxy rewrite ipv6/);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
26
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 $t->write_file_expand('nginx.conf', <<'EOF');
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29 %%TEST_GLOBALS%%
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31 daemon off;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33 events {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 http {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 %%TEST_GLOBALS_HTTP%%
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 server {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 listen 127.0.0.1:8080;
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
41 listen [::1]:8080;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server_name localhost;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 location / {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 resolver 127.0.0.1:8081;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 proxy_pass http://$host:8080/backend;
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
47
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
48 proxy_next_upstream http_504 timeout error;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
49 proxy_intercept_errors on;
747
50a0001a56f2 Tests: rethought 78b4e12e6efe to fix http_resolver_aaaa.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 734
diff changeset
50 proxy_connect_timeout 50ms;
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
51 error_page 504 502 /50x;
747
50a0001a56f2 Tests: rethought 78b4e12e6efe to fix http_resolver_aaaa.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 734
diff changeset
52 add_header X-Host $upstream_addr;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 }
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
54 location /two {
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 resolver 127.0.0.1:8081 127.0.0.1:8082;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 proxy_pass http://$host:8080/backend;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 location /backend {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 return 200;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 location /50x {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 return 200 $upstream_addr;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 EOF
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
392
c28ecaef065f Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents: 360
diff changeset
70 $t->try_run('no inet6 support')->plan(72);
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
71
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
72 $t->run_daemon(\&dns_daemon, 8081, $t);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
73 $t->run_daemon(\&dns_daemon, 8082, $t);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
74
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
75 $t->waitforfile($t->testdir . '/8081');
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
76 $t->waitforfile($t->testdir . '/8082');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 ###############################################################################
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
80 my (@n, $response);
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
82 like(http_host_header('aaaa.example.net', '/'), qr/\[fe80::1\]/, 'AAAA');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
83 like(http_host_header('cname.example.net', '/'), qr/\[fe80::1\]/, 'CNAME');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
84 like(http_host_header('cname.example.net', '/'), qr/\[fe80::1\]/,
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 'CNAME cached');
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
87 # CNAME + AAAA combined answer
356
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
88 # demonstrates the name in answer section different from what is asked
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
89
747
50a0001a56f2 Tests: rethought 78b4e12e6efe to fix http_resolver_aaaa.t tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 734
diff changeset
90 like(http_host_header('cname_a.example.net', '/'), qr/\[::1\]/, 'CNAME + AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
91
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
92 # many AAAA records in round robin
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
93 # nonexisting IPs enumerated with proxy_next_upstream
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
95 like(http_host_header('many.example.net', '/'),
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
96 qr/^\[fe80::(1\]:8080, \[fe80::2\]:8080|2\]:8080, \[fe80::1\]:8080)$/m,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
97 'AAAA many');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
98
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
99 like(http_host_header('many.example.net', '/'),
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
100 qr/^\[fe80::(1\]:8080, \[fe80::2\]:8080|2\]:8080, \[fe80::1\]:8080)$/m,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
101 'AAAA many cached');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
102
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
103 # tests for several resolvers specified in directive
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
104 # query bad ns, make sure that error responses are not cached
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106 like(http_host_header('2.example.net', '/two'), qr/502 Bad/, 'two ns bad');
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
108 # now get correct response
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 like(http_host_header('2.example.net', '/two'), qr/200 OK/, 'two ns good');
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
112 # response is cached, actual request would get error
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
113
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114 like(http_host_header('2.example.net', '/two'), qr/200 OK/, 'two ns cached');
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
116 # various ipv4/ipv6 combinations
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
117
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
118 $response = http_host_header('z_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
119 is(@n = $response =~ /8080/g, 0, 'zero zero responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
120 like($response, qr/502 Bad/, 'zero zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
122 like(http_host_header('z_n.example.net', '/'), qr/^\[fe80::1\]:8080$/ms,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
123 'zero AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
125 $response = http_host_header('z_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
126 is(@n = $response =~ /8080/g, 2, 'zero CNAME responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
127 like($response, qr/127.0.0.201:8080/, 'zero CNAME 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
128 like($response, qr/\[fe80::1\]:8080/, 'zero CNAME 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
130 $response = http_host_header('z_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
131 is(@n = $response =~ /8080/g, 2, 'zero CNAME+AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
132 like($response, qr/\[fe80::1\]:8080/, 'zero CNAME+AAAA 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
133 like($response, qr/\[fe80::2\]:8080/, 'zero CNAME+AAAA 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
134
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
135 $response = http_host_header('z_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
136 is(@n = $response =~ /8080/g, 0, 'zero error responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
137 like($response, qr/502 Bad/, 'zero error');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
138
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
139 like(http_host_header('n_z.example.net', '/'), qr/^127.0.0.201:8080$/ms,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
140 'A zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
142 $response = http_host_header('n_n.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
143 is(@n = $response =~ /8080/g, 2, 'A AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
144 like($response, qr/127.0.0.201:8080/, 'A AAAA 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
145 like($response, qr/\[fe80::1\]:8080/, 'A AAAA 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
147 like(http_host_header('n_c.example.net', '/'), qr/^127.0.0.201:8080$/ms,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
148 'A CNAME');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
150 $response = http_host_header('n_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
151 is(@n = $response =~ /8080/g, 4, 'A CNAME+AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
152 like($response, qr/127.0.0.201:8080/, 'A CNAME+AAAA 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
153 like($response, qr/127.0.0.202:8080/, 'A CNAME+AAAA 2');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
154 like($response, qr/\[fe80::1\]:8080/, 'A CNAME+AAAA 3');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
155 like($response, qr/\[fe80::2\]:8080/, 'A CNAME+AAAA 4');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
157 $response = http_host_header('n_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
158 is(@n = $response =~ /8080/g, 0, 'A error responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
159 like($response, qr/502 Bad/, 'A error');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
160
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
161 $response = http_host_header('c_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
162 is(@n = $response =~ /8080/g, 0, 'CNAME zero responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
163 like($response, qr/502 Bad/, 'CNAME zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
165 like(http_host_header('c_n.example.net', '/'), qr/^\[fe80::1\]:8080$/ms,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
166 'CNAME AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
168 $response = http_host_header('c_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
169 is(@n = $response =~ /8080/g, 2, 'CNAME CNAME responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
170 like($response, qr/127.0.0.201:8080/, 'CNAME CNAME 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
171 like($response, qr/\[fe80::1\]:8080/, 'CNAME CNAME 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
173 like(http_host_header('c1_c2.example.net', '/'), qr/^\[fe80::1\]:8080$/ms,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
174 'CNAME1 CNAME2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
175
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
176 $response = http_host_header('c_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
177 is(@n = $response =~ /8080/g, 2, 'CNAME CNAME+AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
178 like($response, qr/\[fe80::1\]:8080/, 'CNAME CNAME+AAAA 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
179 like($response, qr/\[fe80::2\]:8080/, 'CNAME CNAME+AAAA 1');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
181 $response = http_host_header('c_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
182 is(@n = $response =~ /8080/g, 0, 'CNAME error responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
183 like($response, qr/502 Bad/, 'CNAME error');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
185 $response = http_host_header('cn_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
186 is(@n = $response =~ /8080/g, 2, 'CNAME+A zero responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
187 like($response, qr/127.0.0.201:8080/, 'CNAME+A zero 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
188 like($response, qr/127.0.0.202:8080/, 'CNAME+A zero 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
189
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
190 $response = http_host_header('cn_n.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
191 is(@n = $response =~ /8080/g, 4, 'CNAME+A AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
192 like($response, qr/127.0.0.201:8080/, 'CNAME+A AAAA 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
193 like($response, qr/127.0.0.202:8080/, 'CNAME+A AAAA 2');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
194 like($response, qr/\[fe80::1\]:8080/, 'CNAME+A AAAA 3');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
195 like($response, qr/\[fe80::2\]:8080/, 'CNAME+A AAAA 4');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
196
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
197 $response = http_host_header('cn_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
198 is(@n = $response =~ /8080/g, 2, 'CNAME+A CNAME responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
199 like($response, qr/127.0.0.201:8080/, 'CNAME+A CNAME 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
200 like($response, qr/127.0.0.202:8080/, 'CNAME+A CNAME 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
201
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
202 $response = http_host_header('cn_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
203 is(@n = $response =~ /8080/g, 4, 'CNAME+A CNAME+AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
204 like($response, qr/127.0.0.201:8080/, 'CNAME+A CNAME+AAAA 1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
205 like($response, qr/127.0.0.202:8080/, 'CNAME+A CNAME+AAAA 2');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
206 like($response, qr/\[fe80::1\]:8080/, 'CNAME+A CNAME+AAAA 3');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
207 like($response, qr/\[fe80::2\]:8080/, 'CNAME+A CNAME+AAAA 4');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
208
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
209 $response = http_host_header('cn_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
210 is(@n = $response =~ /8080/g, 0, 'CNAME+A error responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
211 like($response, qr/502 Bad/, 'CNAME+A error');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
212
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
213 $response = http_host_header('e_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
214 is(@n = $response =~ /8080/g, 0, 'error zero responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
215 like($response, qr/502 Bad/, 'error zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
217 $response = http_host_header('e_n.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
218 is(@n = $response =~ /8080/g, 0, 'error AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
219 like($response, qr/502 Bad/, 'error AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
220
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
221 $response = http_host_header('e_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
222 is(@n = $response =~ /8080/g, 0, 'error CNAME responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
223 like($response, qr/502 Bad/, 'error CNAME');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
224
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
225 $response = http_host_header('e_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
226 is(@n = $response =~ /8080/g, 0, 'error CNAME+AAAA responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
227 like($response, qr/502 Bad/, 'error CNAME+AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
228
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
229 $response = http_host_header('e_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
230 is(@n = $response =~ /8080/g, 0, 'error error responses');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
231 like($response, qr/502 Bad/, 'error error');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
232
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
233 ###############################################################################
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
234
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
235 sub http_host_header {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236 my ($host, $uri) = @_;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
237 return http(<<EOF);
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
238 GET $uri HTTP/1.0
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
239 Host: $host
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
240
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
241 EOF
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
242 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
243
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
244 ###############################################################################
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
245
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
246 sub reply_handler {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
247 my ($recv_data, $port, $state) = @_;
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
248
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
249 my (@name, @rdata);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
250
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
251 use constant NOERROR => 0;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
252 use constant SERVFAIL => 2;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
253 use constant NXDOMAIN => 3;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
254
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
255 use constant A => 1;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
256 use constant CNAME => 5;
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
257 use constant AAAA => 28;
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
258 use constant DNAME => 39;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
259
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
260 use constant IN => 1;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
261
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
262 # default values
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
263
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
264 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
265
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
266 # decode name
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
267
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
268 my ($len, $offset) = (undef, 12);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
269 while (1) {
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
270 $len = unpack("\@$offset C", $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
271 last if $len == 0;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
272 $offset++;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
273 push @name, unpack("\@$offset A$len", $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
274 $offset += $len;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
275 }
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
276
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
277 $offset -= 1;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
278 my ($id, $type, $class) = unpack("n x$offset n2", $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
279
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
280 my $name = join('.', @name);
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
281 if (($name eq 'aaaa.example.net') || ($name eq 'alias.example.net')) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
282 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
283 push @rdata, rd_addr6($ttl, "fe80::1");
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
284 }
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
285
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
286 } elsif ($name eq 'alias2.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
287 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
288 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
289 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
290 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
291 push @rdata, rd_addr6($ttl, "fe80::1");
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
292 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
293
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
294 } elsif ($name eq 'alias4.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
295 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
296 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
297 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
298
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
299 } elsif ($name eq 'alias6.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
300 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
301 push @rdata, rd_addr6($ttl, "fe80::1");
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
302 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
303
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
304 } elsif (($name eq 'many.example.net') && $type == AAAA) {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
305 $state->{manycnt}++;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
306 if ($state->{manycnt} > 1) {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
307 $rcode = SERVFAIL;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
308 }
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
309
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
310 push @rdata, rd_addr6($ttl, 'fe80::1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
311 push @rdata, rd_addr6($ttl, 'fe80::2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
312
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
313 } elsif ($name eq 'cname.example.net') {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
314 $state->{cnamecnt}++;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
315 if ($state->{cnamecnt} > 2) {
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
316 $rcode = SERVFAIL;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
317 }
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
318 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
319 8, 5, 'alias', 0xc012);
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
320
356
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
321 } elsif ($name eq 'cname_a.example.net') {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
322 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
323 8, 5, 'alias', 0xc014);
356
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
324
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
325 # points to "alias" set in previous rdata
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
326
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
327 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
328 push @rdata, pack('n3N nn8', 0xc031, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
329 16, expand_ip6("::1"));
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
330 }
356
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
331
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
332 } elsif ($name eq '2.example.net') {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
333 if ($port == 8081) {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
334 $state->{twocnt}++;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
335 }
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
336 if ($state->{twocnt} & 1) {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
337 $rcode = SERVFAIL;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
338 }
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
339
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
340 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
341 push @rdata, rd_addr6($ttl, '::1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
342 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
343
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
344 } elsif ($name eq 'z_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
345 # assume no answers given
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
346
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
347 } elsif ($name eq 'z_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
348 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
349 push @rdata, rd_addr6($ttl, 'fe80::1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
350 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
351
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
352 } elsif ($name eq 'z_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
353 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
354 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
355 9, 6, 'alias2', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
356 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
357
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
358 } elsif ($name eq 'z_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
359 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
360 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
361 8, 5, 'alias', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
362 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
363 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
364 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
365 16, expand_ip6("fe80::2"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
366 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
367
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
368 } elsif ($name eq 'z_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
369 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
370 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
371 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
372
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
373 } elsif ($name eq 'n_z.example.net') {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
374 if ($type == A) {
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
375 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
376 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
377
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
378 } elsif ($name eq 'n_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
379 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
380 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
381 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
382 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
383 push @rdata, rd_addr6($ttl, 'fe80::1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
384 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
385
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
386 } elsif ($name eq 'n_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
387 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
388 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
389 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
390 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
391 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
392 9, 6, 'alias2', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
393 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
394
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
395 } elsif ($name eq 'n_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
396 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
397 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
398 push @rdata, rd_addr($ttl, '127.0.0.202');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
399 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
400 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
401 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
402 8, 5, 'alias', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
403 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
404 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
405 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
406 16, expand_ip6("fe80::2"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
407 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
408
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
409 } elsif ($name eq 'n_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
410 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
411 push @rdata, rd_addr($ttl, '127.0.0.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
412 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
413 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
414 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
415 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
416
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
417 } elsif ($name eq 'c_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
418 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
419 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
420 8, 5, 'alias', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
421 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
422
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
423 } elsif ($name eq 'c_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
424 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
425 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
426 8, 5, 'alias', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
427 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
428 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
429 push @rdata, rd_addr6($ttl, "fe80::1");
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
430 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
431
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
432 } elsif ($name eq 'c_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
433 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
434 9, 6, 'alias2', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
435
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
436 } elsif ($name eq 'c1_c2.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
437 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
438 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
439 9, 6, 'alias4', 0xc012);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
440 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
441 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
442 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
443 9, 6, 'alias6', 0xc012);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
444 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
445
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
446 } elsif ($name eq 'c_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
447 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
448 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
449
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
450 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
451 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
452 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
453 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
454 16, expand_ip6("fe80::2"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
455 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
456
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
457 } elsif ($name eq 'cn_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
458 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
459 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
460 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
461 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
462 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
463 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
464 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
465 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
466
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
467 } elsif ($name eq 'cn_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
468 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
469 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
470 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
471 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
472 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
473 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
474 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
475 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
476 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
477 push @rdata, pack('n3N nn8', 0xc00c, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
478 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
479 push @rdata, pack('n3N nn8', 0xc00c, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
480 16, expand_ip6("fe80::2"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
481 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
482
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
483 } elsif ($name eq 'cn_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
484 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
485 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
486 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
487 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
488 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
489 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
490 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
491 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
492
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
493 } elsif ($name eq 'cn_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
494 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
495 9, 6, 'alias2', 0xc012);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
496
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
497 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
498 push @rdata, pack("n3N nC4", 0xc02f, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
499 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
500 push @rdata, pack("n3N nC4", 0xc02f, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
501 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
502 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
503 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
504 push @rdata, pack('n3N nn8', 0xc02f, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
505 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
506 push @rdata, pack('n3N nn8', 0xc02f, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
507 16, expand_ip6("fe80::2"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
508 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
509
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
510 } elsif ($name eq 'cn_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
511 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
512 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
513 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
514 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
515 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
516 push @rdata, pack("n3N nC4", 0xc02e, A, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
517 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
518 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
519 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
520 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
521 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
522
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
523
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
524 } elsif ($name eq 'e_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
525 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
526 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
527 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
528
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
529 } elsif ($name eq 'e_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
530 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
531 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
532 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
533 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
534 push @rdata, rd_addr6($ttl, 'fe80::1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
535 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
536
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
537 } elsif ($name eq 'e_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
538 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
539 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
540 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
541 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
542 push @rdata, pack("n3N nCa6n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
543 9, 6, 'alias2', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
544 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
545
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
546 } elsif ($name eq 'e_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
547 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
548 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
549 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
550 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
551 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
552 8, 5, 'alias', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
553 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
554 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
555 push @rdata, pack('n3N nn8', 0xc02e, AAAA, IN, $ttl,
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
556 16, expand_ip6("fe80::2"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
557 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
558
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
559 } elsif ($name eq 'e_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
560 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
561 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
562 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
563 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
564 $rcode = NXDOMAIN;
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
565 }
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
566 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
567
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
568 $len = @name;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
569 pack("n6 (w/a*)$len x n2", $id, $hdr | $rcode, 1, scalar @rdata,
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
570 0, 0, @name, $type, $class) . join('', @rdata);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
571 }
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
572
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
573 sub rd_addr {
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
574 my ($ttl, $addr) = @_;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
575
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
576 my $code = 'split(/\./, $addr)';
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
577
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
578 pack 'n3N nC4', 0xc00c, A, IN, $ttl, eval "scalar $code", eval($code);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
579 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
580
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
581 sub expand_ip6 {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
582 my ($addr) = @_;
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
583
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
584 substr ($addr, index($addr, "::"), 2) =
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
585 join "0", map { ":" } (0 .. 8 - (split /:/, $addr) + 1);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
586 map { hex "0" x (4 - length $_) . "$_" } split /:/, $addr;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
587 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
588
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
589 sub rd_addr6 {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
590 my ($ttl, $addr) = @_;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
591
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
592 pack 'n3N nn8', 0xc00c, AAAA, IN, $ttl, 16, expand_ip6($addr);
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
593 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
594
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
595 sub dns_daemon {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
596 my ($port, $t) = @_;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
597
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
598 my ($data, $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
599 my $socket = IO::Socket::INET->new(
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
600 LocalAddr => '127.0.0.1',
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
601 LocalPort => $port,
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
602 Proto => 'udp',
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
603 )
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
604 or die "Can't create listening socket: $!\n";
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
605
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
606 # track number of relevant queries
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
607
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
608 my %state = (
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
609 cnamecnt => 0,
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
610 twocnt => 0,
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
611 manycnt => 0,
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
612 );
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
613
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
614 # signal we are ready
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
615
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
616 open my $fh, '>', $t->testdir() . '/' . $port;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
617 close $fh;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
618
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
619 while (1) {
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
620 $socket->recv($recv_data, 65536);
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
621 $data = reply_handler($recv_data, $port, \%state);
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
622 $socket->send($data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
623 }
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
624 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
625
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
626 ###############################################################################