Passing the 15 years of development marker for Kamailio project few months ago, we are now approaching the end of 2016. A long list of people devoted a lot of time in sustaining the project with resources for development, support and advertising. So this is a good moment to thank and greet them, everyone involved in Kamailio project, old and new friends, developers, contributors, the engaged and warm community members.
We are very close to the moment of freezing the version 5.0.0, a new major milestone in the project evolution, with a restructured source code tree, cleaner and slimmer code base, a new flexible configuration file framework that allows building SIP routing script in embedded languages such as Lua and Python, a.s.o. – all making a very solid foundation for developing next releases! Good premises to expect a lot of new stuff in 2017!
Management Interface (MI), the old line-based text protocol interface to interact with Kamailio is going to be removed in the near future. It was declared obsolete several years ago, when we introduced the RPC interface. With upcoming version 5.0 already having the code source tree restructured, this step makes a better and slimmer foundation for next generation of releases.
The default configuration file is now shipping with jsonrpcs module and kamctl tool is using the RPC interface via jsonrpcs. The command line parameters for kamctl should be the same like for the past releases, but the output is now in jsonrpc format.
The RPC interface is implemented by the following modules:
ctl – binary rpc protocol – with transport layers for FIFO file, unix sockets and IP sockets (both datagram and stream). It is the module used by the kamcmd tool.
jsonrpcs – jsonrpc protocol – with transport layers for FIFO file, unix and IP sockets (datagram) and HTTP via xhttp module. It is the module used by kamctl and kamcli tools.
xmlrpc – xmlrpc protocol – with transport layer for HTTP
If you were using mi_fifo or mi_datagram modules, then you can switch to jsonrpcs module (it offers the transports for the two mi modules). If you were using mi_xmlrpc, then you can switch to xmlrpc module.
Today – Dec 7, 2016 – the source code tree of Kamailio project was restructured into a slim and clean root folder. This was done in order to better handle various components and make it easier to get into the source. You can browse it online at:
src/main.c – the main c file of kamailio application
src/core/ – contains the source code for the core, including the subfolders for sip parser, memory manager and other core components
src/lib/ – contains the internal libraries
src/modules/ – contains the modules
utils/ – contains the tools used to operate kamailio such as kamctl and kamcmd
etc/ – configuration files
doc/ – resources for building documentations and core tutorials
pkg/ – packaging specs
misc/ – contains related resources, such as config examples, additional tools and scripts, vim syntax highlighting files, …
test/ – components related to testing
The Makefiles for building the application are in src/, with a new root folder Makefile that does target forwarding to src/. You should be able to use the same make commands inside root folder as well as inside src/.
The kamailio binary is built in src/ directory.
For example, next are the commands to build and run kamailio from source code tree, with debug mode logging to terminal:
git clone https://github.com/kamailio/kamailio cd kamailio make all ./src/kamailio -f etc/kamailio.cfg -L src/modules/ -E -e -ddd
While some small adjustments may still be done, we hope that the new structure is going to make the long term management and development of the project smoother.