summaryrefslogtreecommitdiff
path: root/zebra/kernel_socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/kernel_socket.c')
-rw-r--r--zebra/kernel_socket.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index f391d53a..c264437d 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -465,7 +465,7 @@ int
ifam_read (struct ifa_msghdr *ifam)
{
struct interface *ifp;
- union sockunion addr, mask, gate;
+ union sockunion addr, mask, brd;
/* Check does this interface exist or not. */
ifp = if_lookup_by_index (ifam->ifam_index);
@@ -476,7 +476,7 @@ ifam_read (struct ifa_msghdr *ifam)
}
/* Allocate and read address information. */
- ifam_read_mesg (ifam, &addr, &mask, &gate);
+ ifam_read_mesg (ifam, &addr, &mask, &brd);
/* Check interface flag for implicit up of the interface. */
if_refresh (ifp);
@@ -488,11 +488,12 @@ ifam_read (struct ifa_msghdr *ifam)
if (ifam->ifam_type == RTM_NEWADDR)
connected_add_ipv4 (ifp, 0, &addr.sin.sin_addr,
ip_masklen (mask.sin.sin_addr),
- &gate.sin.sin_addr, NULL);
+ &brd.sin.sin_addr,
+ (isalias ? ifname : NULL) );
else
connected_delete_ipv4 (ifp, 0, &addr.sin.sin_addr,
ip_masklen (mask.sin.sin_addr),
- &gate.sin.sin_addr, NULL);
+ &brd.sin.sin_addr);
break;
#ifdef HAVE_IPV6
case AF_INET6:
@@ -505,12 +506,13 @@ ifam_read (struct ifa_msghdr *ifam)
connected_add_ipv6 (ifp,
&addr.sin6.sin6_addr,
ip6_masklen (mask.sin6.sin6_addr),
- &gate.sin6.sin6_addr);
+ &brd.sin6.sin6_addr,
+ (isalias ? ifname : NULL) );
else
connected_delete_ipv6 (ifp,
&addr.sin6.sin6_addr,
ip6_masklen (mask.sin6.sin6_addr),
- &gate.sin6.sin6_addr);
+ &brd.sin6.sin6_addr);
break;
#endif /* HAVE_IPV6 */
default: