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
  • pua_dialoginfo
  • 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
  • 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
  • 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
  • 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
  • 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

Personal Tools