Commits


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.


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.


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.


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


implement 'clear' command in interface/bridge mode resolves warning: unused function 'int_clear' [-Wunused-function]


the stats handler functions don't take any arguments; make this explicit


mark catchsigwinch() in main.c as static to silence a compiler warning


remove struct ctl2 and struct daemons2; convert everything to new format test + ok Tom


fix whitespace in systatcs definition in commands.c


fix initialization of systatcs sentinel in commands.c Repairs the following compile-time warning: nsh/commands.c:403:17: warning: suggest braces around initialization of subobject [-Wmissing-braces] { 0, 0, 0, 0 } ^~~~ { }


don't let a potential error in set_ifflags() clobber the errno we need


trim a comment which went beyond 80 columns


fix whitespace issues


if.c - vlan parent devices automatically disable disable the child interface and change parent and enable interface after the change made... issue reported by Tom... fix authored by stsp tested by Tom and reviewed OK Tom and OK Chris


preserve only manually added ndp table entries in startup config nsh was mistakenly adding all ndp table entries to startup-config when the configuration was saved with write-config. This results in spurious 'permanent' ndp entries when the written config is loaded. If you find spurious permanent ndp entries on your system these entries must be removed via 'no ndp <IPv6 address>', then use 'write-config' to save the fixed the configuration. Alternatively, remove all lines which set unwanted permanent NDP entries from /etc/nshrc and reboot. Problem reported and fix tested by Tom. ok Tom


Merge pull request #164 from smytht/systat-feature add show system-stats commands Ok Stsp@


Update cmdargs.c Use proper english :) initialised not initalized and give an informative error


update nsh.8 to improve examples in standard width console screen


oops, fix typo in previous which broke the build


add show system-stats commands This is to allow nsh users to avail of systat functionality useful for queue stats and pf stats added full suite of systat features except nfs as I dont think those features are as interesting for a network appliance


fix rtable number shown in error message when switching rdomains fails


version bump for release 1.2.3


fix misspelling of privileged (sorry)


update version for release add example of help for config mode


don't skip empty lines in rules which store file contents When file contents were stored in /etc/nshrc in a rules directive, such as contents of /etc/motd or sshd_config, empty lines were being stripped. ok Tom