From: vize Date: Fri, 10 Aug 2007 06:25:20 +0000 (+0000) Subject: Use the proper field length for the peer's address (netlink_interface_addr) X-Git-Tag: frr-2.0-rc1~2479 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=068fd77cff0ce09b6390641abd84fc09a89c49db;p=mirror%2Ffrr.git Use the proper field length for the peer's address (netlink_interface_addr) --- diff --git a/zebra/ChangeLog b/zebra/ChangeLog index 9bd775e913..f6dea4422e 100644 --- a/zebra/ChangeLog +++ b/zebra/ChangeLog @@ -1,3 +1,8 @@ +2007-08-10 Emmanuel Vize + + * rt_netlink.c: (netlink_interface_addr) Use the appropriate field length for the address + (acknowledge Andy's comment). + 2007-08-06 Denis Ovsienko * zebra_rib.c: (general) Add extra debug logging for RIB and diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index 3b602c45ed..5b592f948a 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -647,12 +647,8 @@ netlink_interface_addr (struct sockaddr_nl *snl, struct nlmsghdr *h) addr = (tb[IFA_LOCAL] ? RTA_DATA(tb[IFA_LOCAL]) : NULL); /* is there a peer address? */ - /* N.B. I do not understand why the memcmp compares 4 bytes regardless - of address family, but this is exactly how it appears in - print_addrinfo. I wonder if it should be RTA_PAYLOAD(tb[IFA_ADDRESS]) - instead of 4... */ if (tb[IFA_ADDRESS] && - memcmp(RTA_DATA(tb[IFA_ADDRESS]), RTA_DATA(tb[IFA_LOCAL]), 4)) + memcmp(RTA_DATA(tb[IFA_ADDRESS]), RTA_DATA(tb[IFA_LOCAL]), RTA_PAYLOAD(tb[IFA_ADDRESS]))) { broad = RTA_DATA(tb[IFA_ADDRESS]); SET_FLAG (flags, ZEBRA_IFA_PEER);