Module: kamailio Branch: master Commit: 7811f2dfa8b2465bb9c5b962038b03c50c1d399c URL: https://github.com/kamailio/kamailio/commit/7811f2dfa8b2465bb9c5b962038b03c50c1d399c
Author: Daniel-Constantin Mierla <mico...@gmail.com> Committer: Daniel-Constantin Mierla <mico...@gmail.com> Date: 2020-12-11T14:21:53+01:00 pv: new var $defn(name) - return the value of a define converted to numbaer (signed int) --- Modified: src/modules/pv/pv.c Modified: src/modules/pv/pv_core.c Modified: src/modules/pv/pv_core.h --- Diff: https://github.com/kamailio/kamailio/commit/7811f2dfa8b2465bb9c5b962038b03c50c1d399c.diff Patch: https://github.com/kamailio/kamailio/commit/7811f2dfa8b2465bb9c5b962038b03c50c1d399c.patch --- diff --git a/src/modules/pv/pv.c b/src/modules/pv/pv.c index bd80bafed7..67f42c227d 100644 --- a/src/modules/pv/pv.c +++ b/src/modules/pv/pv.c @@ -196,8 +196,10 @@ static pv_export_t mod_pvs[] = { {{"dd", (sizeof("dd")-1)}, /* */ PVT_OTHER, pv_get_dsturi_attr, 0, 0, 0, pv_init_iname, 1}, - {{"def", (sizeof("env")-1)}, PVT_OTHER, pv_get_def, 0, + {{"def", (sizeof("def")-1)}, PVT_OTHER, pv_get_def, 0, pv_parse_def_name, 0, 0, 0}, + {{"defn", (sizeof("defn")-1)}, PVT_OTHER, pv_get_defn, 0, + pv_parse_defn_name, 0, 0, 0}, {{"di", (sizeof("di")-1)}, /* */ PVT_OTHER, pv_get_diversion, 0, 0, 0, pv_init_iname, 1}, diff --git a/src/modules/pv/pv_core.c b/src/modules/pv/pv_core.c index e569a393e8..681e6beab1 100644 --- a/src/modules/pv/pv_core.c +++ b/src/modules/pv/pv_core.c @@ -3797,3 +3797,29 @@ int pv_get_def(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) return pv_get_null(msg, param, res); } +int pv_parse_defn_name(pv_spec_p sp, str *in) +{ + if (in == NULL || in->s == NULL || sp == NULL) { + LM_ERR("INVALID DEF NAME\n"); + return -1; + } + sp->pvp.pvn.type = PV_NAME_INTSTR; + sp->pvp.pvn.u.isname.type = AVP_NAME_STR; + sp->pvp.pvn.u.isname.name.s = *in; + return 0; + +} + +int pv_get_defn(sip_msg_t *msg, pv_param_t *param, pv_value_t *res) +{ + int n = 0; + str *val = pp_define_get(param->pvn.u.isname.name.s.len, + param->pvn.u.isname.name.s.s); + + if (val) { + str2sint(val, &n); + return pv_get_intstrval(msg, param, res, n, val); + } else { + return pv_get_sintval(msg, param, res, n); + } +} diff --git a/src/modules/pv/pv_core.h b/src/modules/pv/pv_core.h index 29ec9f25a4..afcaa1f84a 100644 --- a/src/modules/pv/pv_core.h +++ b/src/modules/pv/pv_core.h @@ -397,5 +397,8 @@ int pv_get_ksr_attrs(sip_msg_t *msg, pv_param_t *param, int pv_parse_def_name(pv_spec_p sp, str *in); int pv_get_def(sip_msg_t *msg, pv_param_t *param, pv_value_t *res); +int pv_parse_defn_name(pv_spec_p sp, str *in); +int pv_get_defn(sip_msg_t *msg, pv_param_t *param, pv_value_t *res); + #endif _______________________________________________ Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev