Module: sip-router
Branch: master
Commit: c8fb53ac59b4fba5d16de9745a723a18897b282b
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c8fb53ac59b4fba5d16de9745a723a18897b282b

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date:   Tue Sep 13 11:48:49 2011 +0200

pv: moved in is_int() from utils module

- function added by Juha Heinanen in utils module but works on
  pseudo-variables, thus is here is a more appropriate place

---

 modules_k/pv/README           |   46 +++++++++++++++++++++++++++++-----------
 modules_k/pv/doc/pv.xml       |    6 ++++-
 modules_k/pv/doc/pv_admin.xml |   22 +++++++++++++++++++
 modules_k/pv/pv.c             |   22 +++++++++++++++++++
 4 files changed, 82 insertions(+), 14 deletions(-)

diff --git a/modules_k/pv/README b/modules_k/pv/README
index 4485a76..57e824b 100644
--- a/modules_k/pv/README
+++ b/modules_k/pv/README
@@ -11,7 +11,9 @@ Daniel-Constantin Mierla
 
    <[email protected]>
 
-   Copyright © 2008 Daniel-Constantin Mierla (asipto.com)
+   Copyright � 2008-2011 Daniel-Constantin Mierla (asipto.com)
+
+   Copyright � 2011 Juha Heinanen
      __________________________________________________________________
 
    Table of Contents
@@ -34,6 +36,7 @@ Daniel-Constantin Mierla
 
               4.1. pv_isset(pvar)
               4.2. pv_unset(pvar)
+              4.3. is_int(pvar)
 
         5. MI Commands
 
@@ -47,8 +50,9 @@ Daniel-Constantin Mierla
    1.3. avp_aliases parameter usage
    1.4. pv_isset usage
    1.5. pv_unset usage
-   1.6. shv_set usage
-   1.7. shv_get usage
+   1.6. is_int() usage
+   1.7. shv_set usage
+   1.8. shv_get usage
 
 Chapter 1. Admin Guide
 
@@ -70,6 +74,7 @@ Chapter 1. Admin Guide
 
         4.1. pv_isset(pvar)
         4.2. pv_unset(pvar)
+        4.3. is_int(pvar)
 
    5. MI Commands
 
@@ -113,11 +118,11 @@ Chapter 1. Admin Guide
    _value_
      * _name_: shared variable name
      * _type_: type of the value
-          + “i”: integer value
-          + “s”: string value
+          + "i": integer value
+          + "s": string value
      * _value_: value to be set
 
-   Default value is “NULL”.
+   Default value is "NULL".
 
    Example 1.1. shvset parameter usage
 ...
@@ -134,11 +139,11 @@ modparam("pv", "shvset", "pstngw=s:sip:10.10.10.10")
    _value_
      * _name_: shared variable name
      * _type_: type of the value
-          + “i”: integer value
-          + “s”: string value
+          + "i": integer value
+          + "s": string value
      * _value_: value to be set
 
-   Default value is “NULL”.
+   Default value is "NULL".
 
    Example 1.2. varset parameter usage
 ...
@@ -161,6 +166,7 @@ modparam("pv","avp_aliases","email=s:email_addr;tmp=i:100")
 
    4.1. pv_isset(pvar)
    4.2. pv_unset(pvar)
+   4.3. is_int(pvar)
 
 4.1. pv_isset(pvar)
 
@@ -193,6 +199,20 @@ if(pv_isset("$avp("s:x")"))
 pv_unset("$avp("s:x")");
 ...
 
+4.3. is_int(pvar)
+
+   Function checks if pvar argument contains integer value and returns 1
+   if it does and -1 otherwise.
+
+   Function can be used from all kinds of routes.
+
+   Example 1.6. is_int() usage
+...
+if (is_int("$var(foo)")) {
+    xlog("L_INFO", "variable foo contains integer value\n");
+}
+...
+
 5. MI Commands
 
    5.1. shv_set
@@ -205,8 +225,8 @@ pv_unset("$avp("s:x")");
    Parameters:
      * _name_: shared variable name
      * _type_: type of the value
-          + “int”: integer value
-          + “str”: string value
+          + "int": integer value
+          + "str": string value
      * _value_: value to be set
 
    MI FIFO Command Format:
