diff options
| author | Susant Sahani <ssahani@users.noreply.github.com> | 2016-08-06 05:14:57 +0530 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2016-08-06 01:44:57 +0200 | 
| commit | b760a9af902c73ae76a05e17374e12e8e6c4e629 (patch) | |
| tree | 78a75a3bd3a060cd2a3f4860ccb15e27f6910988 | |
| parent | ceab9e2deee29dfda213a30c533c7dcd59c6bcad (diff) | |
networkd: add support to set STP (#3903)
fixes #3881
| -rw-r--r-- | man/systemd.netdev.xml | 9 | ||||
| -rw-r--r-- | src/network/networkd-netdev-bridge.c | 7 | ||||
| -rw-r--r-- | src/network/networkd-netdev-bridge.h | 1 | ||||
| -rw-r--r-- | src/network/networkd-netdev-gperf.gperf | 1 | 
4 files changed, 17 insertions, 1 deletions
| diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml index a5c6f0fa40..e56708a648 100644 --- a/man/systemd.netdev.xml +++ b/man/systemd.netdev.xml @@ -343,8 +343,15 @@              </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> diff --git a/src/network/networkd-netdev-bridge.c b/src/network/networkd-netdev-bridge.c index a5085d2b19..12b0fe972f 100644 --- a/src/network/networkd-netdev-bridge.c +++ b/src/network/networkd-netdev-bridge.c @@ -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 = { diff --git a/src/network/networkd-netdev-bridge.h b/src/network/networkd-netdev-bridge.h index a637aea0a3..4ce0fbb6f9 100644 --- a/src/network/networkd-netdev-bridge.h +++ b/src/network/networkd-netdev-bridge.h @@ -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; diff --git a/src/network/networkd-netdev-gperf.gperf b/src/network/networkd-netdev-gperf.gperf index 9d69f61376..a1ca1a3d4e 100644 --- a/src/network/networkd-netdev-gperf.gperf +++ b/src/network/networkd-netdev-gperf.gperf @@ -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) | 
