ebac1116f143b6e68ba7cdbd0d592a19f3f17443
[packages.git] / net / mdnsresponder / patches / 100-Binding-IPv6-sockets-to-interface-due-to-link-local.patch
1 From 094714725481da5cfbeaa9e4c713633f3fd0dcc4 Mon Sep 17 00:00:00 2001
2 From: Markus Stenberg <markus.stenberg@iki.fi>
3 Date: Wed, 19 Feb 2014 19:21:40 +0200
4 Subject: mdnsresponder: [PATCH] Binding IPv6 sockets to interface
5
6 Due to link-local addresses, otherwise responses may wind up in wrong
7 places and mdnsd is quite confused.
8
9 ---
10  .../patches/003-ipv6-bind-to-interface.patch       |   22 ++++++++++++++++++++
11  1 file changed, 22 insertions(+)
12
13 --- mDNSResponder-544.source/mDNSPosix/mDNSPosix.c      2013-12-14 22:54:24.000000000 +0200
14 +++ mDNSResponder-544/mDNSPosix/mDNSPosix.c     2014-02-19 18:59:55.000000000 +0200
15 @@ -784,6 +784,17 @@
16              if (err < 0) { err = errno; perror("setsockopt - IPV6_MULTICAST_HOPS"); }
17          }
18  
19 +#ifdef __linux__
20 +#ifdef SO_BINDTODEVICE
21 +        if (err == 0)
22 +        {
23 +            char ifname[IFNAMSIZ];
24 +            if (if_indextoname(interfaceIndex, ifname))
25 +                err = setsockopt(*sktPtr, SOL_SOCKET, SO_BINDTODEVICE, ifname, strlen(ifname));
26 +        }
27 +#endif /* SO_BINDTODEVICE */
28 +#endif /* __linux__ */
29 +
30          // And start listening for packets
31          if (err == 0)
32          {