From af94bb24b59a2abc8d9f3ba6b5ba168372c9237c Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 24 Mar 2020 12:23:08 +0100 Subject: [PATCH 1/2] shared: Introduce bridge util --- src/shared/bridge-util.c | 13 +++++++++++++ src/shared/bridge-util.h | 20 ++++++++++++++++++++ src/shared/meson.build | 2 ++ 3 files changed, 35 insertions(+) create mode 100644 src/shared/bridge-util.c create mode 100644 src/shared/bridge-util.h diff --git a/src/shared/bridge-util.c b/src/shared/bridge-util.c new file mode 100644 index 0000000000..239ac9a1a5 --- /dev/null +++ b/src/shared/bridge-util.c @@ -0,0 +1,13 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ + +#include "bridge-util.h" +#include "string-table.h" + +static const char* const bridge_state_table[_NETDEV_BRIDGE_STATE_MAX] = { + [NETDEV_BRIDGE_STATE_DISABLED] = "disabled", + [NETDEV_BRIDGE_STATE_LISTENING] = "listening", + [NETDEV_BRIDGE_STATE_LEARNING] = "learning", + [NETDEV_BRIDGE_STATE_FORWARDING] = "forwading", +}; + +DEFINE_STRING_TABLE_LOOKUP(bridge_state, BridgeState); diff --git a/src/shared/bridge-util.h b/src/shared/bridge-util.h new file mode 100644 index 0000000000..5b1c3e9ea9 --- /dev/null +++ b/src/shared/bridge-util.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +#pragma once + +#include +#include + +#include "conf-parser.h" + +typedef enum BridgeState { + NETDEV_BRIDGE_STATE_DISABLED = BR_STATE_DISABLED, + NETDEV_BRIDGE_STATE_LISTENING = BR_STATE_LISTENING, + NETDEV_BRIDGE_STATE_LEARNING = BR_STATE_LEARNING, + NETDEV_BRIDGE_STATE_FORWARDING = BR_STATE_FORWARDING, + NETDEV_BRIDGE_STATE_BLOCKING = BR_STATE_BLOCKING, + _NETDEV_BRIDGE_STATE_MAX, + _NETDEV_BRIDGE_STATE_INVALID = -1, +} BridgeState; + +const char *bridge_state_to_string(BridgeState d) _const_; +BridgeState bridge_state_from_string(const char *d) _pure_; diff --git a/src/shared/meson.build b/src/shared/meson.build index 94174347a1..2bbd3dd217 100644 --- a/src/shared/meson.build +++ b/src/shared/meson.build @@ -21,6 +21,8 @@ shared_sources = files(''' bootspec.h bpf-program.c bpf-program.h + bridge-util.c + bridge-util.h bus-unit-procs.c bus-unit-procs.h bus-unit-util.c From a8389a33079e114569165def29b0dbbfbf3d0d8a Mon Sep 17 00:00:00 2001 From: Susant Sahani Date: Tue, 24 Mar 2020 12:23:35 +0100 Subject: [PATCH 2/2] networkctl: Use string table for bridge state --- src/network/networkctl.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/network/networkctl.c b/src/network/networkctl.c index fe511b0c35..ee50fdad8c 100644 --- a/src/network/networkctl.c +++ b/src/network/networkctl.c @@ -21,6 +21,7 @@ #include "bus-common-errors.h" #include "bus-error.h" #include "bus-util.h" +#include "bridge-util.h" #include "device-util.h" #include "escape.h" #include "ether-addr-util.h" @@ -1487,20 +1488,10 @@ static int link_status_one( return table_log_add_error(r); if (info->port_state <= BR_STATE_BLOCKING) { - static const struct { - const char *state; - } state_table[] = { - { "disabled" }, - { "listening" }, - { "learning" }, - { "forwarding" }, - { "blocking" }, - }; - r = table_add_many(table, TABLE_EMPTY, TABLE_STRING, "Port State:", - TABLE_STRING, state_table[info->port_state]); + TABLE_STRING, bridge_state_to_string(info->port_state)); } } else if (streq_ptr(info->netdev_kind, "bond")) { static const struct {