This is an old revision of the document!
After 15 years of development, it is time for Kamailio v5.0.
This page collects suggestions and ideas for major refactoring of various components to make the leap to v5.0.
When adding a remark that needs to be tracked by author, use initials in front of the paragraph. The list of contributors to this document and initials:
Initial content for this document is listing also ideas popped up during discussions at Fosdem 2016 and Kamailio Development Workshop - among participants: Camille Oudout, Daniel-Constantin Mierla, Federico Cabiddu, Giacomo Vacca, Henning Westerholt, Olle E. Johansson, Torrey Searle, Victor Seva.
Goals:
To achieve the above, following sub-sections collects the proposals for configuration file language.
Interface fields:
Example:
// export t_reply(200, "OK") sr_exapi_t mod_exapi[] = { { "sr.tm", "reply", {PARAM_INT, PARAM_STR, 0}, t_reply }, { 0, 0, {0}, 0} };
Example kamailio.cfg for native interpreter:
# core parameters ... # load modules ... # modules parameters ... routing="native" # default request_route { ... } ... reply_route { ... } ...
Example kamailio.cfg for lua interpreter:
# core parameters ... # load modules ... # modules parameters ... routing="lua" with "/path/to/script.lua"
The script /path/to/script.lua:
function request_route() ... sr.t_on_branch("my_branch_route"); end function reply_route() ... end function my_branch_route() ... end ...
Expected changes:
// event_route[htable:init] function htable_event_route(evname) if evname=="init" then ... else ... end
Goals:
It was discussed in the past:
Two models proposed:
Goals:
Alternatives to analyze:
Goals:
Reviving the exiting unit testing or selecting another framework.
Available frameworks:
Defining a minimum set of automatic tests that needs to be provided by each module:
loadmodule "foo.so" request_route { ; }