features:new-in-4.1.x
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
features:new-in-4.1.x [2013/11/15 12:54] – [tm] miconda | features:new-in-4.1.x [2013/12/04 10:10] (current) – [Kamailio SIP Server (SER) - New Features in v4.1.x] miconda | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Kamailio SIP Server (SER) - New Features in v4.1.x ====== | ====== Kamailio SIP Server (SER) - New Features in v4.1.x ====== | ||
- | **First release in this series is to be numbered 4.1.0 and it is planned to be released | + | **First release in this series is numbered 4.1.0 , released |
<fc #0000FF> | <fc #0000FF> | ||
Line 36: | Line 36: | ||
* http:// | * http:// | ||
+ | ==== ims_charging ==== | ||
+ | |||
+ | |||
+ | * IMS charging module for Diameter-Ro-Operations | ||
+ | * http:// | ||
==== mohqueue ==== | ==== mohqueue ==== | ||
Line 60: | Line 65: | ||
* http:// | * http:// | ||
===== New in Old Modules ===== | ===== New in Old Modules ===== | ||
+ | |||
+ | |||
+ | ==== acc ==== | ||
+ | |||
+ | * new parameter time_mode | ||
+ | * store additional time values in time_attr and time_exten attributes/ | ||
+ | * if time_mode==1, | ||
+ | * if time_mode==2, | ||
+ | * if time_mode==0 (default), then it is like now, only timestamp stored | ||
+ | * time_attr value can be set via parameter with same name - it represents syslog value or db table column | ||
+ | * for db accounting, when time_mode==1, | ||
+ | * features implemented only for syslog and db accounting | ||
+ | * new parameter acc_time_format - specify the format to print time as string for acc_time_mode=3 (using localtime) and acc_time_mode=4 (using gmtime) | ||
+ | * default value is " | ||
+ | * option to write dialog-based cdrs to database | ||
+ | * new module parameter cdrs_table has to be set and classic db accounting enabled at compile time and db_url set | ||
+ | * cdr_log_enable - new parameter to turn off writing cdrs to syslog, cdr_enable being now used as top level control flag for both cdrs to syslog or db | ||
Line 71: | Line 93: | ||
* avp_check re operation can now use a pseudo variable as second parameter. | * avp_check re operation can now use a pseudo variable as second parameter. | ||
* avp_check with xavp as second parameter can now be used with [*] index on the second key. | * avp_check with xavp as second parameter can now be used with [*] index on the second key. | ||
+ | * allow xavp as parameter where avp is allowed | ||
==== cdp ==== | ==== cdp ==== | ||
Line 81: | Line 104: | ||
* check_route_exists() checks if a routing block exists in the script. | * check_route_exists() checks if a routing block exists in the script. | ||
+ | ==== corex ==== | ||
+ | |||
+ | * new pv $cfg(key) - return attributes for config file | ||
+ | * $cfg(line) - the line of the current action. | ||
+ | * $cfg(name) - the name of the current conf file | ||
+ | * example: append_to_reply(" | ||
==== db_mysql ==== | ==== db_mysql ==== | ||
Line 100: | Line 129: | ||
* options to enable/ | * options to enable/ | ||
* dbg.reset_msg: | * dbg.reset_msg: | ||
+ | * new parameter cfgpkgcheck to do pkg memory check before each action | ||
==== dialog ==== | ==== dialog ==== | ||
- | * SDP can be passed to MI/RPC dlg_bridge | + | * SDP can be passed to MI/RPC dlg_bridge |
+ | * added timer process to clean unconfirmed dialogs older than 5min | ||
+ | * decode alias parameter from contact address and use it as dst uri - makes dialog module to work with set_contact_alias() as first hop after a nat router | ||
+ | |||
+ | ==== dispatcher ==== | ||
+ | |||
+ | * new parameter to specify the pv where to store attrs for matched address in ds_is_from_list() | ||
+ | * attrs_pvname can be set to get attributes of matched address in config file | ||
+ | * allow pv in ds_is_from_list(setid) parameter | ||
==== htable ==== | ==== htable ==== | ||
Line 109: | Line 147: | ||
* new htable.reload rpc command | * new htable.reload rpc command | ||
* cross-server replication via DMQ module integration | * cross-server replication via DMQ module integration | ||
+ | * two new functions to lock htable slots based on item name | ||
+ | * sht_lock(" | ||
+ | * useful to update existing items without additional locks | ||
+ | * lifted the limit for max number of slots, now is 2^31 | ||
+ | * added rpc command htable.stats - print stats about htables: name, number of slots, number of items, max number of items per slot, min number of items per slot | ||
+ | * dmq integration | ||
+ | |||
+ | |||
+ | |||
+ | ==== ipops ==== | ||
+ | |||
+ | * dns_sys_match_ip(hostname, | ||
+ | * dsn_int_match_ip(hostname, | ||
+ | * new function dns_query(hostname, | ||
+ | * dns query is using getaddrinfo() | ||
+ | * $dns(pvid=> | ||
+ | * key can be: | ||
+ | * count - number of addresses | ||
+ | * ipv4 - set to 1 if at least one ipv4 address (otherwise 0) | ||
+ | * ipv6 - set to 1 if at least one ipv6 address (otherwise 0) | ||
+ | * addr[index] - the address as string from position index in the list (0 based indexing) | ||
+ | * type[index] - the type of address from position index in the list (0 based indexing), the value is 4 for ipv4 and 6 for ipv6 | ||
+ | * example: | ||
+ | <code c> | ||
+ | if(dns_query(" | ||
+ | { | ||
+ | xlog(" | ||
+ | xlog(" | ||
+ | xlog(" | ||
+ | $var(i) = 0; | ||
+ | while($var(i)< | ||
+ | xlog(" | ||
+ | $var(i) = $var(i) + 1; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
==== memcached ==== | ==== memcached ==== | ||
Line 120: | Line 194: | ||
* mtree.reload rpc command | * mtree.reload rpc command | ||
+ | * added ' | ||
==== nathelper ==== | ==== nathelper ==== | ||
* new option - natping_disable_bflag can be set on a per-registration basis to disable NAT pings completely | * new option - natping_disable_bflag can be set on a per-registration basis to disable NAT pings completely | ||
+ | * removed natping_proceses limit | ||
+ | * set_contact_alias() new function for adding alias parameter to contact uri | ||
+ | * similar to add_contact_alias(), | ||
+ | * udpping_from_path - enable sending UDP pings with raw sockets from Path address | ||
+ | |||
+ | |||
==== outbound ==== | ==== outbound ==== | ||
Line 148: | Line 229: | ||
* new $conid PV - returns the TCP connection ID that the current message arrived on (for TCP/ | * new $conid PV - returns the TCP connection ID that the current message arrived on (for TCP/ | ||
* PV to provide access to the user-agent string retrieved from usrloc | * PV to provide access to the user-agent string retrieved from usrloc | ||
+ | * added $_s(format) variable - evaluate the format as a dynamic string ($var(x) = " | ||
+ | * added transformations for url encode/ | ||
+ | * param transformation can (optionally) specify what the parameter delimiter is | ||
+ | |||
==== registrar ==== | ==== registrar ==== | ||
Line 155: | Line 240: | ||
* set_q_override API function - override the value of the q parameter from the Contact header in subsequent calls to the save() function for the current request | * set_q_override API function - override the value of the q parameter from the Contact header in subsequent calls to the save() function for the current request | ||
* regid_mode parameter - control if REGISTER contact regid (if present) is used when REGISTER request is saved even if request does not indicate support for outbound | * regid_mode parameter - control if REGISTER contact regid (if present) is used when REGISTER request is saved even if request does not indicate support for outbound | ||
+ | * option to take the socket from an xavp - child named " | ||
==== rr ==== | ==== rr ==== | ||
Line 183: | Line 269: | ||
* table param for sip_capture() function | * table param for sip_capture() function | ||
* allow customization for X-CID header | * allow customization for X-CID header | ||
+ | * added support for multiple capture modes | ||
==== siputils ==== | ==== siputils ==== | ||
* new functions: | * new functions: | ||
* is_supported(option) that can be used to check if request has a Supported header listing the given option. | * is_supported(option) that can be used to check if request has a Supported header listing the given option. | ||
+ | * is_first_hop() - detect if it is first hop after original sender | ||
+ | |||
Line 194: | Line 283: | ||
* the new data reflects the Kamailio server process (memory, configuration at compile time), network transports and modules. | * the new data reflects the Kamailio server process (memory, configuration at compile time), network transports and modules. | ||
+ | ==== textopsx ==== | ||
+ | |||
+ | * enable usage of msg_apply_changes() for sip replies | ||
+ | |||
+ | ==== tls ==== | ||
+ | |||
+ | * config param can now specify a file or directory | ||
+ | * extended supportd tls methods - TLSv1.1 and TLSv1.2 (from openssl 1.0.1e on) added to the internal list | ||
==== tm ==== | ==== tm ==== | ||
Line 204: | Line 301: | ||
* new parameter - failure_exec_mode | * new parameter - failure_exec_mode | ||
* specify whether to consider or not execution of failure routing blocks for branches that had local delivery error (e.g., no open tcp connection and set_forward_no_connect() used in config) | * specify whether to consider or not execution of failure routing blocks for branches that had local delivery error (e.g., no open tcp connection and set_forward_no_connect() used in config) | ||
+ | * new module parameter - dns_reuse_rcv_socket | ||
+ | * control reuse of the receive socket for additional branches added by dns failover | ||
+ | * if 1, the rcv socket is used, if not it depends on mhomed - when that is 0, the first socket is used, otherwise will be selected based on routing table | ||
+ | * default is 0 | ||
+ | * new function t_set_disable_internal_reply(0|1) to disable|enable internal reply option per transaction | ||
+ | * new function t_use_uac_headers() | ||
+ | * set internal flags to tell tm to use UAC side for building headers for local generated requests (ACK, CANCEL) - useful when changing From/To headers using other functions than uac_replace_[from|to]() | ||
+ | |||
==== tmx ==== | ==== tmx ==== | ||
Line 216: | Line 321: | ||
* if both attributes above are set and the request is challenged with 401/407, then the request is resent with auth header | * if both attributes above are set and the request is challenged with 401/407, then the request is resent with auth header | ||
* ability to set Call-Id through $uac_req(callid) | * ability to set Call-Id through $uac_req(callid) | ||
+ | * $uac_req(sock) - new attribute to set local send socket for generated requests | ||
+ | * $uac_req(sock) = " | ||
==== usrloc ==== | ==== usrloc ==== | ||
Line 231: | Line 338: | ||
* new parameter db_obs_ruid - if set to 1, db update/ | * new parameter db_obs_ruid - if set to 1, db update/ | ||
* if paramter set to 0 (default) the old style using aor, contact and call-id is done | * if paramter set to 0 (default) the old style using aor, contact and call-id is done | ||
+ | * added two new rpc commands ul.db_users and ul.db_contacts - for accessing number of different AoRs and contacts in a location table | ||
+ | * new command ul.db_expired_contacts tells number of expired contacts | ||
+ | * detect lost tcp connnections on timer and set associated contact as expired | ||
+ | * new module parameter to control this feature: handle_lost_tcp | ||
+ | |||
+ | |||
+ | ==== utils ==== | ||
+ | |||
+ | * support for sending POST-Requests to http_query() method | ||
==== websocket ==== | ==== websocket ==== | ||
Line 237: | Line 353: | ||
* new function ws_close() - enables immediate closure of a WebSocket connection from the configuration file. | * new function ws_close() - enables immediate closure of a WebSocket connection from the configuration file. | ||
+ | ==== xhttp ==== | ||
+ | |||
+ | * added transformation to break a URL into " | ||
===== New in Core ===== | ===== New in Core ===== | ||
Line 246: | Line 365: | ||
* new parameters: | * new parameters: | ||
* modinit_delay - specify microseconds to sleep after initializing a module in order to cope with systems having rate limits on new connections to db or other servers | * modinit_delay - specify microseconds to sleep after initializing a module in order to cope with systems having rate limits on new connections to db or other servers | ||
+ | * removed syn_branch functionality for calculating Via branch parameter | ||
+ | * allow c++ style of one line comments (i.e., / / comment ...) - can make easier the read of config files with defines and comments | ||
+ | * execute event_route[core: | ||
+ | * store current executed cfg action in a global variable - can be retrieved by module to access name of config file and the line | ||
+ | * handle pv comparison with $null as when ' | ||
+ | * respect order field in NAPTR, as required by RFC 2915 | ||
+ | * the beaviour is controlled by core parameter dns_naptr_ignore_rfc | ||
+ | * default is 1, preserving current behaviouf to ignore rfc requirements (for backward compatibility) | ||
+ | |||
Line 253: | Line 381: | ||
* STUN implementation from core was moved as a module | * STUN implementation from core was moved as a module | ||
+ | ==== Makefile ==== | ||
+ | |||
+ | * added install-initd-centos target - install centos specific init.d scripts | ||
+ | |||
+ | ==== kamailio.cfg ==== | ||
+ | |||
+ | * use " | ||
+ | * route SUBSCRIBE for event message-summary to voicemail server | ||
+ | * reset $du for voicemail re-routing in failure route | ||
===== Tools ===== | ===== Tools ===== | ||
Line 260: | Line 397: | ||
* added parameters to add the contact path: '' | * added parameters to add the contact path: '' | ||
* command for dialog module management | * command for dialog module management | ||
+ | * added show command to display user attributes in subscriber table | ||
+ | * new commands can be defined in separate files | ||
+ | * write new kamctl commands either in CFGDIR/ | ||
+ | * ' | ||
+ | * the file must include cmd_newcmd() function which is executed with the parameters after the command name | ||
+ | * shortcut command to do q query to a database based on key and value | ||
+ | * kamctl db smatch table key value - return the record from table that has column key matching the value as string (quoted value) | ||
+ | * kamctl db nmatch table key value - return the record from table that has column key matching the value as non-quoted | ||
+ | * examples: | ||
+ | < | ||
+ | kamctl db smatch subscriber username test | ||
+ | kamctl db nmatch subscriber id 123 | ||
+ | </ | ||
+ | |||
+ | * added commands to set extra columns in subscriber table | ||
+ | * useful to deal with columns added for load_credentials of auth_db module | ||
+ | * ' | ||
+ | * ' | ||
+ | |||
==== kamdbctl ==== | ==== kamdbctl ==== | ||
- | * new command | + | * new command |
+ | * creates only tables that are groupped under same id, thus have the sql script in a file | ||
+ | * syntax: kamdbctl | ||
+ | * there has to be a <gid>-create.sql script, eg: kamdbctl add-tables lcr | ||
features/new-in-4.1.x.1384520093.txt.gz · Last modified: 2013/11/15 12:54 by miconda