]> git.proxmox.com Git - mirror_frr.git/commitdiff
pimd: don't break with missing SO_BINDTODEVICE
authorDavid Lamparter <equinox@opensourcerouting.org>
Thu, 11 Aug 2016 15:51:41 +0000 (17:51 +0200)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 16 Aug 2016 14:10:52 +0000 (16:10 +0200)
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 <mwinter@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
pimd/pim_sock.c

index a2e166f79677b011af76df95fbf265c5a4604a83..e04cd4157531a53988b44580650698ab9882a943 100644 (file)
@@ -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() */
   {