– Kamailio SIP Server –

New in v1.5.0

Released on March 02, 2009

New Kamailio modules

* htable Generic hash table container made available to config script Able to deal with many hash tables at same time in config file Ability to load DB table in hash table at startup Auto-expire for hash table values - will be removed automatically (easier to implement caching system) Auto-expire value can be updated from config file Documentation * misc_radius New module that replaces Kamailio 1.4 modules avp_radius, group_radius, and uri_radius Documentation * presence_dialoginfo Dialog Info support for Presence Server Documentation * pua_dialoginfo Dialog Info support for Presence User Agent Documentation * purple Multi-protocol gateway module using Purple (Pidgin/ex-Gaim) library Can connect SIP to GTalk, MSN, …, for IM&P Documentation * pv Module to collect pseudo-variables from core, available in configuration file. Documentation new pseudo-variable introduced in 1.5.0 * $branch(name) class: see here * $TS - current time stamp, refreshed upon each call * $TF - current time string formatted, refreshed upon each call new transformations introduced in 1.5.0 * {tobody.abc} - return parts of a To-Body structure - see here * qos Module that tracks per dialog SDP sessions. The QoS module is sitting on top of the dialog module and provides an API to be used by other module. Documentation * regex PCRE regular expression matching Regular expressions can be stored in a file and structured in groups http://lists.kamailio.org/pipermail/devel/2009-January/017544.html Documentation * rtimer execute route blocks on timer basis can deal with multiple timers can create new timer processes each timer can execute multiple route blocks Documentation * siputils SIP utilities module various utilities related to the SIP protocol management of 183 and 180 to control the ringing tone Documentation * sqlops SQL operations module Among features: * many DB connections - the module can connect to many databases on different servers using different DB driver modules at the same time. * many DB results - the module can store many results of different SQL queries in separate structures at the same time. Thus is possible to work in parallel with several DB results. * access via pseudo-variables - the content of SQL query result is accessible via pseudo-variables. * array indexes - fast access to result values via array position: [row,column]. * persistence in process space - a result can be used many times in same worker process. Query once, use many times. Documentation * utils Utilities module http_query() function to get data from http servers functionality to configure run time forwarding (copying) of certain messages Documentation * sanity Module for sanitizing SIP messages detect malformed messages early in the configuration Documentation

New in Kamailio modules

