Use the proper field length for the peer's address (netlink_interface_addr)

This commit is contained in:
vize 2007-08-10 06:25:20 +00:00
parent ed6ef902df
commit 068fd77cff
2 changed files with 6 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2007-08-10 Emmanuel Vize <emmanuel.vize@6wind.com>
* 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

View File

@ -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);