Download full document:

COOKIE_T

The HTTP Cookie type provides operations for a cookie as it appears in the Set-Cookie and Set-Cookie2 header. In this type the Name-Value List operations are also available. The first delimiter is = and the element delimiter is ;. Multiple consecutive ; are treated as one. (Same as applying the method IGNORE_EMPTY_ELEMENTS on a Name-Value List. You can use the Name-value List operations to access cookie attributes. In this type Text operations are also available. Each cookie begins with a COOKIE_NAME=COOKIE_VALUE pair followed by zero or more semi-colon separated attribute-value pairs. If an attribute appears more than once in a cookie, the value associated with the first appearance of the attribute is returned.

Format Cookie: Cookie1=Value;Version=decimal;Value;Domain=Value;Path=Value

This topic lists the expressions that are provided by this class.

Note:Expressions with the *symbol are inherited/promoted from text_t, nvlist_at.

* AFTER_REGEX(re regex)

Selects the text after the portion that matches the given regular expression argument. When the regular expression does not match the given string, a Text object of length of 0 is returned.

Example: HTTP.REQ.HEADER("etag").AFTER_REGEX(re/KX/) will select "DAPPER" from "KXDAPPER".

Parameters(expressions not allowed):

regex - Regular Expression

Returns: text_t

* AFTER_STR_ANY(text_tpatset_name)

Selects the Text that is present after the first occurrence of any of the strings that are bound to the patset named by the string argument. If there is no match to any of the strings bound to the patset in the current Text object then the result Text object has 0 length. The patset cannot have strings longer than 255 characters.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: text_t

* AFTER_STR(text_ts)

Selects the Text that is present after the first occurrence of the string argument. If there is no match for the argument in the current Text then the result Text object has 0 length. The input string cannot be bigger than 255 characters.

Parameters(expressions not allowed):

s - String

Returns: text_t

* APPEND(double_ati)

Appends the given double's string representation to the current string.

Parameters:

i - the double value to append.

Returns: text_t

* APPEND(ip_address_ataddr)

Appends the given IPv4's string representation to the current string.

Parameters:

addr - the IPv4 address to append.

Returns: text_t

* APPEND(num_ati)

Appends the given number's string representation to the current string.

Parameters:

i - the number value to append.

Returns: text_t

* APPEND(time_att)

Appends the given time's string representation to the current string.

Parameters:

t - the time value to append.

Returns: text_t

* APPEND(unsigned_long_ati)

Appends the given unsigned long's string representation to the current string.

Parameters:

i - the unsigned long value to append.

Returns: text_t

* APPEND(ipv6_address_ataddr)

Appends the given IPv6's string representation to the current string.

Parameters:

addr - the IPv6 address to append.

Returns: text_t

* APPEND(ipv6_subnet_ataddr)

Appends the given IPv6 subnet's string representation to the current string.

Parameters:

addr - the IPv6 subnet to append.

Returns: text_t

* APPEND(mac_address_ataddr)

Appends the given MAC's string representation to the current string.

Parameters:

addr - the MAC address to append.

Returns: text_t

* APPEND(text_tstr)

Appends the given string to the current string.

Parameters:

str - the string to append.

Returns: text_t

* APPEND(time_att)

Appends the given time's string representation to the current string.

Parameters:

t - the time value to append.

Returns: text_t

* B64DECODE

Decodes the selected text using base64 decoding.

For example, the string "TWFu" is converted to "Man"

Returns: text_t

* B64ENCODE

Encodes the selected text using base64 encoding.

For example, the string "Man" is converted to "TWFu"

Returns: text_t

* BEFORE_REGEX(re regex)

Selects the text before the portion that matches the given regular expression argument. When the regular expression does not match the given string, a Text object of length of 0 is returned.

For example: HTTP.RES.HEADER("content-type").BEFORE_REGEX(re#/#) will select "text" from "text/plain".

Parameters(expressions not allowed):

regex - Regular Expression

Returns: text_t

* BEFORE_STR_ANY(text_tpatset_name)

Selects the Text that is present before the first occurrence of any of the strings that are bound to the patset or datasetnamed by the string argument. If there is no match to any of the strings bound to the patset in the current Text object then the result Text object has 0 length. The patset cannot have strings longer than 255 characters.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: text_t

* BEFORE_STR(text_ts)

Selects the Text that is present before the first occurrence of the string argument. If there is no match for the argument in the current Text object then the result Text object has 0 length. The input string cannot be bigger than 255 characters.

Parameters(expressions not allowed):

s - String

Returns: text_t

* BETWEEN(text_tstart, text_tend)

Results in Boolean TRUE value if length of the Text object is greater than or equal to the sum of the Start and End argument lengths and if the prefix of the Text object matches the Start string argument and if the Suffix of the Text object matches the End string argument.

Parameters:

start - Start

end - End

Returns: bool_at

* BLOB_TO_HEX

Convert to hexadecimal representation and select text.

For example, the byte string abc is converted to 61:62:63.

Returns: text_t

* COMPARE(text_ts)

Results in a Number Value which is the result of comparison of the input argument with the Text object. The result is greater than 0 if the Text object is lexicographically greater than the argument. The result is 0 if the Text object and the argument match. The result is less than 0 if the Text object is lexicographically lesser than the argument.

Parameters:

s - String

Returns: num_at

* CONTAINS_ANY(text_tpatset_name)

Results in Boolean TRUE value if the Text contains any of the strings that are bound to the patset or dataset named by the string argument.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: bool_at

* CONTAINS_INDEX(text_tpatset_name)

Returns the numerical index of the matching string, if the Text contains any of the strings that are bound to the patset or dataset named by the string argument. Returns 0 if there is no match.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: num_at

* CONTAINS(text_ts)

Results in Boolean TRUE value if the Text contains the string given in the argument. The input string cannot be bigger than 255 characters.

Parameters(expressions not allowed):

s - String

Returns: bool_at

* COUNT

Return a Number Value giving the number of name-value components in the list. If the last Name-Value List component is of zero length or is all spaces then it is ignored.

Returns: num_at

* CRC32

Returns a 32-bit integer computed by applying a CRC (cyclic redundancy check) function to the selected text. This is the CRC function used by Ethernet, MPEG-2, PKZIP, GZIP, PNG, and many other applications. For example, the expression to compute the CRC value of the (first 1000 bytes of the) body of an HTTP request is: HTTP.REQ.BODY(1000).CRC32

Returns: num_at

* DECODE_USING_TEXT_MODE

Decodes the selected text using the currently configured text encoding methods like URLENCODED, BACKSLASH_ENCODED, PLUS_AS_SPACE, NOURLENCODED, NO_BACKSLASH_ENCODED and NO_PLUS_AS_SPACE. Text encoding methods are set using SET_TEXT_MODE method.

Returns: text_t

* DECRYPT

Decrypt the selected base64-encoded encrypted bytes using the configured encryptionParams.

Returns: text_t

* DIGEST(digest_method_emethod)

Returns a byte sequence computed by applying the the specified message digest method to the selected text. The message digest value can be encoded as hex or base64 if needed for comparison. For example, the expression to compute the MD5 digest of the (first 1000 bytes of the) body of an HTTP request and encode it as hex is: HTTP.REQ.BODY(1000).DIGEST(MD5).BLOB_TO_HEX.STRIP_CHARS(":")

Parameters(expressions not allowed):

method - digest method to apply to the input text

Returns: text_t

DOMAIN

Obtain the value of Domain field of the cookie. If Multiple Domain fields are present the value associated with the first instance is returned. For eg: Set-Cookie : Customer = "ABC"; DOMAIN=".abc.com"; DOMAIN=.xyz.com then HTTP.RES.SET_COOKIE.COOKIE("CUSTOMER").DOMAIN gives .abc.com . Note that the quotes are stripped and value is returned. String of zero length is returned in the following cases: 1) If the Domain field is not present. 2) If the Value of Domain field is not present.

Returns: text_t

* ENCRYPT

