User Tools

Site Tools


cookbooks:5.3.x:pseudovariables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
cookbooks:5.3.x:pseudovariables [2019/11/15 14:59]
giavac [Other read-only variables]
cookbooks:5.3.x:pseudovariables [2020/04/02 21:45]
miconda [$xavp(id) - XAVPs]
Line 12: Line 12:
 Pseudo-Variables are implemented by various modules, most of them are provided by **pv** (if there is no special reference to a module, expect that the pseudo-variable is provided by **pv** module). Pseudo-Variables are implemented by various modules, most of them are provided by **pv** (if there is no special reference to a module, expect that the pseudo-variable is provided by **pv** module).
  
-===== Pseudo-variables usage ===== 
  
 +
 +===== Pseudo-variables usage =====
  
 Pseudo-variables can be used with many modules, among them: Pseudo-variables can be used with many modules, among them:
Line 447: Line 448:
  
 **$ru** - reference to request's URI (address in the first line of a SIP request) **$ru** - reference to request's URI (address in the first line of a SIP request)
 +
 +INVITE <fc #ff0000>**sip:+49423156789@example.de;user=phone**</fc> SIP/2.0
  
 <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc> <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc>
 +
  
 ==== $rU - Username in R-URI ==== ==== $rU - Username in R-URI ====
  
 **$rU** - reference to username in request's URI or to the Namespace Identifier of a URN (see RFC 2141) **$rU** - reference to username in request's URI or to the Namespace Identifier of a URN (see RFC 2141)
 +
 +INVITE sip:<fc #ff0000>**+49423156789**</fc>@example.de;user=phone SIP/2.0
  
 <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc> <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc>
 +
  
 ==== $rv - SIP message version ==== ==== $rv - SIP message version ====
Line 575: Line 582:
  
 **$tn** - reference to display name of 'To' header **$tn** - reference to display name of 'To' header
 +
 +To: "<fc #ff0000>**Bob**</fc>" <sip:+4942315678@example.de;user=phone>
  
 ==== $tt - To tag ==== ==== $tt - To tag ====
Line 590: Line 599:
  
 **$tu** - reference to URI of 'To' header **$tu** - reference to URI of 'To' header
 +
 +To: "Bob" <sip:<fc #ff0000>**+4942315678@example.de;user=phone**</fc>>
  
 ==== $tU - To URI Username ==== ==== $tU - To URI Username ====
  
 **$tU** - reference to username in URI of 'To' header **$tU** - reference to username in URI of 'To' header
 +
 +To: "Bob" <sip:<fc #ff0000>**+4942315678**</fc>@example.de;user=phone>
  
 ==== $Tb - Startup timestamp ==== ==== $Tb - Startup timestamp ====
Line 709: Line 722:
 ===== $xavp(id) - XAVPs ===== ===== $xavp(id) - XAVPs =====
  
-xavp - extended AVP'- are structures that can store multiple values. They work like a stack, much like AVPs, and are attached to SIP transactions. Each xavp has a name and can contain multiple named values, the structure name and the value name are separated by <nowiki>=></nowiki> like <nowiki>$xavp(root=>branch)</nowiki> where "root" is the name of the structure and branch is a named value. To assign a value use+**xavp** eXtended AVPs - are variables that can store multiple values, which can also be grouped in a structure-like fashion. Their value can be a string, an integer number or a list of named values (child values). 
 + 
 +They work like a stack, similar to AVPs, and are attached to SIP transactions and automatically destroyed when the transaction is finished. 
 + 
 +Each xavp has a string name and can contain a string, and integer or a list of named values. The structure name (or root list name) and the value name (or field name, or child value name) are separated by <nowiki>=></nowiki> like <nowiki>$xavp(root=>field)</nowiki> where "root" is the name of the structure and "field" is the name of the (child) value. 
 + 
 +To assign a single value use
 <code c> <code c>
-$xavp(root=>branch)="value";+$xavp(root)="string value"; 
 +$xavp(root)=intnumber; 
 +</code> 
 + 
 +To assign a named value use: 
 + 
 +<code c> 
 +$xavp(root=>field)="string value"
 +$xavp(root=>field)=intnumber;
 </code> </code>
  
 Like avps, xavp act like a stack. To refer to an existing value, use an index. The newest xavp has index zero [0]. Like avps, xavp act like a stack. To refer to an existing value, use an index. The newest xavp has index zero [0].
 +
 <code c> <code c>
-$xavp(root[0]=>newbranch)=12;+$xavp(root[0]=>field)=12;
 </code> </code>
  
 If you assign a value without an index, a new xavp is allocated and the old one is pushed up the stack, becoming index [1]. Old index [1] becomes [2] etc. If you assign a value without an index, a new xavp is allocated and the old one is pushed up the stack, becoming index [1]. Old index [1] becomes [2] etc.
 +
 <code c> <code c>
