Symbol lookup by cf_find_symbol() not only did the lookup but also added
new void symbols allocated from cfg_mem linpool, which gets broken when
lookups are done outside of config parsing, which may lead to crashes
during reconfiguration.
The patch separates lookup-only cf_find_symbol() and config-modifying
cf_get_symbol(), while the later is called only during parsing. Also
new_config and cfg_mem global variables are NULLed outside of parsing.
All origin static functions from sysdep/unix/main.c were rewrited to
non-static.
All origin static global variables from sysdep/unix/main.c was rewrited
to extern.
It is possible create executables bird, birdc and birdcl as well as run
unit tests without mockuping
After remake new BIRD's build system will be this commit reverting...
We need link lib/birdlib.a and remaining */all.o to tests (mockups suck)
Code from sysdep/unix/main.c is moved without 'int main()' function
to the sysdep/unix/main_helper.c
Yes, it is dirty...
After remake new BIRD's build system will be this commit reverting...
Actually it is not possible to build executable bird, birdc nor birdcl
due duplicity of functions in main_helper.o in lib/birdlib.a and
lib/main.o
Several new configure command variants:
configure undo - undo last reconfiguration
configure timeout - configure with scheduled undo if not confirmed in timeout
configure confirm - confirm last configuration
configure check - just parse and validate config file
- ROA tables, which are used as a basic part for RPKI.
- Commands for examining and modifying ROA tables.
- Filter operators based on ROA tables consistent with RFC 6483.
- Adds check to deny config file with no specified protocol to prevent
loading of empty config file.
- Moves CLI init before config parse to receive immediate error message
when cannot open control socket.
- Fixes socket name path check and other error handling in CLI init.
you can delete the socket from anywhere in the hooks and nothing should break.
Also, the receive/transmit buffers are now regular xmalloc()'ed buffers,
not separate resources which would need shuffling around between pools.
sk_close() is gone, use rfree() instead.
for even only medium sized route table output. Fix a strange garbled
output problem in the client. The latter seems to be caused by some
library doing tcflush while there is still command output pending. So
the best fix here is to do fflush and then tcdrain. Note that this
problem occurs only under certain load situations and is not too easy to
reproduce.
(by Andreas)