summaryrefslogtreecommitdiff
path: root/ripd/rip_interface.c
diff options
context:
space:
mode:
Diffstat (limited to 'ripd/rip_interface.c')
-rw-r--r--ripd/rip_interface.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 6748e197da..4499966ad0 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -80,6 +80,7 @@ ipv4_multicast_join (int sock,
ret = setsockopt_ipv4_multicast (sock,
IP_ADD_MEMBERSHIP,
+ ifa,
group.s_addr,
ifindex);
@@ -101,6 +102,7 @@ ipv4_multicast_leave (int sock,
ret = setsockopt_ipv4_multicast (sock,
IP_DROP_MEMBERSHIP,
+ ifa,
group.s_addr,
ifindex);
@@ -136,9 +138,13 @@ rip_interface_new (void)
void
rip_interface_multicast_set (int sock, struct connected *connected)
{
+ struct in_addr addr;
+
assert (connected != NULL);
-
- if (setsockopt_ipv4_multicast_if (sock, connected->ifp->ifindex) < 0)
+
+ addr = CONNECTED_ID(connected)->u.prefix4;
+
+ if (setsockopt_ipv4_multicast_if (sock, addr, connected->ifp->ifindex) < 0)
{
zlog_warn ("Can't setsockopt IP_MULTICAST_IF on fd %d to "
"ifindex %d for interface %s",