]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
networkd: add support to set STP (#3903)
authorSusant Sahani <ssahani@users.noreply.github.com>
Fri, 5 Aug 2016 23:44:57 +0000 (05:14 +0530)
committerLennart Poettering <lennart@poettering.net>
Fri, 5 Aug 2016 23:44:57 +0000 (01:44 +0200)
fixes #3881

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

index a5c6f0fa40c03c661d11920bd9ec4edcf805148c..e56708a64880e10e915848ba02bd9ce1b18aee68 100644 (file)
             </para>
           </listitem>
         </varlistentry>
+          <varlistentry>
+          <term><varname>STP=</varname></term>
+          <listitem>
+            <para>A boolean. This enables the bridge's Spanning Tree Protocol (STP). When unset,
+            the kernel's default setting applies.
+            </para>
+          </listitem>
+        </varlistentry>
       </variablelist>
-
   </refsect1>
 
   <refsect1>
index a5085d2b1916478cb131168cdb62f404b244ba3a..12b0fe972fd25c45dab2090b9033fbcf1547e65f 100644 (file)
@@ -108,6 +108,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_VLAN_FILTERING attribute: %m");
         }
 
+        if (b->stp >= 0) {
+                r = sd_netlink_message_append_u32(req, IFLA_BR_STP_STATE, b->stp);
+                if (r < 0)
+                        return log_netdev_error_errno(netdev, r, "Could not append IFLA_BR_STP_STATE 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");
@@ -135,6 +141,7 @@ static void bridge_init(NetDev *n) {
         b->mcast_querier = -1;
         b->mcast_snooping = -1;
         b->vlan_filtering = -1;
+        b->stp = -1;
 }
 
 const NetDevVTable bridge_vtable = {
index a637aea0a3f82e1006790c42a33ec52c97d04692..4ce0fbb6f9ae10851dca5a4871d51f77c3f3c5cc 100644 (file)
@@ -27,6 +27,7 @@ typedef struct Bridge {
         int mcast_querier;
         int mcast_snooping;
         int vlan_filtering;
+        int stp;
 
         usec_t forward_delay;
         usec_t hello_time;
index 9d69f61376f0e33986c84c365415f4fc3aaaa3f6..a1ca1a3d4e119a1493791f5ba9c9073570211e27 100644 (file)
@@ -106,4 +106,5 @@ Bridge.ForwardDelaySec,      config_parse_sec,                   0,
 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)
+Bridge.STP,                  config_parse_tristate,              0,                             offsetof(Bridge, stp)
 VRF.TableId,                 config_parse_uint32,                0,                             offsetof(Vrf, table_id)