]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: Bridge Property Use kernel defaults. (#8825)
authorSusant Sahani <145210+ssahani@users.noreply.github.com>
Fri, 27 Apr 2018 08:32:28 +0000 (14:02 +0530)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 27 Apr 2018 08:32:28 +0000 (10:32 +0200)
Rather than choosing to set or unset any of these flag
use kernel defaults. This patch makes following properties to unset.

UseBPDU = unset
HairPin = unset
FastLeave = unset
AllowPortToBeRoot = unset
UnicastFlood = unset

man/systemd.network.xml
src/network/networkd-link.c
src/network/networkd-network-gperf.gperf
src/network/networkd-network.c
src/network/networkd-network.h

index a45bbe26ea81b714c42039356b73c489a73822c6..55db523e79c10490d1268746022a4205a4f1e893 100644 (file)
           <listitem>
             <para>A boolean. Controls whether the bridge should flood
             traffic for which an FDB entry is missing and the destination
-            is unknown through this port. Defaults to on.
+            is unknown through this port. Defaults to unset.
             </para>
           </listitem>
         </varlistentry>
           <term><varname>HairPin=</varname></term>
           <listitem>
             <para>A boolean. Configures whether traffic may be sent back
-            out of the port on which it was received. By default, this
+            out of the port on which it was received. Defaults to unset. When this
             flag is false, and the bridge will not forward traffic back
             out of the receiving port.</para>
           </listitem>
           <term><varname>UseBPDU=</varname></term>
           <listitem>
             <para>A boolean. Configures whether STP Bridge Protocol Data Units will be
-            processed by the bridge port. Defaults to yes.</para>
+            processed by the bridge port. Defaults to unset.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <listitem>
             <para>A boolean. This flag allows the bridge to immediately stop multicast
             traffic on a port that receives an IGMP Leave message. It is only used with
-            IGMP snooping if enabled on the bridge. Defaults to off.</para>
+            IGMP snooping if enabled on the bridge. Defaults to unset.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
           <listitem>
             <para>A boolean. Configures whether a given port is allowed to
             become a root port. Only used when STP is enabled on the bridge.
-            Defaults to on.</para>
+            Defaults to unset.</para>
           </listitem>
         </varlistentry>
         <varlistentry>
index 97c6d21c07fb8c74e365f62690e423de2824e863..e4c672b33ddf3795db53f756d02d5fe2cecf7706 100644 (file)
@@ -1401,25 +1401,37 @@ static int link_set_bridge(Link *link) {
         if (r < 0)
                 return log_link_error_errno(link, r, "Could not append IFLA_PROTINFO attribute: %m");
 
-        r = sd_netlink_message_append_u8(req, IFLA_BRPORT_GUARD, !link->network->use_bpdu);
-        if (r < 0)
-                return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_GUARD attribute: %m");
+        if (link->network->use_bpdu >= 0) {
+                r = sd_netlink_message_append_u8(req, IFLA_BRPORT_GUARD, link->network->use_bpdu);
+                if (r < 0)
+                        return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_GUARD attribute: %m");
+        }
 
-        r = sd_netlink_message_append_u8(req, IFLA_BRPORT_MODE, link->network->hairpin);
-        if (r < 0)
-                return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_MODE attribute: %m");
+        if (link->network->hairpin >= 0) {
+                r = sd_netlink_message_append_u8(req, IFLA_BRPORT_MODE, link->network->hairpin);
+                if (r < 0)
+                        return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_MODE attribute: %m");
+        }
 
-        r = sd_netlink_message_append_u8(req, IFLA_BRPORT_FAST_LEAVE, link->network->fast_leave);
-        if (r < 0)
-                return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_FAST_LEAVE attribute: %m");
+        if (link->network->fast_leave >= 0) {
+                r = sd_netlink_message_append_u8(req, IFLA_BRPORT_FAST_LEAVE, link->network->fast_leave);
+                if (r < 0)
+                        return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_FAST_LEAVE attribute: %m");
+        }
 
-        r = sd_netlink_message_append_u8(req, IFLA_BRPORT_PROTECT, !link->network->allow_port_to_be_root);
-        if (r < 0)
-                return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_PROTECT attribute: %m");
+        if (link->network->allow_port_to_be_root >=  0) {
+                r = sd_netlink_message_append_u8(req, IFLA_BRPORT_PROTECT, link->network->allow_port_to_be_root);
+                if (r < 0)
+                        return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_PROTECT attribute: %m");
 
-        r = sd_netlink_message_append_u8(req, IFLA_BRPORT_UNICAST_FLOOD, link->network->unicast_flood);
-        if (r < 0)
-                return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_UNICAST_FLOOD attribute: %m");
+        }
+
+        if (link->network->unicast_flood >= 0) {
+                r = sd_netlink_message_append_u8(req, IFLA_BRPORT_UNICAST_FLOOD, link->network->unicast_flood);
+                if (r < 0)
+                        return log_link_error_errno(link, r, "Could not append IFLA_BRPORT_UNICAST_FLOOD attribute: %m");
+
+        }
 
         if (link->network->cost != 0) {
                 r = sd_netlink_message_append_u32(req, IFLA_BRPORT_COST, link->network->cost);
index e828fe8c6c3d2770a726db07ef3a7f88cba63a45..1a0da586515b8eadce5751a666a15f4a2abfc522 100644 (file)
@@ -148,11 +148,11 @@ DHCPServer.Timezone,                    config_parse_timezone,
 DHCPServer.PoolOffset,                  config_parse_uint32,                            0,                             offsetof(Network, dhcp_server_pool_offset)
 DHCPServer.PoolSize,                    config_parse_uint32,                            0,                             offsetof(Network, dhcp_server_pool_size)
 Bridge.Cost,                            config_parse_uint32,                            0,                             offsetof(Network, cost)
-Bridge.UseBPDU,                         config_parse_bool,                              0,                             offsetof(Network, use_bpdu)
-Bridge.HairPin,                         config_parse_bool,                              0,                             offsetof(Network, hairpin)
-Bridge.FastLeave,                       config_parse_bool,                              0,                             offsetof(Network, fast_leave)
-Bridge.AllowPortToBeRoot,               config_parse_bool,                              0,                             offsetof(Network, allow_port_to_be_root)
-Bridge.UnicastFlood,                    config_parse_bool,                              0,                             offsetof(Network, unicast_flood)
+Bridge.UseBPDU,                         config_parse_tristate,                          0,                             offsetof(Network, use_bpdu)
+Bridge.HairPin,                         config_parse_tristate,                          0,                             offsetof(Network, hairpin)
+Bridge.FastLeave,                       config_parse_tristate,                          0,                             offsetof(Network, fast_leave)
+Bridge.AllowPortToBeRoot,               config_parse_tristate,                          0,                             offsetof(Network, allow_port_to_be_root)
+Bridge.UnicastFlood,                    config_parse_tristate,                          0,                             offsetof(Network, unicast_flood)
 Bridge.Priority,                        config_parse_bridge_port_priority,              0,                             offsetof(Network, priority)
 BridgeFDB.MACAddress,                   config_parse_fdb_hwaddr,                        0,                             0
 BridgeFDB.VLANId,                       config_parse_fdb_vlan_id,                       0,                             0
index e25909374f810d78b109349784e60219db43d2ab..2592377a6f748fd4d0198a8a462ff76edc4d59a6 100644 (file)
@@ -224,9 +224,11 @@ static int network_load_one(Manager *manager, const char *filename) {
         network->router_emit_dns = true;
         network->router_emit_domains = true;
 
-        network->use_bpdu = true;
-        network->allow_port_to_be_root = true;
-        network->unicast_flood = true;
+        network->use_bpdu = -1;
+        network->hairpin = -1;
+        network->fast_leave = -1;
+        network->allow_port_to_be_root = -1;
+        network->unicast_flood = -1;
         network->priority = LINK_BRIDGE_PORT_PRIORITY_INVALID;
 
         network->lldp_mode = LLDP_MODE_ROUTERS_ONLY;
index fc3dd65a4a3730d4645970f2db8a21bdc5cde240..060c526b9ee8dde7666ff2a51fae490891667d3e 100644 (file)
@@ -177,11 +177,11 @@ struct Network {
         char **router_search_domains;
 
         /* Bridge Support */
-        bool use_bpdu;
-        bool hairpin;
-        bool fast_leave;
-        bool allow_port_to_be_root;
-        bool unicast_flood;
+        int use_bpdu;
+        int hairpin;
+        int fast_leave;
+        int allow_port_to_be_root;
+        int unicast_flood;
         uint32_t cost;
         uint16_t priority;