* *_radius modules New misc_radius module replaces Kamailio 1.4 modules: avp_radius, group_radius, and uri_radius All misc_module functions now load AVPs from SIP-AVP reply items from RADIUS. All functions send extra attributes to RADIUS if configured to do so by module parameters Replaced avp_load_radius() function by radius_load_caller_avps() and radius_load_callee_avps() functions that take user, whose AVPs are loaded, as a string parameter that may contain pseudo variables. String names of AVPs are not anymore prefixed with anything when AVPs are loaded (if needed, do prefixing in your Radius server). * acc module Added support for integer valued Radius attributes. * auth_radius module Added auth_extra module parameter that can be used to configure, which extra attributes (if any) are included in RADIUS queries. One such attribute could, for example, be Acct-Session-Id with Call-Id as its value. * carrierroute module fetch result support, no increase in private memory pool necessary anymore to load larger routing data sets extensive refactoring and cleanup, use standard functions or functions of the core instead of own implementations efficient matching for domains and carriers based on numerical IDs new support for non-numerial prefix matching (standard ascii set), configurable with a module parameter (match_mode) * db_mysql module support for BIGINT (8 byte integer) values add group functionality to read content from specified sections of the mysql config, the group can be setup in the db_url * db_postgres module support for BIGINT (8 byte integer) values * db_unixodbc module support for BIGINT (8 byte integer) values fetch_result support, to better support modules like usrloc, carrierroute and dialog with larger data sets * dialog module ability to execute a route block when a dialog time-outs exports dialog attributes via pseudo-variable $dlg(…) exports dialog context via pseudo-variable $dlg_ctx(…) dlg_manage() function can be used to handle SIP requests with dialog module, as alternative to Route-header callback dlg_bye() can be used to send BYE to one or both sides in the dialog dialog structure stores flags field that can be managed from config file option to send BYE when dialog expires dlg_bridge() can be used to bridge two SIP users in a call using INVITE(on hold)-REFER-BYE mechanism dlg_transfer() can be used to transfer one side of the dialog to a new SIP address new MI command - dlg_bridge - to connect two sip users via MI interface - can be used to implement in a easy manner click-to-dial functionalities * dialplan module Regular expressions are now Perl 5.x, instead of T-Rex (subset of POSIX), compatible due to use of PCRE regular expression library. Alpha-stage t-rex library code removed Types of regular expressions that can be used for matching increased substantially via PCRE: * http://www.pcre.org/ * http://perldoc.perl.org/perlre.html * dispatcher module new algorithm 8 - select first destination in the set priority can be assigned to each destination address better predictability of selected destinations and easier (another) way to implement routing failover check: Documentation * gflags module functionality of this module was integrated into the cfgutils module * lcr module New high-performance implementation that keeps lcr information in in-memory hash table, whose size can be given in a new module parameter 'lcr_hash_size'. See lcr/README for lcr function execution times. New 'weight' field in 'gw' table that can be used to assign a gateway a weight among gateways of its group. New 'hostname' field in 'gw' table that (if not null) is used as Request-URI host part. Like before, request is still forwarded to gateway's IP address. Introduced aliveness checking of gateways. A gateway is eligible for aliveness check, if value of new 'gw' table field 'ping' has value 1 for the gateway. Support for prefix_mode=1 has been dropped. lcr_dump MI function has been split into lcr_gw_dump and lcr_lcr_dump functions. lcr_reload function is now executed under a lock thus minimizing race conditions. Regular expressions are now Perl 5.x, instead of POSIX, compatible due to use of PCRE regular expression library. load_gws()/next_gw() functions can now be called also from FAILURE_ROUTE. to_gw() function now takes an optional pseudo variable argument that holds the address to be checked. New function to_gw_grp() replaces to_gw() function with group id argument. Enhanced versions of load_contacts()/next_contacts() functions have been moved to tm module as t_load_contacts()/t_next_contacts() functions. * options module functionality of this modules were integrated into the siputils module * registrar module the registered() function can now load the compared Call-Id from the reg_callid_avp AVP new function: unregister(table, uri) - remove all contacts for uri from table save() accept a new flag 0x04 to store and maintain single contact address per AoR new function: reg_fetch_contacts(table, uri, profile) - fetch contacts for uri from table in profile. You can access the attributes for contact via $ulc(profile⇒attr) new function: reg_freee_contacts(profile) - release profile structure new pseudo-variable: $ulc(profile⇒attr) - access attributes of contact records from profile check: Documentation * sl module new send_reply(code, reason) function that detect if the proxy is doing stateless/stateful processing and sends the reply accordingly * textops module Added set_body(“text”, “content-type”) function - set the body of a SIP request Added set_reply_body(“text”, “content-type”) function - set the body of a SIP reply generated by Kamailio (OpenSER) Added {re.subst,expression} transformation - perform Perl-like substitutions on Pseudo-Variable values:Documentation Added is_present_hf_re(regexp) - match header names by regular expression Added remove_hf_re(regexp) - remove headers by matching the name against regular expression check: Documentation * tlsops module Added support for TLS server_name extension (aka SNI=server name indication) * tm module auto-detection of changes done to From/To/CSeq headers of the INVITE to properly generate CANCEL/ACK New functions t_load_contacts()/t_next_contacts() that are enhanced versions of functions load_contacts()/next_contacts() that earlier were in lcr module. Function load_contacts() can now be called also from FAILURE_ROUTE. t_check_trans() can be used in default onrely_route to detect if a SIP reply belongs to an existing transaction. Used together with drop() can vanish replies coming to proxy but not having a transaction. $T_req(pv) - new pseudo-variable that provides access to request attributes while processing the reply $T_rpl(pv) - new pseudo-variable that provides access to reply attributes while processing the request t_cancel_branches(…) - can be used to cancel current processed branch, the other branches or all branches of the transaction Documentation * userblacklist module Make database table and column names configurable * uac module send SIP requests from config file: uac_send_req() new pseudo-variable class to build the request to be sent: $uac_req(key) Documentation * uri module functionality of this modules were integrated into the siputils module ==== New in Kamailio core ==== * module interface modules can implement mod_register(…) function which is called at the time the module is loaded allow to register to core in early stage any attributes exported by modules which might be needed while parsing the config file (e.g., case of PV transformations) * pseudo-variables moved from core to PV module use loadmodule “pv.so” in your config file * transformations moved from core to PV module use loadmodule “pv.so” in your config file modules can export now transformations * tls support added support for TLS server_name extension (aka SNI=server name indication) * daemontools support added support for running openser with daemon tools (new core parameter for “no-daemon” mode) * memory management improvements F_MALLOC has better startup performance, useful for e.g. carrierroute with larger rule sets support for compiling the server with system malloc, without PKG_MEM removal of the VQ_MALLOC memory manager, which was not used anymore increase of the default private memory pool size, it uses now 4 MB per process * module interface unify and cleanup module initialization and shutdown logging, its now done in core * non-blocking logging support for non-blocking log writes to prevent blocking of the server in certain error situations can be enabled by setting the SYSLOG_ASYNC define in the Makefile.defs, the default is the old implementation * database interface generalization of existing common code of several DB modules in the core support for BIGINT (8 byte integer) values its now possible to autogenerate implementation code and documentation from the same XML source that is also used for the SQL * cleanups and refactoring removal of obsolete code, unification and integration of existing functionality * developer documentation unify existing documentation, convert them to doxygen, addition of new content for many modules and core functions 24% of all source lines are comments now, according to ohloh.net source code analysis, we're now in the top third of all their C projects Removed undocumented core functions serialize_branches()/next_branches(). Enhanced versions of these functions now exist in tm module as t_load_contacts()/t_next_contacts() functions. * drop drop() function used in default reply route can drop any SIP reply received * Make system easier system to set internal defined values like number of routes, size of pkg memory options to build modules groupped by dependencies – see Makefile.vars ==== New in Kamailio Testing Suite ==== * Extensions add more tests (now over 40 test cases), refactoring of existing tests

New in Kamailio Documentation

* addition of man pages for all modules * addition of man pages for the kamdbctl command * update of all existing man pages * addition of a documentation index to the wiki * many updates and bugfixes to module documentation

SIREMIS - Web Management interface

* Features provides system and database administration tools for Kamailio (OpenSER) subscriber, database aliases and speed dial management location table view dispatcher, prefix-domain translation and least cost routing (lcr) management access control lists (user groups) and permissions management accounting records, missed calls and call data records view hash table, dial plan table and user preferences table management offline message storage view * Project web site ** http://siremis.asipto.com