Encrypt the selected cleartext bytes using the configured encryptionParams.

Returns: text_t

* ENDSWITH_ANY(text_tpatset_name)

Results in Boolean TRUE value if the Text ends with any of the strings that are bound to the patset or dataset named by the string argument.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: bool_at

* ENDSWITH_INDEX(text_tpatset_name)

Returns the numerical index of the matching string, if the Text ends with any of the strings that are bound to the patset or dataset named by the string argument. Returns 0 if there is no match.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: num_at

* ENDSWITH(text_tend)

Results in Boolean TRUE value if a suffix of the Text object matches the string argument.

Parameters:

end - String

Returns: bool_at

* EQUALS_ANY(text_tpatset_name)

Results in Boolean TRUE value if the Text equals any of the strings that are bound to the patset or dataset named by the string argument.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: bool_at

* EQUALS_INDEX(text_tpatset_name)

Returns the numerical index of the matching string, if the Text equals any of the strings that are bound to the patset or dataset named by the string argument. Returns 0 if there is no match.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: num_at

* EQ(text_ts)

Results in Boolean TRUE value if the Text object matches the input argument.

Parameters:

s - String

Returns: bool_at

EXPIRES

Obtain the Expires field of the cookie which is date string. The value of the Expires attribute can be operated upon as a Time object. The Time object supports a number of date formats. If multiple Expires fields are present then the first one is returned. If the Expires attribute is absent then Text of length zero will be returned.

Returns: time_t

* GET_SIGNED16(uint n, endian_eendianness)

Get the 16-bit signed binary integer at the given offset.

Parameters(expressions not allowed):

n - Offset in bytes

endianness - Select little or big endian

Returns: num_at

* GET_SIGNED32(uint n, endian_eendianness)

Get the 32-bit signed binary integer at the given offset.

Parameters(expressions not allowed):

n - Offset in bytes

endianness - Select little or big endian

Returns: num_at

* GET_SIGNED8(uint n)

Get the 8-bit signed binary integer at the given offset.

Parameters:

n - Offset in bytes

Returns: num_at

* GET_UNSIGNED16(uint n, endian_eendianness)

Get the 16-bit unsigned binary integer at the given offset.

Parameters(expressions not allowed):

n - Offset in bytes

endianness - Select little or big endian

Returns: num_at

* GET_UNSIGNED32(uint n, endian_eendianness)

Get the 32-bit unsigned binary integer at the given offset.

Parameters(expressions not allowed):

n - Offset in bytes

endianness - Select little or big endian

Returns: unsigned_long_at

* GET_UNSIGNED64(uint n, endian_eendianness)

Get the 64-bit unsigned binary integer at the given offset.

Parameters(expressions not allowed):

n - Offset in bytes

endianness - Select little or big endian

Returns: unsigned_long_at

* GET_UNSIGNED8(uint n)

Get the 8-bit unsigned binary integer at the given offset.

Parameters:

n - Offset in bytes

Returns: num_at

* GE(text_ts)

Results in Boolean TRUE value if the Text object is greater than or equal to the input argument.

Parameters:

s - String

Returns: bool_at

* GT(text_ts)

Results in Boolean TRUE value if the Text object is greater than the input argument.

Parameters:

s - String

Returns: bool_at

* HASH

Returns a positive 31 bit integer value computed by applying a proprietary NetScaler hash function to the selected text. This function is not case- sensitive and ignores whitespaces. For example, applying the HASH function to two strings "Ab c" and "abc" would produce the same value. This function should not be used for security purposes; use instead the DIGEST function with one of the standard digest methods.

Returns: num_at

* HTML_XML_SAFE

Apply XML safe transform and select text.

Converts '<', '>' and ';' in the input text to ';lt;', ';gt;' and ';amp;' respectively; other characters in the input are not modified. This transform safeguards against XSS based attacks. This is a read only operation.

Returns: text_t

* HTTP_HEADER_SAFE

Apply Header safe transform and select text. Converts all new line ('\n') characters present in the input text to '%0A' so that they can safely be used in HTTP headers. This transform safeguards against response-splitting attacks. This is a read only operation.

Returns: text_t

* HTTP_URL_SAFE

Apply URL safe transform and select text. Converts URL unsafe characters to corresponding '%xx' values and retains the rest. This is a read only operation. Based on RFC2396, following are considered URL safe characters: Alpha-numeric characters: a-z, A-Z, 0-9 Hyphen and underscore: "-", "_" Dot: "." Exclamation mark: "!" Tilde: "~" Asterix: "*" Single quote: "'" Open and close parentheses: "(", ")" Semi-colon: ";" Colon: ":" At symbol: "@" Question mark: "?" Equals: "=" Dollar: "$" Percent: "%" Ampersand: ";" Plus: "+" Comma: "," Forward slash: "/" The rest are converted to %XX encoding, 'XX' is the hex-based representation of the input character. If the requirement is to encode all but URL unreserved characters, please consider using URL_RESERVED_CHARS_SAFE method.

Returns: text_t

* IS_BOOL_AT

Results in Boolean TRUE value if the Text is of boolean type.

Returns: bool_at

* IS_DOUBLE_AT

Results in Boolean TRUE value if the Text is of double data type.

Returns: bool_at

* IS_IPV6_AT

Results in Boolean TRUE value if the Text is of IPv6 data type.

Returns: bool_at

* IS_IPV6_SUBNET_AT

Results in Boolean TRUE value if the Text is of IPv6 subnet data type.

Returns: bool_at

* IS_IP_AT

Results in Boolean TRUE value if the Text is of IPv4 data type.

Returns: bool_at

* IS_MAC_ADDRESS_AT

Results in Boolean TRUE value if the Text is of mac address data type.

Returns: bool_at

* IS_NUM_AT

Results in Boolean TRUE value if the Text is of number type.

Returns: bool_at

* IS_NUM_AT(num_format_eformat)

Results in Boolean TRUE value if the Text is of number type with given input base.

Parameters(expressions not allowed):

format - number format

Returns: bool_at

* IS_STRINGMAP_KEY(text_tstring_map_name)

Returns true if the string that it operates on is present in the string map. IGNORECASE, NOIGNORECASE - controls whether key lookup in string map is case sensitive or not. For example:

  • HTTP.REQ.URL.IS_STRINGMAP_KEY("url_stringmap") returns true if value of HTTP.REQ.URL is present as key in the string map whose name is "url_stringmap".
  • HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE). IS_STRINGMAP_KEY("url_stringmap") returns true if value of HTTP.REQ.URL is present as key in the string map whose name is "url_stringmap". Key lookup in this case is done case-insensitively.

Parameters(expressions not allowed):

string_map_name - identifies the string map.

Returns: bool_at

* IS_TIME_AT

Results in Boolean TRUE if the Text follows any of the standard time formats given below, otherwise false. Tue, 05 Nov 1994 08:12:31 GMT RFC822 Tuesday, 05-Nov-94 08:12:31 GMT RFC850 Tue Nov 4 08:12:31 1994 asctime

Returns: bool_at

* IS_UNSIGNED_LONG_AT

Results in Boolean TRUE value if the Text is of unsigned long data type.

Returns: bool_at

* IS_UNSIGNED_LONG_AT(num_format_eformat)

Results in Boolean TRUE value if the Text is of unsigned long data type with given input base.

Parameters(expressions not allowed):

format - number format

Returns: bool_at

* LENGTH

Results in a Number Value that is the number of characters (not bytes) in the Text object.

Returns: num_at

* LE(text_ts)

Results in Boolean TRUE value if the Text object is less than or equal to the input argument.

Parameters:

s - String

Returns: bool_at

* LT(text_ts)

Results in Boolean TRUE value if the Text object is less than the input argument.

Parameters:

s - String

Returns: bool_at

* MAP_STRING_DEFAULT_TO_KEY(text_tstring_map_name)

Returns the value corresponding to the key in the string map. This is similar to the MAP_STRING method, but if the key is not present then instead of returning a null string, it returns the key itself.

