Kamailio allows the use of an interface name (eth0 for example), as the identifier for the listen directive. Additionally it allows assignment of a name to be used as an identifier. This can be used, as indicated in the documentation:
A unique name can be set for sockets to simplify the selection of the socket for sending out. For example, the rr and path modules can use the socket name to advertise it in header URI parameter and use it as a shortcut to select the corresponding
socket for routing subsequent requests.
I’m wondering if there is a way to get allow either of these parameters to be used to define DMQ’s server_socket parameter. This would be useful in containerization situations where the local IP address is assigned dynamically. Here’s
what I’m attempting:
#!KAMAILIO
loadmodule "tm"
loadmodule "sl"
loadmodule "dmq"
loadmodule "textops"
listen=udp:eth0:5060 name "sip5060"
listen=udp:eth0:5090 name "sip5090"
modparam("dmq", "server_address", "sip:dmq_quicktest:5090")
modparam("dmq", "notification_address", "sip:dmq-bus:5090")
modparam("dmq", "server_socket", "sip5090" )
## Above line doesn't work, neither does the line below:
#modparam("dmq", "server_socket", "udp:eth0:5090" )
modparam("dmq", "multi_notify", 1)
modparam("dmq", "num_workers", 3)
modparam("dmq", "ping_interval", 30)
request_route {
exit;
}
I get the following error during startup:
0(1) ERROR: dmq [dmq.c:241]: mod_init(): server_uri is not a socket the proxy is listening on
Thoughts? I realize that I can configure and pass static networking with the containers, but I’m looking for a way to have this set on the fly – especially when testing, etc.
Ben Kaufman