@@ -216,7 +236,7 @@ pv_unset("$avp("s:x")");
                 _value_
                 _empty_line_
 
-   Example 1.6. shv_set usage
+   Example 1.7. shv_set usage
 ...
 $ kamctl fifo shv_set debug int 0
 ...
@@ -234,7 +254,7 @@ $ kamctl fifo shv_set debug int 0
                 _name_
                 _empty_line_
 
-   Example 1.7. shv_get usage
+   Example 1.8. shv_get usage
 ...
 $ kamctl fifo shv_get debug
 $ kamctl fifo shv_get
diff --git a/modules_k/pv/doc/pv.xml b/modules_k/pv/doc/pv.xml
index c082b99..1ca758a 100644
--- a/modules_k/pv/doc/pv.xml
+++ b/modules_k/pv/doc/pv.xml
@@ -31,9 +31,13 @@
            </editor>
        </authorgroup>
        <copyright>
-           <year>2008</year>
+           <year>2008-2011</year>
            <holder>Daniel-Constantin Mierla (asipto.com)</holder>
        </copyright>
+       <copyright>
+           <year>2011</year>
+           <holder>Juha Heinanen</holder>
+       </copyright>
     </bookinfo>
     <toc></toc>
     
diff --git a/modules_k/pv/doc/pv_admin.xml b/modules_k/pv/doc/pv_admin.xml
index 86da6ec..7d56850 100644
--- a/modules_k/pv/doc/pv_admin.xml
+++ b/modules_k/pv/doc/pv_admin.xml
@@ -199,6 +199,28 @@ pv_unset("$avp("s:x")");
 </programlisting>
                </example>
                </section>
+               <section>
+                       <title>
+                               <function 
moreinfo="none">is_int(pvar)</function>
+                       </title>
+                       <para>
+                       Function checks if pvar argument contains integer value
+                       and returns 1 if it does and -1 otherwise.
+                       </para>
+                       <para>
+                       Function can be used from all kinds of routes.
+                       </para>
+                       <example>
+                               <title><function>is_int()</function> 
usage</title>
+                               <programlisting format="linespecific">
+...
+if (is_int("$var(foo)")) {
+    xlog("L_INFO", "variable foo contains integer value\n");
+}
+...
+                               </programlisting>
+                       </example>
+               </section>
        </section>
 
        <section>
diff --git a/modules_k/pv/pv.c b/modules_k/pv/pv.c
index 3beb7bc..c195a06 100644
--- a/modules_k/pv/pv.c
+++ b/modules_k/pv/pv.c
@@ -419,6 +419,7 @@ static int mod_init(void);
 static void mod_destroy(void);
 static int pv_isset(struct sip_msg* msg, char* pvid, char *foo);
 static int pv_unset(struct sip_msg* msg, char* pvid, char *foo);
+static int is_int(struct sip_msg* msg, char* pvar, char* s2);
 
 static cmd_export_t cmds[]={
        {"pv_isset",  (cmd_function)pv_isset,  1, fixup_pvar_null, 0, 
@@ -429,6 +430,9 @@ static cmd_export_t cmds[]={
        {"pv_xavp_print",  (cmd_function)pv_xavp_print,  0, 0, 0, 
                ANY_ROUTE },
 #endif
+       {"is_int", (cmd_function)is_int, 1, fixup_pvar_null, 
fixup_free_pvar_null,
+               ANY_ROUTE},
+
        {0,0,0,0,0,0}
 };
 
@@ -509,3 +513,21 @@ static int add_avp_aliases(modparam_t type, void* val)
        return 0;
 }
 
+/**
+ * Copyright (C) 2011 Juha Heinanen
+ *
+ * Checks if pvar argument contains int value
+ */
+static int is_int(struct sip_msg* msg, char* pvar, char* s2)
+{
+       pv_spec_t *pvar_sp;
+       pv_value_t pv_val;
+
+       pvar_sp = (pv_spec_t *)pvar;
+
+       if (pvar_sp && (pv_get_spec_value(msg, pvar_sp, &pv_val) == 0)) {
+               return (pv_val.flags & PV_VAL_INT)?1:-1;
+       }
+
+       return -1;
+}


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to