From: Felix Fietkau <nbd@openwrt.org>
Date: Tue, 23 Sep 2008 15:30:26 +0000 (+0000)
Subject: fix dnsmasq errors that occur on linux 2.4 if ipv6 is compiled as module, but not... 
X-Git-Tag: reboot~25549
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=a361a8101cd4705f1809c491ed42c3571a0ade11;p=openwrt%2Fopenwrt.git

fix dnsmasq errors that occur on linux 2.4 if ipv6 is compiled as module, but not used

SVN-Revision: 12664
---

diff --git a/package/dnsmasq/patches/103-ipv6_fix.patch b/package/dnsmasq/patches/103-ipv6_fix.patch
new file mode 100644
index 0000000000..28a272f84b
--- /dev/null
+++ b/package/dnsmasq/patches/103-ipv6_fix.patch
@@ -0,0 +1,44 @@
+--- a/src/netlink.c
++++ b/src/netlink.c
+@@ -116,6 +116,7 @@
+   ssize_t len;
+   static unsigned int seq = 0;
+   int family = AF_INET;
++  int ipv4_done = 0;
+ 
+   struct {
+     struct nlmsghdr nlh;
+@@ -187,9 +188,12 @@
+ 		    rta = RTA_NEXT(rta, len1);
+ 		  }
+ 		
+-		if (addr.s_addr && ipv4_callback)
++		if (addr.s_addr && ipv4_callback) {
+ 		  if (!((*ipv4_callback)(addr, ifa->ifa_index, netmask, broadcast, parm)))
+ 		    return 0;
++		  else
++		    ipv4_done = 1;
++		}
+ 	      }
+ #ifdef HAVE_IPV6
+ 	    else if (ifa->ifa_family == AF_INET6)
+@@ -205,7 +209,7 @@
+ 		
+ 		if (addrp && ipv6_callback)
+ 		  if (!((*ipv6_callback)(addrp, ifa->ifa_index, ifa->ifa_index, parm)))
+-		    return 0;
++		    return ipv4_done;
+ 	      }
+ #endif
+ 	  }
+--- a/src/network.c
++++ b/src/network.c
+@@ -278,7 +278,7 @@
+       bind(tcpfd, (struct sockaddr *)&addr, sa_len(&addr)) == -1 ||
+       listen(tcpfd, 5) == -1 ||
+       bind(fd, (struct sockaddr *)&addr, sa_len(&addr)) == -1) 
+-    return 0;
++    return 1;
+       
+   l = safe_malloc(sizeof(struct listener));
+   l->fd = fd;