Parameters(expressions not allowed):

string_map_name - identifies the string map.

Returns: text_t

* MAP_STRING(text_tstring_map_name)

Returns value corresponding to key in the string map. Key is the string that it is given as input. IGNORECASE, NOIGNORECASE - controls whether key lookup in string map is case sensitive or not. For example:

  • HTTP.REQ.URL.MAP_STRING("url_stringmap") returns value when the value of HTTP.REQ.URL is used as key in the string map whose name is "url_stringmap".
  • HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE). MAP_STRING("url_stringmap") returns value when the value of HTTP.REQ.URL is used as key in the string map whose name is "url_stringmap". Key lookup in this case is done case-insensitively.

Parameters(expressions not allowed):

string_map_name - identifies the string map.

Returns: text_t

* MARK_SAFE

Mark the PIXL expression safe without applying any safe transform.

Returns: text_t

* NAMES

Extracts a list of only the names from the name-value pair list. For example the list 'a=b,c="d=e,f",g=h' will result in the list 'a,c,g'. Empty elements will be ignored.

Returns: list_t

* NAME(uint i)

Operate as Text on the name component of the specified name-value component in the list. The index of the name-value component given by the argument is 0-based. If the specified index is greater than the number of components then a zero length Text object is produced.

Parameters(expressions not allowed):

i - Index

Returns: text_t

* NAME_VALUE(uint i)

Returns the element in the list identified by the parameter. The parameter is a 0-based index in to the list. The result is a string. If the specified index is greater than the number of components then a zero length string is produced.

Parameters(expressions not allowed):

i - Index

Returns: text_t

* NAME_VALUE(text_tname)

Operate as Text on the name-value component in the list. The name-value component is specified by the argument by providing the name whose name-value is needed. The first component that matches the name is selected. The matching process honors the IGNORECASE and the NOIGNORECASE text modes. The URLENCODED and the NOURLENCODED text modes are ignored.

Parameters(expressions not allowed):

name - Name

Returns: text_t

* NAME_VALUE(text_tname, uint i)

Operate as Text on the name-value component in the list. The name-value component is specified by the argument by providing the name whose name-value is needed. In a name-value list the same name can be repeated multiple times. The Index argument controls which occurence of the matching name-value component should be selected. The Index is 0-based. If the Index is too big then the Text object that is produced will have zero length. The matching process honors the IGNORECASE and the NOIGNORECASE text modes. The URLENCODED and the NOURLENCODED text modes are ignored.

Parameters(expressions not allowed):

name - Name

i - Index

Returns: text_t

* NE(text_ts)

Results in Boolean TRUE value if the Text object is not equal to the input argument.

Parameters:

s - String

Returns: bool_at

* NORMALIZE_URL

Normalize URL. Normalizes a URL by doing "percent" decoding. See the description for URLENCODED in the SET_TEXT_MODE function. This performs the equivalent of SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE, except that it does not change the value of the current text mode.

Returns: text_t

PATH

Obtain the value of Path field of the cookie, which is a '/' separated list (Multiple / are treated as single /). If Multiple path fields are present the value associated with the first instance is returned. For eg: Set-Cookie : Customer = "ABC"; PATH="/a//b/c"; PATH= "/x/y/z" then HTTP.RES.SET_COOKIE.COOKIE("CUSTOMER").PATH gives /a//b/c. HTTP.RES.SET_COOKIE.COOKIE("CUSTOMER").PATH.GET(2) gives b. Note that the quotes are stripped and value is returned. String of zero length is returned in the following cases: 1) If the Path field is not present. 2) If the value of Path field is not present.

Returns: list_t

PORT

Obtain the value of PORT field of the cookie. Operate as a ',' separated List on the PORT component of the COOKIE. For eg: Set-Cookie : Customer = "ABC"; PATH="/a/b/c"; PORT= "80, 2580" then HTTP.RES.SET_COOKIE.COOKIE("ABC").PORT gives 80, 2580. Note that the quotes are stripped and value is returned. String of zero length is returned in the following cases: 1) If the Port field is not present. 2) If the value of Port field is not present.

Returns: list_t

* PREFIX(char c, uint i)

Select a prefix of the Text. The selected prefix is the longest prefix that has at most Count (2nd argument) occurrences of character in the 1st argument.

Parameters(expressions not allowed):

c - Character

i - Count

Returns: text_t

* PREFIX(uint i)

Select a prefix of the Text. The length of the prefix is equal to the number in the argument. If there aren't enough characters in the Text object then the entire Text is selected.

Parameters:

i - Prefix Length

Returns: text_t

* REGEX_MATCH(re regex)

Returns TRUE if the Text object matches the given regular expression argument.

The regular expression has to be of the format:

reregular expression

The regular expression cannot be bigger than 1499 characters.

The regular expression should be acceptable by the PCRE regular expression library. Look at http://www.pcre.org/pcre.txt for documentation on the regular expression syntax. In particular, look at the pcrepattern man page.

There are some differences in the allowed syntax w.r.t PCRE syntax. Backreferences are not allowed. It is recommended not to use recursive regular expressions. The dot metacharacter matches newlines also. Unicode is not supported. SET_TEXT_MODE(IGNORECASE) overrides the (?i) internal option specified in the regular expression.

The PCRE library configuration can be seen in the system log, after executing 'nsapimgr -B" call ns_pixl_regex_show_config()"' at the shell prompt.

Some examples:

  • HTTP.REQ.HOSTNAME.REGEX_MATCH(re/[[:alpha:]]+(abc){2,3}/)
  • HTTP.REQ.URL.SET_TEXT_MODE(URLENCODED).REGEX_MATCH(re#(ab+c)#)
  • HTTP.REQ.URL.REGEX_MATCH(re/a(?i)b/) matches ab and aB
  • HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE).REGEX_MATCH(re/ab/) matches ab, aB, Ab and AB
  • HTTP.REQ.BODY.REGEX_MATCH(re/(?ixm) (^ab (.*) cd$) /) does a case-insensitive, multiline match where the dot metacharacter matches newline also. The regex itself can contain whitespace which will be ignored during the matching (x - extended regex).

Parameters(expressions not allowed):

regex - Regular Expression

Returns: bool_at

* REGEX_SELECT(re regex)

Selects the text that matches the given regular expression argument. When the regular expression does not match the given string, a Text object of length of 0 is returned.

For example: HTTP.REQ.HEADER("via").REGEX_SELECT(re!NS-CACHE-\d.\d:\s*\d{1,3}!) will select "NS-CACHE-7.0: 70"

Parameters(expressions not allowed):

regex - Regular Expression

Returns: text_t

* REPEAT(uint i)

Produces a string which contains 'i' sequential copies of the input string.

Parameters:

i - the number of times to repeat the string (0 or more)

Returns: text_t

* REPLACE_ALL_VALUES(text_tvalue)

Replaces all the values in each name-value pair with the specified string argument. For example, given argument string "?" the list 'a=b,c=d,e=f' will result in the name-value list 'a=?,c=?,e=?'. Quotes will be stripped from the values being replaced. Empty values will be replaced with the value provided. Empty elements will be preserved.

Parameters(expressions not allowed):

value - value to replace existing values

Returns: nvlist_t

* SET_CHAR_SET(charset_echarset)

Set the character set to use for subsequent functions that use text.

Parameters(expressions not allowed):

charset - Character Set

Returns: cookie_t

* SET_TEXT_MODE(textmode_emode)

