Allow specifying bridge port STP state by name rather than number.

The existing behaviour forces one to memorize the integer constants for
STP port states.

    # bridge link set dev dummy0 state 3

This patch makes it possible to use the lowercased port state name.

    # bridge link set dev dummy0 state forwarding

Invalid non-integer inputs now cause exit with status -1.

Signed-off-by: Alex Pilon <alp@alexpilon.ca>
This commit is contained in:
Alex Pilon 2015-02-19 14:27:46 -05:00 committed by Stephen Hemminger
parent a4797670d3
commit 6b8c871dc1
2 changed files with 16 additions and 2 deletions

View File

@ -316,7 +316,19 @@ static int brlink_modify(int argc, char **argv)
priority = atoi(*argv);
} else if (strcmp(*argv, "state") == 0) {
NEXT_ARG();
state = atoi(*argv);
char *endptr;
size_t nstates = sizeof(port_states) / sizeof(*port_states);
state = strtol(*argv, &endptr, 10);
if (!(**argv != '\0' && *endptr == '\0')) {
for (state = 0; state < nstates; state++)
if (strcmp(port_states[state], *argv) == 0)
break;
if (state == nstates) {
fprintf(stderr,
"Error: invalid STP port state\n");
exit(-1);
}
}
} else if (strcmp(*argv, "hwmode") == 0) {
NEXT_ARG();
flags = BRIDGE_FLAGS_SELF;

View File

@ -207,7 +207,9 @@ droot port selectio algorithms.
.TP
.BI state " STATE "
the operation state of the port. This is primarily used by user space STP/RSTP
implementation. The following is a list of valid values:
implementation. One may enter a lowercased port state name, or one of the
numbers below. Negative inputs are ignored, and unrecognized names return an
error.
.B 0
- port is DISABLED. Make this port completely inactive.