mirror of
https://github.com/systemd/systemd.git
synced 2024-11-23 18:23:32 +08:00
networkd: bridge add support to configure VLAN filtering (#3344)
This patch implements support for IFLA_BR_VLAN_FILTERING configuration.
This commit is contained in:
parent
ca473d572f
commit
c6f8d17de0
@ -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>
|
||||
|
@ -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 = {
|
||||
|
@ -26,6 +26,7 @@ typedef struct Bridge {
|
||||
|
||||
int mcast_querier;
|
||||
int mcast_snooping;
|
||||
int vlan_filtering;
|
||||
|
||||
usec_t forward_delay;
|
||||
usec_t hello_time;
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user