The mode setting of a Text object controls the behavior of many Text operations. The Text mode settings may also control the behavior of some operations in objects (like List) that build upon the Text object. IGNORECASE, NOIGNORECASE - controls whether string comparison is case sensitive or not. URLENCODED - If set then all Text operations are carried out after translating all %HH or %uHHHH encodings in the underlying byte stream. 1. %HH will be translated to the character Y where HH denotes the ascii value of character Y in hexadecimal. For example, the encoded text "http%3a//" will be decoded to "http://" 2. %uWWHH will be translated to the character sequence YZ where WW denotes the ascii value of character Y in hexadecimal and HH denotes the ascii value of character Z in hexadecimal. For example, the encoded text "http%u3a2f/" and "http%u003a//" will both be decoded to"http://" NOURLENCODED - Indicates that no percent encodings are present in the Text object. No percent decoding will be performed on the Text object. PLUS_AS_SPACE - If set then all Text operations are carried out after converting occurrences of the plus character to whitespace. For example, the text "hello+world" will be decoded to "hello world" NO_PLUS_AS_SPACE - If set, then the plus character will not be converted to whitespace in the Text object. BACKSLASH_ENCODED - If set, then all Text operations are carried out after performing the following operations: 1. \XXX will be translated to the character Y where XXX denotes the ascii value of character Y in octal. The valid range of octal values for this type of encoding is \0 to \377. For example, the encoded text "http\72//" and "http\072//" will both be decoded to "http://" 2. \xHH will be translated to the character Y where HH denotes the ascii value of character Y in hexadecimal. For example, the encoded text "http\x3a//" will be decoded to "http://" 3. \uWWXX will be translated to the character sequence YZ where WW denotes the ascii value of character Y in hexadecimal and XX denotes the ascii value of character Z in hexadecimal. For example, the encoded text "http%u3a2f/" and "http%u003a//" will both be decoded to"http://" 4. Occurences of "\b", "\n", "\t", "\f" and "\r" are translated to the corresponding ascii characters. NO_BACKSLASH_ENCODED - If set, then backslash decoding will not be performed on the Text object. BAD_ENCODE_RAISE_UNDEF - If set, then UNDEF is raised if either the URLENCODED or BACKSLASH_ENCODED mode is set and a bad encoding corresponding to the specified encoding mode is encountered. NO_BAD_ENCODE_RAISE_UNDEF - If set, then UNDEF will not be raised when a bad encoding is encountered in the Text object. The Text operations operate on characters (as opposed to operating on bytes). By default a single byte represents a character using the ASCII encoding. But if URLENCODED mode is set then 3 bytes may represent a character. A PREFIX(3) operation will select the first 3 characters in the Text object. That means it may select up to 9 bytes for URLENCODED Text object. In the case of multibyte decodings as a result of %uXXXX or \uXXXX, Text operations which attempt to treat the multiple decoded bytes as distinct characters are not allowed.

Parameters(expressions not allowed):

mode - Text Mode

Returns: cookie_t

* SKIP(char c, uint i)

Select the Text after skipping over a prefix of the current Text. The skipped over prefix is the longest prefix that has at most Count (2nd argument) occurrences of character in the 1st argument.

Parameters(expressions not allowed):

c - Character

i - Count

Returns: text_t

* SKIP(uint i)

Select the Text after skipping over a prefix in the current Text. The length of the prefix is equal to the number in the argument. If there aren't enough characters in the Text object then the entire Text is skipped over.

Parameters(expressions not allowed):

i - Prefix Length

Returns: text_t

* STARTSWITH_ANY(text_tpatset_name)

Results in Boolean TRUE value if the Text starts with any of the strings that are bound to the patset or dataset named by the string argument.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: bool_at

* STARTSWITH_INDEX(text_tpatset_name)

Returns the numerical index of the matching string, if the Text starts with any of the strings that are bound to the patset or dataset named by the string argument. Returns 0 if there is no match.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: num_at

* STARTSWITH(text_tstart)

Results in Boolean TRUE value if a prefix of the Text object matches the string argument.

Parameters:

start - String

Returns: bool_at

* STRIP_CHARS(text_ts)

From the selected text remove the characters specified in the string.

For example: Say the selected text is / "foo.xyz=bar" /. Then on executing STRIP_CHARS('.=') or STRIP_CHARS('..=') the selected text will become /fooxyzbar /. Note that repeating character has same effect as it would be if it present only once.

Parameters(expressions not allowed):

s - String

Returns: text_t

* STRIP_END_CHARS(text_ts)

Selects the Text after stripping off characters in the end of the current Text object.

For example: Say the selected text is / "foo.xyz=bar" /. Then on executing STRIP_END_CHARS('ar') the selected text will become /foo.xyz=b /. Note that repeating character has same effect as it would be if it present only once.

Parameters(expressions not allowed):

s - String

Returns: text_t

* STRIP_END_WS

Selects the Text after stripping off white space in the end of the current Text object.

Returns: text_t

* STRIP_START_CHARS(text_ts)

Selects the Text after stripping off characters in the beginning of the current Text object.

For example: Say the selected text is / "foo.xyz=bar" /. Then on executing STRIP_START_CHARS('of') the selected text will become /.xyz=bar /. Note that repeating character has same effect as it would be if it present only once.

Parameters(expressions not allowed):

s - String

Returns: text_t

* STRIP_START_WS

Selects the Text after stripping off white space in the beginning of the current Text object.

Returns: text_t

* SUBSTR_ANY(text_tpatset_name)

Select any one sub-string that matches any string in the given patset or dataset. The patset cannot have strings longer than 255 characters.

Parameters(expressions not allowed):

patset_name - Pattern Set Name

Returns: text_t

* SUBSTR(uint start, uint len)

Select the Text object of the given length at the given offset. Offset it 0 based. If there aren't enough characters after the offset then all the remaining characters are selected.

Parameters:

start - Offset

len - Length

Returns: text_t

* SUBSTR(text_ts)

Select the first Text object that matches the input string argument. The input string cannot be bigger than 255 characters.

Parameters(expressions not allowed):

s - String

Returns: text_t

* SUFFIX(char c, uint i)

Select a suffix of the Text. The selected suffix is the longest possible suffix containing at most Count (2nd arg) occurrences of the character in the 1st argument.

Parameters(expressions not allowed):

c - Character

i - Count

Returns: text_t

* SUFFIX(uint i)

Select a suffix of the Text. The length of the suffix is equal to the number in the argument. If there aren't enough characters in the Text object then the entire Text is selected.

Parameters:

i - Suffix Length

Returns: text_t

* TO_LOWER

Converts the selected text to lower case.

For example, the string "ABCd" is converted to "abcd"

Returns: text_t

* TO_UPPER

Converts the selected text to upper case.

For example, the string "abcD" is converted to "ABCD"

Returns: text_t

* TRUNCATE(char c, uint i)

Select the Text after truncating a suffix from the current Text object. The truncated suffix is the longest possible suffix containing at most Count (2nd arg) occurrences of the character in the 1st argument.

Parameters(expressions not allowed):

c - Character

i - Count

Returns: text_t

* TRUNCATE(uint i)

Select the Text after truncating a suffix of the Text. The length of the suffix truncated is equal to the number in the argument. If there aren't enough characters in the Text then then all the characters are truncated.

Parameters:

i - Suffix Length

Returns: text_t

* TYPECAST_AVP_T

Convert text_t to avp_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (avp_t : Operations that can be performed on the returned AVPs.

Note:An AVP can have multiple instances in a Diameter message. However, the system can access only the first 16 instances.

Example:

  • To get the first value of AVP code 266 from a request, use: DIAMETER.REQ.AVP(266).VALUE(0).
  • To get the fourth value of AVP code 266 from a request, use: DIAMETER.REQ.AVP(266).VALUE(3).
  • To check if AVP code 1000 in the response has the vendor-specific bit set, use: DIAMETER.RES.AVP(1000).IS_VENDOR_SPECIFIC.

)

Returns: avp_t

* TYPECAST_AVP_UNUM_T

Convert text_t to avp_unum_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (avp_unum_t : In Diameter AVP based expressions can be written as DIAMETER.REQ.AVP(<avpcode>). For example Auth-Application-Id AVP (AVP code 258) can be extracted as DIAMETER.REQ.AVP(258) For few of the important AVPs we provide aliases. For example this AVP based expression can also be written as DIAMETER.REQ.AUTH_APPLICATION_ID. This expression returns either a object of class avp_t or returns a numerical value (object of class unsigned_long_at). The numerical value for this object is derived from the value in first instance of the AVP.)

