This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
cookbooks:devel:pseudovariables [2021/04/27 09:35] miconda old revision restored (2021/04/03 08:31) |
cookbooks:devel:pseudovariables [2021/06/23 13:06] s.safarov_gmail.com |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{ : | ||
====== Pseudo-Variables ====== | ====== Pseudo-Variables ====== | ||
- | Version: Kamailio SIP Server v5.5.x (devel) | + | Version: Kamailio SIP Server v5.6.x (devel) |
+ | |||
+ | {{ : | ||
===== Introduction ===== | ===== Introduction ===== | ||
Line 898: | Line 899: | ||
- | **$hdr(name)** - represents the body of first header identified by ' | + | **$hdr(name)** - represents the body of first header |
- | **$(hdr(name)[N])** - represents the body of the N-th header identified by ' | + | **$(hdr(name)[N])** - represents the body of the N-th header |
If [N] is omitted then the body of the first header is printed. The body of first header is returned when N=0, for the second N=1, a.s.o. In case of a comma-separated multi-body headers, it returns all the bodies, comma-separated. To print the last header of that type, use -1, or other negative values to count from the end. No white spaces are allowed inside the specifier (before }, before or after {, [, ] symbols). When N=' | If [N] is omitted then the body of the first header is printed. The body of first header is returned when N=0, for the second N=1, a.s.o. In case of a comma-separated multi-body headers, it returns all the bodies, comma-separated. To print the last header of that type, use -1, or other negative values to count from the end. No white spaces are allowed inside the specifier (before }, before or after {, [, ] symbols). When N=' | ||
Line 918: | Line 919: | ||
<fc # | <fc # | ||
+ | ===== $hfl(name) - Header Field With List Of Bodies ===== | ||
+ | |||
+ | Similar to **$hdr(name)**, | ||
+ | |||
+ | Implemented for: | ||
+ | |||
+ | * Contact | ||
+ | * Record-Route | ||
+ | * Route | ||
+ | * Via | ||
+ | |||
+ | For the rest of the headers works like **$hdr(name)**. | ||
+ | |||
+ | **$hfl(name)** - represents the first body of first header field identified by ' | ||
+ | |||
+ | **$(hfl(name)[N])** - represents the body of the N-th header field identified by ' | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if($(hfl(Via)[1])=~" | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
===== $hdrc(name) - Number of Headers ===== | ===== $hdrc(name) - Number of Headers ===== | ||
Line 930: | Line 955: | ||
</ | </ | ||
+ | ===== $hflc(name) - Number of Header Bodies ===== | ||
+ | |||
+ | Similar to **$hdrc(name)**, | ||
+ | |||
+ | Implemented for: | ||
+ | |||
+ | * Record-Route | ||
+ | * Route | ||
+ | * Via | ||
+ | |||
+ | For the rest of the headers works like **$hdrc(name)**. | ||
+ | |||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if($hflc(Via)==3) { | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
===== $var(name) - Private memory variables (zero) ===== | ===== $var(name) - Private memory variables (zero) ===== | ||
Line 1054: | Line 1099: | ||
<code c> | <code c> | ||
xlog(" | xlog(" | ||
+ | </ | ||
+ | |||
+ | ===== $ccp(key) - Config Custom Parameters ===== | ||
+ | |||
+ | Get the value for global custom parameters: | ||
+ | |||
+ | * https:// | ||
+ | |||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | gv.sval = " | ||
+ | gv.ival = 10 desc "ten var" | ||
+ | |||
+ | request_route { | ||
+ | xinfo(" | ||
+ | } | ||
</ | </ | ||
Line 1095: | Line 1158: | ||
event_route[core: | event_route[core: | ||
xlog(" | xlog(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== $rpl(key) ==== | ||
+ | |||
+ | Attributes of the SIP reply processed at that moment. The variables must be used during SIP reply processing, otherwise it returns $null. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * duri - SIP URI corresponding to the address where the SIP reply is going to be sent based on 2nd via | ||
+ | * dhost - host part of duri | ||
+ | * dport - port part of duri | ||
+ | * dproto - proto part of duri | ||
+ | * dprotoid - proto id of duri | ||
+ | * cntvia - the number of Via header bodies | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | reply_route{ | ||
+ | xinfo(" | ||
} | } | ||
</ | </ | ||
Line 1160: | Line 1244: | ||
... | ... | ||
} | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== SIPTRACE Module ===== | ||
+ | ==== $siptrace(name) ==== | ||
+ | |||
+ | **$siptrace(name)** - return attributes of the message handled in the event_route[siptrace: | ||
+ | |||
+ | The name can be: | ||
+ | |||
+ | * src_addr - source socket address (proto: | ||
+ | * dst_addr - destination socket address (proto: | ||
+ | * src_host - source host, for IPv6 host contains `[]` | ||
+ | * dst_host - destination host, for IPv6 host contains `[]` | ||
+ | * src_hostip - source host, for IPv6 host do not contains `[]` | ||
+ | * dst_hostip - destination host, for IPv6 host do not contains `[]` | ||
+ | * src_port - source port | ||
+ | * dst_port - destination port | ||
+ | * src_proto - source proto | ||
+ | * dst_proto - destination proto | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | event_route[siptrace: | ||
+ | { | ||
+ | if (allow_address(" | ||
+ | return; | ||
+ | |||
+ | } | ||
+ | if (compare_ips($siptrace(src_host), | ||
+ | return; | ||
+ | } | ||
} | } | ||
</ | </ | ||
Line 1777: | Line 1895: | ||
==== $nh(key) ==== | ==== $nh(key) ==== | ||
- | Return attributes of next hop for the SIP request. Address | + | Return attributes of next hop for the SIP messages. For SIP requests, the address |
* $nh(u) - uri (lower case u) | * $nh(u) - uri (lower case u) | ||
Line 2333: | Line 2451: | ||
* 0x999 - HEP attribute 0x999 | * 0x999 - HEP attribute 0x999 | ||
- | ===== $phn(rid=> | + | ===== Phonenum Variables ===== |
$phn(rid=> | $phn(rid=> | ||
Line 2355: | Line 2473: | ||
</ | </ | ||
+ | ===== SecSIPId Variables ===== | ||
+ | $secsipid(key) - return attributes of secsipid module. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * val - the value of Identity computed by secsipid_build_identity(...) | ||
+ | * ret - the return code of the libsecsipid function used by secsipid_build_identity(...) | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | if(secsipid_build_identity(" | ||
+ | " | ||
+ | xinfo(" | ||
+ | } | ||
+ | </ | ||
===== sdpops module variables ===== | ===== sdpops module variables ===== | ||
Line 2416: | Line 2550: | ||
+ | ===== $K(key) - Kamailio Constants ===== | ||
+ | $K(key) - return the numeric values corresponding to Kamailio configuration constants. | ||
+ | The key can be: | ||
+ | |||
+ | * IPv4 - return AF_INET | ||
+ | * IPv6 - return AF_INET6 | ||
+ | * UDP - return PROTO_UDP | ||
+ | * TCP - return PROTO_TCP | ||
+ | * TLS - return PROTO_TLS | ||
+ | * SCTP - return PROTO_SCTP | ||
+ | * WS - return PROTO_WS | ||
+ | * WSS - return PROTO_WSS | ||
+ | |||
+ | |||
+ | <code c> | ||
+ | xinfo(" | ||
+ | </ | ||
===== Examples ===== | ===== Examples ===== | ||