This is an old revision of the document!
Table of Contents
Kamailio SIP Server (SER) - New Features in Devel Version
Current devel version will be numbered 5.3.0 and it is planned to be released in the autum 2019.
Previous devel, current stable, version was 5.2.x (released on November, 2018), see what was new in that release at:
This is a draft of new features added in devel version, manually updated, thus not always synchronized with what is new in source code repository.
New Modules
app_lua_sr
Old sr module exported to Lua scripting.
kemix
KEMI specific extensions.
rtp_media_server
Embedded RTP and media processing functionalities for Kamailio
secfilter
Filters to allow/block using whitelists/blacklist based on user agents, IP addresses, countries, domains and users. SQL injection attacks prevention. Blacklist of destinations where the called number is not allowed.
xhttp_prom
Generates suitable metrics for a Prometheus monitoring platform, answering to Prometheus pull requests (HTTP requests to /metrics URL).
New in existing Modules
acc_json
Add support for leg_info fields to the acc_json module
cnxcc
Added a new param in the cnxcc_set_max_credit() function to set the connect cost of a call.
dialog
Add new rpc commands dlg.list_match and dlg.list_match_ctx to the dialog module. They will list dialogs matching the expression given via parameters
dispatcher
Add new rpc functions, to add and remove destinations to the in-memory dispatcher list.
Add a new flag 16 (1«4) to the cfg syntax for destinations with host not having A/AAAA record.
Add a new parameter reload_delta to limit the frequency of rpc reload commands to try to avoid races of parallel reload operations.
dialplan
Add reload_delta parameter to make the rate limit of maximum allowed dialplan reload configurable.
evrexec
Added rpc command evrexec.run to run an event_route: kamctl rpc evrexec.run evname [evdata]. First parameter is the event route name (or KEMI function), second parameter (optional, string) is an arbitrary data that becomes available inside the event route via $evr(data).
ims
Extend module functionality significantly, several new commands (e.g. #rooms, #add) were added. Internal refactoring and protocol extensions were done as well. For details have a look to the commit messages for this module.
ims_ipsec_pcscf
Add IPv6 support to the ims_ipsec_pcscf module. Set authentication algorithm for SA depending of parsed security-client info from REGISTER request message. For now, the supported algorithms are md5 and sha1, the default algorithm is sha1.
Additional initial TCP support and support for multiple TCP connections were added.
ims_registrar_pcscf
Add support for multiple TCP connections to the ims_registrar_pcscf module.
ims_usrloc_pcscf
Add support for multiple TCP connections to the ims_usrloc_pcscf module.
ims_isc
Add functionality to a add-on to third party registration in S-CSCF. The feature assumes two new flags in HSS database, where additional to the “Service Info XML” an “insertRegisterRequest” flag or an “insertRegisterResponse” flag can be set. These flags are sent with the SAR/SAA exchange to the S-CSCF. More information can be found in the commit message (99b2cfaf4151968a62) and the module documentation.
ims_usrloc_scscf
Add-on to third party registration in S-CSCF to the ims_usrloc_scscf module.
ims_registrar_scscf
Add-on to third party registration in S-CSCF to the ims_registrar_scscf module.
mqueue
Add a new rpc command mqueue.fetch
pv
New pseudo-variable $rcv(key), available inside event_route[core:msg-received] to get details of the received message.
New pseudo-variable $TV(Fn) - formatted time with microseconds YYYY-MM-DD HH:MM:SS.UUUUUU. Current time in human readable format with microseconds precission.
janssonrpcc
Add new parameter “keep_alive”, send periodic tcp keepalive packets to server in order to prevent connection from closing.
kex
New rpc command mod.mem_statsx, to print also the count of allocated chunks in summary.
presence
A new rpc command presence.updateWatchers
registrar
New parameter lookup_filter_mode to control what filters should be applied for lookup(…) operations. Filter values are specified via filed of xavp_cfg.
rr
Add new return value for preloaded route set to loose_route(). Now it is possible to detect from the script if a preloaded Route header was removed that pointed at the local proxy.
rls
Add a new rpc command rls.update_subs.
rtpengine
Introduce additional hashing algorithm SHA1 over callid for better distribution among nodes.
Add play_media() and stop_media() functions, also includes addition of the $media_duration pseudo-variable, as well as several code cleanups and simplifications.
Add start_forwarding() and stop_forwarding() functions.
Add support for trickle ICE SDP fragments, add support for explicit load balancing options and add support for via-branch=extra option.
sdpops
Added new sdp_get_ddress_family() function to extract the IP address family from the SDP body
siptrace
Add transaction and dialog level tracing to the module function sip_trace
sl
Add new pseudo-variables: $ltt(key) - return local generated to tag when Kamailio sends a reply.
sqlops
Add a new parameter connect_mode, option to start even when connecting to db fails.
textops
Add a new function regex_substring(itext, regex, index, mcount, dpv). Return a substring extracted by matching with a regular expression and the index of matched token.
tls
Add support for unique identifier PVs and select: $tls_peer_subject_uid and $tls_my_subject_uid, new selects: uid, uniqueIdentifier and unique_identifier.
Add workaround for new OpenSSL 1.1, preloaded library. This is a workaround for OpenSSL >= 1.1 which uses internal locking and doesn't support locks in memory shared across multiple processes.
tm
Added t_get_status_code() function to return the status code of the transaction - the sip response code.
tmx
Add a new function t_drop([rcode])
uac
New modparam reg_gc_interval, to define a value for garbage collection interval
The uac_replace_from/uac_replace_to function (with dialog storage option) will now also work properly after a restart from Kamailio, if dialog data is stored in a database.
The uac_replace_from/uac_replace_to function will now also properly store and restore the Display Name with the dialog storage option.
websocket
Added check mechanism based on tcp connection - type 3 (KEEPALIVE_MECHANISM_CONCHECK)
New in Core
Command line arguments
Adding support for long option names, to kamailio. This makes it easier to deploy Kamailio in dynamic environments like containers. Examples:
- add domain aliases with –alias
- set advertised address to listen sockets speficied with -l socket/advertise
- set server id with –server-id
- set a subst, substdef or substdefs preprocessor expression with –subst, –substdef or –substdefs
More information: https://www.kamailio.org/w/2019/05/kamailio-command-line-arguments/
Interpreter
Parameters
New global parameter bind_ipv6_link_local. If set to 1, try to bind also IPv6 link local addresses by discovering the scope of the interface. This apply for UDP socket for now, to be added for the other protocols.
Introduce new configuration parameter tcp_accept_haproxy parameter. When active, inbound TCP connections are expected to behave according to the HA PROXY protocol. Both the v1 (human-readable) and v2 (binary) versions of the protocol are supported.
Added latency_limit_cfg global parameter to print execution time for configuration script only if it exceeds this value. It is printed to latency_cfg_log level, another added parameter.
Functions
- New rpc command core.psa - to print attributes stored in process table, similar to core.psx, but also prints the rank and status fields
Memory Managers
Refactoring and unification of memory allocation error logging infrastructure. Completed in the core, major modules were migrated as well.
Architecture
Extend internal IPv4 and IPv6 parsing functions in the core.
kamailio.cfg
Tools
Added tool to generate code for KEMI modules to misc/tools/kemi/kemi-code-gen.py - can generate typedefs for functions and the large if-else blocks for variants of parameters.
kamcmd
kamctl
Added subcommand to print the server version using rpc command: kamctl srv version
Added subcommand to delete older expired records from database table: kamctl ul dbclean [<secs>]
Added acc initdb command to add additional columns needed with default kamailio.cfg and defined WITH_ACCDB for acc and missed_calls table.