===== New in v1.5.0 ===== Released on March 02, 2009 ==== New Kamailio modules ==== * [b]htable[/b] ** 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 ** [[http://www.kamailio.org/docs/modules/devel/htable.html|Documentation]] * [b]misc_radius[/b] ** New module that replaces Kamailio 1.4 modules avp_radius, group_radius, and uri_radius ** [[http://www.kamailio.org/docs/modules/devel/misc_radius.html|Documentation]] * [b]presence_dialoginfo[/b] ** Dialog Info support for Presence Server ** [[http://www.kamailio.org/docs/modules/devel/presence_dialoginfo.html|Documentation]] * [b]pua_dialoginfo[/b] ** Dialog Info support for Presence User Agent ** [[http://www.kamailio.org/docs/modules/devel/pua_usrloc.html|Documentation]] * [b]purple[/b] ** Multi-protocol gateway module using Purple (Pidgin/ex-Gaim) library ** Can connect SIP to GTalk, MSN, ..., for IM&P ** [[http://www.kamailio.org/docs/modules/devel/purple.html|Documentation]] * [b]pv[/b] ** Module to collect pseudo-variables from core, available in configuration file. ** [[http://www.kamailio.org/docs/modules/devel/pv.html|Documentation]] ** new pseudo-variable introduced in 1.5.0 *** $branch(name) class: [[pseudovariables:devel#branch_attributes|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 - [[transformations:devel|see here]] * [b]qos[/b] ** 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. ** [[http://www.kamailio.org/docs/modules/1.5.x/qos.html|Documentation]] * [b]regex[/b] ** 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]] ** [[http://kamailio.org/docs/modules/devel/regex.html|Documentation]] * [b]rtimer[/b] ** execute route blocks on timer basis ** can deal with multiple timers ** can create new timer processes ** each timer can execute multiple route blocks ** [[http://www.kamailio.org/docs/modules/devel/rtimer.html|Documentation]] * [b]siputils[/b] ** SIP utilities module ** various utilities related to the SIP protocol ** management of 183 and 180 to control the ringing tone ** [[http://www.kamailio.org/docs/modules/devel/siputils.html|Documentation]] * [b]sqlops[/b] ** 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. ** [[http://www.kamailio.org/docs/modules/devel/sqlops.html|Documentation]] * [b]utils[/b] ** Utilities module ** http_query() function to get data from http servers ** functionality to configure run time forwarding (copying) of certain messages ** [[http://www.kamailio.org/docs/modules/devel/utils.html|Documentation]] * [b]sanity[/b] ** Module for sanitizing SIP messages ** detect malformed messages early in the configuration ** [[http://www.kamailio.org/docs/modules/devel/sanity.html|Documentation]] ==== New in Kamailio modules ==== * [b]*_radius modules[/b] ** New [b]misc_radius[/b] 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). * [b]acc module[/b] ** Added support for integer valued Radius attributes. * [b]auth_radius module[/b] ** 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. * [b]carrierroute module[/b] ** 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) * [b]db_mysql module[/b] ** 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 * [b]db_postgres module[/b] ** support for BIGINT (8 byte integer) values * [b]db_unixodbc module[/b] ** support for BIGINT (8 byte integer) values ** fetch_result support, to better support modules like usrloc, carrierroute and dialog with larger data sets * [b]dialog module[/b] ** 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 * [b]dialplan module[/b] ** 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]] * [b]dispatcher module[/b] ** 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: [[http://www.kamailio.org/docs/modules/devel/dispatcher.html|Documentation]] * [b]gflags module[/b] ** functionality of this module was integrated into the cfgutils module * [b]lcr module[/b] ** 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. * [b]options module[/b] ** functionality of this modules were integrated into the [b]siputils[/b] module * [b]registrar module[/b] ** 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: [[http://www.kamailio.org/docs/modules/devel/registrar.html|Documentation]] * [b]sl module[/b] ** new send_reply(code, reason) function that detect if the proxy is doing stateless/stateful processing and sends the reply accordingly * [b]textops module[/b] ** 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:[[http://www.kamailio.org/dokuwiki/doku.php/transformations:devel#re.subst_expression|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: [[http://www.kamailio.org/docs/modules/devel/textops.html|Documentation]] * [b]tlsops module[/b] ** Added support for TLS server_name extension (aka SNI=server name indication) * [b]tm module[/b] ** 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 ** [[http://www.kamailio.org/dokuwiki/doku.php/pseudovariables:devel#tm_module_pseudo-variables|Documentation]] * [b]userblacklist module[/b] ** Make database table and column names configurable * [b]uac module[/b] ** send SIP requests from config file: uac_send_req() ** new pseudo-variable class to build the request to be sent: $uac_req(key) ** [[http://www.kamailio.org/docs/modules/devel/uac.html|Documentation]] * [b]uri module[/b] ** functionality of this modules were integrated into the [b]siputils[/b] module ==== New in Kamailio core ==== * [b]module interface[/b] ** 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) * [b]pseudo-variables[/b] ** moved from core to PV module ** use [i]loadmodule "pv.so"[/i] in your config file * [b]transformations[/b] ** moved from core to PV module ** use [i]loadmodule "pv.so"[/i] in your config file ** modules can export now transformations * [b]tls support[/b] ** added support for TLS server_name extension (aka SNI=server name indication) * [b]daemontools support[/b] ** added support for running openser with daemon tools (new core parameter for "no-daemon" mode) * [b]memory management improvements[/b] ** 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 * [b]module interface[/b] ** unify and cleanup module initialization and shutdown logging, its now done in core * [b]non-blocking logging[/b] ** 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 * [b]database interface[/b] ** 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 * [b]cleanups and refactoring[/b] ** removal of obsolete code, unification and integration of existing functionality * [b]developer documentation[/b] ** 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 [[http://www.ohloh.net/p/kamailio/factoids/1230819|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. * [b]drop[/b] ** drop() function used in default reply route can drop any SIP reply received * [b]Make system[/b] ** 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 ==== * [b]Extensions[/b] ** 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 ==== * [b]Features[/b] ** 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 * [b]Project web site[/b] ** [[http://siremis.asipto.com]]