No active MI (aka management interface) related code should be in Kamailio master branch starting with today, Jan 4, 2017. The internal library kmi, the modules mi_datagram, mi_fifo, mi_xmlrpc, mi_rpc and pua_mi were removed.
The MI was a custom mechanism introduced in the early days of the project (like 2001-2002) to interact with Kamailio at runtime, using a line-based text protocol through FIFO file, with alternative transport via datagram sockets or xmlrpc. It was declared deprecated several years ago in favour of using the RPC interface. The RPC interface offers a better structured interaction protocol, with transports for XMLRPC, BINRPC and JSONRPC over HTTP(S), TCP, UDP, UNIXSOCKET or FIFO files.
Couple of modules still have some mi code disabled with ifdefs, they are pending the port to RPC commands. These are: carrierroute, ims_dialog, mohqueue, p_usrloc, userblacklist, utils. They should be updated in the next few days.
With MI code removed, the code base got slimmer, the future development and maintenance effort is reduced.
From now on, the RPC interface has to be used for interacting with kamailio at runtime.
The CLI tools were updated as well:
- kamctl – was already migrated to use RPC via jsonrpcs module.
- kamcmd – was developed to use only RPC interface via ctl module.
- kamcli – is also working with RPC via jsonrpcs module
Helping with testing the RPC commands is very appreciated — open an issue on bug tracker whenever you discover a problem.
Thanks for flying Kamailio!