From 6bcd6029f1143b62f005c3508df3b3021787f898 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Thu, 11 Aug 2016 17:51:41 +0200 Subject: [PATCH] pimd: don't break with missing SO_BINDTODEVICE This effectively a partial revert of commit 61ea395... "pimd: Bind pim sockets to interface they are associated with" Note this isn't really a proper fix, it just clears the build breakage on BSD without improving the usage of multiple sockets. Reported-by: Martin Winter Signed-off-by: David Lamparter --- pimd/pim_sock.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c index a2e166f796..e04cd41575 100644 --- a/pimd/pim_sock.c +++ b/pimd/pim_sock.c @@ -79,6 +79,7 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, int loop) return PIM_SOCK_ERR_SOCKET; } +#ifdef SO_BINDTODEVICE if (protocol == IPPROTO_PIM) { int ret; @@ -104,7 +105,10 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, int ifindex, int loop) return PIM_SOCK_ERR_BIND; } } - +#else + /* XXX: use IP_PKTINFO / IP_RECVIF to emulate behaviour? Or change to + * only use 1 socket for all interfaces? */ +#endif /* Needed to obtain destination address from recvmsg() */ {