gatekeeper
gatekeeper copied to clipboard
Page large messages in gkctl
The scripts shipped with gkctl
(i.e. scripts in folder gkctl/scripts
) will have their output truncated if the output is larger than 64KiB due to the maximum size of the messages of the dynamic configuration block. While this is not a problem for most scripts, it is an issue for scripts show_fib.lua
and show_fib6.lua
when routing tables are large.
Increasing the limit of the messages of the dynamic configuration block is not a solution because routing tables are essentially unbounded. And this limit exists to guarantee that the dynamic configuration can bound its operations. Thus, some form of paging large messages is needed.
A possible solution is to enhance gkctl
to receive parameters from the command line that are passed to the Lua scripts. That is, the Lua scripts would actually be templates that will have their parameters replaced before being passed to the dynamic block. This way, one can pass a parameter that says from where the dump of a routing table begins. Passing parameters to Lua scripts may even find other applications.
Once parameters for scripts are available, gkctl
could support some mechanism to run scripts multiple times with different parameters to get the whole routing table with a single call of gkctl
.
This issue is singly motivated by dumping the FIB, a functionality that is already available through the RTNetlink interface that the CPS exports to routing daemons. Thus, a simpler solution would be to extend gkctl
or to add another command to dump the FIB via RTNetlink.
Nevertheless, the possibility of passing parameters to Lua scripts proposed above would still be a valuable feature in general.