From: Yu Watanabe Date: Tue, 25 May 2021 08:08:27 +0000 (+0900) Subject: network: introduce network_adjust_bridge_vlan() X-Git-Tag: v249-rc1~76^2~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5546870e7b051c6db1844468839708c17378fb7e;p=thirdparty%2Fsystemd.git network: introduce network_adjust_bridge_vlan() --- diff --git a/src/network/networkd-bridge-vlan.c b/src/network/networkd-bridge-vlan.c index 797c5c69d55..c4c25eaff4d 100644 --- a/src/network/networkd-bridge-vlan.c +++ b/src/network/networkd-bridge-vlan.c @@ -161,10 +161,6 @@ int link_set_bridge_vlan(Link *link) { if (!link->network->bridge && !streq_ptr(link->kind, "bridge")) return 0; - /* pvid might not be in br_vid_bitmap yet */ - if (link->network->pvid) - set_bit(link->network->pvid, link->network->br_vid_bitmap); - /* create new RTM message */ r = sd_rtnl_message_new_link(link->manager->rtnl, &req, RTM_SETLINK, link->ifindex); if (r < 0) @@ -206,6 +202,17 @@ int link_set_bridge_vlan(Link *link) { return 0; } +void network_adjust_bridge_vlan(Network *network) { + assert(network); + + if (!network->use_br_vlan) + return; + + /* pvid might not be in br_vid_bitmap yet */ + if (network->pvid) + set_bit(network->pvid, network->br_vid_bitmap); +} + int config_parse_brvlan_pvid( const char *unit, const char *filename, diff --git a/src/network/networkd-bridge-vlan.h b/src/network/networkd-bridge-vlan.h index 938b7901f19..22f886f1b46 100644 --- a/src/network/networkd-bridge-vlan.h +++ b/src/network/networkd-bridge-vlan.h @@ -11,6 +11,9 @@ #define BRIDGE_VLAN_BITMAP_LEN (BRIDGE_VLAN_BITMAP_MAX / 32) typedef struct Link Link; +typedef struct Network Network; + +void network_adjust_bridge_vlan(Network *network); int link_set_bridge_vlan(Link *link); diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 9cb6551d8ae..4e4ae7b76be 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -182,6 +182,7 @@ int network_verify(Network *network) { network_adjust_ipv6_accept_ra(network); network_adjust_dhcp(network); network_adjust_radv(network); + network_adjust_bridge_vlan(network); if (network->mtu > 0 && network->dhcp_use_mtu) { log_warning("%s: MTUBytes= in [Link] section and UseMTU= in [DHCP] section are set. "