<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>