diff options
Diffstat (limited to 'lib/route/link/bridge.c')
-rw-r--r-- | lib/route/link/bridge.c | 16 |
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, }; |