Login | Register

Documentation

Documentation -> Migration -> Migration from 3.0.x to 3.1.0

This page has been visited 4511 times.


This section is meant to provide useful help in migrating your OpenSIPS installations from the 3.0.0 version to 3.1.0.

You can find the all the new additions in the 3.1.0 release compiled under this page. The ChangeLog may help your understanding of the migration / update process.

Make sure you don't have any Makefile.conf files in your sources' root before starting the migration. The configuration file generated by 'menuconfig is not compatible with the one in older version!


1.  DB migration

You can migrate your 3.0.x MySQL DB to the 3.1.x format using the opensips-cli tool :

   # opensips-cli -x database migrate 3.0_to_3.1 opensips_3_0 opensips_3_1

where :

  • opensips_3_0 is the existing DB name corresponding to version 3.0.x format
  • opensips_3_1 is the DB name to be created for 3.1.x format

See the opensips-cli documentation for more details.

NOTE:

  • the old database will not be deleted, altered or changed - it will not be touched at all
  • new database will be created and data from old DB will be imported into it

Back to Table of Contents


2.  Script migration

The following is the full list of backwards-incompatible syntax or functional changes in the OpenSIPS configuration script:

  • the listen parameter was renamed as socket parameter, with the same definition and behavior.
  • the tcp_listen_backlog parameter was renamed as tcp_socket_backlog parameter, with the same definition and behavior.
  • script variable $fs to be replaced with $socket_out
  • script variable $Ri to be replaced with $socket_in(ip)
  • script variable $Rp to be replaced with $socket_in(port)
  • script variable $af to be replaced with $socket_in(af)
  • script variables $proto/$pr to be replaced with $socket_in(proto)

2.1  Global Parameters

  • the auto_aliases is now by default off, so if you had no setting of it in the old script you should set it explicitly to "on" to keep the same behavior.

2.2  Core functions

  • The following alias names were dropped:
    • rewritehost() for sethost()
    • rewritehostport() for sethostport()
    • rewriteuser() for setuser()
    • rewriteuserpass() for setuserpass()
    • rewriteport() for setport()
    • rewriteuri() for seturi()
  • cache_raw_query()'s last parameter is now an unquoted variable
  • construct_uri()'s user, port and extra are now optional parameters
  • isflagset()'s, resetflag()'s and setflag()'s parameter is now a quoted string
  • isbflagset()'s, resetbflagset()'s and setbflagset()'s flag parameter is now a quoted string
  • the order of isbflagset()'s, resetbflagset()'s and setbflagset()'s flag and branch_idx parameters has been inverted
  • raise_event()'s third parameter should now be always provided if you want the raised event to include attributes (eg. raise_event("E_MY_EVENT", $avp(attr-val)) calls should be replaced with raise_event("E_MY_EVENT", , $avp(attr-val)) calls)
  • the migration requirements caused by the the changes in the core functions parameter interface have been described above; nevertheless you can also check the 2-4 to 3-0 module functions migration guidelines described here as the changes are similar.

3.  Module migration

3.1  AUTH module

3.2  B2B_ENTITIES module

  • dropped the replication_mode module parameter.

3.3  DIALOG module

  • the $DLG_did format has been changed from printing the entry:id of the dialog to hex(entry).hex(id), just as the Record-Route parameter is added
  • the dlg_list MI command no longer outputs the DB id as the ID of the dialog, but a hex(entry).hex(id) representation of its id. The DB id field has been moved in the db_id node.
  • the dlg_end_dlg MI command no longer receives the DB id as an identifier for finding the dialog to terminate, but the same hex(entry).hex(id) printed by the $DLG_did variable and by the dlg_list command.

3.4  DROUTING module

  • the carrier flags have shifted as seen below. This breaks the code of any provisioning UIs written for OpenSIPS 3.0 which are using the old flags (e.g. OpenSIPS Control Panel 8.3.0).
    • WEIGHT_ROUTING (removed, replaced by the new sort_alg column)
    • USE_FIRST_GW (2 -> 1)
    • DISABLED (4 -> 2)
    • DIRTY (8 -> 4)
  • the "W" flag of do_routing() has been removed in favour of specifying it via the database (specifically, the dr_rules.sort_alg column). If you were using weight-based routing before, you need to update all of your dr_rules to use the "W" sorting algorithm instead of "N" ("None", the current default).

3.5  EVENT_DATAGRAM module

  • The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting, so you have to change the parsing of the event in your external applications.

3.6  EVENT_JSONRPC module

  • the event_jsonrpc module has been renamed to event_stream. you have to replace your modparam("event_jsonrpc"... lines with modparam("event_stream"... lines
  • the transport protocol token from the event socket has been changed from jsonrpc to tcp (for example, you have to use tcp:127.0.0.1:8080/block_ip instead of jsonrpc:127.0.0.1:8080/block_ip).

3.7  EVENT_RABBITMQ module

  • The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting, so you have to change the parsing of the event in your external applications.

3.8  PRESENCE module

  • switch to string values instead of integers for the cluster_federation_mode module parameter (disabled instead of 0 and on-demand-sharing instead of 1)
  • the server_address module parameter has been dropped - its functionality was replaced by the new contact_user parameter.

3.9  PROTO_TLS module

  • the tls_handshake_timeout and tls_send_timeout parameters have been moved from the tls_mgm module to the proto_tls module. Check out the new documentation ]. To migrate your script, you should replace any of your lines as it follows:
    # Before 3.1 was modparam("tls_mgm", "tls_handshake_timeout", 200)
    modparam("proto_tls", "tls_handshake_timeout", 200)
    # Before 3.1 was modparam("tls_mgm", "tls_send_timeout", 200)
    modparam("proto_tls", "tls_send_timeout", 200)

3.10  PROTO_WSS module

  • the tls_handshake_timeout and tls_send_timeout from the tls_mgm module have been removed, thus they can no longer be used to tune the proto_wss module. Instead of those parameters, we've added the and , that are now part of the proto_wss module. To migrate your script, you should replace any of your lines as it follows:
    # Before 3.1 was modparam("tls_mgm", "tls_handshake_timeout", 200)
    modparam("proto_wss", "wss_tls_handshake_timeout", 200)
    # Before 3.1 was modparam("tls_mgm", "tls_send_timeout", 200)
    modparam("proto_wss", "wss_send_timeout", 200)

3.11  RLS module

3.12  TLS_MGM module

  • the default tls_method has been changed from SSLv23 to TLSv1_2. Therefore if you were not setting the tls_method parameter in your script, you will now have to explicitly set it: modparam("tls_mgm", "tls_method", "[default]SSLv23")

3.13  TM module


Page last modified on June 17, 2021, at 09:41 AM