[sr-dev] git:master: dispatcher: new parameter to specify the pv where to store attrs for matched address in ds_is_from_list ()

Ovidiu Sas osas at voipembedded.com
Fri Jul 12 02:59:51 CEST 2013


Hello Daniel,

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

Thanks,
Ovidiu


On Thu, Jul 11, 2013 at 10:27 AM, Daniel-Constantin Mierla <
miconda at gmail.com> wrote:

> Module: sip-router
> Branch: master
> Commit: 09a7a4cd718c0e26d3a948515ec4f6f6a68c64c4
> URL:
> http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=09a7a4cd718c0e26d3a948515ec4f6f6a68c64c4
>
> Author: Daniel-Constantin Mierla <miconda at gmail.com>
> Committer: Daniel-Constantin Mierla <miconda at gmail.com>
> Date:   Thu Jul 11 16:25:06 2013 +0200
>
> dispatcher: new parameter to specify the pv where to store attrs for
> matched address in ds_is_from_list()
>
> - attrs_pvname can be set to get attributes of matched address in
>   config file
>
> ---
>
>  modules/dispatcher/dispatch.c   |   12 ++++++++++++
>  modules/dispatcher/dispatch.h   |    2 ++
>  modules/dispatcher/dispatcher.c |   16 ++++++++++++++++
>  3 files changed, 30 insertions(+), 0 deletions(-)
>
> diff --git a/modules/dispatcher/dispatch.c b/modules/dispatcher/dispatch.c
> index 0f6e8b0..2783675 100644
> --- a/modules/dispatcher/dispatch.c
> +++ b/modules/dispatcher/dispatch.c
> @@ -2244,6 +2244,18 @@ int ds_is_from_list(struct sip_msg *_m, int group)
>                                                         return -2;
>                                                 }
>                                         }
> +                                       if(ds_attrs_pvname.s!=0 &&
> list->dlist[j].attrs.body.len>0)
> +                                       {
> +                                               memset(&val, 0,
> sizeof(pv_value_t));
> +                                               val.flags = PV_VAL_STR;
> +                                               val.rs =
> list->dlist[j].attrs.body;
> +                                               if(ds_attrs_pv.setf(_m,
> &ds_attrs_pv.pvp,
> +
> (int)EQ_T, &val)<0)
> +                                               {
> +                                                       LM_ERR("setting
> attrs pv failed\n");
> +                                                       return -3;
> +                                               }
> +                                       }
>                                         return 1;
>                                 }
>                         }
> diff --git a/modules/dispatcher/dispatch.h b/modules/dispatcher/dispatch.h
> index db055ee..912a3e0 100644
> --- a/modules/dispatcher/dispatch.h
> +++ b/modules/dispatcher/dispatch.h
> @@ -87,6 +87,8 @@ extern pv_elem_t * hash_param_model;
>
>  extern str ds_setid_pvname;
>  extern pv_spec_t ds_setid_pv;
> +extern str ds_attrs_pvname;
> +extern pv_spec_t ds_attrs_pv;
>
>  /* Structure containing pointers to TM-functions */
>  extern struct tm_binds tmb;
> diff --git a/modules/dispatcher/dispatcher.c
> b/modules/dispatcher/dispatcher.c
> index cf79d90..4af6757 100644
> --- a/modules/dispatcher/dispatcher.c
> +++ b/modules/dispatcher/dispatcher.c
> @@ -136,6 +136,8 @@ str ds_table_name        = str_init(DS_TABLE_NAME);
>
>  str ds_setid_pvname   = {NULL, 0};
>  pv_spec_t ds_setid_pv;
> +str ds_attrs_pvname   = {NULL, 0};
> +pv_spec_t ds_attrs_pv;
>
>  /** module functions */
>  static int mod_init(void);
> @@ -211,6 +213,7 @@ static param_export_t params[]={
>         {"attrs_avp",       STR_PARAM, &attrs_avp_param.s},
>         {"hash_pvar",       STR_PARAM, &hash_pvar_param.s},
>         {"setid_pvname",    STR_PARAM, &ds_setid_pvname.s},
> +       {"attrs_pvname",    STR_PARAM, &ds_attrs_pvname.s},
>         {"ds_probing_threshhold", INT_PARAM, &probing_threshhold},
>         {"ds_ping_method",     STR_PARAM, &ds_ping_method.s},
>         {"ds_ping_from",       STR_PARAM, &ds_ping_from.s},
> @@ -282,6 +285,8 @@ static int mod_init(void)
>                 hash_pvar_param.len = strlen(hash_pvar_param.s);
>         if (ds_setid_pvname.s)
>                 ds_setid_pvname.len = strlen(ds_setid_pvname.s);
> +       if (ds_attrs_pvname.s)
> +               ds_attrs_pvname.len = strlen(ds_attrs_pvname.s);
>         if (ds_ping_from.s) ds_ping_from.len = strlen(ds_ping_from.s);
>         if (ds_ping_method.s) ds_ping_method.len =
> strlen(ds_ping_method.s);
>         if (ds_outbound_proxy.s) ds_outbound_proxy.len =
> strlen(ds_outbound_proxy.s);
> @@ -462,6 +467,17 @@ static int mod_init(void)
>                         return -1;
>                 }
>         }
> +
> +       if(ds_attrs_pvname.s!=0)
> +       {
> +               if(pv_parse_spec(&ds_attrs_pvname, &ds_attrs_pv)==NULL
> +                               || !pv_is_w(&ds_attrs_pv))
> +               {
> +                       LM_ERR("[%s]- invalid attrs_pvname\n",
> ds_attrs_pvname.s);
> +                       return -1;
> +               }
> +       }
> +
>         if (dstid_avp_param.s && dstid_avp_param.len > 0)
>         {
>                 if(ds_hash_size>0)
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>



-- 
VoIP Embedded, Inc.
http://www.voipembedded.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20130711/fe75260a/attachment.html>


More information about the sr-dev mailing list