Hello Kamailio-3 users,
I have two questions regarding usage of variables within the config file (as published in the NEW FEATURES of Kamailio 3.0.0).
The reason why I want to use variables instead of standard configuration lines is the maintainability of my SIP servers. I have a group of about 20 sip servers distributed over a wide area. Especially routing rules might change during operation of the servers and must be adapted on all servers. Therefore I want to use variables, defined at the beginning of each config file. Within the config file / the different routing blocks I want to reference to these variables. That would be much easier for automatic config script adaptation with a linux script (e.g.) than parsing the whole config file for special text phrases.
QUESTION 1: ========== Is it impossible using a variable for requesting a SRC_IP address? With my current configuration I always see an entry in the SYSLOG that looks as follows: "<core> [route.c:1531]: BUG: comp_ip: invalid type for src_ip or dst_ip (20)"
The configuration lines look like:
$var(lst_gwIpRange) = "10.16.48.6[0-2]"; [...] if (src_ip=~$var(lst_gwIpRange)) { [...] }
Is maybe a transformation missing/necessary to avoid the error message (which causes a malfunction)? Can anybody give me a hint?
QUESTION 2: ========== The second problem I found is, that the config variables can be configured within a route block only and not - as expected - e.g. at the top of the config file (in the same way as the custom variables). I can't use the custom variables as they are, because I will use more complex variables, which are a mixture of up to three custom variables. These "complex" variables will be used in more than one routing block. Therefore I have to define these variables in every routing block...... Is an alternative (easier) solution with a single definition available, too?
An example of my problem is as follows:
# custom variables defined on top of the kamailio.cfg file tst.loc_ipaddr = "10.10.1.1" desc "IP addr of the local SIP Server" tst.loc_prefix = "11" desc "prefix of this SRV" tst.distRu1 = "51[0-9].*" desc "variable representing ID1"
# the final variable should look like "sip:1151[0-9].*@10.10.1.1" # and is used in 3 routing blocks
route[] $var(test) = "sip:" + $sel(cfg_get.tst.loc_prefix) + $sel(cfg_get.tst.distRu1) + "@" + $sel(cfg_get.tst.loc_ipaddr); [...]
route[TEST1] $var(test) = "sip:" + $sel(cfg_get.tst.loc_prefix) + $sel(cfg_get.tst.distRu1) + "@" + $sel(cfg_get.tst.loc_ipaddr); [...]
route[TEST2] $var(test) = "sip:" + $sel(cfg_get.tst.loc_prefix) + $sel(cfg_get.tst.distRu1) + "@" + $sel(cfg_get.tst.loc_ipaddr); [...]
Thanks in advance for any hints!
Regards, Klaus Feichtinger