summaryrefslogtreecommitdiff
path: root/pimd/pim_sock.c
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@opensourcerouting.org>2021-04-20 05:10:17 +0200
committerMartin Winter <mwinter@opensourcerouting.org>2021-07-06 01:44:24 +0200
commitf06c6e3ef91027205e653a4aa72a2bb8969466e9 (patch)
tree11489fa42618e3e1562dcbbfda494e87e914af70 /pimd/pim_sock.c
parent12536067cc101fe94cb2565771f29329e3c26456 (diff)
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 <equinox@opensourcerouting.org>
Diffstat (limited to 'pimd/pim_sock.c')
-rw-r--r--pimd/pim_sock.c18
1 files changed, 8 insertions, 10 deletions
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