Commit Briefs



c1f7b2cc26 Stefan Sperling

plug a small memory leak in pr_environment()


c0130f838e Stefan Sperling

make 'show arp' respect the current routing table

ok Tom


f9706d0042 Stefan Sperling

make 'flush routes' and 'flush arp' operate on the current rtable

These commands were hard-coded to use rtable 0. Problem found by Tom.


9f47d3c105 Stefan Sperling

have 'flush arp' filter routes to be deleted like 'no arp' and 'arp -d' do

test + ok Tom



726548d572 Stefan Sperling

Hide informative output of flush routes/arp behind a verbose flag

Suggested by Tom


6ee01971ba Stefan Sperling

fix error when flush arp/route run into deleted routing table entries

It is possible to get "no such process" (ESRCH) errors during flush arp or flush route commands due to concurrent deletion of routing table entries by another process. This is no reason to stop trying to delete more routes, so do not abort the loop in this case. Also, make nsh print a more informative error message in this case, rather than "no such process". Example of the new error message: % No such route to delete: 100.64.1.2 fe:e1:ba:d0:8e:45 255.255.255.255 fe:e1:bb:d1:c4:b8 100.64.1.3 Testing + OK Tom


d4510bcfd5 Stefan Sperling

do not try to remove routes for local addresses during 'flush arp'

Attempting this results in "invalid argument" errors from the kernel. testing + ok Tom


8c06089ad5 GitHub

Merge pull request #166 from yellowman/fix-flush-pf-cmds

Fix flush pf commands and improve flush documentation OK STSP


94e2f9700d Stefan Sperling

fix nsh -i/-c appending rules to daemon config files over and over

nsh -i/-c wrote daemon config files in /var/run by opening the file in append-only mode, adding a single line, closing the file again, and running chmod on the file. All this over and over, for every line. This is inefficient and also results in the problem that the full file content gets re-appended to the file each time nsh -i is run. Instead, open the file once when a new rules section is encountered, and close it when a different file needs to be written or when we can tell that we have left a "rules" section. The last open file might end up being closed implicitly when nsh -i/-c exits. While nsh -i should only be run once at boot-time which renders this issue moot, nsh -c can be run often, and the issue will also trigger during manual testing of nsh -i which is quite irritating. testing + OK Tom


cc62bfba2b GitHub

Update flush-test.nshrc

update flush test script to remove defunct commands and add new commands related to flush pf


e1e572aed6 Stefan Sperling

prevent leading spaces in rdomain-specific daemon config files

Rules for rdomain-specific daemons have double-indentation in nshrc. When generating configuration files for daemons strip double-indentation instead of stripping only one level of indentation. testing + ok Tom


9c2afa13b9 GitHub

Fix flush pf commands and improve flush documentation

flush nat and flush queues dont work, added in new flush commands to match pfctl -F [modifier]


01bc5d48c9 Stefan Sperling

convert all command handlers to variadic functions

Resolves dozens of: warning: passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C2x In traditional C the empty argument list () indicates that a function accepts an arbitrary amount of arguments of arbitary types. A function which takes no arguments must be declared with a (void) prototype instead. nsh has been making elaborate use of this feature by defining command handlers with () and passing arbitrary arguments to handlers depending on the use case. This coding style is not future-proof. In C++, () means "no arguments", the same as (void), and clang is now warning about this C feature going away in C2x, aligning C with C++. Make nsh future-proof by using variadic function prototypes (...) instead of () prototypes. Every handler now uses (int argc, char **argv, ...) as prototype: the argument count, an argument vector, followed by arbitrary arguments which can be extracted using the va_arg(3) function from stdarg.h. The variadic part of the argument list can be used to pass arguments of types other than char * without needing to convert them to strings and back. Using () as function prototype defeats type-checking done by the compiler, and the same is true for variadic arguments. We still need to manually make sure that the correct amount and types of arguments are passed in the variadic part of the handler's argument list. Many handlers already use the argument count + argument vector approach and do not need internal changes, just a new prototype. Some handlers now require use of va_start/va_arg/va_end to access additional arguments. For example, the interfaces handlers were passing an interface name and file descriptor before the argument count/vector. The order of arguments is now swapped, such that interface name and file descriptor get passed as part of the variable argument list. Testing + OK Tom


34841712b1 GitHub

Create no-config-change-test.nshrc

added these basic test scripts to allow for testing nsh commands that dont alter configs


c01470d76d GitHub

Update no-config-change-test.nshrc

remove extra telnet command and edit telnet command so it fails saying connection refused


462a289a42 GitHub

Rename flush-commands-test to flush-test.nshrc

rename flush-commands-test to flush-test.nshrc


59b4c3c0ce GitHub

Create flush-commands-test

used to assist in testing nsh can be run interactively or called in a nsh -c command


d718c3b8fb GitHub

Merge pull request #165 from yellowman/reload-reboot-alias

implement a reload reboot command alias


b96221e6b0 Stefan Sperling

update K&R-C-style prototypes in kroute.c to modern C

Fixes warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x



d3156eb934 Stefan Sperling

implement 'clear' command in interface/bridge mode

resolves warning: unused function 'int_clear' [-Wunused-function]


5aabeb522f GitHub

add reload alias for reboot command

reload is a common command used to restart routers / switches added a reload alisas and updated the manual to improve the help for the reboot command reload is added to the list that does not get listed in help / ambiguous checks trivial Change ...