|
|
4aca6e |
From 9abd0130706603ffc408ecb8a09c7586eca14826 Mon Sep 17 00:00:00 2001
|
|
|
049c96 |
From: Phil Sutter <psutter@redhat.com>
|
|
|
4aca6e |
Date: Tue, 28 Feb 2017 16:09:46 +0100
|
|
|
049c96 |
Subject: [PATCH] Allow specifying bridge port STP state by name rather than
|
|
|
049c96 |
number.
|
|
|
049c96 |
|
|
|
4aca6e |
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1417289
|
|
|
049c96 |
Upstream Status: iproute2.git commit 6b8c871dc1045
|
|
|
4aca6e |
Conflicts: Changes in removed code due to previously backported double
|
|
|
4aca6e |
whitespace cleanup - removed double whitespaces from added
|
|
|
4aca6e |
text manually.
|
|
|
049c96 |
|
|
|
049c96 |
commit 6b8c871dc104576c9f55d87937d6dd445d77f34f
|
|
|
049c96 |
Author: Alex Pilon <alp@alexpilon.ca>
|
|
|
049c96 |
Date: Thu Feb 19 14:27:46 2015 -0500
|
|
|
049c96 |
|
|
|
049c96 |
Allow specifying bridge port STP state by name rather than number.
|
|
|
049c96 |
|
|
|
049c96 |
The existing behaviour forces one to memorize the integer constants for
|
|
|
049c96 |
STP port states.
|
|
|
049c96 |
|
|
|
049c96 |
# bridge link set dev dummy0 state 3
|
|
|
049c96 |
|
|
|
049c96 |
This patch makes it possible to use the lowercased port state name.
|
|
|
049c96 |
|
|
|
049c96 |
# bridge link set dev dummy0 state forwarding
|
|
|
049c96 |
|
|
|
049c96 |
Invalid non-integer inputs now cause exit with status -1.
|
|
|
049c96 |
|
|
|
049c96 |
Signed-off-by: Alex Pilon <alp@alexpilon.ca>
|
|
|
049c96 |
---
|
|
|
049c96 |
bridge/link.c | 14 +++++++++++++-
|
|
|
049c96 |
man/man8/bridge.8 | 4 +++-
|
|
|
049c96 |
2 files changed, 16 insertions(+), 2 deletions(-)
|
|
|
049c96 |
|
|
|
049c96 |
diff --git a/bridge/link.c b/bridge/link.c
|
|
|
4aca6e |
index 8b18931..06a2c0f 100644
|
|
|
049c96 |
--- a/bridge/link.c
|
|
|
049c96 |
+++ b/bridge/link.c
|
|
|
4aca6e |
@@ -316,7 +316,19 @@ static int brlink_modify(int argc, char **argv)
|
|
|
049c96 |
priority = atoi(*argv);
|
|
|
049c96 |
} else if (strcmp(*argv, "state") == 0) {
|
|
|
049c96 |
NEXT_ARG();
|
|
|
049c96 |
- state = atoi(*argv);
|
|
|
049c96 |
+ char *endptr;
|
|
|
049c96 |
+ size_t nstates = sizeof(port_states) / sizeof(*port_states);
|
|
|
049c96 |
+ state = strtol(*argv, &endptr, 10);
|
|
|
049c96 |
+ if (!(**argv != '\0' && *endptr == '\0')) {
|
|
|
049c96 |
+ for (state = 0; state < nstates; state++)
|
|
|
049c96 |
+ if (strcmp(port_states[state], *argv) == 0)
|
|
|
049c96 |
+ break;
|
|
|
049c96 |
+ if (state == nstates) {
|
|
|
049c96 |
+ fprintf(stderr,
|
|
|
049c96 |
+ "Error: invalid STP port state\n");
|
|
|
049c96 |
+ exit(-1);
|
|
|
049c96 |
+ }
|
|
|
049c96 |
+ }
|
|
|
049c96 |
} else if (strcmp(*argv, "hwmode") == 0) {
|
|
|
049c96 |
NEXT_ARG();
|
|
|
049c96 |
flags = BRIDGE_FLAGS_SELF;
|
|
|
049c96 |
diff --git a/man/man8/bridge.8 b/man/man8/bridge.8
|
|
|
4aca6e |
index 42fe922..c742c83 100644
|
|
|
049c96 |
--- a/man/man8/bridge.8
|
|
|
049c96 |
+++ b/man/man8/bridge.8
|
|
|
4aca6e |
@@ -207,7 +207,9 @@ droot port selectio algorithms.
|
|
|
049c96 |
.TP
|
|
|
049c96 |
.BI state " STATE "
|
|
|
049c96 |
the operation state of the port. This is primarily used by user space STP/RSTP
|
|
|
049c96 |
-implementation. The following is a list of valid values:
|
|
|
049c96 |
+implementation. One may enter a lowercased port state name, or one of the
|
|
|
049c96 |
+numbers below. Negative inputs are ignored, and unrecognized names return an
|
|
|
049c96 |
+error.
|
|
|
049c96 |
|
|
|
049c96 |
.B 0
|
|
|
049c96 |
- port is DISABLED. Make this port completely inactive.
|
|
|
049c96 |
--
|
|
|
049c96 |
1.8.3.1
|
|
|
049c96 |
|