mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.0 KiB
110 lines
3.0 KiB
=============================================================
|
|
= Config migration guide from ser or kamailio to sip-router =
|
|
=============================================================
|
|
|
|
|
|
ser 2.1 config migration
|
|
========================
|
|
|
|
1. Avps, selects and strings in if or other expressions
|
|
|
|
The most important change is the different way in which avp and select are
|
|
evaluated in boolean expressions (if ()).
|
|
In ser "if ($v){}" or "if (@select){}" were true if the avp or select were
|
|
"defined" and if their value was non-empty (!= "").
|
|
In sip-router this changed: the ifs will be true if the avp or select are
|
|
non-empty and they evaluate to a non-zero number. The catch is that a
|
|
non-numeric string evaluates to 0 (e.g. "abc" evaluates to 0, "123" evaluates
|
|
to 123, "" to 0, "0" to 0).
|
|
Something like "if($v)" should be used only if $v is supposed to have a numeric
|
|
value. "if (@select)" should not be used in general (it's probably not what you
|
|
want).
|
|
|
|
The equivalent sip-router checks are:
|
|
|
|
instead of if ($v) use if ($v != "")
|
|
instead of if (!$v) use if ($v == "") or if (strempty($v)).
|
|
instead of if (@select) use if (@select != "")
|
|
instead of if (!@select) use if (@select == "") or if (strempty(@select)).
|
|
|
|
If the test is for value existence, then if ($v) can be replaced with
|
|
if (defined $v).
|
|
|
|
E.g.:
|
|
replace
|
|
if (! $f.did)
|
|
with
|
|
if (strempty($f.did))
|
|
|
|
replace
|
|
if (method=="INVITE" && !@to.tag)
|
|
with
|
|
if (method=="INVITE" && strempty(@to.tag))
|
|
|
|
replace
|
|
if ($f.did && ! $t.did)
|
|
with
|
|
if ($f.did != "" && $t.did == "")
|
|
|
|
replace
|
|
if (@to.tag)
|
|
with
|
|
if (@to.tag != "")
|
|
|
|
|
|
2. Module path
|
|
|
|
While in ser there was only a single directory holding the modules, now there
|
|
are 3: modules (for common modules), modules_s (for ser modules) and modules_k
|
|
(for kamailio modules).
|
|
The easiest way to migrate a ser config is to add:
|
|
|
|
loadpath "/usr/lib/ser/modules:/usr/lib/ser/modules_s"
|
|
|
|
at the beginning (before any loadmodule command).
|
|
This will set the module search path to first look into the common modules and
|
|
if not found in the ser modules.
|
|
|
|
Make sure that all the loadmodule commands do not include the path to the
|
|
module or the .so extension (or else they won't make use of the loadpath).
|
|
E.g.:
|
|
replace
|
|
loadmodule "/usr/lib/ser/modules/tm.so"
|
|
with
|
|
loadmodule "tm"
|
|
|
|
|
|
3. Module names
|
|
|
|
Some of the modules changed their name (usually after being merged with the
|
|
kamailio ones).
|
|
The most common changes are mysql -> db_mysql and postgres -> db_postgres.
|
|
|
|
E.g.:
|
|
replace
|
|
loadmodule "mysql"
|
|
with
|
|
loadmodule "db_mysql"
|
|
|
|
|
|
4. msg:len and max_len
|
|
|
|
max_len was removed. All the comparisons of msg:len with max_len must be
|
|
changed to use a number (e.g. 4096 or 16384) instead of max_len.
|
|
Comparing with max_len didn't make sense anyway since max_len was the size of
|
|
the internal receive buffer on UDP. You could never exceed it, unless you were
|
|
using TCP configured in a non-standard way.
|
|
|
|
E.g.:
|
|
replace
|
|
if (msg:len >= max_len)
|
|
with
|
|
if (msg:len >= 4096)
|
|
|
|
|
|
|
|
kamailio config migration
|
|
=========================
|
|
|
|
[TODO: probably most of the things from the ser section apply too]
|