Returns: avp_unum_t

* TYPECAST_BOOL_AT

Convert text_t to bool_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (bool_at : Boolean Operations)

Returns: bool_at

* TYPECAST_COOKIE_T

Convert text_t to cookie_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (cookie_t : The HTTP Cookie type provides operations for a cookie as it appears in the Set-Cookie and Set-Cookie2 header. In this type the Name-Value List operations are also available. The first delimiter is = and the element delimiter is ;. Multiple consecutive ; are treated as one. (Same as applying the method IGNORE_EMPTY_ELEMENTS on a Name-Value List. You can use the Name-value List operations to access cookie attributes. In this type Text operations are also available. Each cookie begins with a COOKIE_NAME=COOKIE_VALUE pair followed by zero or more semi-colon separated attribute-value pairs. If an attribute appears more than once in a cookie, the value associated with the first appearance of the attribute is returned.

Format Cookie: Cookie1=Value;Version=decimal;Value;Domain=Value;Path=Value)

Returns: cookie_t

* TYPECAST_DIAMETER_FLAG_T

Convert text_t to diameter_flag_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (diameter_flag_t : Provides operation to treat the underlying 1 byte as set of bit flags. then set/unset/test/reset_all operations can be done on flag)

Returns: diameter_flag_t

* TYPECAST_DNS_DOMAINNAME_T

Convert text_t to dns_domainname_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (dns_domainname_t : This object provides operations for parsing the DNS domain name as it appears at various places in the DNS data. The format is abc.foo.com.)

Returns: dns_domainname_t

* TYPECAST_DNS_FLAG_T

Convert text_t to dns_flag_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (dns_flag_t : Provides operations to test/set/unset a flag in dns header.)

Returns: dns_flag_t

* TYPECAST_DOUBLE_AT

Convert text_t to double_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_at : Double Value)

Returns: double_at

* TYPECAST_DOUBLE_T(double_format_eformat)

Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The supported formats are DECIMAL, DECIMAL_PREFIX. All the formats strip off the beginning white space. DECIMAL also strips off trailing white space. DECIMAL requires that all the remaining characters must be a proper double value. DECIMAL_PREFIX requires that at least one or more more characters in the prefix must be a proper double value. In case of overflow, there will be a parsing error.)

Parameters(expressions not allowed):

format - Format

Returns: double_t

* TYPECAST_DOUBLE_T(double_format_eformat, double_atdefault_value)

Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The supported formats are DECIMAL, DECIMAL_PREFIX. All the formats strip off the beginning white space. DECIMAL also strips off trailing white space. DECIMAL requires that all the remaining characters must be a proper double value. DECIMAL_PREFIX requires that at least one or more more characters in the prefix must be a proper double value. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Double

Returns: double_t

* TYPECAST_DOUBLE_T(double_format_eformat, ip_address_atdefault_value)

Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The supported formats are DECIMAL, DECIMAL_PREFIX. All the formats strip off the beginning white space. DECIMAL also strips off trailing white space. DECIMAL requires that all the remaining characters must be a proper double value. DECIMAL_PREFIX requires that at least one or more more characters in the prefix must be a proper double value. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Double

Returns: double_t

* TYPECAST_DOUBLE_T(double_format_eformat, num_atdefault_value)

Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The supported formats are DECIMAL, DECIMAL_PREFIX. All the formats strip off the beginning white space. DECIMAL also strips off trailing white space. DECIMAL requires that all the remaining characters must be a proper double value. DECIMAL_PREFIX requires that at least one or more more characters in the prefix must be a proper double value. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Double

Returns: double_t

* TYPECAST_DOUBLE_T(double_format_eformat, time_atdefault_value)

Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The supported formats are DECIMAL, DECIMAL_PREFIX. All the formats strip off the beginning white space. DECIMAL also strips off trailing white space. DECIMAL requires that all the remaining characters must be a proper double value. DECIMAL_PREFIX requires that at least one or more more characters in the prefix must be a proper double value. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Double

Returns: double_t

* TYPECAST_DOUBLE_T(double_format_eformat, unsigned_long_atdefault_value)

Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The supported formats are DECIMAL, DECIMAL_PREFIX. All the formats strip off the beginning white space. DECIMAL also strips off trailing white space. DECIMAL requires that all the remaining characters must be a proper double value. DECIMAL_PREFIX requires that at least one or more more characters in the prefix must be a proper double value. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Double

Returns: double_t

* TYPECAST_HTTP_CACHE_CONTROL_T

Convert text_t to http_cache_control_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_cache_control_t : This object provides for the ability to work on HTTP Cache-Control headers.)

Returns: http_cache_control_t

* TYPECAST_HTTP_CONTENT_LENGTH_T

Convert text_t to http_content_length_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_content_length_t : The HTTP.REQ.CONTENT_LENGTH or HTTP.RES.CONTENT_LENGTH object can be treated as a HTTP Header or as a Number. The numerical value for this object is derived from the value in the last instance of the Content-Length header.)

Returns: http_content_length_t

* TYPECAST_HTTP_COOKIE_T

Convert text_t to http_cookie_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_cookie_t : This object provides operations for parsing the HTTP cookie header. The name-value pair is derived from the value in the last instance of Cookie header. The format is Cookie : name0=value0; name1=value1; An HTTP Cookie header can have multiple occurrences. COUNT will return a Number containing how many headers of the current type exist. The system does not keep track of more than 15 HTTP headers. The result will be undefined if there are more than 15 instances of the header.)

Returns: http_cookie_t

* TYPECAST_HTTP_DATE_T

Convert text_t to http_date_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_date_t : The HTTP.REQ.DATE or HTTP.RES.DATE object can be treated as a HTTP header or a Time object. The Time value is derived from the value in the last instance of the Date header. The date formats supported are RFC 822 (updated by RFC 1123), RFC 1036 (obsoletes RFC850) and ANSI C asctime() formats.)

Returns: http_date_t

* TYPECAST_HTTP_HEADER_T(text_tname)

Convert text_t to http_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_header_t : When typecasting a Text object to HTTP Header a header name must be provided.For example: HTTP.REQ.HEADER("MyHdr").TYPECAST_HTTP_HEADER_T("InHdr"))

Parameters(expressions not allowed):

name - Header Name

Returns: http_header_t

* TYPECAST_HTTP_HOSTNAME_T

Convert text_t to http_hostname_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_hostname_t : This object provides operations for parsing the HTTP hostname as it appears at various places in the HTTP protocol data. The format is abc.foo.com:8080.)

Returns: http_hostname_t

* TYPECAST_HTTP_METHOD_T

Convert text_t to http_method_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_method_t : This object provides Text operations and HTTP Request Method Enum operations on the HTTP request method.)

Returns: http_method_t

* TYPECAST_HTTP_SET_COOKIE_T

Convert text_t to http_set_cookie_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_set_cookie_t : HTTP.RES.SET_COOKIE provides operations for parsing and operating on the SET-COOKIE header that is present in the HTTP response. HTTP Set-Cookie header supports Text and HTTP Header operations. For most Text operations the value in the last Set-Cookie header is selected. HTTP Set-Cookie header also supports special operations to extract cookies from the response. It is assumed that there will be only one cookie in a Set-Cookie header.)

Returns: http_set_cookie_t

* TYPECAST_HTTP_URL_T

Convert text_t to http_url_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_url_t : HTTP.REQ.URL provides operations for parsing and operating on the URL that is present in the first line of the HTTP request header. The supported format is [<protocol>://<hostname>]<path>?<query>. The Text object backing a HTTP URL object has the Text Mode set to URLENCODED by default.)

Returns: http_url_t

* TYPECAST_HTTP_VERSION_T

Convert text_t to http_version_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_version_t : HTTP.REQ.VERSION or HTTP.RES.VERSION provide operations to extract HTTP version information.)

Returns: http_version_t

