123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- =============================================================
- = 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" && [email protected])
- 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]
|