mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-10-29 17:54:14 +08:00
cmd: report a rejected command as an error and keep it out of the history
run_cmd_body() answers POST /cmd with 400 when err_status is set, but only the tokenizer set it. Every "Error:", "Invalid ..." and "Unknown command" from the parsers went back as 200, so the web page reported the command as applied, and save_cmd put the rejected line into the command history, from where Save to flash wrote it into the startup config. Set ERR_INVALID_ARGUMENT on every path that rejects a command: the err: labels of the parsers, the parsers that print their own error, the stp parser and the unknown command fallback. Warnings that still apply the command, such as a full VLAN name table, are left alone. Record a command in the history only when it was accepted, and let execute_commands() report the first failure of a multi-line body, since cmd_tokenize() clears err_status again for every following line.
This commit is contained in:
1 parent
94992562fd
commit
13cc9db1ce
3 files changed
+56
-4
No files matched your search
@@ -15,6 +15,8 @@
|
||||
#include "uip.h"
|
||||
#include "machine.h"
|
||||
|
||||
extern __xdata uint8_t err_status;
|
||||
|
||||
// All entry points are __banked and nothing here runs from an interrupt,
|
||||
// so the module does not need to stay in the resident bank
|
||||
#pragma codeseg BANK2
|
||||
@@ -1134,5 +1136,6 @@ void stp_parse(void) __banked __reentrant
|
||||
}
|
||||
return;
|
||||
err:
|
||||
err_status = ERR_INVALID_ARGUMENT;
|
||||
print_string("Error: stp on|off|status | prio <0-15> | hello <1-10> | maxage <6-40> | fwd <4-30> | txhold <1-10> | version rstp|stp | port <1-9>|lag <1-4> on|off|edge|cost|prio|guard|filter ...\n");
|
||||
}
|
||||
Reference in new issue
Block a user