* TYPECAST_IPV6_ADDRESS_AT

Convert text_t to ipv6_address_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ipv6_address_at : Provides operations for the 128-bit IPv6 address value. Some general information regarding IPv6 expressions: IPv6 PIXL expressions can be combined with other PIXL expressions using the '+' operator. The output is expected to be the concatenation of the string representations of the individual PIXL expressions. No other operator other than '+' is expected to work when any of the operands is an IPv6 PIXL expression. Also, IPv6 PIXL expressions can be combined with any other type of PIXL expression except a PIXL expression that produces a bool result. In other words, if A and/or B are two IPv6 addresses, A+B should result in the string AB. When one of A or B is an IPv6 address, the other can only be a number or a string and not a boolean. Further, when A and/or B is an IPv6 address, the only operator allowed between them is '+'.

Example: Let the client source IPv6 address be ABCD:1234::ABCD. Let the server destination IPv4 address be 10.100.10.100. Then the expression CLIENT.IPV6.SRC + SERVER.IP.DST should produce the output "ABCD:1234::ABCD10.100.10.100".
Similarly, CLIENT.IPV6.SRC + 5 should produce the result ABCD:1234::ABCD5)

Returns: ipv6_address_at

* TYPECAST_IPV6_ADDRESS_T

Convert text_t to ipv6_address_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ipv6_address_t : This object represents an IPv6 address present in the 1000:1001:CD10:0000:0000:89AB:4567:CDEF format.)

Returns: ipv6_address_t

* TYPECAST_IPV6_SUBNET_AT

Convert text_t to ipv6_subnet_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ipv6_subnet_at : Provides operations for the integral IPv6 subnet address value.)

Returns: ipv6_subnet_at

* TYPECAST_IPV6_SUBNET_T

Convert text_t to ipv6_subnet_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ipv6_subnet_t : This object represents an IPv6 subnet address present in the 1000:1001:CD10:0000:0000:89AB:4567:CDEF/64 format.)

Returns: ipv6_subnet_t

* TYPECAST_IP_ADDRESS_AT

Convert text_t to ip_address_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ip_address_at : Provides operations for the 32-bit integral IP address value.)

Returns: ip_address_at

* TYPECAST_IP_ADDRESS_T

Convert text_t to ip_address_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ip_address_t : Represents an IP address present in the 10.100.200.1 format.)

Returns: ip_address_t

* TYPECAST_LIST_T(char sep)

Convert text_t to list_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (list_t : The character separator has to be provided when typecasting a textual context to list type. The current text mode has no effect on the character separator. For example if the current text mode is IGNORECASE and the separator is p then P will not be treated as a separator.)

Parameters(expressions not allowed):

sep - Separator

Returns: list_t

* TYPECAST_MAC_ADDRESS_AT

Convert text_t to mac_address_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (mac_address_at : Provides operations for the 48-bit MAC address value.)

Returns: mac_address_at

* TYPECAST_MAC_ADDRESS_T

Convert text_t to mac_address_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (mac_address_t : Represents a MAC address present in the 12:34:56:78:9a:bc format.)

Returns: mac_address_t

* TYPECAST_NUM_AT

Convert text_t to num_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (num_at : Number Value)

Returns: num_at

* TYPECAST_NUM_T(num_format_eformat)

Convert text_t to num_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (num_t : Treat the underlying text as a Number in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error.)

Parameters(expressions not allowed):

format - Format

Returns: num_t

* TYPECAST_NUM_T(num_format_eformat, num_atdefault_value)

Convert text_t to num_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (num_t : Treat the underlying text as a Number in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Number

Returns: num_t

* TYPECAST_NVLIST_T(char sep1, char sep2)

Convert text_t to nvlist_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (nvlist_t : Two character delimiters have to be provided when typecasting a Text object to a Name-Value List. The first delimited separates the name from the value. The second delimiter separates list items. For example typecast_nvlist_t('=', '&') handles a URL query string. The Text Mode has no effect on the character delimiters. For example if the current text mode is IGNORECASE and a delimiter is p then P will not be treated as a delimiter.)

Parameters(expressions not allowed):

sep1 - delimiter1

sep2 - delimiter2

Returns: nvlist_t

* TYPECAST_NVLIST_T(char sep1, char sep2, char quote)

Convert text_t to nvlist_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (nvlist_t : Two character delimiters and quote-character have to be provided when typecasting a Text object to a Name-Value List that supports quote-character. The first delimited separates the name from the value. The second delimiter separates list items. The third value specifies the quote character. For example typecast_nvlist_t('=', ';', '"') handles a name-value list separated by semi-colons that allows quoting. The quote-character specifies that the value can occur within the quotes and the delimiters within the quote-characters should not be taken into account. The Text Mode has no effect on the character delimiters. For example if the current text mode is IGNORECASE and a delimiter is p then P will not be treated as a delimiter.)

Parameters(expressions not allowed):

sep1 - delimiter1

sep2 - delimiter2

quote - quote-character.

Returns: nvlist_t

* TYPECAST_RADIUS_AVP_T

Convert text_t to radius_avp_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (radius_avp_t : Operations that can be performed on the returned AVPs.

Note:An AVP can have multiple instances in a radius message. However, the system can access only the first 16 instances.

Example:

  • To get the first value of AVP code 26 from a request, use: radius.REQ.AVP(26).VALUE(0).
  • To get the fourth value of AVP code 26 from a request, use: radius.REQ.AVP(26).VALUE(3).

)

Returns: radius_avp_t

* TYPECAST_RADIUS_AVP_VALUE_T

Convert text_t to radius_avp_value_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (radius_avp_value_t : Provides operations to typecast RADIUS AVP value to Integer value or IP Address.)

Returns: radius_avp_value_t

* TYPECAST_SEQ_TEXT_T

Convert text_t to seq_text_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (seq_text_t : Represents the Text Sequence class.)

Returns: seq_text_t

* TYPECAST_SIP_CALLID_HEADER_T

Convert text_t to sip_callid_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_callid_header_t : This object provides operations for parsing the SIP callid header.)

Returns: sip_callid_header_t

* TYPECAST_SIP_CONTENT_LENGTH_T

Convert text_t to sip_content_length_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_content_length_t : The SIP.REQ.CONTENT_LENGTH or SIP.RES.CONTENT_LENGTH object can be treated as a SIP Header or as a Number. The numerical value for this object is derived from the value in the last instance of the Content-Length header.)

Returns: sip_content_length_t

* TYPECAST_SIP_FROM_HEADER_T

Convert text_t to sip_from_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_from_header_t : This object provides operations for parsing the SIP From header.)

Returns: sip_from_header_t

* TYPECAST_SIP_HEADER_T(text_tname)

Convert text_t to sip_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_header_t : When typecasting a Text object to SIP Header a header name must be provided.For example: SIP.REQ.HEADER("MyHdr").TYPECAST_SIP_HEADER_T("InHdr"))

Parameters(expressions not allowed):

name - Header Name

Returns: sip_header_t

* TYPECAST_SIP_HOSTNAME_T

Convert text_t to sip_hostname_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_hostname_t : This object provides operations for parsing the SIP hostname as it appears at various places in the SIP protocol data. The format is abc.foo.com:5060.)

Returns: sip_hostname_t

* TYPECAST_SIP_METHOD_T

Convert text_t to sip_method_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_method_t : This object provides Text operations and SIP Request Method Enum operations on the SIP request method.)

Returns: sip_method_t

* TYPECAST_SIP_TO_HEADER_T

Convert text_t to sip_to_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_to_header_t : This object provides operations for parsing the SIP From header.)

Returns: sip_to_header_t

* TYPECAST_SIP_URL_T

Convert text_t to sip_url_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_url_t : SIP.REQ.URL provides operations for parsing and operating on the URL that is present in the first line of the SIP request header. The supported format is [<protocol>://<hostname>]<path>?<query>. The Text object backing a SIP URL object has the Text Mode set to URLENCODED by default.)

Returns: sip_url_t

* TYPECAST_SIP_VERSION_T

Convert text_t to sip_version_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_version_t : SIP.REQ.VERSION or SIP.RES.VERSION provide operations to extract SIP version information.)