-$xavp(example=>name)="one"; +# new item (person => [(lastname = "Smith")]) 
-#create new +$xavp(person=>lastname)="Smith"; 
-$xavp(example=>name)="two"; + 
-#add extra value to "two+add new item (person => [(lastname = "Doe")]) 
-$xavp(example[0]=>value)="John"; +$xavp(person=>name)="Doe"; 
-#add value to first variable - "one+ 
-$xavp(example[1]=>value)="Anna";+# add another named value to the last example item 
 +#   (person => [(firstname="John"), (lastname = "Doe")]) 
 +$xavp(person[0]=>firstname)="John"; 
 + 
 +# add another named value to first example item 
 +#   (person => [(firstname="Alice"), (lastname = "Smith")]) 
 +xavp(person[1]=>firstname)="Alice";
 </code> </code>
  
Line 733: Line 769:
 Another example: Another example:
 <code c> <code c>
-Create new xavp+create new (the first) root xavp with a named value of string type
 $xavp(sf=>uri)="sip:10.10.10.10"; $xavp(sf=>uri)="sip:10.10.10.10";
  
-#assign values+add named values (child values)
 $xavp(sf[0]=>fr_timer)=10; $xavp(sf[0]=>fr_timer)=10;
 $xavp(sf[0]=>fr_inv_timer)=15; $xavp(sf[0]=>fr_inv_timer)=15;
 $xavp(sf[0]=>headers)="X-CustomerID: 1234\r\n"; $xavp(sf[0]=>headers)="X-CustomerID: 1234\r\n";
  
-#create new xavp, moving previous one to sf[1]+# create new (the second) root xavp with a named value of string type, moving previous one to sf[1]
 $xavp(sf=>uri)="sip:10.10.10.11"; $xavp(sf=>uri)="sip:10.10.10.11";
 +# add named values (child values)
 $xavp(sf[0]=>fr_timer)=20; $xavp(sf[0]=>fr_timer)=20;
 $xavp(sf[0]=>fr_inv_timer)=35; $xavp(sf[0]=>fr_inv_timer)=35;
  
-#Create a third xavp+create new (the thirdxavp with a named value of string type, moving previous one to sf[1] and the other one to sf[2]
 $xavp(sf=>uri)="sip:10.10.10.12"; $xavp(sf=>uri)="sip:10.10.10.12";
 +# add named values (child values)
 $xavp(sf[0]=>fr_timer)=10; $xavp(sf[0]=>fr_timer)=10;
 $xavp(sf[0]=>fr_inv_timer)=15; $xavp(sf[0]=>fr_inv_timer)=15;
Line 753: Line 791:
 </code> </code>
  
-xavps are read and write variables. You can create multilevel xavps, as xavps may contain xavps.+xavps are read and write variables.
  
 ===== $hdr(name) - Headers ===== ===== $hdr(name) - Headers =====
Line 1356: Line 1394:
 The $http_req(key) write-only variable can be used to set custom parameters before sending a HTTP query. The $http_req(key) write-only variable can be used to set custom parameters before sending a HTTP query.
  
-key can be one of:+**key** can be one of:
   * all: if set to $null, resets all the parameters to their default value (the ones defined in modparam)   * all: if set to $null, resets all the parameters to their default value (the ones defined in modparam)
   * hdr: sets/modifies/removes a HTTP header. N.B.: setting this variable multiple times will add several headers to the query.   * hdr: sets/modifies/removes a HTTP header. N.B.: setting this variable multiple times will add several headers to the query.
Line 1365: Line 1403:
   * tls_client_key: sets the client certificate key to use   * tls_client_key: sets the client certificate key to use
   * tls_ca_path: sets the CA certificate path to use   * tls_ca_path: sets the CA certificate path to use
-  * authmethod: Sets the preferred authentication mode for HTTP/HTTPS requests. The value is a bitmap and multiple methods can be used. Note that in this case, the CURL library will make an extra request to discover server-supported authentication methods. You may want to use a specific value. +  * authmethod: Sets the preferred authentication mode for HTTP/HTTPS requests. The value is a bitmap and multiple methods can be used. Note that in this case, the CURL library will make an extra request to discover server-supported authentication methods. You may want to use a specific value. Valid values are: 
- +      * 1 - BASIC authentication 
-Valid values are: +      * 2 - HTTP Digest authentication 
-    * 1 - BASIC authentication +      * 4 - GSS-Negotiate authentication 
-    * 2 - HTTP Digest authentication +      * 8 - NTLM authentication 
-    * 4 - GSS-Negotiate authentication +      * 16 - HTTP Digest with IE flavour. 
-    * 8 - NTLM authentication +      * (Default value is 3 - BASIC and Digest authentication.)
-    * 16 - HTTP Digest with IE flavour +
- +
-Default value is 3 - BASIC and Digest authentication. +
   * username: sets the username to use for authenticated requests   * username: sets the username to use for authenticated requests
   * password: sets the password to use for authenticated requests   * password: sets the password to use for authenticated requests
Line 2136: Line 2170:
  
   * version - HEP version   * version - HEP version
-  * src_ip - source IP address 
-  * dst_ip - destination IP address 
   * 0x000 - HEP attribute 0x000   * 0x000 - HEP attribute 0x000
   * 0x999 - HEP attribute 0x999   * 0x999 - HEP attribute 0x999
cookbooks/5.3.x/pseudovariables.txt · Last modified: 2020/04/06 18:09 by pojogas