diff --git a/kamailio/dispatcher-role.cfg b/kamailio/dispatcher-role.cfg index 2e9d0ec..cc28e79 100644 --- a/kamailio/dispatcher-role.cfg +++ b/kamailio/dispatcher-role.cfg @@ -3,6 +3,8 @@ modparam("htable", "htable", "failover=>size=16;autoexpire=120") #!trydef KZ_DISPATCHER_PROBE_MODE 1 #!trydef DISPATCHER_ADD_SERVERS 1 +#!trydef DISPATCHER_ADD_SECONDARY_IP 1 +#!trydef DISPATCHER_SECONDARY_IP_GROUP 3 #!trydef DISPATCHER_ALG 0 #!trydef KZ_DISPATCHER_ADD_FLAGS 10 #!trydef KZ_DISPATCHER_PRIMARY_GROUP 1 @@ -18,6 +20,9 @@ modparam("htable", "htable", "failover=>size=16;autoexpire=120") #!trydef KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP 21 kazoo.dispatcher_auto_add = DISPATCHER_ADD_SERVERS descr "adds media servers reported by ecallmgr" +kazoo.dispatcher_add_secondary_ip = DISPATCHER_ADD_SECONDARY_IP descr "adds internal ip from media servers reported by ecallmgr" +kazoo.dispatcher_add_secondary_ip_group = DISPATCHER_SECONDARY_IP_GROUP descr "sets the group where to add internal ip from media servers reported by ecallmgr" + kazoo.dispatcher_algorithm = DISPATCHER_ALG descr "dispatcher algorithm to use" kazoo.dispatcher_primary_group = KZ_DISPATCHER_PRIMARY_GROUP descr "dispatcher primary group" kazoo.dispatcher_secondary_group = KZ_DISPATCHER_SECONDARY_GROUP descr "dispatcher secondary group" @@ -252,6 +257,7 @@ event_route[dispatcher:dst-up] route[DISPATCHER_CHECK_MEDIA_SERVER] { + $var(check_media_server_ret) = 0; if($sel(cfg_get.kazoo.dispatcher_auto_add) == 1) { $var(SetId) = 1; if($var(Zone) != "MY_AMQP_ZONE") { @@ -263,10 +269,25 @@ route[DISPATCHER_CHECK_MEDIA_SERVER] sql_query("exec", "KZQ_CHECK_MEDIA_SERVER_INSERT"); if($sqlrows(exec) > 0) { $shv(dispatcher_reload) = 1; - return 1; + $var(check_media_server_ret) = 1; + } + + if($sel(cfg_get.kazoo.dispatcher_add_secondary_ip) == 1) { + if($var(MediaIP) != "" && $var(MediaIP) != $(var(MediaUrl){uri.host})) { + $var(MediaUrlBack) = $var(MediaUrl); + $var(MediaUrl) = $_s($(var(MediaUrlBack){uri.scheme}):$var(MediaIP):$(var(MediaUrlBack){uri.port})); + $var(SetId) = $sel(cfg_get.kazoo.dispatcher_add_secondary_ip_group); + sql_query("exec", "KZQ_CHECK_MEDIA_SERVER_INSERT"); + if($sqlrows(exec) > 0) { + $shv(dispatcher_reload) = 1; + $var(check_media_server_ret) = 1; + } + $var(MediaUrl) = $var(MediaUrlBack); + } } + } - return 0; + return $var(check_media_server_ret); } route[DISPATCHER_RELOAD] diff --git a/kamailio/nodes-role.cfg b/kamailio/nodes-role.cfg index 27493ef..3b1ecdd 100644 --- a/kamailio/nodes-role.cfg +++ b/kamailio/nodes-role.cfg @@ -139,6 +139,7 @@ route[CHECK_MEDIA_SERVERS] $var(MediaRawUrl) = $(var(Payload){kz.json,Media-Servers.$var(MediaKey).Interfaces.$var(MediaProfile).URL}); $var(MediaUrl) = $(var(MediaRawUrl){re.subst,/^sip:(.*)@(.*)/sip:\2/}); $var(MediaInstanceUUID) = $(var(Payload){kz.json,Media-Servers.$var(MediaKey).Instance-UUID}); + $var(MediaIP) = $(var(Payload){kz.json,Media-Servers.$var(MediaKey).Interfaces.$var(MediaProfile).SIP-IP}); if($shtinc(media=>$var(MediaUrl)::count) == 1) { $sht(media=>$var(MediaUrl)::zone) = $var(Zone); $shtex(media=>$var(MediaUrl)::zone) = 0;