dnsmasq: backport latest pre2.81 patches
[openwrt/openwrt.git] / package / network / services / dnsmasq / patches / 0003-Remove-ability-to-compile-without-IPv6-support.patch
1 From ee8750451b49d27b180517a4e35b636be0fae575 Mon Sep 17 00:00:00 2001
2 From: Simon Kelley <simon@thekelleys.org.uk>
3 Date: Tue, 23 Oct 2018 22:10:17 +0100
4 Subject: [PATCH 03/30] Remove ability to compile without IPv6 support.
5
6 This was the source of a large number of #ifdefs, originally
7 included for use with old embedded libc versions. I'm
8 sure no-one wants or needs IPv6-free code these days, so this
9 is a move towards more maintainable code.
10
11 Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
12 ---
13 src/arp.c | 13 ----------
14 src/auth.c | 53 ++++++++++----------------------------
15 src/bpf.c | 10 ++------
16 src/cache.c | 31 ++++------------------
17 src/config.h | 30 +++-------------------
18 src/conntrack.c | 2 --
19 src/dbus.c | 4 ---
20 src/dnsmasq.c | 6 ++---
21 src/dnsmasq.h | 20 ++-------------
22 src/domain.c | 28 +++-----------------
23 src/dump.c | 4 ---
24 src/edns0.c | 14 +---------
25 src/forward.c | 68 ++++---------------------------------------------
26 src/helper.c | 8 ------
27 src/ipset.c | 9 +------
28 src/netlink.c | 5 +---
29 src/network.c | 54 +++------------------------------------
30 src/option.c | 34 -------------------------
31 src/rfc1035.c | 50 +++++++-----------------------------
32 src/tables.c | 3 +--
33 src/tftp.c | 17 ++-----------
34 src/util.c | 13 +---------
35 22 files changed, 57 insertions(+), 419 deletions(-)
36
37 --- a/src/arp.c
38 +++ b/src/arp.c
39 @@ -44,11 +44,6 @@ static int filter_mac(int family, char *
40 if (maclen > DHCP_CHADDR_MAX)
41 return 1;
42
43 -#ifndef HAVE_IPV6
44 - if (family != AF_INET)
45 - return 1;
46 -#endif
47 -
48 /* Look for existing entry */
49 for (arp = arps; arp; arp = arp->next)
50 {
51 @@ -60,13 +55,11 @@ static int filter_mac(int family, char *
52 if (arp->addr.addr.addr4.s_addr != ((struct in_addr *)addrp)->s_addr)
53 continue;
54 }
55 -#ifdef HAVE_IPV6
56 else
57 {
58 if (!IN6_ARE_ADDR_EQUAL(&arp->addr.addr.addr6, (struct in6_addr *)addrp))
59 continue;
60 }
61 -#endif
62
63 if (arp->status == ARP_EMPTY)
64 {
65 @@ -103,10 +96,8 @@ static int filter_mac(int family, char *
66 memcpy(arp->hwaddr, mac, maclen);
67 if (family == AF_INET)
68 arp->addr.addr.addr4.s_addr = ((struct in_addr *)addrp)->s_addr;
69 -#ifdef HAVE_IPV6
70 else
71 memcpy(&arp->addr.addr.addr6, addrp, IN6ADDRSZ);
72 -#endif
73 }
74
75 return 1;
76 @@ -136,11 +127,9 @@ int find_mac(union mysockaddr *addr, uns
77 arp->addr.addr.addr4.s_addr != addr->in.sin_addr.s_addr)
78 continue;
79
80 -#ifdef HAVE_IPV6
81 if (arp->family == AF_INET6 &&
82 !IN6_ARE_ADDR_EQUAL(&arp->addr.addr.addr6, &addr->in6.sin6_addr))
83 continue;
84 -#endif
85
86 /* Only accept positive entries unless in lazy mode. */
87 if (arp->status != ARP_EMPTY || lazy || updated)
88 @@ -203,10 +192,8 @@ int find_mac(union mysockaddr *addr, uns
89
90 if (addr->sa.sa_family == AF_INET)
91 arp->addr.addr.addr4.s_addr = addr->in.sin_addr.s_addr;
92 -#ifdef HAVE_IPV6
93 else
94 memcpy(&arp->addr.addr.addr6, &addr->in6.sin6_addr, IN6ADDRSZ);
95 -#endif
96 }
97
98 return 0;
99 --- a/src/auth.c
100 +++ b/src/auth.c
101 @@ -33,10 +33,8 @@ static struct addrlist *find_addrlist(st
102 if (is_same_net(addr, list->addr.addr.addr4, netmask))
103 return list;
104 }
105 -#ifdef HAVE_IPV6
106 else if (is_same_net6(&(addr_u->addr.addr6), &list->addr.addr.addr6, list->prefixlen))
107 return list;
108 -#endif
109
110 } while ((list = list->next));
111
112 @@ -189,7 +187,6 @@ size_t answer_auth(struct dns_header *he
113 while (intr->next && strcmp(intr->intr, intr->next->intr) == 0)
114 intr = intr->next;
115 }
116 -#ifdef HAVE_IPV6
117 else if (flag == F_IPV6)
118 for (intr = daemon->int_names; intr; intr = intr->next)
119 {
120 @@ -205,7 +202,6 @@ size_t answer_auth(struct dns_header *he
121 while (intr->next && strcmp(intr->intr, intr->next->intr) == 0)
122 intr = intr->next;
123 }
124 -#endif
125
126 if (intr)
127 {
128 @@ -378,10 +374,8 @@ size_t answer_auth(struct dns_header *he
129 if (qtype == T_A)
130 flag = F_IPV4;
131
132 -#ifdef HAVE_IPV6
133 if (qtype == T_AAAA)
134 flag = F_IPV6;
135 -#endif
136
137 for (intr = daemon->int_names; intr; intr = intr->next)
138 if ((rc = hostname_issubdomain(name, intr->name)))
139 @@ -395,10 +389,9 @@ size_t answer_auth(struct dns_header *he
140 if (((addrlist->flags & ADDRLIST_IPV6) ? T_AAAA : T_A) == qtype &&
141 (local_query || filter_zone(zone, flag, &addrlist->addr)))
142 {
143 -#ifdef HAVE_IPV6
144 if (addrlist->flags & ADDRLIST_REVONLY)
145 continue;
146 -#endif
147 +
148 found = 1;
149 log_query(F_FORWARD | F_CONFIG | flag, name, &addrlist->addr, NULL);
150 if (add_resource_record(header, limit, &trunc, nameoffset, &ansp,
151 @@ -424,13 +417,11 @@ size_t answer_auth(struct dns_header *he
152
153 if (peer_addr->sa.sa_family == AF_INET)
154 peer_addr->in.sin_port = 0;
155 -#ifdef HAVE_IPV6
156 else
157 {
158 peer_addr->in6.sin6_port = 0;
159 peer_addr->in6.sin6_scope_id = 0;
160 }
161 -#endif
162
163 for (peers = daemon->auth_peers; peers; peers = peers->next)
164 if (sockaddr_isequal(peer_addr, &peers->addr))
165 @@ -442,10 +433,8 @@ size_t answer_auth(struct dns_header *he
166 {
167 if (peer_addr->sa.sa_family == AF_INET)
168 inet_ntop(AF_INET, &peer_addr->in.sin_addr, daemon->addrbuff, ADDRSTRLEN);
169 -#ifdef HAVE_IPV6
170 else
171 inet_ntop(AF_INET6, &peer_addr->in6.sin6_addr, daemon->addrbuff, ADDRSTRLEN);
172 -#endif
173
174 my_syslog(LOG_WARNING, _("ignoring zone transfer request from %s"), daemon->addrbuff);
175 return 0;
176 @@ -603,7 +592,6 @@ size_t answer_auth(struct dns_header *he
177 p += sprintf(p, "%u.in-addr.arpa", a & 0xff);
178
179 }
180 -#ifdef HAVE_IPV6
181 else
182 {
183 char *p = name;
184 @@ -617,7 +605,6 @@ size_t answer_auth(struct dns_header *he
185 p += sprintf(p, "ip6.arpa");
186
187 }
188 -#endif
189 }
190
191 /* handle NS and SOA in auth section or for explicit queries */
192 @@ -754,14 +741,12 @@ size_t answer_auth(struct dns_header *he
193 daemon->auth_ttl, NULL, T_A, C_IN, "4", cut ? intr->name : NULL, &addrlist->addr))
194 anscount++;
195
196 -#ifdef HAVE_IPV6
197 for (addrlist = intr->addr; addrlist; addrlist = addrlist->next)
198 if ((addrlist->flags & ADDRLIST_IPV6) &&
199 (local_query || filter_zone(zone, F_IPV6, &addrlist->addr)) &&
200 add_resource_record(header, limit, &trunc, -axfroffset, &ansp,
201 daemon->auth_ttl, NULL, T_AAAA, C_IN, "6", cut ? intr->name : NULL, &addrlist->addr))
202 anscount++;
203 -#endif
204
205 /* restore config data */
206 if (cut)
207 @@ -798,18 +783,11 @@ size_t answer_auth(struct dns_header *he
208 {
209 char *cache_name = cache_get_name(crecp);
210 if (!strchr(cache_name, '.') &&
211 - (local_query || filter_zone(zone, (crecp->flags & (F_IPV6 | F_IPV4)), &(crecp->addr.addr))))
212 - {
213 - qtype = T_A;
214 -#ifdef HAVE_IPV6
215 - if (crecp->flags & F_IPV6)
216 - qtype = T_AAAA;
217 -#endif
218 - if (add_resource_record(header, limit, &trunc, -axfroffset, &ansp,
219 - daemon->auth_ttl, NULL, qtype, C_IN,
220 - (crecp->flags & F_IPV4) ? "4" : "6", cache_name, &crecp->addr))
221 - anscount++;
222 - }
223 + (local_query || filter_zone(zone, (crecp->flags & (F_IPV6 | F_IPV4)), &(crecp->addr.addr))) &&
224 + add_resource_record(header, limit, &trunc, -axfroffset, &ansp,
225 + daemon->auth_ttl, NULL, (crecp->flags & F_IPV6) ? T_AAAA : T_A, C_IN,
226 + (crecp->flags & F_IPV4) ? "4" : "6", cache_name, &crecp->addr))
227 + anscount++;
228 }
229
230 if ((crecp->flags & F_HOSTS) || (((crecp->flags & F_DHCP) && option_bool(OPT_DHCP_FQDN))))
231 @@ -818,18 +796,13 @@ size_t answer_auth(struct dns_header *he
232 if (in_zone(zone, name, &cut) &&
233 (local_query || filter_zone(zone, (crecp->flags & (F_IPV6 | F_IPV4)), &(crecp->addr.addr))))
234 {
235 - qtype = T_A;
236 -#ifdef HAVE_IPV6
237 - if (crecp->flags & F_IPV6)
238 - qtype = T_AAAA;
239 -#endif
240 - if (cut)
241 - *cut = 0;
242 -
243 - if (add_resource_record(header, limit, &trunc, -axfroffset, &ansp,
244 - daemon->auth_ttl, NULL, qtype, C_IN,
245 - (crecp->flags & F_IPV4) ? "4" : "6", cut ? name : NULL, &crecp->addr))
246 - anscount++;
247 + if (cut)
248 + *cut = 0;
249 +
250 + if (add_resource_record(header, limit, &trunc, -axfroffset, &ansp,
251 + daemon->auth_ttl, NULL, (crecp->flags & F_IPV6) ? T_AAAA : T_A, C_IN,
252 + (crecp->flags & F_IPV4) ? "4" : "6", cut ? name : NULL, &crecp->addr))
253 + anscount++;
254 }
255 }
256 }
257 --- a/src/bpf.c
258 +++ b/src/bpf.c
259 @@ -31,9 +31,7 @@
260 # include <net/if_var.h>
261 #endif
262 #include <netinet/in_var.h>
263 -#ifdef HAVE_IPV6
264 -# include <netinet6/in6_var.h>
265 -#endif
266 +#include <netinet6/in6_var.h>
267
268 #ifndef SA_SIZE
269 #define SA_SIZE(sa) \
270 @@ -121,7 +119,7 @@ int iface_enumerate(int family, void *pa
271 if (getifaddrs(&head) == -1)
272 return 0;
273
274 -#if defined(HAVE_BSD_NETWORK) && defined(HAVE_IPV6)
275 +#if defined(HAVE_BSD_NETWORK)
276 if (family == AF_INET6)
277 fd = socket(PF_INET6, SOCK_DGRAM, 0);
278 #endif
279 @@ -152,7 +150,6 @@ int iface_enumerate(int family, void *pa
280 if (!((*callback)(addr, iface_index, NULL, netmask, broadcast, parm)))
281 goto err;
282 }
283 -#ifdef HAVE_IPV6
284 else if (family == AF_INET6)
285 {
286 struct in6_addr *addr = &((struct sockaddr_in6 *) addrs->ifa_addr)->sin6_addr;
287 @@ -219,7 +216,6 @@ int iface_enumerate(int family, void *pa
288 (int) preferred, (int)valid, parm)))
289 goto err;
290 }
291 -#endif /* HAVE_IPV6 */
292
293 #ifdef HAVE_DHCP6
294 else if (family == AF_LINK)
295 @@ -427,10 +423,8 @@ void route_sock(void)
296 del_family = sa->sa_family;
297 if (del_family == AF_INET)
298 del_addr.addr.addr4 = ((struct sockaddr_in *)sa)->sin_addr;
299 -#ifdef HAVE_IPV6
300 else if (del_family == AF_INET6)
301 del_addr.addr.addr6 = ((struct sockaddr_in6 *)sa)->sin6_addr;
302 -#endif
303 else
304 del_family = 0;
305 }
306 --- a/src/cache.c
307 +++ b/src/cache.c
308 @@ -410,11 +410,8 @@ static struct crec *cache_scan_free(char
309 else
310 {
311 int i;
312 -#ifdef HAVE_IPV6
313 int addrlen = (flags & F_IPV6) ? IN6ADDRSZ : INADDRSZ;
314 -#else
315 - int addrlen = INADDRSZ;
316 -#endif
317 +
318 for (i = 0; i < hash_size; i++)
319 for (crecp = hash_table[i], up = &hash_table[i];
320 crecp && ((crecp->flags & F_REVERSE) || !(crecp->flags & F_IMMORTAL));
321 @@ -512,11 +509,9 @@ static struct crec *really_insert(char *
322 if ((flags & F_IPV4) && (new->flags & F_IPV4) &&
323 new->addr.addr.addr.addr4.s_addr == addr->addr.addr4.s_addr)
324 return new;
325 -#ifdef HAVE_IPV6
326 else if ((flags & F_IPV6) && (new->flags & F_IPV6) &&
327 IN6_ARE_ADDR_EQUAL(&new->addr.addr.addr.addr6, &addr->addr.addr6))
328 return new;
329 -#endif
330 }
331
332 insert_error = 1;
333 @@ -938,11 +933,7 @@ struct crec *cache_find_by_addr(struct c
334 time_t now, unsigned int prot)
335 {
336 struct crec *ans;
337 -#ifdef HAVE_IPV6
338 int addrlen = (prot == F_IPV6) ? IN6ADDRSZ : INADDRSZ;
339 -#else
340 - int addrlen = INADDRSZ;
341 -#endif
342
343 if (crecp) /* iterating */
344 ans = crecp->next;
345 @@ -1171,14 +1162,12 @@ int read_hostsfile(char *filename, unsig
346 addrlen = INADDRSZ;
347 domain_suffix = get_domain(addr.addr.addr4);
348 }
349 -#ifdef HAVE_IPV6
350 else if (inet_pton(AF_INET6, token, &addr) > 0)
351 {
352 flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV6;
353 addrlen = IN6ADDRSZ;
354 domain_suffix = get_domain6(&addr.addr.addr6);
355 }
356 -#endif
357 else
358 {
359 my_syslog(LOG_ERR, _("bad address at %s line %d"), filename, lineno);
360 @@ -1343,7 +1332,7 @@ void cache_reload(void)
361 cache->flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV4 | F_NAMEP | F_CONFIG;
362 add_hosts_entry(cache, (struct all_addr *)&hr->addr, INADDRSZ, SRC_CONFIG, (struct crec **)daemon->packet, revhashsz);
363 }
364 -#ifdef HAVE_IPV6
365 +
366 if (!IN6_IS_ADDR_UNSPECIFIED(&hr->addr6) &&
367 (cache = whine_malloc(SIZEOF_POINTER_CREC)))
368 {
369 @@ -1352,7 +1341,6 @@ void cache_reload(void)
370 cache->flags = F_HOSTS | F_IMMORTAL | F_FORWARD | F_REVERSE | F_IPV6 | F_NAMEP | F_CONFIG;
371 add_hosts_entry(cache, (struct all_addr *)&hr->addr6, IN6ADDRSZ, SRC_CONFIG, (struct crec **)daemon->packet, revhashsz);
372 }
373 -#endif
374 }
375
376 if (option_bool(OPT_NO_HOSTS) && !daemon->addn_hosts)
377 @@ -1451,13 +1439,11 @@ void cache_add_dhcp_entry(char *host_nam
378 int in_hosts = 0;
379 size_t addrlen = sizeof(struct in_addr);
380
381 -#ifdef HAVE_IPV6
382 if (prot == AF_INET6)
383 {
384 flags = F_IPV6;
385 addrlen = sizeof(struct in6_addr);
386 }
387 -#endif
388
389 inet_ntop(prot, host_address, daemon->addrbuff, ADDRSTRLEN);
390
391 @@ -1810,10 +1796,8 @@ void dump_cache(time_t now)
392 a = daemon->addrbuff;
393 if (cache->flags & F_IPV4)
394 inet_ntop(AF_INET, &cache->addr.addr, a, ADDRSTRLEN);
395 -#ifdef HAVE_IPV6
396 else if (cache->flags & F_IPV6)
397 inet_ntop(AF_INET6, &cache->addr.addr, a, ADDRSTRLEN);
398 -#endif
399 }
400
401 if (cache->flags & F_IPV4)
402 @@ -1954,14 +1938,9 @@ void log_query(unsigned int flags, char
403 sprintf(daemon->addrbuff, "%u", rcode);
404 }
405 else
406 - {
407 -#ifdef HAVE_IPV6
408 - inet_ntop(flags & F_IPV4 ? AF_INET : AF_INET6,
409 - addr, daemon->addrbuff, ADDRSTRLEN);
410 -#else
411 - strncpy(daemon->addrbuff, inet_ntoa(addr->addr.addr4), ADDRSTRLEN);
412 -#endif
413 - }
414 + inet_ntop(flags & F_IPV4 ? AF_INET : AF_INET6,
415 + addr, daemon->addrbuff, ADDRSTRLEN);
416 +
417 }
418 else
419 dest = arg;
420 --- a/src/config.h
421 +++ b/src/config.h
422 @@ -131,7 +131,6 @@ HAVE_INOTIFY
423
424 NO_ID
425 Don't report *.bind CHAOS info to clients, forward such requests upstream instead.
426 -NO_IPV6
427 NO_TFTP
428 NO_DHCP
429 NO_DHCP6
430 @@ -141,8 +140,8 @@ NO_AUTH
431 NO_DUMPFILE
432 NO_INOTIFY
433 these are available to explicitly disable compile time options which would
434 - otherwise be enabled automatically (HAVE_IPV6, >2Gb file sizes) or
435 - which are enabled by default in the distributed source tree. Building dnsmasq
436 + otherwise be enabled automatically or which are enabled by default
437 + in the distributed source tree. Building dnsmasq
438 with something like "make COPTS=-DNO_SCRIPT" will do the trick.
439 NO_GMP
440 Don't use and link against libgmp, Useful if nettle is built with --enable-mini-gmp.
441 @@ -308,29 +307,9 @@ HAVE_SOCKADDR_SA_LEN
442
443 #endif
444
445 -/* Decide if we're going to support IPv6 */
446 -/* We assume that systems which don't have IPv6
447 - headers don't have ntop and pton either */
448 -
449 -#if defined(INET6_ADDRSTRLEN) && defined(IPV6_V6ONLY)
450 -# define HAVE_IPV6
451 -# define ADDRSTRLEN INET6_ADDRSTRLEN
452 -#else
453 -# if !defined(INET_ADDRSTRLEN)
454 -# define INET_ADDRSTRLEN 16 /* 4*3 + 3 dots + NULL */
455 -# endif
456 -# undef HAVE_IPV6
457 -# define ADDRSTRLEN INET_ADDRSTRLEN
458 -#endif
459 -
460 -
461 /* rules to implement compile-time option dependencies and
462 the NO_XXX flags */
463
464 -#ifdef NO_IPV6
465 -#undef HAVE_IPV6
466 -#endif
467 -
468 #ifdef NO_TFTP
469 #undef HAVE_TFTP
470 #endif
471 @@ -340,7 +319,7 @@ HAVE_SOCKADDR_SA_LEN
472 #undef HAVE_DHCP6
473 #endif
474
475 -#if defined(NO_DHCP6) || !defined(HAVE_IPV6)
476 +#if defined(NO_DHCP6)
477 #undef HAVE_DHCP6
478 #endif
479
480 @@ -385,9 +364,6 @@ HAVE_SOCKADDR_SA_LEN
481 #ifdef DNSMASQ_COMPILE_OPTS
482
483 static char *compile_opts =
484 -#ifndef HAVE_IPV6
485 -"no-"
486 -#endif
487 "IPv6 "
488 #ifndef HAVE_GETOPT_LONG
489 "no-"
490 --- a/src/conntrack.c
491 +++ b/src/conntrack.c
492 @@ -36,7 +36,6 @@ int get_incoming_mark(union mysockaddr *
493 nfct_set_attr_u8(ct, ATTR_L4PROTO, istcp ? IPPROTO_TCP : IPPROTO_UDP);
494 nfct_set_attr_u16(ct, ATTR_PORT_DST, htons(daemon->port));
495
496 -#ifdef HAVE_IPV6
497 if (peer_addr->sa.sa_family == AF_INET6)
498 {
499 nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET6);
500 @@ -45,7 +44,6 @@ int get_incoming_mark(union mysockaddr *
501 nfct_set_attr(ct, ATTR_IPV6_DST, local_addr->addr.addr6.s6_addr);
502 }
503 else
504 -#endif
505 {
506 nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET);
507 nfct_set_attr_u32(ct, ATTR_IPV4_SRC, peer_addr->in.sin_addr.s_addr);
508 --- a/src/dbus.c
509 +++ b/src/dbus.c
510 @@ -185,9 +185,6 @@ static void dbus_read_servers(DBusMessag
511 }
512 }
513
514 -#ifndef HAVE_IPV6
515 - my_syslog(LOG_WARNING, _("attempt to set an IPv6 server address via DBus - no IPv6 support"));
516 -#else
517 if (i == sizeof(struct in6_addr))
518 {
519 memcpy(&addr.in6.sin6_addr, p, sizeof(struct in6_addr));
520 @@ -202,7 +199,6 @@ static void dbus_read_servers(DBusMessag
521 source_addr.in6.sin6_port = htons(daemon->query_port);
522 skip = 0;
523 }
524 -#endif
525 }
526 else
527 /* At the end */
528 --- a/src/dnsmasq.c
529 +++ b/src/dnsmasq.c
530 @@ -1730,11 +1730,11 @@ static void check_dns_listeners(time_t n
531 indextoname(listener->tcpfd, if_index, intr_name))
532 {
533 struct all_addr addr;
534 - addr.addr.addr4 = tcp_addr.in.sin_addr;
535 -#ifdef HAVE_IPV6
536 +
537 if (tcp_addr.sa.sa_family == AF_INET6)
538 addr.addr.addr6 = tcp_addr.in6.sin6_addr;
539 -#endif
540 + else
541 + addr.addr.addr4 = tcp_addr.in.sin_addr;
542
543 for (iface = daemon->interfaces; iface; iface = iface->next)
544 if (iface->index == if_index)
545 --- a/src/dnsmasq.h
546 +++ b/src/dnsmasq.h
547 @@ -126,9 +126,7 @@ typedef unsigned long long u64;
548 #include <net/if_arp.h>
549 #include <netinet/in_systm.h>
550 #include <netinet/ip.h>
551 -#ifdef HAVE_IPV6
552 #include <netinet/ip6.h>
553 -#endif
554 #include <netinet/ip_icmp.h>
555 #include <sys/uio.h>
556 #include <syslog.h>
557 @@ -159,6 +157,8 @@ extern int capget(cap_user_header_t head
558 /* daemon is function in the C library.... */
559 #define daemon dnsmasq_daemon
560
561 +#define ADDRSTRLEN INET6_ADDRSTRLEN
562 +
563 /* Async event queue */
564 struct event_desc {
565 int event, data, msg_sz;
566 @@ -273,9 +273,7 @@ struct event_desc {
567 struct all_addr {
568 union {
569 struct in_addr addr4;
570 -#ifdef HAVE_IPV6
571 struct in6_addr addr6;
572 -#endif
573 /* for log_query */
574 struct {
575 unsigned short keytag, algo, digest;
576 @@ -383,9 +381,7 @@ struct host_record {
577 struct name_list *next;
578 } *names;
579 struct in_addr addr;
580 -#ifdef HAVE_IPV6
581 struct in6_addr addr6;
582 -#endif
583 struct host_record *next;
584 };
585
586 @@ -496,9 +492,7 @@ struct crec {
587 union mysockaddr {
588 struct sockaddr sa;
589 struct sockaddr_in in;
590 -#if defined(HAVE_IPV6)
591 struct sockaddr_in6 in6;
592 -#endif
593 };
594
595 /* bits in flag param to IPv6 callbacks from iface_enumerate() */
596 @@ -660,9 +654,7 @@ struct frec {
597 struct all_addr dest;
598 struct server *sentto; /* NULL means free */
599 struct randfd *rfd4;
600 -#ifdef HAVE_IPV6
601 struct randfd *rfd6;
602 -#endif
603 unsigned int iface;
604 unsigned short orig_id, new_id;
605 int log_id, fd, forwardall, flags;
606 @@ -877,9 +869,7 @@ struct dhcp_bridge {
607 struct cond_domain {
608 char *domain, *prefix;
609 struct in_addr start, end;
610 -#ifdef HAVE_IPV6
611 struct in6_addr start6, end6;
612 -#endif
613 int is6, indexed;
614 struct cond_domain *next;
615 };
616 @@ -1184,9 +1174,7 @@ void blockdata_free(struct blockdata *bl
617
618 /* domain.c */
619 char *get_domain(struct in_addr addr);
620 -#ifdef HAVE_IPV6
621 char *get_domain6(struct in6_addr *addr);
622 -#endif
623 int is_name_synthetic(int flags, char *name, struct all_addr *addr);
624 int is_rev_synth(int flag, struct all_addr *addr, char *name);
625
626 @@ -1270,11 +1258,9 @@ int hostname_issubdomain(char *a, char *
627 time_t dnsmasq_time(void);
628 int netmask_length(struct in_addr mask);
629 int is_same_net(struct in_addr a, struct in_addr b, struct in_addr mask);
630 -#ifdef HAVE_IPV6
631 int is_same_net6(struct in6_addr *a, struct in6_addr *b, int prefixlen);
632 u64 addr6part(struct in6_addr *addr);
633 void setaddr6part(struct in6_addr *addr, u64 host);
634 -#endif
635 int retry_send(ssize_t rc);
636 void prettyprint_time(char *buf, unsigned int t);
637 int prettyprint_addr(union mysockaddr *addr, char *buf);
638 @@ -1353,9 +1339,7 @@ int loopback_exception(int fd, int famil
639 int label_exception(int index, int family, struct all_addr *addr);
640 int fix_fd(int fd);
641 int tcp_interface(int fd, int af);
642 -#ifdef HAVE_IPV6
643 int set_ipv6pktinfo(int fd);
644 -#endif
645 #ifdef HAVE_DHCP6
646 void join_multicast(int dienow);
647 #endif
648 --- a/src/domain.c
649 +++ b/src/domain.c
650 @@ -18,21 +18,14 @@
651
652
653 static struct cond_domain *search_domain(struct in_addr addr, struct cond_domain *c);
654 -#ifdef HAVE_IPV6
655 static struct cond_domain *search_domain6(struct in6_addr *addr, struct cond_domain *c);
656 -#endif
657
658
659 int is_name_synthetic(int flags, char *name, struct all_addr *addr)
660 {
661 char *p;
662 struct cond_domain *c = NULL;
663 - int prot = AF_INET;
664 -
665 -#ifdef HAVE_IPV6
666 - if (flags & F_IPV6)
667 - prot = AF_INET6;
668 -#endif
669 + int prot = (flags & F_IPV6) ? AF_INET6 : AF_INET;
670
671 for (c = daemon->synth_domains; c; c = c->next)
672 {
673 @@ -83,8 +76,7 @@ int is_name_synthetic(int flags, char *n
674 addr->addr.addr4.s_addr = htonl(ntohl(c->start.s_addr) + index);
675 found = 1;
676 }
677 - }
678 -#ifdef HAVE_IPV6
679 + }
680 else
681 {
682 u64 index = atoll(tail);
683 @@ -98,7 +90,6 @@ int is_name_synthetic(int flags, char *n
684 found = 1;
685 }
686 }
687 -#endif
688 }
689 }
690 else
691 @@ -111,10 +102,8 @@ int is_name_synthetic(int flags, char *n
692 if ((c >='0' && c <= '9') || c == '-')
693 continue;
694
695 -#ifdef HAVE_IPV6
696 if (prot == AF_INET6 && ((c >='A' && c <= 'F') || (c >='a' && c <= 'f')))
697 continue;
698 -#endif
699
700 break;
701 }
702 @@ -124,7 +113,6 @@ int is_name_synthetic(int flags, char *n
703
704 *p = 0;
705
706 -#ifdef HAVE_IPV6
707 if (prot == AF_INET6 && strstr(tail, "--ffff-") == tail)
708 {
709 /* special hack for v4-mapped. */
710 @@ -134,7 +122,6 @@ int is_name_synthetic(int flags, char *n
711 *p = '.';
712 }
713 else
714 -#endif
715 {
716 /* swap . or : for - */
717 for (p = tail; *p; p++)
718 @@ -142,10 +129,8 @@ int is_name_synthetic(int flags, char *n
719 {
720 if (prot == AF_INET)
721 *p = '.';
722 -#ifdef HAVE_IPV6
723 else
724 *p = ':';
725 -#endif
726 }
727 }
728
729 @@ -158,7 +143,6 @@ int is_name_synthetic(int flags, char *n
730 ntohl(addr->addr.addr4.s_addr) <= ntohl(c->end.s_addr))
731 found = 1;
732 }
733 -#ifdef HAVE_IPV6
734 else
735 {
736 u64 addrpart = addr6part(&addr->addr.addr6);
737 @@ -169,7 +153,6 @@ int is_name_synthetic(int flags, char *n
738 addrpart <= addr6part(&c->end6))
739 found = 1;
740 }
741 -#endif
742 }
743
744 }
745 @@ -221,8 +204,7 @@ int is_rev_synth(int flag, struct all_ad
746 return 1;
747 }
748
749 -#ifdef HAVE_IPV6
750 - if (flag & F_IPV6 && (c = search_domain6(&addr->addr.addr6, daemon->synth_domains)))
751 + if ((flag & F_IPV6) && (c = search_domain6(&addr->addr.addr6, daemon->synth_domains)))
752 {
753 char *p;
754
755 @@ -259,7 +241,6 @@ int is_rev_synth(int flag, struct all_ad
756
757 return 1;
758 }
759 -#endif
760
761 return 0;
762 }
763 @@ -286,7 +267,7 @@ char *get_domain(struct in_addr addr)
764 return daemon->domain_suffix;
765 }
766
767 -#ifdef HAVE_IPV6
768 +
769 static struct cond_domain *search_domain6(struct in6_addr *addr, struct cond_domain *c)
770 {
771 u64 addrpart = addr6part(addr);
772 @@ -310,4 +291,3 @@ char *get_domain6(struct in6_addr *addr)
773
774 return daemon->domain_suffix;
775 }
776 -#endif
777 --- a/src/dump.c
778 +++ b/src/dump.c
779 @@ -82,10 +82,8 @@ void dump_init(void)
780 void dump_packet(int mask, void *packet, size_t len, union mysockaddr *src, union mysockaddr *dst)
781 {
782 struct ip ip;
783 -#ifdef HAVE_IPV6
784 struct ip6_hdr ip6;
785 int family;
786 -#endif
787 struct udphdr {
788 u16 uh_sport; /* source port */
789 u16 uh_dport; /* destination port */
790 @@ -105,7 +103,6 @@ void dump_packet(int mask, void *packet,
791 /* So wireshark can Id the packet. */
792 udp.uh_sport = udp.uh_dport = htons(NAMESERVER_PORT);
793
794 -#ifdef HAVE_IPV6
795 if (src)
796 family = src->sa.sa_family;
797 else
798 @@ -139,7 +136,6 @@ void dump_packet(int mask, void *packet,
799 sum += ((u16 *)&ip6.ip6_src)[i];
800 }
801 else
802 -#endif
803 {
804 iphdr = &ip;
805 ipsz = sizeof(ip);
806 --- a/src/edns0.c
807 +++ b/src/edns0.c
808 @@ -301,20 +301,14 @@ static size_t add_mac(struct dns_header
809
810 struct subnet_opt {
811 u16 family;
812 - u8 source_netmask, scope_netmask;
813 -#ifdef HAVE_IPV6
814 + u8 source_netmask, scope_netmask;
815 u8 addr[IN6ADDRSZ];
816 -#else
817 - u8 addr[INADDRSZ];
818 -#endif
819 };
820
821 static void *get_addrp(union mysockaddr *addr, const short family)
822 {
823 -#ifdef HAVE_IPV6
824 if (family == AF_INET6)
825 return &addr->in6.sin6_addr;
826 -#endif
827
828 return &addr->in.sin_addr;
829 }
830 @@ -330,7 +324,6 @@ static size_t calc_subnet_opt(struct sub
831 opt->source_netmask = 0;
832 opt->scope_netmask = 0;
833
834 -#ifdef HAVE_IPV6
835 if (source->sa.sa_family == AF_INET6 && daemon->add_subnet6)
836 {
837 opt->source_netmask = daemon->add_subnet6->mask;
838 @@ -342,7 +335,6 @@ static size_t calc_subnet_opt(struct sub
839 else
840 addrp = &source->in6.sin6_addr;
841 }
842 -#endif
843
844 if (source->sa.sa_family == AF_INET && daemon->add_subnet4)
845 {
846 @@ -356,11 +348,7 @@ static size_t calc_subnet_opt(struct sub
847 addrp = &source->in.sin_addr;
848 }
849
850 -#ifdef HAVE_IPV6
851 opt->family = htons(sa_family == AF_INET6 ? 2 : 1);
852 -#else
853 - opt->family = htons(1);
854 -#endif
855
856 len = 0;
857
858 --- a/src/forward.c
859 +++ b/src/forward.c
860 @@ -38,9 +38,7 @@ int send_from(int fd, int nowild, char *
861 #elif defined(IP_SENDSRCADDR)
862 char control[CMSG_SPACE(sizeof(struct in_addr))];
863 #endif
864 -#ifdef HAVE_IPV6
865 char control6[CMSG_SPACE(sizeof(struct in6_pktinfo))];
866 -#endif
867 } control_u;
868
869 iov[0].iov_base = packet;
870 @@ -79,7 +77,6 @@ int send_from(int fd, int nowild, char *
871 #endif
872 }
873 else
874 -#ifdef HAVE_IPV6
875 {
876 struct in6_pktinfo p;
877 p.ipi6_ifindex = iface; /* Need iface for IPv6 to handle link-local addrs */
878 @@ -89,9 +86,6 @@ int send_from(int fd, int nowild, char *
879 cmptr->cmsg_type = daemon->v6pktinfo;
880 cmptr->cmsg_level = IPPROTO_IPV6;
881 }
882 -#else
883 - (void)iface; /* eliminate warning */
884 -#endif
885 }
886
887 while (retry_send(sendmsg(fd, &msg, 0)));
888 @@ -144,10 +138,8 @@ static unsigned int search_servers(time_
889 flags = sflag;
890 if (serv->addr.sa.sa_family == AF_INET)
891 *addrpp = (struct all_addr *)&serv->addr.in.sin_addr;
892 -#ifdef HAVE_IPV6
893 else
894 *addrpp = (struct all_addr *)&serv->addr.in6.sin6_addr;
895 -#endif
896 }
897 else if (!flags || (flags & F_NXDOMAIN))
898 flags = F_NOERR;
899 @@ -204,10 +196,8 @@ static unsigned int search_servers(time_
900 flags = sflag;
901 if (serv->addr.sa.sa_family == AF_INET)
902 *addrpp = (struct all_addr *)&serv->addr.in.sin_addr;
903 -#ifdef HAVE_IPV6
904 else
905 *addrpp = (struct all_addr *)&serv->addr.in6.sin6_addr;
906 -#endif
907 }
908 else if (!flags || (flags & F_NXDOMAIN))
909 flags = F_NOERR;
910 @@ -236,10 +226,8 @@ static unsigned int search_servers(time_
911 /* handle F_IPV4 and F_IPV6 set on ANY query to 0.0.0.0/:: domain. */
912 if (flags & F_IPV4)
913 log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV6, qdomain, *addrpp, NULL);
914 -#ifdef HAVE_IPV6
915 if (flags & F_IPV6)
916 log_query((flags | F_CONFIG | F_FORWARD) & ~F_IPV4, qdomain, *addrpp, NULL);
917 -#endif
918 }
919 }
920 else if ((*type) & SERV_USE_RESOLV)
921 @@ -302,20 +290,17 @@ static int forward_query(int udpfd, unio
922
923 if (forward->sentto->addr.sa.sa_family == AF_INET)
924 log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, "retry", (struct all_addr *)&forward->sentto->addr.in.sin_addr, "dnssec");
925 -#ifdef HAVE_IPV6
926 else
927 log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, "retry", (struct all_addr *)&forward->sentto->addr.in6.sin6_addr, "dnssec");
928 -#endif
929 +
930
931 if (forward->sentto->sfd)
932 fd = forward->sentto->sfd->fd;
933 else
934 {
935 -#ifdef HAVE_IPV6
936 if (forward->sentto->addr.sa.sa_family == AF_INET6)
937 fd = forward->rfd6->fd;
938 else
939 -#endif
940 fd = forward->rfd4->fd;
941 }
942
943 @@ -475,7 +460,6 @@ static int forward_query(int udpfd, unio
944 fd = start->sfd->fd;
945 else
946 {
947 -#ifdef HAVE_IPV6
948 if (start->addr.sa.sa_family == AF_INET6)
949 {
950 if (!forward->rfd6 &&
951 @@ -485,7 +469,6 @@ static int forward_query(int udpfd, unio
952 fd = forward->rfd6->fd;
953 }
954 else
955 -#endif
956 {
957 if (!forward->rfd4 &&
958 !(forward->rfd4 = allocate_rfd(AF_INET)))
959 @@ -541,11 +524,9 @@ static int forward_query(int udpfd, unio
960 if (start->addr.sa.sa_family == AF_INET)
961 log_query(F_SERVER | F_IPV4 | F_FORWARD, daemon->namebuff,
962 (struct all_addr *)&start->addr.in.sin_addr, NULL);
963 -#ifdef HAVE_IPV6
964 else
965 log_query(F_SERVER | F_IPV6 | F_FORWARD, daemon->namebuff,
966 (struct all_addr *)&start->addr.in6.sin6_addr, NULL);
967 -#endif
968 start->queries++;
969 forwarded = 1;
970 forward->sentto = start;
971 @@ -788,11 +769,8 @@ void reply_query(int fd, int family, tim
972 daemon->srv_save = NULL;
973
974 /* Determine the address of the server replying so that we can mark that as good */
975 - serveraddr.sa.sa_family = family;
976 -#ifdef HAVE_IPV6
977 - if (serveraddr.sa.sa_family == AF_INET6)
978 + if ((serveraddr.sa.sa_family = family) == AF_INET6)
979 serveraddr.in6.sin6_flowinfo = 0;
980 -#endif
981
982 header = (struct dns_header *)daemon->packet;
983
984 @@ -878,7 +856,6 @@ void reply_query(int fd, int family, tim
985 fd = start->sfd->fd;
986 else
987 {
988 -#ifdef HAVE_IPV6
989 if (start->addr.sa.sa_family == AF_INET6)
990 {
991 /* may have changed family */
992 @@ -887,7 +864,6 @@ void reply_query(int fd, int family, tim
993 fd = forward->rfd6->fd;
994 }
995 else
996 -#endif
997 {
998 /* may have changed family */
999 if (!forward->rfd4)
1000 @@ -902,10 +878,8 @@ void reply_query(int fd, int family, tim
1001
1002 if (start->addr.sa.sa_family == AF_INET)
1003 log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, "retry", (struct all_addr *)&start->addr.in.sin_addr, "dnssec");
1004 -#ifdef HAVE_IPV6
1005 else
1006 log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, "retry", (struct all_addr *)&start->addr.in6.sin6_addr, "dnssec");
1007 -#endif
1008
1009 return;
1010 }
1011 @@ -1099,9 +1073,7 @@ void reply_query(int fd, int family, tim
1012
1013 new->sentto = server;
1014 new->rfd4 = NULL;
1015 -#ifdef HAVE_IPV6
1016 new->rfd6 = NULL;
1017 -#endif
1018 new->flags &= ~(FREC_DNSKEY_QUERY | FREC_DS_QUERY | FREC_HAS_EXTRADATA);
1019 new->forwardall = 0;
1020
1021 @@ -1125,11 +1097,9 @@ void reply_query(int fd, int family, tim
1022 if (server->addr.sa.sa_family == AF_INET)
1023 log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, daemon->keyname, (struct all_addr *)&(server->addr.in.sin_addr),
1024 querystr("dnssec-query", querytype));
1025 -#ifdef HAVE_IPV6
1026 else
1027 log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, daemon->keyname, (struct all_addr *)&(server->addr.in6.sin6_addr),
1028 querystr("dnssec-query", querytype));
1029 -#endif
1030
1031 if ((hash = hash_questions(header, nn, daemon->namebuff)))
1032 memcpy(new->hash, hash, HASH_SIZE);
1033 @@ -1147,14 +1117,12 @@ void reply_query(int fd, int family, tim
1034 else
1035 {
1036 fd = -1;
1037 -#ifdef HAVE_IPV6
1038 if (server->addr.sa.sa_family == AF_INET6)
1039 {
1040 if (new->rfd6 || (new->rfd6 = allocate_rfd(AF_INET6)))
1041 fd = new->rfd6->fd;
1042 }
1043 else
1044 -#endif
1045 {
1046 if (new->rfd4 || (new->rfd4 = allocate_rfd(AF_INET)))
1047 fd = new->rfd4->fd;
1048 @@ -1290,9 +1258,7 @@ void receive_query(struct listener *list
1049 struct cmsghdr *cmptr;
1050 union {
1051 struct cmsghdr align; /* this ensures alignment */
1052 -#ifdef HAVE_IPV6
1053 char control6[CMSG_SPACE(sizeof(struct in6_pktinfo))];
1054 -#endif
1055 #if defined(HAVE_LINUX_NETWORK)
1056 char control[CMSG_SPACE(sizeof(struct in_pktinfo))];
1057 #elif defined(IP_RECVDSTADDR) && defined(HAVE_SOLARIS_NETWORK)
1058 @@ -1303,12 +1269,8 @@ void receive_query(struct listener *list
1059 CMSG_SPACE(sizeof(struct sockaddr_dl))];
1060 #endif
1061 } control_u;
1062 -#ifdef HAVE_IPV6
1063 /* Can always get recvd interface for IPv6 */
1064 int check_dst = !option_bool(OPT_NOWILD) || listen->family == AF_INET6;
1065 -#else
1066 - int check_dst = !option_bool(OPT_NOWILD);
1067 -#endif
1068
1069 /* packet buffer overwritten */
1070 daemon->srv_save = NULL;
1071 @@ -1359,7 +1321,6 @@ void receive_query(struct listener *list
1072 if (source_addr.in.sin_port == 0)
1073 return;
1074 }
1075 -#ifdef HAVE_IPV6
1076 else
1077 {
1078 /* Source-port == 0 is an error, we can't send back to that. */
1079 @@ -1367,13 +1328,12 @@ void receive_query(struct listener *list
1080 return;
1081 source_addr.in6.sin6_flowinfo = 0;
1082 }
1083 -#endif
1084
1085 /* We can be configured to only accept queries from at-most-one-hop-away addresses. */
1086 if (option_bool(OPT_LOCAL_SERVICE))
1087 {
1088 struct addrlist *addr;
1089 -#ifdef HAVE_IPV6
1090 +
1091 if (listen->family == AF_INET6)
1092 {
1093 for (addr = daemon->interface_addrs; addr; addr = addr->next)
1094 @@ -1382,7 +1342,6 @@ void receive_query(struct listener *list
1095 break;
1096 }
1097 else
1098 -#endif
1099 {
1100 struct in_addr netmask;
1101 for (addr = daemon->interface_addrs; addr; addr = addr->next)
1102 @@ -1451,7 +1410,6 @@ void receive_query(struct listener *list
1103 }
1104 #endif
1105
1106 -#ifdef HAVE_IPV6
1107 if (listen->family == AF_INET6)
1108 {
1109 for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
1110 @@ -1467,7 +1425,6 @@ void receive_query(struct listener *list
1111 if_index = p.p->ipi6_ifindex;
1112 }
1113 }
1114 -#endif
1115
1116 /* enforce available interface configuration */
1117
1118 @@ -1531,11 +1488,9 @@ void receive_query(struct listener *list
1119 if (listen->family == AF_INET)
1120 log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff,
1121 (struct all_addr *)&source_addr.in.sin_addr, types);
1122 -#ifdef HAVE_IPV6
1123 else
1124 log_query(F_QUERY | F_IPV6 | F_FORWARD, daemon->namebuff,
1125 (struct all_addr *)&source_addr.in6.sin6_addr, types);
1126 -#endif
1127
1128 #ifdef HAVE_AUTH
1129 /* find queries for zones we're authoritative for, and answer them directly */
1130 @@ -1744,11 +1699,9 @@ static int tcp_key_recurse(time_t now, i
1131 if (server->addr.sa.sa_family == AF_INET)
1132 log_query(F_NOEXTRA | F_DNSSEC | F_IPV4, keyname, (struct all_addr *)&(server->addr.in.sin_addr),
1133 querystr("dnssec-query", new_status == STAT_NEED_KEY ? T_DNSKEY : T_DS));
1134 -#ifdef HAVE_IPV6
1135 else
1136 log_query(F_NOEXTRA | F_DNSSEC | F_IPV6, keyname, (struct all_addr *)&(server->addr.in6.sin6_addr),
1137 querystr("dnssec-query", new_status == STAT_NEED_KEY ? T_DNSKEY : T_DS));
1138 -#endif
1139
1140 server->flags |= SERV_GOT_TCP;
1141
1142 @@ -1813,11 +1766,10 @@ unsigned char *tcp_request(int confd, ti
1143 if (option_bool(OPT_CONNTRACK))
1144 {
1145 struct all_addr local;
1146 -#ifdef HAVE_IPV6
1147 +
1148 if (local_addr->sa.sa_family == AF_INET6)
1149 local.addr.addr6 = local_addr->in6.sin6_addr;
1150 else
1151 -#endif
1152 local.addr.addr4 = local_addr->in.sin_addr;
1153
1154 have_mark = get_incoming_mark(&peer_addr, &local, 1, &mark);
1155 @@ -1828,7 +1780,7 @@ unsigned char *tcp_request(int confd, ti
1156 if (option_bool(OPT_LOCAL_SERVICE))
1157 {
1158 struct addrlist *addr;
1159 -#ifdef HAVE_IPV6
1160 +
1161 if (peer_addr.sa.sa_family == AF_INET6)
1162 {
1163 for (addr = daemon->interface_addrs; addr; addr = addr->next)
1164 @@ -1837,7 +1789,6 @@ unsigned char *tcp_request(int confd, ti
1165 break;
1166 }
1167 else
1168 -#endif
1169 {
1170 struct in_addr netmask;
1171 for (addr = daemon->interface_addrs; addr; addr = addr->next)
1172 @@ -1892,11 +1843,9 @@ unsigned char *tcp_request(int confd, ti
1173 if (peer_addr.sa.sa_family == AF_INET)
1174 log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff,
1175 (struct all_addr *)&peer_addr.in.sin_addr, types);
1176 -#ifdef HAVE_IPV6
1177 else
1178 log_query(F_QUERY | F_IPV6 | F_FORWARD, daemon->namebuff,
1179 (struct all_addr *)&peer_addr.in6.sin6_addr, types);
1180 -#endif
1181
1182 #ifdef HAVE_AUTH
1183 /* find queries for zones we're authoritative for, and answer them directly */
1184 @@ -2072,11 +2021,9 @@ unsigned char *tcp_request(int confd, ti
1185 if (last_server->addr.sa.sa_family == AF_INET)
1186 log_query(F_SERVER | F_IPV4 | F_FORWARD, daemon->namebuff,
1187 (struct all_addr *)&last_server->addr.in.sin_addr, NULL);
1188 -#ifdef HAVE_IPV6
1189 else
1190 log_query(F_SERVER | F_IPV6 | F_FORWARD, daemon->namebuff,
1191 (struct all_addr *)&last_server->addr.in6.sin6_addr, NULL);
1192 -#endif
1193
1194 #ifdef HAVE_DNSSEC
1195 if (option_bool(OPT_DNSSEC_VALID) && !checking_disabled && (last_server->flags & SERV_DO_DNSSEC))
1196 @@ -2175,9 +2122,7 @@ static struct frec *allocate_frec(time_t
1197 f->sentto = NULL;
1198 f->rfd4 = NULL;
1199 f->flags = 0;
1200 -#ifdef HAVE_IPV6
1201 f->rfd6 = NULL;
1202 -#endif
1203 #ifdef HAVE_DNSSEC
1204 f->dependent = NULL;
1205 f->blocking_query = NULL;
1206 @@ -2237,11 +2182,8 @@ static void free_frec(struct frec *f)
1207 f->rfd4 = NULL;
1208 f->sentto = NULL;
1209 f->flags = 0;
1210 -
1211 -#ifdef HAVE_IPV6
1212 free_rfd(f->rfd6);
1213 f->rfd6 = NULL;
1214 -#endif
1215
1216 #ifdef HAVE_DNSSEC
1217 if (f->stash)
1218 --- a/src/helper.c
1219 +++ b/src/helper.c
1220 @@ -64,9 +64,7 @@ struct script_data
1221 #ifdef HAVE_TFTP
1222 off_t file_len;
1223 #endif
1224 -#ifdef HAVE_IPV6
1225 struct in6_addr addr6;
1226 -#endif
1227 #ifdef HAVE_DHCP6
1228 int iaid, vendorclass_count;
1229 #endif
1230 @@ -302,10 +300,8 @@ int create_helper(int event_fd, int err_
1231
1232 if (!is6)
1233 inet_ntop(AF_INET, &data.addr, daemon->addrbuff, ADDRSTRLEN);
1234 -#ifdef HAVE_IPV6
1235 else
1236 inet_ntop(AF_INET6, &data.addr6, daemon->addrbuff, ADDRSTRLEN);
1237 -#endif
1238
1239 #ifdef HAVE_TFTP
1240 /* file length */
1241 @@ -826,10 +822,8 @@ void queue_tftp(off_t file_len, char *fi
1242
1243 if ((buf->flags = peer->sa.sa_family) == AF_INET)
1244 buf->addr = peer->in.sin_addr;
1245 -#ifdef HAVE_IPV6
1246 else
1247 buf->addr6 = peer->in6.sin6_addr;
1248 -#endif
1249
1250 memcpy((unsigned char *)(buf+1), filename, filename_len);
1251
1252 @@ -851,10 +845,8 @@ void queue_arp(int action, unsigned char
1253 buf->hwaddr_type = ARPHRD_ETHER;
1254 if ((buf->flags = family) == AF_INET)
1255 buf->addr = addr->addr.addr4;
1256 -#ifdef HAVE_IPV6
1257 else
1258 buf->addr6 = addr->addr.addr6;
1259 -#endif
1260
1261 memcpy(buf->hwaddr, mac, maclen);
1262
1263 --- a/src/ipset.c
1264 +++ b/src/ipset.c
1265 @@ -120,13 +120,8 @@ static int new_add_to_ipset(const char *
1266 struct my_nfgenmsg *nfg;
1267 struct my_nlattr *nested[2];
1268 uint8_t proto;
1269 - int addrsz = INADDRSZ;
1270 + int addrsz = (af == AF_INET6) ? INADDRSZ : IN6ADDRSZ;
1271
1272 -#ifdef HAVE_IPV6
1273 - if (af == AF_INET6)
1274 - addrsz = IN6ADDRSZ;
1275 -#endif
1276 -
1277 if (strlen(setname) >= IPSET_MAXNAMELEN)
1278 {
1279 errno = ENAMETOOLONG;
1280 @@ -213,7 +208,6 @@ int add_to_ipset(const char *setname, co
1281 {
1282 int ret = 0, af = AF_INET;
1283
1284 -#ifdef HAVE_IPV6
1285 if (flags & F_IPV6)
1286 {
1287 af = AF_INET6;
1288 @@ -224,7 +218,6 @@ int add_to_ipset(const char *setname, co
1289 ret = -1;
1290 }
1291 }
1292 -#endif
1293
1294 if (ret != -1)
1295 ret = old_kernel ? old_add_to_ipset(setname, ipaddr, remove) : new_add_to_ipset(setname, ipaddr, af, remove);
1296 --- a/src/netlink.c
1297 +++ b/src/netlink.c
1298 @@ -51,11 +51,10 @@ void netlink_init(void)
1299 addr.nl_groups = RTMGRP_IPV4_ROUTE;
1300 if (option_bool(OPT_CLEVERBIND))
1301 addr.nl_groups |= RTMGRP_IPV4_IFADDR;
1302 -#ifdef HAVE_IPV6
1303 addr.nl_groups |= RTMGRP_IPV6_ROUTE;
1304 if (option_bool(OPT_CLEVERBIND))
1305 addr.nl_groups |= RTMGRP_IPV6_IFADDR;
1306 -#endif
1307 +
1308 #ifdef HAVE_DHCP6
1309 if (daemon->doing_ra || daemon->doing_dhcp6)
1310 addr.nl_groups |= RTMGRP_IPV6_IFADDR;
1311 @@ -235,7 +234,6 @@ int iface_enumerate(int family, void *pa
1312 if (!((*callback)(addr, ifa->ifa_index, label, netmask, broadcast, parm)))
1313 callback_ok = 0;
1314 }
1315 -#ifdef HAVE_IPV6
1316 else if (ifa->ifa_family == AF_INET6)
1317 {
1318 struct in6_addr *addrp = NULL;
1319 @@ -270,7 +268,6 @@ int iface_enumerate(int family, void *pa
1320 (int) preferred, (int)valid, parm)))
1321 callback_ok = 0;
1322 }
1323 -#endif
1324 }
1325 }
1326 else if (h->nlmsg_type == RTM_NEWNEIGH && family == AF_UNSPEC)
1327 --- a/src/network.c
1328 +++ b/src/network.c
1329 @@ -137,12 +137,10 @@ int iface_check(int family, struct all_a
1330 if (family == AF_INET &&
1331 tmp->addr.in.sin_addr.s_addr == addr->addr.addr4.s_addr)
1332 ret = match_addr = tmp->used = 1;
1333 -#ifdef HAVE_IPV6
1334 else if (family == AF_INET6 &&
1335 IN6_ARE_ADDR_EQUAL(&tmp->addr.in6.sin6_addr,
1336 &addr->addr.addr6))
1337 ret = match_addr = tmp->used = 1;
1338 -#endif
1339 }
1340 }
1341
1342 @@ -162,11 +160,9 @@ int iface_check(int family, struct all_a
1343 else if (addr && tmp->addr.sa.sa_family == AF_INET && family == AF_INET &&
1344 tmp->addr.in.sin_addr.s_addr == addr->addr.addr4.s_addr)
1345 break;
1346 -#ifdef HAVE_IPV6
1347 else if (addr && tmp->addr.sa.sa_family == AF_INET6 && family == AF_INET6 &&
1348 IN6_ARE_ADDR_EQUAL(&tmp->addr.in6.sin6_addr, &addr->addr.addr6))
1349 break;
1350 -#endif
1351
1352 if (tmp && auth)
1353 {
1354 @@ -200,11 +196,8 @@ int loopback_exception(int fd, int famil
1355 if (iface->addr.in.sin_addr.s_addr == addr->addr.addr4.s_addr)
1356 return 1;
1357 }
1358 -#ifdef HAVE_IPV6
1359 else if (IN6_ARE_ADDR_EQUAL(&iface->addr.in6.sin6_addr, &addr->addr.addr6))
1360 return 1;
1361 -#endif
1362 -
1363 }
1364 }
1365 return 0;
1366 @@ -292,19 +285,15 @@ static int iface_allowed(struct iface_pa
1367 al->addr.addr.addr4 = addr->in.sin_addr;
1368 al->flags = 0;
1369 }
1370 -#ifdef HAVE_IPV6
1371 else
1372 {
1373 al->addr.addr.addr6 = addr->in6.sin6_addr;
1374 al->flags = ADDRLIST_IPV6;
1375 }
1376 -#endif
1377 }
1378 }
1379
1380 -#ifdef HAVE_IPV6
1381 if (addr->sa.sa_family != AF_INET6 || !IN6_IS_ADDR_LINKLOCAL(&addr->in6.sin6_addr))
1382 -#endif
1383 {
1384 struct interface_name *int_name;
1385 struct addrlist *al;
1386 @@ -337,7 +326,6 @@ static int iface_allowed(struct iface_pa
1387 }
1388 }
1389
1390 -#ifdef HAVE_IPV6
1391 if (addr->sa.sa_family == AF_INET6 && (name->flags & AUTH6))
1392 {
1393 if (param->spare)
1394 @@ -357,8 +345,6 @@ static int iface_allowed(struct iface_pa
1395 al->flags = ADDRLIST_IPV6;
1396 }
1397 }
1398 -#endif
1399 -
1400 }
1401 #endif
1402
1403 @@ -386,7 +372,6 @@ static int iface_allowed(struct iface_pa
1404 al->addr.addr.addr4 = addr->in.sin_addr;
1405 al->flags = 0;
1406 }
1407 -#ifdef HAVE_IPV6
1408 else
1409 {
1410 al->addr.addr.addr6 = addr->in6.sin6_addr;
1411 @@ -396,7 +381,6 @@ static int iface_allowed(struct iface_pa
1412 if (!(iface_flags & IFACE_PERMANENT) || (iface_flags & (IFACE_DEPRECATED | IFACE_TENTATIVE)))
1413 al->flags |= ADDRLIST_REVONLY;
1414 }
1415 -#endif
1416 }
1417 }
1418 }
1419 @@ -438,11 +422,9 @@ static int iface_allowed(struct iface_pa
1420 !iface_check(AF_INET, (struct all_addr *)&addr->in.sin_addr, label, &auth_dns))
1421 return 1;
1422
1423 -#ifdef HAVE_IPV6
1424 if (addr->sa.sa_family == AF_INET6 &&
1425 !iface_check(AF_INET6, (struct all_addr *)&addr->in6.sin6_addr, label, &auth_dns))
1426 return 1;
1427 -#endif
1428
1429 #ifdef HAVE_DHCP
1430 /* No DHCP where we're doing auth DNS. */
1431 @@ -501,7 +483,6 @@ static int iface_allowed(struct iface_pa
1432 return 0;
1433 }
1434
1435 -#ifdef HAVE_IPV6
1436 static int iface_allowed_v6(struct in6_addr *local, int prefix,
1437 int scope, int if_index, int flags,
1438 int preferred, int valid, void *vparam)
1439 @@ -529,7 +510,6 @@ static int iface_allowed_v6(struct in6_a
1440
1441 return iface_allowed((struct iface_param *)vparam, if_index, NULL, &addr, netmask, prefix, flags);
1442 }
1443 -#endif
1444
1445 static int iface_allowed_v4(struct in_addr local, int if_index, char *label,
1446 struct in_addr netmask, struct in_addr broadcast, void *vparam)
1447 @@ -633,9 +613,7 @@ int enumerate_interfaces(int reset)
1448
1449 param.spare = spare;
1450
1451 -#ifdef HAVE_IPV6
1452 ret = iface_enumerate(AF_INET6, &param, iface_allowed_v6);
1453 -#endif
1454
1455 if (ret)
1456 ret = iface_enumerate(AF_INET, &param, iface_allowed_v4);
1457 @@ -740,10 +718,8 @@ static int make_sock(union mysockaddr *a
1458 if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1 || !fix_fd(fd))
1459 goto err;
1460
1461 -#ifdef HAVE_IPV6
1462 if (family == AF_INET6 && setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &opt, sizeof(opt)) == -1)
1463 goto err;
1464 -#endif
1465
1466 if ((rc = bind(fd, (struct sockaddr *)addr, sa_len(addr))) == -1)
1467 goto err;
1468 @@ -767,15 +743,12 @@ static int make_sock(union mysockaddr *a
1469 #endif
1470 }
1471 }
1472 -#ifdef HAVE_IPV6
1473 else if (!set_ipv6pktinfo(fd))
1474 goto err;
1475 -#endif
1476
1477 return fd;
1478 }
1479
1480 -#ifdef HAVE_IPV6
1481 int set_ipv6pktinfo(int fd)
1482 {
1483 int opt = 1;
1484 @@ -802,7 +775,6 @@ int set_ipv6pktinfo(int fd)
1485
1486 return 0;
1487 }
1488 -#endif
1489
1490
1491 /* Find the interface on which a TCP connection arrived, if possible, or zero otherwise. */
1492 @@ -842,7 +814,6 @@ int tcp_interface(int fd, int af)
1493 }
1494 }
1495 }
1496 -#ifdef HAVE_IPV6
1497 else
1498 {
1499 /* Only the RFC-2292 API has the ability to find the interface for TCP connections,
1500 @@ -874,7 +845,6 @@ int tcp_interface(int fd, int af)
1501 }
1502 }
1503 }
1504 -#endif /* IPV6 */
1505 #endif /* Linux */
1506
1507 return if_index;
1508 @@ -904,7 +874,6 @@ static struct listener *create_listeners
1509 tftpfd = make_sock(addr, SOCK_DGRAM, dienow);
1510 addr->in.sin_port = save;
1511 }
1512 -# ifdef HAVE_IPV6
1513 else
1514 {
1515 short save = addr->in6.sin6_port;
1516 @@ -912,7 +881,6 @@ static struct listener *create_listeners
1517 tftpfd = make_sock(addr, SOCK_DGRAM, dienow);
1518 addr->in6.sin6_port = save;
1519 }
1520 -# endif
1521 }
1522 #endif
1523
1524 @@ -945,11 +913,10 @@ void create_wildcard_listeners(void)
1525
1526 l = create_listeners(&addr, !!option_bool(OPT_TFTP), 1);
1527
1528 -#ifdef HAVE_IPV6
1529 memset(&addr, 0, sizeof(addr));
1530 -# ifdef HAVE_SOCKADDR_SA_LEN
1531 +#ifdef HAVE_SOCKADDR_SA_LEN
1532 addr.in6.sin6_len = sizeof(addr.in6);
1533 -# endif
1534 +#endif
1535 addr.in6.sin6_family = AF_INET6;
1536 addr.in6.sin6_addr = in6addr_any;
1537 addr.in6.sin6_port = htons(daemon->port);
1538 @@ -959,7 +926,6 @@ void create_wildcard_listeners(void)
1539 l->next = l6;
1540 else
1541 l = l6;
1542 -#endif
1543
1544 daemon->listeners = l;
1545 }
1546 @@ -1159,7 +1125,6 @@ int random_sock(int family)
1547 addr.in.sin_len = sizeof(struct sockaddr_in);
1548 #endif
1549 }
1550 -#ifdef HAVE_IPV6
1551 else
1552 {
1553 addr.in6.sin6_addr = in6addr_any;
1554 @@ -1168,7 +1133,6 @@ int random_sock(int family)
1555 addr.in6.sin6_len = sizeof(struct sockaddr_in6);
1556 #endif
1557 }
1558 -#endif
1559
1560 if (bind(fd, (struct sockaddr *)&addr, sa_len(&addr)) == 0)
1561 return fd;
1562 @@ -1193,10 +1157,8 @@ int local_bind(int fd, union mysockaddr
1563 {
1564 if (addr_copy.sa.sa_family == AF_INET)
1565 addr_copy.in.sin_port = 0;
1566 -#ifdef HAVE_IPV6
1567 else
1568 addr_copy.in6.sin6_port = 0;
1569 -#endif
1570 }
1571
1572 if (bind(fd, (struct sockaddr *)&addr_copy, sa_len(&addr_copy)) == -1)
1573 @@ -1211,7 +1173,7 @@ int local_bind(int fd, union mysockaddr
1574 return setsockopt(fd, IPPROTO_IP, IP_UNICAST_IF, &ifindex_opt, sizeof(ifindex_opt)) == 0;
1575 }
1576 #endif
1577 -#if defined(HAVE_IPV6) && defined (IPV6_UNICAST_IF)
1578 +#if defined (IPV6_UNICAST_IF)
1579 if (addr_copy.sa.sa_family == AF_INET6)
1580 {
1581 uint32_t ifindex_opt = htonl(ifindex);
1582 @@ -1247,12 +1209,10 @@ static struct serverfd *allocate_sfd(uni
1583 addr->in.sin_port == htons(0))
1584 return NULL;
1585
1586 -#ifdef HAVE_IPV6
1587 if (addr->sa.sa_family == AF_INET6 &&
1588 memcmp(&addr->in6.sin6_addr, &in6addr_any, sizeof(in6addr_any)) == 0 &&
1589 addr->in6.sin6_port == htons(0))
1590 return NULL;
1591 -#endif
1592 }
1593
1594 if (intname && strlen(intname) != 0)
1595 @@ -1315,7 +1275,7 @@ void pre_allocate_sfds(void)
1596 #endif
1597 if ((sfd = allocate_sfd(&addr, "")))
1598 sfd->preallocated = 1;
1599 -#ifdef HAVE_IPV6
1600 +
1601 memset(&addr, 0, sizeof(addr));
1602 addr.in6.sin6_family = AF_INET6;
1603 addr.in6.sin6_addr = in6addr_any;
1604 @@ -1325,7 +1285,6 @@ void pre_allocate_sfds(void)
1605 #endif
1606 if ((sfd = allocate_sfd(&addr, "")))
1607 sfd->preallocated = 1;
1608 -#endif
1609 }
1610
1611 for (srv = daemon->servers; srv; srv = srv->next)
1612 @@ -1658,7 +1617,6 @@ int reload_servers(char *fname)
1613 source_addr.in.sin_addr.s_addr = INADDR_ANY;
1614 source_addr.in.sin_port = htons(daemon->query_port);
1615 }
1616 -#ifdef HAVE_IPV6
1617 else
1618 {
1619 int scope_index = 0;
1620 @@ -1686,10 +1644,6 @@ int reload_servers(char *fname)
1621 else
1622 continue;
1623 }
1624 -#else /* IPV6 */
1625 - else
1626 - continue;
1627 -#endif
1628
1629 add_update_server(SERV_FROM_RESOLV, &addr, &source_addr, NULL, NULL);
1630 gotone = 1;
1631 --- a/src/option.c
1632 +++ b/src/option.c
1633 @@ -764,10 +764,8 @@ static char *parse_mysockaddr(char *arg,
1634 {
1635 if (inet_pton(AF_INET, arg, &addr->in.sin_addr) > 0)
1636 addr->sa.sa_family = AF_INET;
1637 -#ifdef HAVE_IPV6
1638 else if (inet_pton(AF_INET6, arg, &addr->in6.sin6_addr) > 0)
1639 addr->sa.sa_family = AF_INET6;
1640 -#endif
1641 else
1642 return _("bad address");
1643
1644 @@ -779,10 +777,8 @@ char *parse_server(char *arg, union myso
1645 int source_port = 0, serv_port = NAMESERVER_PORT;
1646 char *portno, *source;
1647 char *interface_opt = NULL;
1648 -#ifdef HAVE_IPV6
1649 int scope_index = 0;
1650 char *scope_id;
1651 -#endif
1652
1653 if (!arg || strlen(arg) == 0)
1654 {
1655 @@ -800,9 +796,7 @@ char *parse_server(char *arg, union myso
1656 !atoi_check16(portno, &serv_port))
1657 return _("bad port");
1658
1659 -#ifdef HAVE_IPV6
1660 scope_id = split_chr(arg, '%');
1661 -#endif
1662
1663 if (source) {
1664 interface_opt = split_chr(source, '@');
1665 @@ -846,7 +840,6 @@ char *parse_server(char *arg, union myso
1666 }
1667 }
1668 }
1669 -#ifdef HAVE_IPV6
1670 else if (inet_pton(AF_INET6, arg, &addr->in6.sin6_addr) > 0)
1671 {
1672 if (scope_id && (scope_index = if_nametoindex(scope_id)) == 0)
1673 @@ -881,7 +874,6 @@ char *parse_server(char *arg, union myso
1674 }
1675 }
1676 }
1677 -#endif
1678 else
1679 return _("bad address");
1680
1681 @@ -1914,10 +1906,8 @@ static int one_opt(int option, char *arg
1682 unhide_metas(arg);
1683 if (inet_pton(AF_INET, arg, &new->addr.in.sin_addr) > 0)
1684 new->addr.sa.sa_family = AF_INET;
1685 -#ifdef HAVE_IPV6
1686 else if (inet_pton(AF_INET6, arg, &new->addr.in6.sin6_addr) > 0)
1687 new->addr.sa.sa_family = AF_INET6;
1688 -#endif
1689 else
1690 {
1691 char *fam = split_chr(arg, '/');
1692 @@ -1927,10 +1917,8 @@ static int one_opt(int option, char *arg
1693 {
1694 if (strcmp(fam, "4") == 0)
1695 new->addr.sa.sa_family = AF_INET;
1696 -#ifdef HAVE_IPV6
1697 else if (strcmp(fam, "6") == 0)
1698 new->addr.sa.sa_family = AF_INET6;
1699 -#endif
1700 else
1701 ret_err(gen_err);
1702 }
1703 @@ -1996,14 +1984,12 @@ static int one_opt(int option, char *arg
1704 subnet->prefixlen = (prefixlen == 0) ? 24 : prefixlen;
1705 subnet->flags = ADDRLIST_LITERAL;
1706 }
1707 -#ifdef HAVE_IPV6
1708 else if (inet_pton(AF_INET6, arg, &addr.addr.addr6))
1709 {
1710 subnet = opt_malloc(sizeof(struct addrlist));
1711 subnet->prefixlen = (prefixlen == 0) ? 64 : prefixlen;
1712 subnet->flags = ADDRLIST_LITERAL | ADDRLIST_IPV6;
1713 }
1714 -#endif
1715 else
1716 {
1717 struct auth_name_list *name = opt_malloc(sizeof(struct auth_name_list));
1718 @@ -2015,10 +2001,8 @@ static int one_opt(int option, char *arg
1719 {
1720 if (prefixlen == 4)
1721 name->flags &= ~AUTH6;
1722 -#ifdef HAVE_IPV6
1723 else if (prefixlen == 6)
1724 name->flags &= ~AUTH4;
1725 -#endif
1726 else
1727 ret_err(gen_err);
1728 }
1729 @@ -2139,7 +2123,6 @@ static int one_opt(int option, char *arg
1730 }
1731 }
1732 }
1733 -#ifdef HAVE_IPV6
1734 else if (inet_pton(AF_INET6, comma, &new->start6))
1735 {
1736 u64 mask = (1LLU << (128 - msize)) - 1LLU;
1737 @@ -2183,7 +2166,6 @@ static int one_opt(int option, char *arg
1738 }
1739 }
1740 }
1741 -#endif
1742 else
1743 ret_err(gen_err);
1744 }
1745 @@ -2201,7 +2183,6 @@ static int one_opt(int option, char *arg
1746 else if (!inet_pton(AF_INET, arg, &new->end))
1747 ret_err(gen_err);
1748 }
1749 -#ifdef HAVE_IPV6
1750 else if (inet_pton(AF_INET6, comma, &new->start6))
1751 {
1752 new->is6 = 1;
1753 @@ -2210,7 +2191,6 @@ static int one_opt(int option, char *arg
1754 else if (!inet_pton(AF_INET6, arg, &new->end6))
1755 ret_err(gen_err);
1756 }
1757 -#endif
1758 else
1759 ret_err(gen_err);
1760
1761 @@ -2369,7 +2349,6 @@ static int one_opt(int option, char *arg
1762 new->addr.in.sin_len = sizeof(new->addr.in);
1763 #endif
1764 }
1765 -#ifdef HAVE_IPV6
1766 else if (arg && inet_pton(AF_INET6, arg, &new->addr.in6.sin6_addr) > 0)
1767 {
1768 new->addr.sa.sa_family = AF_INET6;
1769 @@ -2380,7 +2359,6 @@ static int one_opt(int option, char *arg
1770 new->addr.in6.sin6_len = sizeof(new->addr.in6);
1771 #endif
1772 }
1773 -#endif
1774 else
1775 ret_err(gen_err);
1776
1777 @@ -2493,9 +2471,7 @@ static int one_opt(int option, char *arg
1778 int size;
1779 struct server *serv;
1780 struct in_addr addr4;
1781 -#ifdef HAVE_IPV6
1782 struct in6_addr addr6;
1783 -#endif
1784
1785 unhide_metas(arg);
1786 if (!arg || !(comma=split(arg)) || !(string = split_chr(arg, '/')) || !atoi_check(string, &size))
1787 @@ -2507,10 +2483,8 @@ static int one_opt(int option, char *arg
1788 if (!serv)
1789 ret_err(_("bad prefix"));
1790 }
1791 -#ifdef HAVE_IPV6
1792 else if (inet_pton(AF_INET6, arg, &addr6))
1793 serv = add_rev6(&addr6, size);
1794 -#endif
1795 else
1796 ret_err(gen_err);
1797
1798 @@ -3863,10 +3837,8 @@ err:
1799 {
1800 if (strcmp(arg, "4") == 0)
1801 new->family = AF_INET;
1802 -#ifdef HAVE_IPV6
1803 else if (strcmp(arg, "6") == 0)
1804 new->family = AF_INET6;
1805 -#endif
1806 else
1807 ret_err(gen_err);
1808 }
1809 @@ -4156,10 +4128,8 @@ err:
1810 new->ttl = atoi(arg);
1811 else if (inet_pton(AF_INET, arg, &addr))
1812 new->addr = addr.addr.addr4;
1813 -#ifdef HAVE_IPV6
1814 else if (inet_pton(AF_INET6, arg, &addr))
1815 new->addr6 = addr.addr.addr6;
1816 -#endif
1817 else
1818 {
1819 int nomem;
1820 @@ -4866,10 +4836,8 @@ void read_opts(int argc, char **argv, ch
1821 {
1822 if (tmp->source_addr.sa.sa_family == AF_INET)
1823 tmp->source_addr.in.sin_port = htons(daemon->query_port);
1824 -#ifdef HAVE_IPV6
1825 else if (tmp->source_addr.sa.sa_family == AF_INET6)
1826 tmp->source_addr.in6.sin6_port = htons(daemon->query_port);
1827 -#endif
1828 }
1829 }
1830
1831 @@ -4930,10 +4898,8 @@ void read_opts(int argc, char **argv, ch
1832 for(tmp = daemon->if_addrs; tmp; tmp = tmp->next)
1833 if (tmp->addr.sa.sa_family == AF_INET)
1834 tmp->addr.in.sin_port = htons(daemon->port);
1835 -#ifdef HAVE_IPV6
1836 else if (tmp->addr.sa.sa_family == AF_INET6)
1837 tmp->addr.in6.sin6_port = htons(daemon->port);
1838 -#endif /* IPv6 */
1839 }
1840
1841 /* create default, if not specified */
1842 --- a/src/rfc1035.c
1843 +++ b/src/rfc1035.c
1844 @@ -198,7 +198,6 @@ int in_arpa_name_2_addr(char *namein, st
1845
1846 return F_IPV4;
1847 }
1848 -#ifdef HAVE_IPV6
1849 else if (hostname_isequal(penchunk, "ip6") &&
1850 (hostname_isequal(lastchunk, "int") || hostname_isequal(lastchunk, "arpa")))
1851 {
1852 @@ -243,7 +242,6 @@ int in_arpa_name_2_addr(char *namein, st
1853 return F_IPV6;
1854 }
1855 }
1856 -#endif
1857
1858 return 0;
1859 }
1860 @@ -426,7 +424,6 @@ int private_net(struct in_addr addr, int
1861 ((ip_addr & 0xFFFFFFFF) == 0xFFFFFFFF) /* 255.255.255.255/32 (broadcast)*/ ;
1862 }
1863
1864 -#ifdef HAVE_IPV6
1865 static int private_net6(struct in6_addr *a)
1866 {
1867 return
1868 @@ -436,8 +433,6 @@ static int private_net6(struct in6_addr
1869 ((unsigned char *)a)[0] == 0xfd || /* RFC 6303 4.4 */
1870 ((u32 *)a)[0] == htonl(0x20010db8); /* RFC 6303 4.6 */
1871 }
1872 -#endif
1873 -
1874
1875 static unsigned char *do_doctor(unsigned char *p, int count, struct dns_header *header, size_t qlen, char *name, int *doctored)
1876 {
1877 @@ -738,13 +733,11 @@ int extract_addresses(struct dns_header
1878 addrlen = INADDRSZ;
1879 flags |= F_IPV4;
1880 }
1881 -#ifdef HAVE_IPV6
1882 else if (qtype == T_AAAA)
1883 {
1884 addrlen = IN6ADDRSZ;
1885 flags |= F_IPV6;
1886 }
1887 -#endif
1888 else
1889 continue;
1890
1891 @@ -818,7 +811,6 @@ int extract_addresses(struct dns_header
1892 private_net(addr.addr.addr4, !option_bool(OPT_LOCAL_REBIND)))
1893 return 1;
1894
1895 -#ifdef HAVE_IPV6
1896 if ((flags & F_IPV6) &&
1897 IN6_IS_ADDR_V4MAPPED(&addr.addr.addr6))
1898 {
1899 @@ -827,7 +819,6 @@ int extract_addresses(struct dns_header
1900 if (private_net(v4, !option_bool(OPT_LOCAL_REBIND)))
1901 return 1;
1902 }
1903 -#endif
1904 }
1905
1906 #ifdef HAVE_IPSET
1907 @@ -966,7 +957,6 @@ size_t setup_reply(struct dns_header *he
1908 add_resource_record(header, NULL, NULL, sizeof(struct dns_header), &p, ttl, NULL, T_A, C_IN, "4", addrp);
1909 }
1910
1911 -#ifdef HAVE_IPV6
1912 if (flags & F_IPV6)
1913 {
1914 SET_RCODE(header, NOERROR);
1915 @@ -974,7 +964,6 @@ size_t setup_reply(struct dns_header *he
1916 header->hb3 |= HB3_AA;
1917 add_resource_record(header, NULL, NULL, sizeof(struct dns_header), &p, ttl, NULL, T_AAAA, C_IN, "6", addrp);
1918 }
1919 -#endif
1920 }
1921 else /* nowhere to forward to */
1922 {
1923 @@ -1164,14 +1153,12 @@ int add_resource_record(struct dns_heade
1924 for (; *format; format++)
1925 switch (*format)
1926 {
1927 -#ifdef HAVE_IPV6
1928 case '6':
1929 CHECK_LIMIT(IN6ADDRSZ);
1930 sval = va_arg(ap, char *);
1931 memcpy(p, sval, IN6ADDRSZ);
1932 p += IN6ADDRSZ;
1933 break;
1934 -#endif
1935
1936 case '4':
1937 CHECK_LIMIT(INADDRSZ);
1938 @@ -1413,7 +1400,6 @@ size_t answer_request(struct dns_header
1939 while (intr->next && strcmp(intr->intr, intr->next->intr) == 0)
1940 intr = intr->next;
1941 }
1942 -#ifdef HAVE_IPV6
1943 else if (is_arpa == F_IPV6)
1944 for (intr = daemon->int_names; intr; intr = intr->next)
1945 {
1946 @@ -1429,7 +1415,6 @@ size_t answer_request(struct dns_header
1947 while (intr->next && strcmp(intr->intr, intr->next->intr) == 0)
1948 intr = intr->next;
1949 }
1950 -#endif
1951
1952 if (intr)
1953 {
1954 @@ -1521,9 +1506,7 @@ size_t answer_request(struct dns_header
1955 }
1956 }
1957 else if (option_bool(OPT_BOGUSPRIV) && (
1958 -#ifdef HAVE_IPV6
1959 (is_arpa == F_IPV6 && private_net6(&addr.addr.addr6)) ||
1960 -#endif
1961 (is_arpa == F_IPV4 && private_net(addr.addr.addr4, 1))))
1962 {
1963 struct server *serv;
1964 @@ -1564,16 +1547,9 @@ size_t answer_request(struct dns_header
1965
1966 for (flag = F_IPV4; flag; flag = (flag == F_IPV4) ? F_IPV6 : 0)
1967 {
1968 - unsigned short type = T_A;
1969 + unsigned short type = (flag == F_IPV6) ? T_AAAA : T_A;
1970 struct interface_name *intr;
1971
1972 - if (flag == F_IPV6)
1973 -#ifdef HAVE_IPV6
1974 - type = T_AAAA;
1975 -#else
1976 - break;
1977 -#endif
1978 -
1979 if (qtype != type && qtype != T_ANY)
1980 continue;
1981
1982 @@ -1596,31 +1572,26 @@ size_t answer_request(struct dns_header
1983 for (intr = daemon->int_names; intr; intr = intr->next)
1984 if (hostname_isequal(name, intr->name))
1985 for (addrlist = intr->addr; addrlist; addrlist = addrlist->next)
1986 -#ifdef HAVE_IPV6
1987 - if (!(addrlist->flags & ADDRLIST_IPV6))
1988 -#endif
1989 - if (is_same_net(*((struct in_addr *)&addrlist->addr), local_addr, local_netmask))
1990 - {
1991 - localise = 1;
1992 - break;
1993 - }
1994 + if (!(addrlist->flags & ADDRLIST_IPV6) &&
1995 + is_same_net(*((struct in_addr *)&addrlist->addr), local_addr, local_netmask))
1996 + {
1997 + localise = 1;
1998 + break;
1999 + }
2000
2001 for (intr = daemon->int_names; intr; intr = intr->next)
2002 if (hostname_isequal(name, intr->name))
2003 {
2004 for (addrlist = intr->addr; addrlist; addrlist = addrlist->next)
2005 -#ifdef HAVE_IPV6
2006 if (((addrlist->flags & ADDRLIST_IPV6) ? T_AAAA : T_A) == type)
2007 -#endif
2008 {
2009 if (localise &&
2010 !is_same_net(*((struct in_addr *)&addrlist->addr), local_addr, local_netmask))
2011 continue;
2012
2013 -#ifdef HAVE_IPV6
2014 if (addrlist->flags & ADDRLIST_REVONLY)
2015 continue;
2016 -#endif
2017 +
2018 ans = 1;
2019 sec_data = 0;
2020 if (!dryrun)
2021 @@ -1904,11 +1875,8 @@ size_t answer_request(struct dns_header
2022 crecp = NULL;
2023 while ((crecp = cache_find_by_name(crecp, rec->target, now, F_IPV4 | F_IPV6)))
2024 {
2025 -#ifdef HAVE_IPV6
2026 int type = crecp->flags & F_IPV4 ? T_A : T_AAAA;
2027 -#else
2028 - int type = T_A;
2029 -#endif
2030 +
2031 if (crecp->flags & F_NEG)
2032 continue;
2033
2034 --- a/src/tables.c
2035 +++ b/src/tables.c
2036 @@ -108,7 +108,7 @@ int add_to_ipset(const char *setname, co
2037 my_syslog(LOG_INFO, _("info: table created"));
2038
2039 bzero(&addr, sizeof(addr));
2040 -#ifdef HAVE_IPV6
2041 +
2042 if (flags & F_IPV6)
2043 {
2044 addr.pfra_af = AF_INET6;
2045 @@ -116,7 +116,6 @@ int add_to_ipset(const char *setname, co
2046 memcpy(&(addr.pfra_ip6addr), &(ipaddr->addr), sizeof(struct in6_addr));
2047 }
2048 else
2049 -#endif
2050 {
2051 addr.pfra_af = AF_INET;
2052 addr.pfra_net = 0x20;
2053 --- a/src/tftp.c
2054 +++ b/src/tftp.c
2055 @@ -60,17 +60,11 @@ void tftp_request(struct listener *liste
2056 char *prefix = daemon->tftp_prefix;
2057 struct tftp_prefix *pref;
2058 struct all_addr addra;
2059 -#ifdef HAVE_IPV6
2060 /* Can always get recvd interface for IPv6 */
2061 int check_dest = !option_bool(OPT_NOWILD) || listen->family == AF_INET6;
2062 -#else
2063 - int check_dest = !option_bool(OPT_NOWILD);
2064 -#endif
2065 union {
2066 struct cmsghdr align; /* this ensures alignment */
2067 -#ifdef HAVE_IPV6
2068 char control6[CMSG_SPACE(sizeof(struct in6_pktinfo))];
2069 -#endif
2070 #if defined(HAVE_LINUX_NETWORK)
2071 char control[CMSG_SPACE(sizeof(struct in_pktinfo))];
2072 #elif defined(HAVE_SOLARIS_NETWORK)
2073 @@ -174,7 +168,6 @@ void tftp_request(struct listener *liste
2074
2075 #endif
2076
2077 -#ifdef HAVE_IPV6
2078 if (listen->family == AF_INET6)
2079 {
2080 for (cmptr = CMSG_FIRSTHDR(&msg); cmptr; cmptr = CMSG_NXTHDR(&msg, cmptr))
2081 @@ -190,7 +183,6 @@ void tftp_request(struct listener *liste
2082 if_index = p.p->ipi6_ifindex;
2083 }
2084 }
2085 -#endif
2086
2087 if (!indextoname(listen->tftpfd, if_index, namebuff))
2088 return;
2089 @@ -199,10 +191,8 @@ void tftp_request(struct listener *liste
2090
2091 addra.addr.addr4 = addr.in.sin_addr;
2092
2093 -#ifdef HAVE_IPV6
2094 if (listen->family == AF_INET6)
2095 addra.addr.addr6 = addr.in6.sin6_addr;
2096 -#endif
2097
2098 if (daemon->tftp_interfaces)
2099 {
2100 @@ -262,7 +252,6 @@ void tftp_request(struct listener *liste
2101 addr.in.sin_len = sizeof(addr.in);
2102 #endif
2103 }
2104 -#ifdef HAVE_IPV6
2105 else
2106 {
2107 addr.in6.sin6_port = htons(port);
2108 @@ -272,7 +261,6 @@ void tftp_request(struct listener *liste
2109 addr.in6.sin6_len = sizeof(addr.in6);
2110 #endif
2111 }
2112 -#endif
2113
2114 if (!(transfer = whine_malloc(sizeof(struct tftp_transfer))))
2115 return;
2116 @@ -310,10 +298,9 @@ void tftp_request(struct listener *liste
2117 {
2118 if (listen->family == AF_INET)
2119 addr.in.sin_port = htons(port);
2120 -#ifdef HAVE_IPV6
2121 else
2122 - addr.in6.sin6_port = htons(port);
2123 -#endif
2124 + addr.in6.sin6_port = htons(port);
2125 +
2126 continue;
2127 }
2128 my_syslog(MS_TFTP | LOG_ERR, _("unable to get free port for TFTP"));
2129 --- a/src/util.c
2130 +++ b/src/util.c
2131 @@ -320,13 +320,12 @@ int sockaddr_isequal(union mysockaddr *s
2132 s1->in.sin_port == s2->in.sin_port &&
2133 s1->in.sin_addr.s_addr == s2->in.sin_addr.s_addr)
2134 return 1;
2135 -#ifdef HAVE_IPV6
2136 +
2137 if (s1->sa.sa_family == AF_INET6 &&
2138 s1->in6.sin6_port == s2->in6.sin6_port &&
2139 s1->in6.sin6_scope_id == s2->in6.sin6_scope_id &&
2140 IN6_ARE_ADDR_EQUAL(&s1->in6.sin6_addr, &s2->in6.sin6_addr))
2141 return 1;
2142 -#endif
2143 }
2144 return 0;
2145 }
2146 @@ -336,11 +335,9 @@ int sa_len(union mysockaddr *addr)
2147 #ifdef HAVE_SOCKADDR_SA_LEN
2148 return addr->sa.sa_len;
2149 #else
2150 -#ifdef HAVE_IPV6
2151 if (addr->sa.sa_family == AF_INET6)
2152 return sizeof(addr->in6);
2153 else
2154 -#endif
2155 return sizeof(addr->in);
2156 #endif
2157 }
2158 @@ -437,7 +434,6 @@ int is_same_net(struct in_addr a, struct
2159 return (a.s_addr & mask.s_addr) == (b.s_addr & mask.s_addr);
2160 }
2161
2162 -#ifdef HAVE_IPV6
2163 int is_same_net6(struct in6_addr *a, struct in6_addr *b, int prefixlen)
2164 {
2165 int pfbytes = prefixlen >> 3;
2166 @@ -476,15 +472,12 @@ void setaddr6part(struct in6_addr *addr,
2167 }
2168 }
2169
2170 -#endif
2171 -
2172
2173 /* returns port number from address */
2174 int prettyprint_addr(union mysockaddr *addr, char *buf)
2175 {
2176 int port = 0;
2177
2178 -#ifdef HAVE_IPV6
2179 if (addr->sa.sa_family == AF_INET)
2180 {
2181 inet_ntop(AF_INET, &addr->in.sin_addr, buf, ADDRSTRLEN);
2182 @@ -503,10 +496,6 @@ int prettyprint_addr(union mysockaddr *a
2183 }
2184 port = ntohs(addr->in6.sin6_port);
2185 }
2186 -#else
2187 - strcpy(buf, inet_ntoa(addr->in.sin_addr));
2188 - port = ntohs(addr->in.sin_port);
2189 -#endif
2190
2191 return port;
2192 }