fix dnsmasq errors that occur on linux 2.4 if ipv6 is compiled as module, but not used
SVN-Revision: 12664
This commit is contained in:
parent
ebd408630f
commit
a361a8101c
1 changed files with 44 additions and 0 deletions
44
package/dnsmasq/patches/103-ipv6_fix.patch
Normal file
44
package/dnsmasq/patches/103-ipv6_fix.patch
Normal file
|
@ -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;
|
Loading…
Reference in a new issue