summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-03-26 17:51:29 +0100
committerGitHub <noreply@github.com>2020-03-26 17:51:29 +0100
commita879b6d22f17495481b2dc5de64a9cd5601ad121 (patch)
tree8697d6ca2ba71a504836aed9ae17900f072f9e30
parent272a8864daf16c05c8f2642d96d4f1c55a1c10bb (diff)
parenta8389a33079e114569165def29b0dbbfbf3d0d8a (diff)
downloadsystemd-a879b6d22f17495481b2dc5de64a9cd5601ad121.tar.gz
Merge pull request #15214 from ssahani/networkctl-br1
network: Introduce bridge util
-rw-r--r--src/network/networkctl.c13
-rw-r--r--src/shared/bridge-util.c13
-rw-r--r--src/shared/bridge-util.h20
-rw-r--r--src/shared/meson.build2
4 files changed, 37 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 {
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 <netinet/in.h>
+#include <linux/if_bridge.h>
+
+#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