This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
features:new-in-devel [2016/10/10 10:07] timmo [Parameters] mcast |
features:new-in-devel [2019/08/24 13:01] henningw [uac] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Kamailio SIP Server | + | ====== Kamailio SIP Server - New Features in Devel Version ====== |
- | **Current devel version will be numbered 5.0.0 and it is planned to be released | + | **Current devel version will be numbered 5.3.0 and it is planned to be released |
<fc #0000FF> | <fc #0000FF> | ||
- | **Previous devel, current stable, version was 4.4.x (released on March, 2016), see what was new in that release at:** | + | **Previous devel, current stable, version was 5.2.x (released on November, 2018), see what was new in that release at:** |
</fc> | </fc> | ||
- | * <fc # | + | * <fc # |
<fc # | <fc # | ||
Line 12: | Line 12: | ||
===== New Modules ===== | ===== New Modules ===== | ||
- | ==== nsq ==== | + | ==== app_lua_sr |
- | | + | Old **sr** module exported to Lua scripting. |
- | | + | |
- | ===== New in Old Modules ===== | + | |
- | ==== app_lua ==== | + | * https:// |
- | * ability to execute routing blocks written directly in Lua | + | ==== lost ==== |
- | ==== app_python ==== | + | HELD (RFC6155) and LOST (RFC5222) location-based routing. |
- | * ability to execute routing blocks written directly in Python | + | * https:// |
- | ==== auth ==== | + | ==== kemix ==== |
- | * added option to use SHA-256 encryption algorithm | + | |
- | * add an option | + | KEMI specific extensions. |
- | ==== db_unixodbc | + | |
- | * new config variable replace_query | + | * https:// |
- | * Tells if the ODBC replace query is supported by the DB odbc driver | + | |
- | * Just like insert, but update the row if it exists otherwise insert | + | ==== rtp_media_server ==== |
+ | |||
+ | Embedded RTP and media processing functionalities | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== secfilter ==== | ||
+ | |||
+ | Filters | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== xhttp_prom ==== | ||
+ | |||
+ | Generates suitable metrics for a Prometheus monitoring platform, answering to Prometheus pull requests (HTTP requests to /metrics URL). | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | |||
+ | ===== New in existing Modules ===== | ||
+ | |||
+ | ==== acc_json ==== | ||
+ | |||
+ | Add support for leg_info fields to the acc_json module | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== async ==== | ||
+ | |||
+ | New functionality to sleep for milli-seconds and also schedule a asynchronous route execution with milli-seconds delay | ||
+ | |||
+ | | ||
+ | * https:// | ||
+ | |||
+ | ==== cnxcc ==== | ||
+ | |||
+ | Added a new param in the cnxcc_set_max_credit() function to set the connect cost of a call. | ||
+ | |||
+ | | ||
==== dialog ==== | ==== dialog ==== | ||
- | * new rpc function: | + | Add new rpc commands |
- | * terminates a singe dialog, identified by a Call-ID. | + | |
- | * terminates an ongoing | + | |
- | ==== enum ==== | + | * https:// |
+ | * https:// | ||
- | * single digit is now valid in function enum_query | + | 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. |
- | * is_e164() returns true for a single digit (previously two digits) | + | |
- | ==== evapi ==== | + | * https:// |
- | * support for tagging connections and select for sending based on tag | + | ==== dispatcher |
- | * evapi_set_tag(tname) | + | |
- | * evapi_multicast(data, | + | |
- | * evapi_async_multicast(data, | + | |
- | * evapi_unicast(data, | + | |
- | * evapi_async_unicast(data, | + | |
- | ==== kex ==== | + | |
- | | + | * https://www.kamailio.org/ |
- | * RPC request: stats.get_statistics all | + | * https:// |
- | * requests by method | + | * Add a new flag 16 (1<< |
- | * core:rcv_requests_invite | + | * https:// |
- | * core: | + | * Add a new parameter reload_delta to limit the frequency of rpc reload commands to try to avoid races of parallel reload operations. |
- | * core:rcv_requests_ack | + | * https:// |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * replies by status code | + | |
- | * core:rcv_replies_1xx | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | * core: | + | |
- | ==== ndb_redis ==== | + | |
- | * added parameters to control connect and command timeouts | + | ==== dialplan ==== |
- | * connect_timeout (int) | + | |
- | * cmd_timeout (int) | + | |
- | ==== presence | + | Add reload_delta parameter to make the rate limit of maximum allowed dialplan reload configurable. |
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== evrexec | ||
+ | |||
+ | Added rpc command evrexec.run to run an event_route: | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== imc ==== | ||
+ | |||
+ | Extend module functionality significantly, | ||
+ | |||
+ | ==== 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. | ||
+ | * https:// | ||
+ | |||
+ | ==== ims_registrar_pcscf ==== | ||
+ | |||
+ | Add support for multiple TCP connections to the ims_registrar_pcscf module. | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== ims_usrloc_pcscf ==== | ||
+ | |||
+ | Add support for multiple TCP connections to the ims_usrloc_pcscf module. | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== 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 " | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== ims_usrloc_scscf ==== | ||
+ | |||
+ | Add-on to third party registration in S-CSCF to the ims_usrloc_scscf module. | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== ims_registrar_scscf ==== | ||
+ | |||
+ | Add-on to third party registration in S-CSCF to the ims_registrar_scscf module. | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== mqueue ==== | ||
+ | |||
+ | Add a new rpc command mqueue.fetch | ||
- | * new module parameter `force_delete` | + | * https:// |
- | * disabled by default | + | |
- | * enabling this parameter will delete expired presentity records without updating watchers (no NOTIFY) | + | |
- | * new module parameter `retrieve_order_by` | ||
- | * default value is " | ||
- | * Used to set the order-by of the db query for fetching the presence records | ||
==== pv ==== | ==== pv ==== | ||
- | * new function pv_evalx(dst, fmt) | + | * New pseudo-variable $rcv(key), available inside event_route[core: |
- | * The fmt string is evaluated twice for exiting variables, the result is stored | + | * https:// |
+ | * New pseudo-variable $TV(Fn) - formatted time with microseconds YYYY-MM-DD HH: | ||
+ | * https:// | ||
+ | |||
+ | ==== janssonrpcc ==== | ||
+ | |||
+ | Add new parameter " | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== kex ==== | ||
+ | |||
+ | New rpc command mod.mem_statsx, to print also the count of allocated chunks | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== presence ==== | ||
+ | |||
+ | A new rpc command presence.updateWatchers | ||
+ | |||
+ | * https:// | ||
==== registrar ==== | ==== registrar ==== | ||
- | * Add expiry value to the xavp. | + | New parameter lookup_filter_mode |
- | * handy if Kamailio | + | |
- | ==== rtpengine ==== | + | * https:// |
- | * new ' | + | ==== rr ==== |
- | * allows kernelization of one-way streams | + | |
- | ==== sca ==== | + | 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. |
- | * new module parameters: | + | * https:// |
- | * **onhold_bflag**, | + | |
- | * **server_address**, force Contact header address in NOTIFY replies | + | ==== rls ==== |
+ | |||
+ | Add a new rpc command rls.update_subs. | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== rtpengine ==== | ||
+ | |||
+ | * Introduce additional hashing algorithm SHA1 over callid for better distribution among nodes. | ||
+ | * https:// | ||
+ | | ||
+ | * https:// | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | * https:// | ||
+ | * Add support for trickle ICE SDP fragments, add support for explicit load balancing options and add support for via-branch=extra option. | ||
- | * sca_call_info_update(): | ||
- | * skips parsing message for To/From header values | ||
==== sdpops ==== | ==== sdpops ==== | ||
- | * new config variable | + | Added new sdp_get_ddress_family() function to extract the IP address family from the SDP body |
- | | + | |
+ | * https:// | ||
+ | |||
+ | ==== siptrace ==== | ||
+ | |||
+ | Add transaction and dialog level tracing to the module function sip_trace | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== sl ==== | ||
+ | |||
+ | * Add new pseudo-variables: | ||
+ | | ||
+ | * Add configuration parameter to add path and flags to redirected contacts. | ||
+ | * https:// | ||
+ | |||
+ | ==== sqlops ==== | ||
+ | |||
+ | Add a new parameter connect_mode, | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== textops ==== | ||
+ | |||
+ | Add a new function regex_substring(itext, | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== tls ==== | ||
+ | |||
+ | * Add support for unique identifier PVs and select: | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Add workaround for new OpenSSL 1.1, preloaded library. This is a workaround for OpenSSL >= 1.1 which uses internal locking and doesn' | ||
+ | |||
+ | ==== tm ==== | ||
+ | |||
+ | * Added t_get_status_code() function to return the status code of the transaction - the sip response code. | ||
+ | * https:// | ||
+ | * Add configuration parameter to add path and flags to redirected contacts. | ||
+ | * https:// | ||
+ | * Removal of obselete delete_timer parameter - it was not used since a long time | ||
+ | |||
+ | ==== tmx ==== | ||
+ | |||
+ | Add a new function t_drop([rcode]) | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | ==== uac ==== | ||
+ | |||
+ | * New modparam reg_gc_interval, | ||
+ | * https:// | ||
+ | * New modparam default_socket, | ||
+ | * https:// | ||
+ | * Extension in uacreg table, to specify a socket per table entry | ||
+ | * https:// | ||
+ | * The uac_replace_from/ | ||
+ | * The uac_replace_from/ | ||
+ | |||
+ | ==== websocket ==== | ||
+ | |||
+ | Added check mechanism based on tcp connection - type 3 (KEEPALIVE_MECHANISM_CONCHECK) | ||
+ | |||
+ | * https:// | ||
===== New in Core ===== | ===== New in Core ===== | ||
- | * print tos value if socket option | + | ==== Command line arguments ==== |
- | * skip unusable network interfaces | + | |
- | * no IP addr associated | + | Adding support |
- | * address family AF_PACKET | + | |
+ | * add domain aliases with --alias | ||
+ | * set advertised address to listen sockets speficied with -l socket/ | ||
+ | * set server id with --server-id | ||
+ | * set a subst, substdef or substdefs preprocessor expression with --subst, --substdef or --substdefs | ||
+ | |||
+ | More information: | ||
==== Interpreter ==== | ==== Interpreter ==== | ||
- | A new framework (named kemi - kamailio embedded interface) was added, allowing | + | Many extensions |
- | * http:// | ||
==== Parameters ==== | ==== Parameters ==== | ||
- | * log_prefix_mode | ||
- | * If set to 1, then the log prefix is evaluated before/ | ||
- | * needs to be set when the log_prefix has variables that are different based on the context of config execution | ||
- | * e.g., $cfg(line)) | ||
- | * latency_cfg_log | + | * 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. |
- | * Log message with the duration | + | * https:// |
+ | * Introduce new configuration parameter tcp_accept_haproxy parameter. When active, inbound TCP connections are expected to behave according to the HAProxy protocol. Both the v1 (human-readable) and v2 (binary) versions | ||
+ | * https:// | ||
+ | * 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. | ||
+ | * https:// | ||
+ | * https:// | ||
- | * mcast | ||
- | * Specify interface to join multicast group for multicast listen address | ||
==== Functions ==== | ==== 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 ==== | ==== 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, | ||
==== Architecture ==== | ==== 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. | ||
==== kamailio.cfg ==== | ==== 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 ===== | ===== Tools ===== | ||
+ | |||
+ | Added tool to generate code for KEMI modules to misc/ | ||
==== kamcmd ==== | ==== kamcmd ==== | ||
==== kamctl ==== | ==== 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 [< | ||
+ | * 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. | ||
+ | | ||
+ | ==== kamcli ==== | ||