Returns: sip_version_t

* TYPECAST_SIP_VIA_HEADER_T

Convert text_t to sip_via_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_via_header_t : This object provides operations for parsing the SIP Via header.)

Returns: sip_via_header_t

* TYPECAST_SSLVPN_MODE_T

Convert text_t to sslvpn_mode_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sslvpn_mode_t : This object provides Text operations and SSLVPN Mode Enum operations on the SSLVPN request method.)

Returns: sslvpn_mode_t

* TYPECAST_TCP_OPTIONS_T

Convert text_t to tcp_options_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (tcp_options_t : TCP Protocol Options)

Returns: tcp_options_t

* TYPECAST_TCP_OPTIONS_TYPE_T

Convert text_t to tcp_options_type_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (tcp_options_type_t : TCP Protocol Options Type)

Returns: tcp_options_type_t

* TYPECAST_TCP_REPEATER_OPTION_T

Convert text_t to tcp_repeater_option_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (tcp_repeater_option_t : TCP Protocol Option : Repeater)

Returns: tcp_repeater_option_t

TYPECAST_TEXT_T

Convert cookie_t to text_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (text_t : Designates any piece of text.)

Returns: text_t

* TYPECAST_TIME_AT

Convert text_t to time_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (time_at : Treats a number value as number of seconds since GMT Jan 1 1970 0h 0m 0s.)

Returns: time_at

* TYPECAST_TIME_T

Convert text_t to time_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (time_t : This object treats a Text object as a date string. The formats supported are

  1. RFC822 :: Sun, 06 Nov 1994 08:49:37 GMT
  2. RFC850 :: Sunday, 06-Nov-94 08:49:37 GMT
  3. ASCTIME :: Sun Nov 6 08:49:37 1994
  4. ASCTIME like :: Sun Nov 6 08:49:37 1994
  5. ASCTIME like :: Sun Nov 06 08:49:37 1994
  6. Http Set-Cookie Expiry date :: Sun, 06-Nov-1994 08:49:37 GMT)

Returns: time_t

* TYPECAST_UNSIGNED_LONG_AT

Convert text_t to unsigned_long_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_at : Unsigned Long(64bit) Value)

Returns: unsigned_long_at

* TYPECAST_UNSIGNED_LONG_T(unsigned_long_format_eformat)

Convert text_t to unsigned_long_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_t : Treat the underlying text as a Unsigned Long in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error.)

Parameters(expressions not allowed):

format - Format

Returns: unsigned_long_t

* TYPECAST_UNSIGNED_LONG_T(unsigned_long_format_eformat, ip_address_atdefault_value)

Convert text_t to unsigned_long_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_t : Treat the underlying text as a Unsigned Long in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Number

Returns: unsigned_long_t

* TYPECAST_UNSIGNED_LONG_T(unsigned_long_format_eformat, unsigned_long_atdefault_value)

Convert text_t to unsigned_long_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_t : Treat the underlying text as a Unsigned Long in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Number

Returns: unsigned_long_t

* TYPECAST_UNSIGNED_LONG_T(unsigned_long_format_eformat, num_atdefault_value)

Convert text_t to unsigned_long_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_t : Treat the underlying text as a Unsigned Long in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Number

Returns: unsigned_long_t

* TYPECAST_UNSIGNED_LONG_T(unsigned_long_format_eformat, time_atdefault_value)

Convert text_t to unsigned_long_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_t : Treat the underlying text as a Unsigned Long in the given format. The supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All the formats strip off the beginning white space. DECIMAL and HEX also strip off trailing white space. DECIMAL and HEX require that all the remaining characters must be proper digits. DECIMAL_PREFIX and HEX_PREFIX require that at least one or more more characters in the prefix must be proper digits. In case of overflow, there will be a parsing error. In case of parsing error the default value will be assumed.)

Parameters(expressions not allowed):

format - Format

default_value - Number

Returns: unsigned_long_t

* TYPECAST_UNUM_TEXT_T

Convert text_t to unum_text_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unum_text_t : Provides operations to treat the underlying OctectString as Binary String or unsigned long value .)

Returns: unum_text_t

* TYPECAST_VENDOR_SPEC_APPID_AVP_T

Convert text_t to vendor_spec_appid_avp_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (vendor_spec_appid_avp_t : Retrieves AVPs that are nested in the grouped AVP Vendor-Specific-Application-Id (code 260). The nested AVPs are:

  • Vendor-Id
  • Auth-Application-Id
  • Acct-Application-Id

For example, to retrieve the Auth-Application-Id AVP from the Vendor-Specific-Application-Id AVP:

  • For requests: DIAMETER.REQ.VENDOR_SPECIFIC_APPLICATION_ID.AUTH_APPLICATION_ID
  • For responses: DIAMETER.RES.VENDOR_SPECIFIC_APPLICATION_ID.AUTH_APPLICATION_ID

)

Returns: vendor_spec_appid_avp_t

* TYPECAST_VENDOR_SPEC_RADIUS_AVP_T

Convert text_t to vendor_spec_radius_avp_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (vendor_spec_radius_avp_t :

  • Vendor-Id

To retrieve the Vendor-Id from the Vendor-Specific AVP:

  • RADIUS.REQ.VENDOR_SPECIFIC.VENDORID

)

Returns: vendor_spec_radius_avp_t

* UNQUOTE(char c)

If selected text is quoted by character c, Remove character c from beginning and end.

For example: Say the selected text is / "foo xyz bar " /. Then on executing UNQUOTE('"') the selected text will become /foo xyz bar /

Parameters(expressions not allowed):

c - Character

Returns: text_t

* URL_RESERVED_CHARS_SAFE

Converts URL reserved characters to corresponding '%XX' values and retains the rest. This is a read only operation. Based on RFC3986, following are considered URL unreserved characters: Alpha-numeric characters: a-z, A-Z, 0-9 Hyphen and underscore: "-", "_" Dot: "." Tilde: "~" The rest are converted to %XX encoding, 'XX' is the hex-based representation of the input character. If the requirement is to encode all but URL safe characters, please consider using HTTP_URL_SAFE method.

Returns: text_t

* VALUES

Extracts a list of only the values from the name-value pair list. For example the list 'a=b,c=d,e=f' will result in the list 'b,d,f'. Note that lists do not honor the quote characters, so any nvlist_at entry that has quotes and a quoted entry includes a separator will be split at that embedded separator. Quote characters will not be stripped from the values. Empty elements and empty values will be ignored.

Returns: list_t

* VALUE(uint i)

Operate as Text on the value component of the specified name-value component in the list. The index of the name-value component given by the argument is 0-based. If the specified index is greater than the number of components then a zero length Text object is produced.

Parameters(expressions not allowed):

i - Index

Returns: text_t

* VALUE(text_tname)

Operate as Text on the value component of the specified name-value component in the list. The name-value component is specified by the argument by providing the name whose value is needed. The first component that matches the name is selected. The matching process honors the IGNORECASE and the NOIGNORECASE text modes. The URLENCODED and the NOURLENCODED text modes are ignored.

Parameters(expressions not allowed):

name - Name

Returns: text_t

* VALUE(text_tname, uint i)

Operate as Text on the value component of the specified name-value component in the list. The name-value component is specified by the argument by providing the name whose value is needed. In a name-value list the same name can be repeated multiple times. The Index argument controls which occurence of the matching name-value component should be selected. The Index is 0-based. If the Index is too big then the Text object that is produced will have zero length. The matching process honors the IGNORECASE and the NOIGNORECASE text modes. The URLENCODED and the NOURLENCODED text modes are ignored.

Parameters(expressions not allowed):

name - Name

i - Index

Returns: text_t

VERSION

