User Tools

Site Tools


features:new-in-5.3.x

Kamailio SIP Server - New Features in 5.3.0

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 this version, manually updated, thus not always synchronized with what is new in source code repository.

New Modules

app_lua_sr

lost

HELD (RFC6155) and LOST (RFC5222) location-based routing.

kemix

rtp_media_server

Embedded RTP and media processing functionalities for Kamailio, like playing media or bridging in a B2BUA manner. Includes support for different codecs (including Opus).

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

Removal of obselete diameter related documentation

acc_json

Add support for leg_info fields to the acc_json module

async

New functionality to sleep for milli-seconds and also schedule a asynchronous route execution with milli-seconds delay

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

Add new parameter keep_proxy_rr to loop BYE through proxy. When in use, sending locally generated in-dialog requests will loop back to the proxy with a proper Record-Route header, including any parameters.

dispatcher

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).

http_client

imc

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.

mohqueue

mqueue

nathelper

Extend nat_uac_test() to test for mismatch between connection and source IP.

pv

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.

phonenum

New param resid to register result container ids.

presence

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

rtpengine

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

sqlops

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

tm

tmx

uac

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

Many extensions to the KEMI scripting language support in core and modules were added.

Parameters

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. The #define are called PKG_MEM_ERROR, PKG_MEM_CRITICAL, SHM_MEM_ERROR, SHM_MEM_CRITICAL, SYS_MEM_ERROR and SYS_MEM_CRITICAL error. Additional #define for variable log messages for special cases were added as well.

Architecture

  • Extend internal IPv4 and IPv6 parsing functions in the core.
  • Create Contacts header with path vector as Route header. When Kamailio is functioning as a registrar sends a 302 redirect, the registered contacts are sent inside the Contact header. If a contact as a path vector, that path should become a Route header in the INVITE (rfc 3327). This patch adds the path vector as a Route header parameter to the Contacts in the redirect so the receiving entity of the 302 can add the proper Route headers. This is a standard way to specify headers to be added to a request, see rfc3261 section 19.1.1.
  • Add DB_TABLE_VERSION_ERROR(table) error helper #define to DB1 API and migrate (almost) all modules that use version tables to it. This unify the logging and error behavior of the relevant modules that uses a database.
  • Improve to-tags to include more randomness and use the recommended size from RFC 3261.
  • Different cleanups related to obselete code.

kamailio.cfg

Changes to the default kamailio.cfg

  • detect sipvicious as scanner
  • do sanity check for sip responses
  • no connect for forwarding requests withing dialog
  • set no connect flags for replies and natted messages
  • explicitely set the tcp/tls connections upper limits

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.

kamdbctl

  • Added verification before database reinit
  • Warn that drop command will indeed drop the database.
  • Increased the size of several database fields to properly store IPv6 data

kamcli

features/new-in-5.3.x.txt · Last modified: 2019/09/05 08:48 by ycaner