summaryrefslogtreecommitdiff
path: root/lib/route/link/bridge.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/route/link/bridge.c')
-rw-r--r--lib/route/link/bridge.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/route/link/bridge.c b/lib/route/link/bridge.c
index b9d05bc4..2d95faf8 100644
--- a/lib/route/link/bridge.c
+++ b/lib/route/link/bridge.c
@@ -307,6 +307,20 @@ nla_put_failure:
return -NLE_MSGSIZE;
}
+static int bridge_override_rtm(struct rtnl_link *link) {
+ struct bridge_data *bd;
+
+ if (!rtnl_link_is_bridge(link))
+ return 0;
+
+ bd = bridge_data(link);
+
+ if (bd->ce_mask & BRIDGE_ATTR_FLAGS)
+ return 1;
+
+ return 0;
+}
+
static int bridge_get_af(struct nl_msg *msg, uint32_t *ext_filter_mask)
{
*ext_filter_mask |= RTEXT_FILTER_BRVLAN;
@@ -961,7 +975,7 @@ static struct rtnl_link_af_ops bridge_ops = {
.ao_fill_af = &bridge_fill_af,
.ao_fill_pi = &bridge_fill_pi,
.ao_fill_pi_flags = NLA_F_NESTED,
- .ao_override_rtm = 1,
+ .ao_override_rtm = &bridge_override_rtm,
.ao_fill_af_no_nest = 1,
};