From: Waldemar Kozaczuk <jwkozac...@gmail.com> Committer: Waldemar Kozaczuk <jwkozac...@gmail.com> Branch: master
netlink: do not put IFA_BROADCAST for loopback address This is a minor adjustment to make OSv implementation match what Linux does - skip IFA_BROADCAST attributes for loopback address in NEWADDR response. Signed-off-by: Waldemar Kozaczuk <jwkozac...@gmail.com> --- diff --git a/bsd/sys/compat/linux/linux_netlink.cc b/bsd/sys/compat/linux/linux_netlink.cc --- a/bsd/sys/compat/linux/linux_netlink.cc +++ b/bsd/sys/compat/linux/linux_netlink.cc @@ -616,17 +616,23 @@ netlink_process_getaddr_msg(struct socket *so, struct nlmsghdr *nlm) in6_clearscope(&broadaddr.sin6_addr); p_broadaddr = (struct bsd_sockaddr *)&broadaddr; } - if (nla_put_sockaddr(m, IFA_ADDRESS, p_addr) || - nla_put_sockaddr(m, IFA_BROADCAST, p_broadaddr)){ + if (nla_put_sockaddr(m, IFA_ADDRESS, p_addr)){ + error = ENOBUFS; + goto done; + } + if (!(ifm->ifa_flags & IFF_LOOPBACK) && nla_put_sockaddr(m, IFA_BROADCAST, p_broadaddr)){ error = ENOBUFS; goto done; } } else #endif { - if (nla_put_sockaddr(m, IFA_ADDRESS, ifa->ifa_addr) || - nla_put_sockaddr(m, IFA_BROADCAST, ifa->ifa_broadaddr)){ + if (nla_put_sockaddr(m, IFA_ADDRESS, ifa->ifa_addr)){ + error = ENOBUFS; + goto done; + } + if (!(ifm->ifa_flags & IFF_LOOPBACK) && nla_put_sockaddr(m, IFA_BROADCAST, ifa->ifa_broadaddr)){ error = ENOBUFS; goto done; } -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to osv-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/000000000000d844e205e1559774%40google.com.