From: David Lamparter Date: Tue, 20 Apr 2021 03:10:17 +0000 (+0200) Subject: pimd: IGMP sockets need to be iface-bound too X-Git-Tag: base_8.1~291^2~8 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=f06c6e3ef91027205e653a4aa72a2bb8969466e9;p=matthieu%2Ffrr.git pimd: IGMP sockets need to be iface-bound too There's an IGMP socket per interface, so they should be bound to that interface. Which also makes IGMP work in VRFs. Fixes: #7889 Signed-off-by: David Lamparter --- diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c index 504519c8a4..05b0f92a4b 100644 --- a/pimd/pim_sock.c +++ b/pimd/pim_sock.c @@ -112,17 +112,15 @@ int pim_socket_mcast(int protocol, struct in_addr ifaddr, struct interface *ifp, } #ifdef SO_BINDTODEVICE - if (protocol == IPPROTO_PIM) { - int ret; + int ret; - ret = pim_socket_bind(fd, ifp); - if (ret) { - close(fd); - zlog_warn( - "Could not set fd: %d for interface: %s to device", - fd, ifp->name); - return PIM_SOCK_ERR_BIND; - } + ret = pim_socket_bind(fd, ifp); + if (ret) { + close(fd); + zlog_warn( + "Could not set fd: %d for interface: %s to device", + fd, ifp->name); + return PIM_SOCK_ERR_BIND; } #else /* XXX: use IP_PKTINFO / IP_RECVIF to emulate behaviour? Or change to