On January 11, 2010, Kamailio 3.0.0 was released.
On July 28, 2008, OPENSER was renamed to KAMAILIO
Table of Contents
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
- misc_radius
- New module that replaces Kamailio 1.4 modules avp_radius, group_radius, and uri_radius
- presence_dialoginfo
- Dialog Info support for Presence Server
- pua_dialoginfo
- Dialog Info support for Presence User Agent
- purple
- Multi-protocol gateway module using Purple (Pidgin/ex-Gaim) library
- Can connect SIP to GTalk, MSN, …, for IM&P
- pv
- Module to collect pseudo-variables from core, available in configuration file.
- 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.
- regex
- PCRE regular expression matching
- Regular expressions can be stored in a file and structured in groups
- rtimer
- execute route blocks on timer basis
- can deal with multiple timers
- can create new timer processes
- each timer can execute multiple route blocks
- siputils
- SIP utilities module
- various utilities related to the SIP protocol
- management of 183 and 180 to control the ringing tone
- 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.
- utils
- Utilities module
- http_query() function to get data from http servers
- functionality to configure run time forwarding (copying) of certain messages
- sanity
- Module for sanitizing SIP messages
- detect malformed messages early in the configuration
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:
- 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
- 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)
- 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