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

Reply via email to