Hello,
the default config parsing is "compiling on the fly", is not keeping any
copy of the entire input in the memory.
It would be possible to print the execution tree compiled by the
kamailio config interpreter upon parsing the input, but it is far from
getting a reusable config file.
I pushed a commit to add --cfg-print command line paramter that does a
different mode of parsing, evaluating only include/import file
directives and ifdef/ifndef conditions. The result is printed to stdout.
If another behaviour is desired, then pull requests are welcome.
Cheers,
Daniel
On 10.11.20 09:52, Henning Westerholt wrote:
Hi Brandon,
not having looked that much into it yet, but some comments.
Adding the “-C” option is probably the easiest part; it is done inside
main.c in the existing block for the other configuration options.
About dumping the kamailio cfg after its has been parsed – the main
problem is here probably that the internal state from the cfg file
parser will be not that useful, as it will in another format.
Have a look to the cfg.lex and INCLUDEFILE definition if you did not
find it already. The actual implementation of this one is around line
1357.
Maybe it is a good idea to look into how other programs have
implemented this.
Cheers,
Henning
--
Henning Westerholt –
https://skalatan.de/blog/ <https://skalatan.de/blog/>
Kamailio services –
https://gilawa.com <https://gilawa.com/>
*From:* sr-dev <sr-dev-bounces(a)lists.kamailio.org> *On Behalf Of
*Brandon Armstead
*Sent:* Monday, November 9, 2020 8:43 PM
*To:* Kamailio Devel List <sr-dev(a)lists.sip-router.org>
*Subject:* [sr-dev] Simple Feature / Help
Hello all,
I'm looking to add a -C [filename] flag that will read the root
kamailio.cfg file and its included files and dump the compiled result
and exit.
i.e. kamailio -C /path/to/root/file.cfg
[ DUMPS COMPILED CONFIGURATION INCLUDING / IMPORTS & INCLUSIONS ]
Similar to nginx -T
I attempted to research what files are involved and it looks like:
src/main.c
src/core/cfg.lex
src/core/lex.yy.c
src/core/cfg.tab.c
src/core/cfg.tab.h
Problems, I'm having:
1) It looks like I need to add the -C option similar to the -c option,
which I've done and it does not recognize the new -C flag.
2) I'm not entirely sure how to access the compiled configuration from
memory, it looks like yyparse maybe involved in compiling the
configuration? sr_push_yy_state seems to do some compiling, but how
do I access the result from src/main.c ?
Any further direction or help with this is appreciated.
- Brandon
_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev(a)lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
--
Daniel-Constantin Mierla --
www.asipto.com
www.twitter.com/miconda --
www.linkedin.com/in/miconda
Funding:
https://www.paypal.me/dcmierla