Obtain the Value of Version field of the cookie which is a decimal integer. If Multiple version fields are present the value associated with the first instance after the COOKIE name-value pair is returned. For eg: Set-Cookie : Customer = "ABC"; VERSION = "1"; VERSION = "0" then HTTP.RES.SET_COOKIE.COOKIE("CUSTOMER").VERSION gives 1. Note that the quotes are stripped and value is returned. Default numerical value zero is returned in the following cases: 1) If the version field is not present. 2) If the value of version field is not present. 3) If the version value is not a decimal number.

Returns: num_t

* XML_DECRYPT(text_tcertKeyName)

Decrypt the selected content, which was encrypted using the W3C XML Encryption standard.

Parameters(expressions not allowed):

certKeyName - identifies the X.509 certificate with the RSA private key to be used to decrypt the content.

Returns: text_t

* XML_ENCRYPT(text_tcertKeyName, encrypt_method_emethod)

Encrypt the selected cleartext using the W3C XML Encryption standard.

Parameters(expressions not allowed):

certKeyName - identifies the RSA private key to be used to encrypt the content.

method - specifies the bulk encryption method (rc4, des3, aes128, aes192, or aes256).

Returns: text_t

* XML_ENCRYPT(text_tcertKeyName, encrypt_method_emethod, uint flags)

Encrypt the selected cleartext using the W3C XML Encryption standard.

Parameters(expressions not allowed):

certKeyName - identifies the RSA private key to be used to encrypt the content.

method - specifies the bulk encryption method (rc4, des3, aes128, aes192, or aes256).

flags - optional bit mask to specify optional elements in the EncryptedData element. These are hints to tell the receiver what public key to use to decrypt the content, providing information from the certKey's X.509 certificate.

  • 1 - include a KeyName element with the certKeyName;
  • 2 - include a KeyValue element with the RSA public key from the certificate;
  • 4 - include an X509IssuerSerial element with the certificate serial number and issuer DN;
  • 8 - include an X509SubjectName element with the certificate subject DN;
  • 16 - include an X509Certificate element with the entire certificate;

Returns: text_t

* XPATH_HTML_WITH_MARKUP(xpath_str xpathex)

Applies an XPath expression to the DOM for an HTML document and returns the selected node-set or string, including markup like element tags. node-sets are converted to strings using the standard XPath string conversion routine. The selected portion of the document can be used as the target for rewrite actions.

Examples: HTTP.REQ.BODY(1000).XPATH_HTML_WITH_MARKUP(xp%//html/head/title%) returns the <title> element in the document's <head> This can be used in a rewrite action to replace or delete the <title> element.

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: text_t

* XPATH_HTML(xpath_bool xpathex)

Applies an XPath expression to the DOM for an HTML document and a boolean value.

Examples: HTTP.RES.BODY(1000).XPATH_HTML(xp%boolean(/html/head/meta)%) returns true if the <meta> element exists as a child of <head> element.

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: bool_at

* XPATH_HTML(xpath_double xpathex)

Applies an XPath expression to the DOM for an HTML document and a double value.

Examples: HTTP.RES.BODY(1000).XPATH_HTML(xp%number(//video/@height)%) returns the numeric value of the height attribute of the first <video> element.

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: double_at

* XPATH_HTML(xpath_str xpathex)

Applies an XPath expression to the DOM for an HTML document and returns the selected node-set or string. node-sets are converted to strings using the standard XPath string conversion routine.

Examples: HTTP.REQ.BODY(1000).XPATH_HTML(xp%//img/@src%) returns the string value of the src attribute of the first <img> element in the document.

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: text_t

* XPATH_JSON_WITH_MARKUP(xpath_str xpathex)

xpath(1.0) expression evaluation. xpath_json_with_markup operates on XML file and returns a string that contains the entire portion of the document for the result node including markup, such as including the enclosing element tags

Examples: For the JSON file: { "Book":{ "creator":{ "person":{ "name":'Milton' } }, "title":'Paradise Lost' } } HTTP.REQ.BODY(1000).XPATH_JSON_WITH_MARKUP(xp%/Top/Book/creator%) This expression when operated on the above JSON file, will select "all the nodes enclosed by /Book/creator" in the first 1000 bytes of the body which is creator:{ person:{ name:'Milton' } } The original JSON document is not disturbed but the part of the JSON body selected by the expression is marked for further processing.

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: text_t

* XPATH_JSON(xpath_bool xpathex)

xpath(1.0) expression evaluation. xpath_json operates on JSON file and returns boolean value.

Examples: For the JSON file: { "Book":{ "creator":{ "person":{ "name":'Milton' } }, "title":'Paradise Lost' } } HTTP.REQ.BODY(1000).XPATH_JSON(xp%boolean(/Top/Book/creator)%) This will return true as there is a node named 'creator' with parent 'Book' in the first 1000 bytes of the document.

Parameters(expressions not allowed):

xpathex - XPath Boolean Expression

Returns: bool_at

* XPATH_JSON(xpath_double xpathex)

xpath(1.0) expression evaluation. xpath_json operates on JSON file and returns double value.

Examples: For the JSON file: { "Book":{ "creator":{ "person":{ "name":'Milton' } }, "title":'Paradise Lost', "price":"36" } } HTTP.REQ.BODY(1000).XPATH_JSON(xp%number(/Top/Book/price)%) This will convert the string '36' string to double if it is in the first 1000 bytes of the document.

Parameters(expressions not allowed):

xpathex - XPath Numeric Expression

Returns: double_at

* XPATH_JSON(xpath_str xpathex)

xpath(1.0) expression evaluation. xpath_json operates on JSON file and returns node-set or string. node-sets are converted into corresponding strings using the standard xpath string conversion routine.

Examples: For the JSON file: { "Book":{ "creator":{ "person":{ "name":'Milton' } }, "title":'Paradise Lost' } } HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Top/Book%) This will select "all the nodes enclosed by /Book" in the first 1000 bytes of the body. Since this is a node-set the corresponding string value will be returned which is "MiltonParadise Lost".

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: text_t

* XPATH_WITH_MARKUP(xpath_str xpathex)

xpath(1.0) expression evaluation. xpath operates on XML file and returns a string that contains the entire portion of the document for the result node including markup, such as including the enclosing element tags

Examples: MiltonParadise LostHTTP.REQ.BODY(1000).XPATH_WITH_MARKUP(xp%/Book/creator%) This expression when operated on the above XML file, will select "all the nodes enclosed by /Book/creator" in the first 1000 bytes of the body which is MiltonThe original XML document is not disturbed but the part of the XML body selected by the xpath expression is marked for further processing.

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: text_t

* XPATH(xpath_bool xpathex)

xpath(1.0) expression evaluation. xpath operates on XML file and returns boolean value.

Examples: For the XML file: MiltonParadise LostHTTP.REQ.BODY(1000).XPATH(xp%boolean(//Book/creator)%) This will return true as there is a node called creator under the node Book with in the first 1000 bytes of the document.

Parameters(expressions not allowed):

xpathex - XPath Boolean Expression

Returns: bool_at

* XPATH(xpath_double xpathex)

xpath(1.0) expression evaluation. xpath operates on XML file and returns double value.

Examples: For the XML file: MiltonParadise Lost36HTTP.REQ.BODY(1000).XPATH(xp%number(/Book/price)%) This will convert the string '36' to double if it is in the first 1000 bytes of the document.

Parameters(expressions not allowed):

xpathex - XPath Numeric Expression

Returns: double_at

* XPATH(xpath_str xpathex)

xpath(1.0) expression evaluation. xpath operates on XML file and returns node-set or string. node-sets are converted into corresponding strings using the standard xpath string conversion routine.

Examples: For the XML file: MiltonParadise LostHTTP.REQ.BODY(1000).XPATH(xp%/Book/creator%) This expression will select "all the nodes enclosed by /Book/creator" in the first 1000 bytes of the body. Since this is a node-set its string value is returned which is: "Milton"

Parameters(expressions not allowed):

xpathex - XPath Expression

Returns: text_t