summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/route/neigh.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/route/neigh.c b/lib/route/neigh.c
index 824cf492..dc321a8f 100644
--- a/lib/route/neigh.c
+++ b/lib/route/neigh.c
@@ -319,11 +319,13 @@ static uint32_t neigh_id_attrs_get(struct nl_object *obj)
if (neigh->n_family == AF_BRIDGE) {
if (neigh->n_flags & NTF_SELF)
- return (NEIGH_ATTR_LLADDR | NEIGH_ATTR_FAMILY | NEIGH_ATTR_IFINDEX | NEIGH_ATTR_VLAN);
+ return (NEIGH_ATTR_LLADDR | NEIGH_ATTR_FAMILY | NEIGH_ATTR_IFINDEX |
+ ((neigh->ce_mask & NEIGH_ATTR_DST) ? NEIGH_ATTR_DST: 0) |
+ ((neigh->ce_mask & NEIGH_ATTR_VLAN) ? NEIGH_ATTR_VLAN : 0));
else
return (NEIGH_ATTR_LLADDR | NEIGH_ATTR_FAMILY | NEIGH_ATTR_MASTER | NEIGH_ATTR_VLAN);
} else
- return (NEIGH_ATTR_IFINDEX | NEIGH_ATTR_DST | NEIGH_ATTR_FAMILY);
+ return neigh_obj_ops.oo_id_attrs;
}
static struct nla_policy neigh_policy[NDA_MAX+1] = {