<div dir="ltr"><div style>Hello Daniel,</div><div style><br></div>Since you did some work on this, it would be helpful if ds_is_from_list would accept also a pvars as a parameter (to match a specific groupid).<div><br></div>
<div style>Thanks,</div><div style>Ovidiu</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jul 11, 2013 at 10:27 AM, Daniel-Constantin Mierla <span dir="ltr"><<a href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Module: sip-router<br>
Branch: master<br>
Commit: 09a7a4cd718c0e26d3a948515ec4f6f6a68c64c4<br>
URL: <a href="http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=09a7a4cd718c0e26d3a948515ec4f6f6a68c64c4" target="_blank">http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=09a7a4cd718c0e26d3a948515ec4f6f6a68c64c4</a><br>
<br>
Author: Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>><br>
Committer: Daniel-Constantin Mierla <<a href="mailto:miconda@gmail.com">miconda@gmail.com</a>><br>
Date: Thu Jul 11 16:25:06 2013 +0200<br>
<br>
dispatcher: new parameter to specify the pv where to store attrs for matched address in ds_is_from_list()<br>
<br>
- attrs_pvname can be set to get attributes of matched address in<br>
config file<br>
<br>
---<br>
<br>
modules/dispatcher/dispatch.c | 12 ++++++++++++<br>
modules/dispatcher/dispatch.h | 2 ++<br>
modules/dispatcher/dispatcher.c | 16 ++++++++++++++++<br>
3 files changed, 30 insertions(+), 0 deletions(-)<br>
<br>
diff --git a/modules/dispatcher/dispatch.c b/modules/dispatcher/dispatch.c<br>
index 0f6e8b0..2783675 100644<br>
--- a/modules/dispatcher/dispatch.c<br>
+++ b/modules/dispatcher/dispatch.c<br>
@@ -2244,6 +2244,18 @@ int ds_is_from_list(struct sip_msg *_m, int group)<br>
return -2;<br>
}<br>
}<br>
+ if(ds_attrs_pvname.s!=0 && list->dlist[j].attrs.body.len>0)<br>
+ {<br>
+ memset(&val, 0, sizeof(pv_value_t));<br>
+ val.flags = PV_VAL_STR;<br>
+ <a href="http://val.rs" target="_blank">val.rs</a> = list->dlist[j].attrs.body;<br>
+ if(ds_attrs_pv.setf(_m, &ds_attrs_pv.pvp,<br>
+ (int)EQ_T, &val)<0)<br>
+ {<br>
+ LM_ERR("setting attrs pv failed\n");<br>
+ return -3;<br>
+ }<br>
+ }<br>
return 1;<br>
}<br>
}<br>
diff --git a/modules/dispatcher/dispatch.h b/modules/dispatcher/dispatch.h<br>
index db055ee..912a3e0 100644<br>
--- a/modules/dispatcher/dispatch.h<br>
+++ b/modules/dispatcher/dispatch.h<br>
@@ -87,6 +87,8 @@ extern pv_elem_t * hash_param_model;<br>
<br>
extern str ds_setid_pvname;<br>
extern pv_spec_t ds_setid_pv;<br>
+extern str ds_attrs_pvname;<br>
+extern pv_spec_t ds_attrs_pv;<br>
<br>
/* Structure containing pointers to TM-functions */<br>
extern struct tm_binds tmb;<br>
diff --git a/modules/dispatcher/dispatcher.c b/modules/dispatcher/dispatcher.c<br>
index cf79d90..4af6757 100644<br>
--- a/modules/dispatcher/dispatcher.c<br>
+++ b/modules/dispatcher/dispatcher.c<br>
@@ -136,6 +136,8 @@ str ds_table_name = str_init(DS_TABLE_NAME);<br>
<br>
str ds_setid_pvname = {NULL, 0};<br>
pv_spec_t ds_setid_pv;<br>
+str ds_attrs_pvname = {NULL, 0};<br>
+pv_spec_t ds_attrs_pv;<br>
<br>
/** module functions */<br>
static int mod_init(void);<br>
@@ -211,6 +213,7 @@ static param_export_t params[]={<br>
{"attrs_avp", STR_PARAM, &attrs_avp_param.s},<br>
{"hash_pvar", STR_PARAM, &hash_pvar_param.s},<br>
{"setid_pvname", STR_PARAM, &ds_setid_pvname.s},<br>
+ {"attrs_pvname", STR_PARAM, &ds_attrs_pvname.s},<br>
{"ds_probing_threshhold", INT_PARAM, &probing_threshhold},<br>
{"ds_ping_method", STR_PARAM, &ds_ping_method.s},<br>
{"ds_ping_from", STR_PARAM, &ds_ping_from.s},<br>
@@ -282,6 +285,8 @@ static int mod_init(void)<br>
hash_pvar_param.len = strlen(hash_pvar_param.s);<br>
if (ds_setid_pvname.s)<br>
ds_setid_pvname.len = strlen(ds_setid_pvname.s);<br>
+ if (ds_attrs_pvname.s)<br>
+ ds_attrs_pvname.len = strlen(ds_attrs_pvname.s);<br>
if (ds_ping_from.s) ds_ping_from.len = strlen(ds_ping_from.s);<br>
if (ds_ping_method.s) ds_ping_method.len = strlen(ds_ping_method.s);<br>
if (ds_outbound_proxy.s) ds_outbound_proxy.len = strlen(ds_outbound_proxy.s);<br>
@@ -462,6 +467,17 @@ static int mod_init(void)<br>
return -1;<br>
}<br>
}<br>
+<br>
+ if(ds_attrs_pvname.s!=0)<br>
+ {<br>
+ if(pv_parse_spec(&ds_attrs_pvname, &ds_attrs_pv)==NULL<br>
+ || !pv_is_w(&ds_attrs_pv))<br>
+ {<br>
+ LM_ERR("[%s]- invalid attrs_pvname\n", ds_attrs_pvname.s);<br>
+ return -1;<br>
+ }<br>
+ }<br>
+<br>
if (dstid_avp_param.s && dstid_avp_param.len > 0)<br>
{<br>
if(ds_hash_size>0)<br>
<br>
<br>
_______________________________________________<br>
sr-dev mailing list<br>
<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>VoIP Embedded, Inc.<br><a href="http://www.voipembedded.com" target="_blank">http://www.voipembedded.com</a>
</div>