summaryrefslogtreecommitdiff
path: root/zebra/rt_netlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/rt_netlink.c')
-rw-r--r--zebra/rt_netlink.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index ee61cb27..50e83b77 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -596,7 +596,9 @@ netlink_interface_addr (struct sockaddr_nl *snl, struct nlmsghdr *h)
if (tb[IFA_LOCAL])
{
addr = RTA_DATA (tb[IFA_LOCAL]);
- if (tb[IFA_ADDRESS])
+ if (tb[IFA_ADDRESS] &&
+ memcmp(RTA_DATA(tb[IFA_ADDRESS]),RTA_DATA(tb[IFA_LOCAL]),4))
+ /* if IFA_ADDRESS != IFA_LOCAL, then it's the peer address */
broad = RTA_DATA (tb[IFA_ADDRESS]);
else
broad = NULL;