annotate http_resolver_aaaa.t @ 392:c28ecaef065f

Tests: try_run() introduced. This method replaces multiple ad-hoc solutions to grecefully skip tests if nginx startup fails, e.g., due to no support for a particular directive.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 18 Apr 2014 18:36:26 +0400
parents 82db241184e0
children 847ea345becb
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
27 plan(skip_all => 'no ipv6 capable resolver') unless $t->has_version('1.5.8');
352
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 $t->write_file_expand('nginx.conf', <<'EOF');
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 %%TEST_GLOBALS%%
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 daemon off;
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 events {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 http {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39 %%TEST_GLOBALS_HTTP%%
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 server {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 listen 127.0.0.1:8080;
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
43 listen [::1]:8080;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 server_name localhost;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 location / {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 resolver 127.0.0.1:8081;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 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
49
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
50 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
51 proxy_intercept_errors on;
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
52 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
53 error_page 504 502 /50x;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54 }
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
55 location /two {
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 resolver 127.0.0.1:8081 127.0.0.1:8082;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 proxy_pass http://$host:8080/backend;
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
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 location /backend {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 return 200;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 location /50x {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 return 200 $upstream_addr;
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
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69 EOF
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70
392
c28ecaef065f Tests: try_run() introduced.
Maxim Dounin <mdounin@mdounin.ru>
parents: 360
diff changeset
71 $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
72
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
73 $t->run_daemon(\&dns_daemon, 8081, $t);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
74 $t->run_daemon(\&dns_daemon, 8082, $t);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
75
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
76 $t->waitforfile($t->testdir . '/8081');
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
77 $t->waitforfile($t->testdir . '/8082');
352
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 ###############################################################################
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
81 my (@n, $response);
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
83 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
84 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
85 like(http_host_header('cname.example.net', '/'), qr/\[fe80::1\]/,
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86 'CNAME cached');
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
88 # 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
89 # 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
90
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
91 like(http_host_header('cname_a.example.net', '/'), qr/200 OK/, 'CNAME + AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
92
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
93 # many AAAA records in round robin
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
94 # nonexisting IPs enumerated with proxy_next_upstream
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
95
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
96 like(http_host_header('many.example.net', '/'),
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
97 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
98 'AAAA many');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
99
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
100 like(http_host_header('many.example.net', '/'),
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
101 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
102 'AAAA many cached');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
103
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
104 # 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
105 # 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
106
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 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
108
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
109 # now get correct response
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
111 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
112
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
113 # response is cached, actual request would get error
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
114
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
115 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
116
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
117 # various ipv4/ipv6 combinations
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
118
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
119 $response = http_host_header('z_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
120 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
121 like($response, qr/502 Bad/, 'zero zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
122
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
123 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
124 'zero AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
126 $response = http_host_header('z_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
127 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
128 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
129 like($response, qr/\[fe80::1\]:8080/, 'zero CNAME 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
130
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
131 $response = http_host_header('z_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
132 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
133 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
134 like($response, qr/\[fe80::2\]:8080/, 'zero CNAME+AAAA 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
136 $response = http_host_header('z_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
137 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
138 like($response, qr/502 Bad/, 'zero error');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
139
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
140 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
141 'A zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
143 $response = http_host_header('n_n.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
144 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
145 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
146 like($response, qr/\[fe80::1\]:8080/, 'A AAAA 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
148 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
149 'A CNAME');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
151 $response = http_host_header('n_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
152 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
153 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
154 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
155 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
156 like($response, qr/\[fe80::2\]:8080/, 'A CNAME+AAAA 4');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
158 $response = http_host_header('n_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
159 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
160 like($response, qr/502 Bad/, 'A error');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
161
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
162 $response = http_host_header('c_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
163 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
164 like($response, qr/502 Bad/, 'CNAME zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
165
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
166 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
167 'CNAME AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
169 $response = http_host_header('c_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
170 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
171 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
172 like($response, qr/\[fe80::1\]:8080/, 'CNAME CNAME 2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
174 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
175 'CNAME1 CNAME2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
176
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
177 $response = http_host_header('c_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
178 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
179 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
180 like($response, qr/\[fe80::2\]:8080/, 'CNAME CNAME+AAAA 1');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
181
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
182 $response = http_host_header('c_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
183 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
184 like($response, qr/502 Bad/, 'CNAME error');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
185
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
186 $response = http_host_header('cn_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
187 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
188 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
189 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
190
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
191 $response = http_host_header('cn_n.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
192 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
193 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
194 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
195 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
196 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
197
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
198 $response = http_host_header('cn_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
199 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
200 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
201 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
202
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
203 $response = http_host_header('cn_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
204 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
205 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
206 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
207 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
208 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
209
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
210 $response = http_host_header('cn_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
211 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
212 like($response, qr/502 Bad/, 'CNAME+A error');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
213
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
214 $response = http_host_header('e_z.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
215 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
216 like($response, qr/502 Bad/, 'error zero');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
218 $response = http_host_header('e_n.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
219 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
220 like($response, qr/502 Bad/, 'error AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
221
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
222 $response = http_host_header('e_c.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
223 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
224 like($response, qr/502 Bad/, 'error CNAME');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
225
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
226 $response = http_host_header('e_cn.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
227 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
228 like($response, qr/502 Bad/, 'error CNAME+AAAA');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
229
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
230 $response = http_host_header('e_e.example.net', '/');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
231 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
232 like($response, qr/502 Bad/, 'error error');
352
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
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236 sub http_host_header {
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
237 my ($host, $uri) = @_;
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
238 return http(<<EOF);
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
239 GET $uri HTTP/1.0
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
240 Host: $host
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
241
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
242 EOF
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
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
247 sub reply_handler {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
248 my ($recv_data, $port, $state) = @_;
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
249
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
250 my (@name, @rdata);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
251
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
252 use constant NOERROR => 0;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
253 use constant SERVFAIL => 2;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
254 use constant NXDOMAIN => 3;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
255
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
256 use constant A => 1;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
257 use constant CNAME => 5;
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
258 use constant AAAA => 28;
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
259 use constant DNAME => 39;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
260
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
261 use constant IN => 1;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
262
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
263 # default values
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
265 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
266
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
267 # decode name
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
268
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
269 my ($len, $offset) = (undef, 12);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
270 while (1) {
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
271 $len = unpack("\@$offset C", $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
272 last if $len == 0;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
273 $offset++;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
274 push @name, unpack("\@$offset A$len", $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
275 $offset += $len;
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
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
278 $offset -= 1;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
279 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
280
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
281 my $name = join('.', @name);
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
282 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
283 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
284 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
285 }
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
286
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
287 } elsif ($name eq 'alias2.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
288 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
289 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
290 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
291 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
292 push @rdata, rd_addr6($ttl, "fe80::1");
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
295 } elsif ($name eq 'alias4.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
296 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
297 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
298 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
299
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
300 } elsif ($name eq 'alias6.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
301 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
302 push @rdata, rd_addr6($ttl, "fe80::1");
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
305 } 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
306 $state->{manycnt}++;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
307 if ($state->{manycnt} > 1) {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
308 $rcode = SERVFAIL;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
309 }
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
310
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
311 push @rdata, rd_addr6($ttl, 'fe80::1');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
312 push @rdata, rd_addr6($ttl, 'fe80::2');
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
313
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
314 } 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
315 $state->{cnamecnt}++;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
316 if ($state->{cnamecnt} > 2) {
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
317 $rcode = SERVFAIL;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
318 }
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
319 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
320 8, 5, 'alias', 0xc012);
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
321
356
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
322 } elsif ($name eq 'cname_a.example.net') {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
323 push @rdata, pack("n3N nCa5n", 0xc00c, CNAME, IN, $ttl,
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
324 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
325
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
326 # points to "alias" set in previous rdata
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
327
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
328 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
329 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
330 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
331 }
356
7a472e46772c Tests: added http resolver test for CNAME + A combined answer.
Sergey Kandaurov <pluknet@nginx.com>
parents: 352
diff changeset
332
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
333 } elsif ($name eq '2.example.net') {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
334 if ($port == 8081) {
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
335 $state->{twocnt}++;
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
336 }
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
337 if ($state->{twocnt} & 1) {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
338 $rcode = SERVFAIL;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
339 }
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
340
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
341 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
342 push @rdata, rd_addr6($ttl, '::1');
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
345 } elsif ($name eq 'z_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
346 # assume no answers given
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
347
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
348 } elsif ($name eq 'z_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
349 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
350 push @rdata, rd_addr6($ttl, 'fe80::1');
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
353 } elsif ($name eq 'z_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
354 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
355 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
356 9, 6, 'alias2', 0xc010);
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
359 } elsif ($name eq 'z_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
360 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
361 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
362 8, 5, 'alias', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
363 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
364 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
365 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
366 16, expand_ip6("fe80::2"));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
369 } elsif ($name eq 'z_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
370 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
371 $rcode = SERVFAIL;
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
374 } 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
375 if ($type == A) {
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
376 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
377 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
378
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
379 } elsif ($name eq 'n_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
380 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
381 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
382 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
383 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
384 push @rdata, rd_addr6($ttl, 'fe80::1');
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
387 } elsif ($name eq 'n_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
388 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
389 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
390 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
391 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
392 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
393 9, 6, 'alias2', 0xc010);
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
396 } elsif ($name eq 'n_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
397 if ($type == A) {
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.201');
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
399 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
400 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
401 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
402 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
403 8, 5, 'alias', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
404 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
405 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
406 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
407 16, expand_ip6("fe80::2"));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
410 } elsif ($name eq 'n_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
411 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
412 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
413 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
414 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
415 $rcode = SERVFAIL;
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
418 } elsif ($name eq 'c_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
419 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
420 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
421 8, 5, 'alias', 0xc010);
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
424 } elsif ($name eq 'c_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
425 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
426 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
427 8, 5, 'alias', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
428 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
429 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
430 push @rdata, rd_addr6($ttl, "fe80::1");
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
433 } elsif ($name eq 'c_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
434 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
435 9, 6, 'alias2', 0xc010);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
436
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
437 } elsif ($name eq 'c1_c2.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
438 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
439 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
440 9, 6, 'alias4', 0xc012);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
441 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
442 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
443 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
444 9, 6, 'alias6', 0xc012);
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
447 } elsif ($name eq 'c_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
448 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
449 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
450
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
451 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
452 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
453 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
454 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
455 16, expand_ip6("fe80::2"));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
458 } elsif ($name eq 'cn_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
459 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
460 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
461 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
462 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
463 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
464 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
465 4, split('\.', '127.0.0.202'));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
468 } elsif ($name eq 'cn_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
469 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
470 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
471 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
472 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
473 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
474 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
475 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
476 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
477 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
478 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
479 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
480 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
481 16, expand_ip6("fe80::2"));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
484 } elsif ($name eq 'cn_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
485 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
486 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
487 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
488 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
489 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
490 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
491 4, split('\.', '127.0.0.202'));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
494 } elsif ($name eq 'cn_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
495 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
496 9, 6, 'alias2', 0xc012);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
497
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
498 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
499 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
500 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
501 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
502 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
503 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
504 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
505 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
506 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
507 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
508 16, expand_ip6("fe80::2"));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
511 } elsif ($name eq 'cn_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
512 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
513 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
514 9, 6, 'alias2', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
515 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
516 4, split('\.', '127.0.0.201'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
517 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
518 4, split('\.', '127.0.0.202'));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
519 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
520 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
521 $rcode = SERVFAIL;
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
525 } elsif ($name eq 'e_z.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
526 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
527 $rcode = SERVFAIL;
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
530 } elsif ($name eq 'e_n.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
531 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
532 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
533 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
534 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
535 push @rdata, rd_addr6($ttl, 'fe80::1');
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
538 } elsif ($name eq 'e_c.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
539 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
540 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
541 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
542 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
543 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
544 9, 6, 'alias2', 0xc010);
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
547 } elsif ($name eq 'e_cn.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
548 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
549 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
550 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
551 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
552 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
553 8, 5, 'alias', 0xc011);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
554 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
555 16, expand_ip6("fe80::1"));
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
556 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
557 16, expand_ip6("fe80::2"));
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
560 } elsif ($name eq 'e_e.example.net') {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
561 if ($type == A) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
562 $rcode = SERVFAIL;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
563 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
564 if ($type == AAAA) {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
565 $rcode = NXDOMAIN;
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
566 }
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
567 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
568
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
569 $len = @name;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
570 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
571 0, 0, @name, $type, $class) . join('', @rdata);
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
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
574 sub rd_addr {
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
575 my ($ttl, $addr) = @_;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
576
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
577 my $code = 'split(/\./, $addr)';
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
578
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
579 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
580 }
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
581
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
582 sub expand_ip6 {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
583 my ($addr) = @_;
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
584
360
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
585 substr ($addr, index($addr, "::"), 2) =
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
586 join "0", map { ":" } (0 .. 8 - (split /:/, $addr) + 1);
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
587 map { hex "0" x (4 - length $_) . "$_" } split /:/, $addr;
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
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
590 sub rd_addr6 {
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
591 my ($ttl, $addr) = @_;
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
592
82db241184e0 Tests: added AAAA specific resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 359
diff changeset
593 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
594 }
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
595
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
596 sub dns_daemon {
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
597 my ($port, $t) = @_;
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
598
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
599 my ($data, $recv_data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
600 my $socket = IO::Socket::INET->new(
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
601 LocalAddr => '127.0.0.1',
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
602 LocalPort => $port,
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
603 Proto => 'udp',
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
604 )
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
605 or die "Can't create listening socket: $!\n";
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
606
359
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
607 # 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
608
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
609 my %state = (
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
610 cnamecnt => 0,
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
611 twocnt => 0,
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
612 manycnt => 0,
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
613 );
cdab739eb6ea Tests: resolver tests enabled to work with AAAA capable resolver.
Sergey Kandaurov <pluknet@nginx.com>
parents: 357
diff changeset
614
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
615 # signal we are ready
352
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
616
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
617 open my $fh, '>', $t->testdir() . '/' . $port;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
618 close $fh;
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
619
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
620 while (1) {
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
621 $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
622 $data = reply_handler($recv_data, $port, \%state);
357
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
623 $socket->send($data);
e0c00e695cb5 Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents: 356
diff changeset
624 }
352
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
145c37f27c5a Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
627 ###############################################################################