networkd: bridge add support to configure VLAN filtering (#3344)

This patch implements support for IFLA_BR_VLAN_FILTERING configuration.
This commit is contained in:
Tobias Jungel 2016-05-30 17:00:16 +02:00 committed by Lennart Poettering
parent ca473d572f
commit c6f8d17de0
4 changed files with 18 additions and 0 deletions

View file

@ -330,6 +330,15 @@
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>VLANFiltering=</varname></term>
<listitem>
<para>A boolean. This setting controls the IFLA_BR_VLAN_FILTERING option in the kernel.
If enabled, the bridge will be started in VLAN-filtering mode. When unset, the kernel's
default setting applies.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View file

@ -102,6 +102,12 @@ static int netdev_bridge_post_create(NetDev *netdev, Link *link, sd_netlink_mess
return log_netdev_error_errno(netdev, r, "Could not append IFLA_BR_MCAST_SNOOPING attribute: %m");
}
if (b->vlan_filtering >= 0) {
r = sd_netlink_message_append_u8(req, IFLA_BR_VLAN_FILTERING, b->vlan_filtering);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_BR_VLAN_FILTERING attribute: %m");
}
r = sd_netlink_message_close_container(req);
if (r < 0)
return log_netdev_error_errno(netdev, r, "Could not append IFLA_LINKINFO attribute: %m");
@ -128,6 +134,7 @@ static void bridge_init(NetDev *n) {
b->mcast_querier = -1;
b->mcast_snooping = -1;
b->vlan_filtering = -1;
}
const NetDevVTable bridge_vtable = {

View file

@ -26,6 +26,7 @@ typedef struct Bridge {
int mcast_querier;
int mcast_snooping;
int vlan_filtering;
usec_t forward_delay;
usec_t hello_time;

View file

@ -100,3 +100,4 @@ Bridge.MaxAgeSec, config_parse_sec, 0,
Bridge.ForwardDelaySec, config_parse_sec, 0, offsetof(Bridge, forward_delay)
Bridge.MulticastQuerier, config_parse_tristate, 0, offsetof(Bridge, mcast_querier)
Bridge.MulticastSnooping, config_parse_tristate, 0, offsetof(Bridge, mcast_snooping)
Bridge.VLANFiltering, config_parse_tristate, 0, offsetof(Bridge, vlan_filtering)