From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
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-Url: https://git.rohieb.name/openwrt.git/commitdiff_plain/8a9252317ea140d7fe1e8c1a725d1407d8b07163

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

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12664 3c298f89-4303-0410-b956-a3cf2f4a3e73
---

diff --git a/package/dnsmasq/patches/103-ipv6_fix.patch b/package/dnsmasq/patches/103-ipv6_fix.patch
new file mode 100644
index 000000000..28a272f84
--- /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;