Hi all,
the patch allows to set outbound proxy for each gateway in probing mode
(SIP ping). It can be useful in multiple gateways/SBC scenarios.
Example:
attrs: outbound=sip_url
any comments/wishes are welcome
Regards,
Alexandr Dubovikov
diff -udprP dispatcher.orig/dispatch.c dispatcher/dispatch.c
--- dispatcher.orig/dispatch.c 2014-09-18 16:09:15.000000000 +0200
+++ dispatcher/dispatch.c 2014-11-06 10:39:26.863828054 +0100
@@ -149,12 +149,13 @@ int ds_print_sets(void)
{
for(i=0; i<si->nr; i++)
{
- LM_DBG("dst>> %d %.*s %d %d (%.*s,%d,%d)\n", si->id,
- si->dlist[i].uri.len, si->dlist[i].uri.s,
- si->dlist[i].flags, si->dlist[i].priority,
- si->dlist[i].attrs.duid.len, si->dlist[i].attrs.duid.s,
- si->dlist[i].attrs.maxload,
- si->dlist[i].attrs.weight);
+ LM_DBG("dst>> %d %.*s %d %d (%.*s,%.*s,%d,%d)\n", si->id,
+ si->dlist[i].uri.len, si->dlist[i].uri.s,
+ si->dlist[i].flags, si->dlist[i].priority,
+ si->dlist[i].attrs.duid.len, si->dlist[i].attrs.duid.s,
+ si->dlist[i].attrs.outbound.len, si->dlist[i].attrs.outbound.s,
+ si->dlist[i].attrs.maxload,
+ si->dlist[i].attrs.weight);
}
si = si->next;
}
@@ -229,6 +230,10 @@ int ds_set_attrs(ds_dest_t *dest, str *a
} else if(pit->name.len==6
&& strncasecmp(pit->name.s, "weight", 4)==0) {
str2sint(&pit->body, &dest->attrs.weight);
+ }
+ else if(pit->name.len==8
+ && strncasecmp(pit->name.s, "outbound", 8)==0) {
+ dest->attrs.outbound = pit->body;
} else if(pit->name.len==7
&& strncasecmp(pit->name.s, "maxload", 7)==0) {
str2sint(&pit->body, &dest->attrs.maxload);
@@ -2452,8 +2457,10 @@ void ds_check_timer(unsigned int ticks,
if (ds_probing_mode==DS_PROBE_ALL ||
(list->dlist[j].flags&DS_PROBING_DST) != 0)
{
- LM_DBG("probing set #%d, URI %.*s\n", list->id,
- list->dlist[j].uri.len, list->dlist[j].uri.s);
+ LM_DBG("probing set #%d, URI %.*s (%.*s)\n", list->id,
+ list->dlist[j].uri.len, list->dlist[j].uri.s,
+ list->dlist[j].attrs.outbound.len, list->dlist[j].attrs.outbound.s
+ );
/* Send ping using TM-Module.
* int request(str* m, str* ruri, str* to, str* from, str* h,
@@ -2466,7 +2473,7 @@ void ds_check_timer(unsigned int ticks,
&list->dlist[j].uri,
&list->dlist[j].uri,
&ds_ping_from,
- &ds_outbound_proxy) < 0) {
+ list->dlist[j].attrs.outbound.len > 0 ? &list->dlist[j].attrs.outbound: &ds_outbound_proxy) < 0) {
LM_ERR("unable to ping [%.*s]\n",
list->dlist[j].uri.len, list->dlist[j].uri.s);
}
diff -udprP dispatcher.orig/dispatch.h dispatcher/dispatch.h
--- dispatcher.orig/dispatch.h 2014-09-18 16:09:15.000000000 +0200
+++ dispatcher/dispatch.h 2014-11-06 10:39:00.495827150 +0100
@@ -143,6 +143,7 @@ typedef struct _ds_attrs
{
str body;
str duid;
+ str outbound;
int maxload;
int weight;
} ds_attrs_t;
_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev