summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDavid Ahern <dsa@cumulusnetworks.com>2015-10-27 22:39:55 (GMT)
committerThomas Haller <thaller@redhat.com>2015-11-01 17:18:16 (GMT)
commit5f044aca765fa6620b389b50deee9cf49c1efe35 (patch)
treef400911b3713d5a564398ed0cef5d15836475b9a /lib
parent493bbd13e6d96c61e844dd1c04aa7218d0b7da08 (diff)
downloadlibnl-5f044aca765fa6620b389b50deee9cf49c1efe35.zip
libnl-5f044aca765fa6620b389b50deee9cf49c1efe35.tar.gz
libnl-5f044aca765fa6620b389b50deee9cf49c1efe35.tar.bz2
neigh: add support for NTF_SELF
http://lists.infradead.org/pipermail/libnl/2015-October/001995.html Signed-off-by: Roopa Prabhu <roopa@cumulusnetworks.com> Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: Thomas Haller <thaller@redhat.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/route/neigh.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/lib/route/neigh.c b/lib/route/neigh.c
index ca7e693..ab07ec9 100644
--- a/lib/route/neigh.c
+++ b/lib/route/neigh.c
@@ -233,10 +233,14 @@ static void neigh_keygen(struct nl_object *obj, uint32_t *hashkey,
return;
}
nkey->n_family = neigh->n_family;
- if (neigh->n_family == AF_BRIDGE)
- nkey->n_ifindex = neigh->n_master;
- else
+ if (neigh->n_family == AF_BRIDGE) {
+ if (neigh->n_flags & NTF_SELF)
+ nkey->n_ifindex = neigh->n_ifindex;
+ else
+ nkey->n_ifindex = neigh->n_master;
+ } else
nkey->n_ifindex = neigh->n_ifindex;
+
if (addr)
memcpy(nkey->n_addr,
nl_addr_get_binary_addr(addr),
@@ -310,9 +314,12 @@ static uint32_t neigh_id_attrs_get(struct nl_object *obj)
{
struct rtnl_neigh *neigh = (struct rtnl_neigh *)obj;
- if (neigh->n_family == AF_BRIDGE)
- return (NEIGH_ATTR_LLADDR | NEIGH_ATTR_FAMILY | NEIGH_ATTR_MASTER);
- else
+ if (neigh->n_family == AF_BRIDGE) {
+ if (neigh->n_flags & NTF_SELF)
+ return (NEIGH_ATTR_LLADDR | NEIGH_ATTR_FAMILY | NEIGH_ATTR_IFINDEX);
+ else
+ return (NEIGH_ATTR_LLADDR | NEIGH_ATTR_FAMILY | NEIGH_ATTR_MASTER);
+ } else
return (NEIGH_ATTR_IFINDEX | NEIGH_ATTR_DST | NEIGH_ATTR_FAMILY);
}