52 lines
1.4 KiB
Plaintext
52 lines
1.4 KiB
Plaintext
|
$OpenBSD: patch-ripd_rip_interface_c,v 1.1 2013/01/04 00:24:10 sthen Exp $
|
||
|
|
||
|
Revert 69bf3a39; does not work on at least (Open/Net)BSD.
|
||
|
This can be put back if we get RFC3678 support.
|
||
|
|
||
|
--- ripd/rip_interface.c.orig Tue Apr 17 14:56:26 2012
|
||
|
+++ ripd/rip_interface.c Thu Jan 3 00:24:26 2013
|
||
|
@@ -78,8 +78,9 @@ ipv4_multicast_join (int sock,
|
||
|
{
|
||
|
int ret;
|
||
|
|
||
|
- ret = setsockopt_ipv4_multicast (sock,
|
||
|
+ ret = setsockopt_multicast_ipv4 (sock,
|
||
|
IP_ADD_MEMBERSHIP,
|
||
|
+ ifa,
|
||
|
group.s_addr,
|
||
|
ifindex);
|
||
|
|
||
|
@@ -99,8 +100,9 @@ ipv4_multicast_leave (int sock,
|
||
|
{
|
||
|
int ret;
|
||
|
|
||
|
- ret = setsockopt_ipv4_multicast (sock,
|
||
|
+ ret = setsockopt_multicast_ipv4 (sock,
|
||
|
IP_DROP_MEMBERSHIP,
|
||
|
+ ifa,
|
||
|
group.s_addr,
|
||
|
ifindex);
|
||
|
|
||
|
@@ -136,13 +138,18 @@ 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_multicast_ipv4 (sock, IP_MULTICAST_IF, addr, 0,
|
||
|
+ connected->ifp->ifindex) < 0)
|
||
|
{
|
||
|
zlog_warn ("Can't setsockopt IP_MULTICAST_IF on fd %d to "
|
||
|
- "ifindex %d for interface %s",
|
||
|
- sock, connected->ifp->ifindex,
|
||
|
+ "source address %s for interface %s",
|
||
|
+ sock, inet_ntoa(addr),
|
||
|
connected->ifp->name);
|
||
|
}
|
||
|
|