From 094714725481da5cfbeaa9e4c713633f3fd0dcc4 Mon Sep 17 00:00:00 2001 From: Markus Stenberg Date: Wed, 19 Feb 2014 19:21:40 +0200 Subject: mdnsresponder: [PATCH] Binding IPv6 sockets to interface Due to link-local addresses, otherwise responses may wind up in wrong places and mdnsd is quite confused. --- .../patches/003-ipv6-bind-to-interface.patch | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 net/mdnsresponder/patches/003-ipv6-bind-to-interface.patch diff --git a/net/mdnsresponder/patches/003-ipv6-bind-to-interface.patch b/net/mdnsresponder/patches/003-ipv6-bind-to-interface.patch new file mode 100644 index 0000000..c65221e --- /dev/null +++ b/net/mdnsresponder/patches/003-ipv6-bind-to-interface.patch @@ -0,0 +1,22 @@ +diff -ur mDNSResponder-544.source/mDNSPosix/mDNSPosix.c mDNSResponder-544/mDNSPosix/mDNSPosix.c +--- mDNSResponder-544.source/mDNSPosix/mDNSPosix.c 2013-12-14 22:54:24.000000000 +0200 ++++ mDNSResponder-544/mDNSPosix/mDNSPosix.c 2014-02-19 18:59:55.000000000 +0200 +@@ -784,6 +784,17 @@ + if (err < 0) { err = errno; perror("setsockopt - IPV6_MULTICAST_HOPS"); } + } + ++#ifdef __linux__ ++#ifdef SO_BINDTODEVICE ++ if (err == 0) ++ { ++ char ifname[IFNAMSIZ]; ++ if (if_indextoname(interfaceIndex, ifname)) ++ err = setsockopt(*sktPtr, SOL_SOCKET, SO_BINDTODEVICE, ifname, strlen(ifname)); ++ } ++#endif /* SO_BINDTODEVICE */ ++#endif /* __linux__ */ ++ + // And start listening for packets + if (err == 0) + { +Only in mDNSResponder-544/mDNSPosix: mDNSPosix.c~ -- 1.7.9.5