ADC Advanced Policy Expressions

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.

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

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

  • DOMAIN

    Operate as Text on the Domain name part of the hostname. If the hostname is www.foobar.com or www.foobar.com:8080, then domain is foobar.com. This operation will return incorrect results if the hostname has an IP address. This method also sets the text mode to case-insensitive. So all text operations after this method will operate in a case-insensitive manner.

Returns: text_t

*EQ (text_t hostname)

Operates on the text contents of hostname. Results in Boolean TRUE value if the hostname matches the input argument. The comparison will be case-insensitive and if textmode is URLENCODED the hostname will be decoded before comparison. If hostname is www.foobar.com or www.foobar.com., then EQ(www.foobar.com) returns TRUE.

Parameters``:

            hostname- Hostname

Returns: bool_at

*PORT

Operate as Number on the port part of the hostname. The string following and including the first : is considered the port value. Examples:

If the hostname is www.foo.com:8080 then the port is ":8080". If the hostname is www.foo.com: then the port is ":". If the hostname is www.foo.com then the port is "" and points to just after ".com".

When the numerical value in the port is missing then it assumes a default value of 80 or 443 (for HTTPS connections).

Returns: num_t

*SERVER

Operate as Text on the Server name part of the hostname. If the hostname is www.foobar.com or www.foobar.com:8080, then server is www.foobar.com. This method also sets the text mode to case-insensitive. So all text operations after this method will operate in a case-insensitive manner.

Returns: text_t

*TYPECAST_TEXT_T

Convert http_hostname_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

*AFTER_REGEX (re regex)

Selects the text after the portion that matches the given regular expression argument. The first match is returned when multiple matches occur in the text. The match may occur anywhere within the text - if you wish to "anchor" this, use "^" at the start of the regex and/or "$" at the end of the regex. 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". This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            regex- Regular Expression

Returns: text_t

*AFTER_STR_ANY (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: text_t

*AFTER_STR (text_t s)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: text_t

*APPEND (bool_at b)

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

Parameters``:

            b- the boolean value to append.

Returns: text_t

*APPEND (double_at i)

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

Parameters``:

            i- the double value to append.

Returns: text_t

*APPEND (ip_address_at addr)

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

Parameters``:

            addr- the IPv4 address to append.

Returns: text_t

*APPEND (num_at i)

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

Parameters``:

            i- the number value to append.

Returns: text_t

*APPEND (time_local_at t)

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

Parameters``:

            t- the time value to append.

Returns: text_t

*APPEND (time_at t)

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

Parameters``:

            t- the time value to append.

Returns: text_t

*APPEND (unsigned_long_at i)

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_at addr)

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

Parameters``:

            addr- the IPv6 address to append.

Returns: text_t

*APPEND (ipv6_subnet_at addr)

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_at addr)

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

Parameters``:

            addr- the MAC address to append.

Returns: text_t

*APPEND (text_t str)

Appends the given string to the current string.

Parameters``:

            str- the string to append.

Returns: text_t

*APPEND (time_at t)

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. The first match is returned when multiple matches occur in the text. The match may occur anywhere within the text - if you wish to "anchor" this, use "^" at the start of the regex and/or "$" at the end of the regex. 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". This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            regex- Regular Expression

Returns: text_t

*BEFORE_STR_ANY (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: text_t

*BEFORE_STR (text_t s)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: text_t

*BETWEEN (text_t start, text_t end)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            start- Start

            end- End

Returns: bool_at

*BIN_DECODE (binary_encoding_e encoding)

Decode the encoded input into its original byte sequence. An incorrectly enooded input will result in an Undef error.

Parameters (expressions not allowed):

            encoding- specifies how the bytes are encoded.

Returns: text_t

*BIN_ENCODE (binary_encoding_e encoding)

Encode the input byte sequence. Note that BIN_ENCODE(hex_colons) is equivalent to BLOB_TO_HEX().

Parameters (expressions not allowed):

            encoding- specifies how the bytes are to be encoded.

Returns: text_t

*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_t s)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: num_at

*CONTAINS_ANY (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: bool_at

*CONTAINS_INDEX (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: num_at

*CONTAINS (text_t s)

Results in Boolean TRUE value if the Text contains the string given in the argument. The input string cannot be bigger than 255 characters. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: bool_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 ciphertext using the configured encryptionParams.

Returns: text_t

*DECRYPT (binary_encoding_e in_encoding)

Decrypt the selected ciphertext using the configured encryptionParams.

Parameters (expressions not allowed):

            in_encoding- specifies how the input ciphertext is encoded. If the ciphertext is not encoded as specified, causes an Undef error.

Returns: text_t

*DECRYPT (text_t encryptionKey)

Decrypt the selected base64-encoded encrypted bytes using the configured encryption key.

Parameters (expressions not allowed):

            encryptionKey- identifies the encryptionKey object to provide the cipher method, mode, padding, key, encrypted format and optional initialization vector (IV).

Returns: text_t

*DECRYPT (text_t encryptionKey, binary_encoding_e in_encoding)

Decrypt the selected base64-encoded encrypted bytes using the configured encryption key.

Parameters (expressions not allowed):

            encryptionKey- identifies the encryptionKey object to provide the cipher method, mode, padding, key, encrypted format, and optional initialization vector (IV).

            in_encoding- specifies how the input ciphertext is encoded. If the ciphertext is not encoded as specified, causes an Undef error.

Returns: text_t

*DIGEST (digest_method_e method)

Returns a byte sequence computed by applying the the specified message digest method to the selected text.

Parameters (expressions not allowed):

            method- digest method to apply to the input text

Returns: text_t

*ENCRYPT

Encrypt the selected plaintext bytes using the configured encryptionParams. The resulting ciphertext is base64-encoded.

Returns: text_t

*ENCRYPT (binary_encoding_e out_encoding)

Encrypt the selected plaintext bytes using the configured encryptionParams.

Parameters (expressions not allowed):

            out_encoding- specifies how the resulting ciphertext is encoded.

Returns: text_t

*ENCRYPT (text_t encryptionKey)

Encrypt the selected cleartext bytes using the configured encryption key.

Parameters (expressions not allowed):

            encryptionKey- identifies the encryptionKey object to provide the cipher method, mode, padding, key, encrypted format and optional initialization vector (IV).

Returns: text_t

*ENCRYPT (text_t encryptionKey, binary_encoding_e out_encoding)

Encrypt the selected cleartext bytes using the configured encryption key.

Parameters (expressions not allowed):

            encryptionKey- identifies the encryptionKey object to provide the cipher method, mode, padding, key, encrypted format and optional initialization vector (IV).

            out_encoding- specifies how the resulting ciphertext is encoded.

Returns: text_t

*ENDSWITH_ANY (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: bool_at

*ENDSWITH_INDEX (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: num_at

*ENDSWITH (text_t end)

Results in Boolean TRUE value if a suffix of the Text object matches the string argument. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            end- String

Returns: bool_at

*EQUALS_ANY (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: bool_at

*EQUALS_INDEX (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: num_at

*GET_SIGNED16 (uint n, endian_e endianness)

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

Parameters``:

            n- Offset in bytes

            endianness- Select little or big endian

Returns: num_at

*GET_SIGNED32 (uint n, endian_e endianness)

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

Parameters``:

            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_e endianness)

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

Parameters``:

            n- Offset in bytes

            endianness- Select little or big endian

Returns: num_at

*GET_UNSIGNED32 (uint n, endian_e endianness)

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

Parameters``:

            n- Offset in bytes

            endianness- Select little or big endian

Returns: unsigned_long_at

*GET_UNSIGNED64 (uint n, endian_e endianness)

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

Parameters``:

            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

*GET_URLSET_METADATA (text_t urlset_name)

Returns metadata value corresponding to pattern in the urlset. The matching is case-insensitive for domains, but case-sensitive for paths. If no pattern is matched within the urlset, the return value is a NULL string. For example:

  • HTTP.REQ.HOST.APPEND(HTTP.REQ.URL).GET_URLSET_METADATA("urlset_forbidden") returns value when the combined domain and URL is looked up in the urlset whose name is "urlset_forbidden".

Parameters (expressions not allowed):

            urlset_name- urlset name

Returns: text_t

*GE (text_t s)

Results in Boolean TRUE value if the Text object is greater than or equal to the input argument. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: bool_at

*GRPC

Interprets a text_t string as a Protocol Buffer (protocol_buffer_t type). Example: HTTP.REQ.BODY(1000).GRPC.STRING(1).EQ("bookname")

Returns: protocol_buffer_t

*GT (text_t s)

Results in Boolean TRUE value if the Text object is greater than the input argument. This method is affected by whether the text mode is case sensitive or insensitive.

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

*HMAC (text_t hmacKey)

Returns a byte sequence computed by applying the HMAC (Hash Message Authenticastion Code) function to the selected text using the configured HMAC key.

Parameters (expressions not allowed):

            hmacKey- indentifies the hmacKey object to provide the digest (hash) method and the key.

Returns: text_t

*HMAC (text_t hmacKey, binary_encoding_e out_encoding)

Returns a byte sequence computed by applying the HMAC (Hash Message Authenticastion Code) function to the selected text using the configured HMAC key .

Parameters (expressions not allowed):

            hmacKey- indentifies the hmacKey object to provide the digest (hash) method and the key.

            out_encoding- specifies how the resulting HMAC is encoded.

Returns: text_t

*HTML_XML_SAFE

Apply XML safe transform and select text.

Converts '<', '>' and '&' in the input text to '<', '>' and '&' 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: ".html"

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_e format)

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_t string_map_name)

Returns true if the string that it operates on is present in the string map. Text mode 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_e format)

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

*JWT_VERIFY_CERTKEY (text_t certkey_name)

Verifies the signature on the input JSON Web Token (JWT), using the RSA public key in the X.509 certificate in the specified certkey object. The token has the format HEADER.PAYLOAD.SIGNATURE where

  • HEADER is a base64-encoded JSON structure indicating a signature algorithm and token type, e.g.'{"alg":"RS256","typ":"JWT"}'
  • PAYLOAD is a base64-encoded JSON structure with asserted claims, e.g. '{"loggedInAs":"admin","iat":1422779638}'
  • SIGNATURE is the base64-encoded bytes for the signature on HEADER.PAYLOAD.

Returns true if the signature is verified for the header and payload using the specified public key; false if the signature is not verified

Parameters``:

            certkey_name- identifies the certkey object containing an X.509 certificate holding the RSA public key. Results in an Undef error if the certkey object does not exist or does not contain an X.509 certificate with an RSA public key, if the token is not correctly formatted, or if the verification operation cannot complete.

Returns: bool_at

*JWT_VERIFY_XML (text_t xml_pkey)

Verifies the signature on the input JSON Web Token (JWT), using the RSA public key supplied by the specified XML element. The token has the format HEADER.PAYLOAD.SIGNATURE where

  • HEADER is a base64-encoded JSON structure indicating a signature algorithm and token type, e.g.'{"alg":"RS256","typ":"JWT"}'
  • PAYLOAD is a base64-encoded JSON structure with asserted claims, e.g. '{"loggedInAs":"admin","iat":1422779638}'
  • SIGNATURE is the base64-encoded bytes for the signature on HEADER.PAYLOAD.

Returns true if the signature is verified for the header and payload using the specified public key; false if the signature is not verified

Parameters``:

            xml_pkey- an expression that supplies an element with the public key. Results in an Undef error if the XML element is invalid or does not correctly specify an RSA public key, if the token is not correctly formatted, or if the verification operation cannot complete.

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_t s)

Results in Boolean TRUE value if the Text object is less than or equal to the input argument. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: bool_at

*LOCATION_LONG

Get the location qualifier from CLIENT.IP.SRC.LOCATION.GET(n) (ISO short name) and then convert it to human readable long name. This conversion is valid only for country names. Correct Country qualifier value (number) in GET(n) is left up to the user as qualifiers are user configurable. Expression example: CLIENT.IP.SRC.LOCATION.GET(1).LOCATION_LONG For example: Data from each expression CLIENT.IP.SRC.LOCATION: NA.US.California.SantaClara.*.* CLIENT.IP.SRC.LOCATION.GET(1): US CLIENT.IP.SRC.LOCATION.GET(1).LOCATION_LONG: United States

Returns: text_t

*LT (text_t s)

Results in Boolean TRUE value if the Text object is less than the input argument. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: bool_at

*MAP_STRING_DEFAULT_TO_KEY (text_t string_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            string_map_name- identifies the string map.

Returns: text_t

*MAP_STRING (text_t string_map_name)

Returns value corresponding to key in the string map. Key is the string that it is given as input. Text mode 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

*MAX (text_t s)

Compares the string argument with the current string and returns the max string. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: text_t

*MIN (text_t s)

Compares the string argument with the current string and returns the min string. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: text_t

*NE (text_t s)

Results in Boolean TRUE value if the Text object is not equal to the input argument. This method is affected by whether the text mode is case sensitive or insensitive.

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

*PKEY_ENCRYPT_PEM_NO_PADDING (text_t pem_pkey)

Encrypts the input text using the RSA public key provided by the PEM string and RSA_NO_PADDING padding method. The input text to be encrypted cannot be longer than the public key length minus 11 bytes for padding. For example, for a 1024-bit (128 byte) key, the input text cannot be longer than 128 - 11 = 117 bytes. An Undef error will occur if the input text is too long. A null input will also cause an Undef error. Returns the (unencoded binary) encrypted text, which is typically base-64 encoded for use in a message.

Parameters``:

            pem_pkey- a text expression that supplies a RSA public key in the PEM format. If the text value is not a valid PEM RSA PUBLIC KEY encoding, an Undef error will occur. Example (a 1024-bit public key):

     "-----BEGIN RSA PUBLIC KEY-----" +
     "MIGJAoGBAKl5vgQEj73Kxp+9yn1v5gPR1pnc4oLM2a0kaWwBOsB6rzCIy6znwnvw" +
     "CY1xRvQhRlJSAyJbloL7wZFIJ2FOR8Cz+8ZQWXU2syG+udi4EnWqLgFYowF9zK+o" +
     "79az597eNPAjsHZ/C2oL/+6qY5a/f1z8bQPrHC4GpFfAEJhh/+NnAgMBAAE=" +
     "-----END RSA PUBLIC KEY-----"

Returns: text_t

*PKEY_ENCRYPT_PEM (text_t pem_pkey)

Encrypts the input text using the RSA public key provided by the PEM string and the RSA_PKCS1_PADDING padding method. The input text to be encrypted cannot be longer than the public key length minus 11 bytes for padding. For example, for a 1024-bit (128 byte) key, the input text cannot be longer than 128 - 11 = 117 bytes. An Undef error will occur if the input text is too long. A null input will also cause an Undef error. Returns the (unencoded binary) encrypted text, which is typically base-64 encoded for use in a message.

Parameters``:

            pem_pkey- a text expression that supplies a RSA public key in the PEM format. If the text value is not a valid PEM RSA PUBLIC KEY encoding, an Undef error will occur. Example (a 1024-bit public key):

     "-----BEGIN RSA PUBLIC KEY-----" +
     "MIGJAoGBAKl5vgQEj73Kxp+9yn1v5gPR1pnc4oLM2a0kaWwBOsB6rzCIy6znwnvw" +
     "CY1xRvQhRlJSAyJbloL7wZFIJ2FOR8Cz+8ZQWXU2syG+udi4EnWqLgFYowF9zK+o" +
     "79az597eNPAjsHZ/C2oL/+6qY5a/f1z8bQPrHC4GpFfAEJhh/+NnAgMBAAE=" +
     "-----END RSA PUBLIC KEY-----"

Returns: text_t

*PKEY_SIGN_CERTKEY (text_t certkey_name)

Generates a binary digital signature using the SHA-256 message digest function and an RSA private key from the specified SSL certKey object.

Parameters``:

            certkey_name- identifies the configured certKey object. Results in an Undef error if the certkey object does not exist or does not contain an RSA private key, or if the signing operation cannot complete.

Returns: text_t

*PKEY_SIGN_XML (text_t xml_pkey)

Generates a binary digital signature using the SHA-256 message digest function and an RSA private key from the specified XML element.

Parameters``:

            xml_pkey- an expression that supplies an element with the private key. Example: qXm+BASPvcrGn73KfW/mA9HWmdzigszZrSRpbAE6wHqvMIjLrOfCe/AJjXFG9CFGUlIDIluWgvvBkUgnYU5HwLP7xlBZdTazIb652LgSdaouAVijAX3Mr6jv1rPn3t408COwdn8Lagv/7qpjlr9/XPxtA+scLgakV8AQmGH/42c= AQAB

08udZRun1Ts4Fs7ctk8znvr6LEoqIDaAI8GpmE8MXF9OCr0Z3847kNd/loKFgRZSV4KABJPu6T2l8Pr1xma8iQ==

zNjysxcIJV/J9cTpIgPp2/x1IXHT5GTH8OMuNad0qtRSLjU1QYUmmkm9QcJJAN+7h8FEXWGabySUzBrHj/IEbw== QavUDQLLQpnPJXtVAo6CYhxOMCd68mwTxYKKNLjmC0pd54SFHllTLPE1FZU5EjK6q3nCeijonpfH+XXHeZJniQ== EiXOKouJzzXTQJC3TqomF7Uf81yQNxWumOqnd11kepXgyfMwyqMvLlAGEkNSEF/Bz18R3Wv+MIZ/IC3nLBt2xQ== ocuCmz36CP+N2aGqxaU+BKD5+3RLgRq9LFhULEz2jKx0iV9r76jsAxn3sLcTYYO9eqRPy2cz74AUToD6u1Q/nw== fTBD773a3GzcmgVdfZlaBLpN1ux2mf5uUVrTUQf7eVFm9egm4/tzC5A9zjC+I/oscwTH8epL3UfRLdtp05Q6pWfJBXEnGo0QmOFFBK4pLx/5JJpPGZ69ovDFEVOUHyiCfKE/g97T4WX3us0nFe1272zwGlHarM1YYwvfeE08UdE= Results in an Undef error if the XML element is invalid or does not correctly specify an RSA private key, or if the signing operation cannot complete.

Returns: text_t

*PKEY_VERIFY_CERTKEY (text_t certkey_name, text_t signature)

Verifies if the input text matches the specified signature generated using the SHA-256 messge digest function and the RSA private key associated with the specified RSA public key in the X.509 certificate in the specified certKey object. Returns true if the signature is verified, false otherwise.

Parameters``:

            certkey_name- identifies the certkey object containing an X.509 certificate holding the RSA public key.

            signature- the binary signature. Results in an Undef error if the certkey object does not exist or does not contain an X.509 certificate with an RSA public key, or if the verification operation cannot complete.

Returns: bool_at

*PKEY_VERIFY_XML (text_t xml_pkey, text_t signature)

Verifies if the input text matches the specified signature generated using the SHA-256 messge digest function and the RSA private key associated with the RSA public key supplied by the specified XML element. Returns true if the signature is verified, false otherwise.

Parameters``:

            xml_pkey- an expression that supplies an element with the public key. Example: qXm+BASPvcrGn73KfW/mA9HWmdzigszZrSRpbAE6wHqvMIjLrOfCe/AJjXFG9CFGUlIDIluWgvvBkUgnYU5HwLP7xlBZdTazIb652LgSdaouAVijAX3Mr6jv1rPn3t408COwdn8Lagv/7qpjlr9/XPxtA+scLgakV8AQmGH/42c= AQAB

            signature- the binary signature. Results in an Undef error if the XML element is invalid or does not correctly specify an RSA public key, or if the verification operation cannot complete.

Returns: bool_at

*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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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 and only if the text contains at least one match of the regular expression argument. The match may occur anywhere within the text - if you wish to "anchor" this, use "^" at the start of the regex and/or "$" at the end of the regex.

The regular expression has to be of the format: re<delimiter>regular expression<same delimiter>

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#(a*b+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).

This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            regex- Regular Expression

Returns: bool_at

*REGEX_REPLACE (re regex, text_t replacement, replacemode_e mode)

Selects the text that matches the given regular expression argument and replaces it with the the text given in the second argument. The third argument specifies whether the first match is only replaced when multiple matches occur in the text or all matches are replaced. The match may occur anywhere within the text - if you wish to "anchor" this, use "^" at the start of the regex and/or "$" at the end of the regex. When the regular expression does not match the given string then the same string is returned.

For example: HTTP.RES.BODY(999).REGEX_REPLACE(re!\bpassword:\s*\b!, "password: ***", ALL) will replace all occurrences of "password:" with "password: ***" This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            regex- Regular Expression

            replacement- String to replace the match

            mode- Mode of replacement

Returns: text_t

*REGEX_SELECT (re regex)

Selects the text that matches the given regular expression argument. The first match is returned when multiple matches occur in the text. The match may occur anywhere within the text - if you wish to "anchor" this, use "^" at the start of the regex and/or "$" at the end of the regex. 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" This method is affected by whether the text mode is case sensitive or insensitive.

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

*SET_CHAR_SET (charset_e charset)

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

Parameters (expressions not allowed):

            charset- Character Set

Returns: http_hostname_t

*SET_TEXT_MODE (textmode_e mode)

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/.html" will be decoded to "http:/.html" 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.html" and "http%u003a/.html" will both be decoded to"http:/.html" 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/.html" and "http\072/.html" will both be decoded to "http:/.html" 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/.html" will be decoded to "http:/.html" 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.html" and "http%u003a/.html" will both be decoded to"http:/.html" 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: http_hostname_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: bool_at

*STARTSWITH_INDEX (text_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            patset_name- Pattern Set Name

Returns: num_at

*STARTSWITH (text_t start)

Results in Boolean TRUE value if a prefix of the Text object matches the string argument. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            start- String

Returns: bool_at

*STRIP_CHARS (text_t s)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            s- String

Returns: text_t

*STRIP_END_CHARS (text_t s)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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_t s)

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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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_t patset_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. This method is affected by whether the text mode is case sensitive or insensitive.

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_t s)

Select the first Text object that matches the input string argument. The input string cannot be bigger than 255 characters. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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. This method is affected by whether the text mode is case sensitive or insensitive.

Parameters``:

            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(). 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. The name comparison for all list operations is case insensitive. 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_e format)

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_e format, double_at default_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_e format, ip_address_at default_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_e format, num_at default_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_e format, time_local_at default_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_e format, time_at default_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_e format, unsigned_long_at default_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. The name comparison for all list operations is case insensitive.)

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 name comparison for all list operations is case insensitive. 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_t name)

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 [://]?. 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_IP_OPTIONS_T

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

Returns: ip_options_t

*TYPECAST_IP_OPTIONS_TYPE_T

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

Returns: ip_options_type_t

*TYPECAST_IP_TOS_T

Convert text_t to ip_tos_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ip_tos_t : Provides operations to TOS field in IP header.)

Returns: ip_tos_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_e format)

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_e format, num_at default_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_PROTOCOL_BUFFER_T

Convert text_t to protocol_buffer_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (protocol_buffer_t : gRPC Protocol Buffers interface)

Returns: protocol_buffer_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_SERVICEPATH_T

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

Example:

  • To get the name of the service path applicable to current subscriber, use: SUBSCRIBER.SERVICEPATH
  • To determine If the service function is the next in the service path applicable to scubscriber, use: SUBSCRIBER.SERVICEPATH.IS_NEXT().

)

Returns: servicepath_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_t name)

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 [://]?. 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_SSL_TEXT_T (text_t name)

Convert text_t to ssl_text_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ssl_text_t : Treat the underlying text object as SSL Text.)

Parameters (expressions not allowed):

            name- Name

Returns: ssl_text_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_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_LOCAL_AT

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

Returns: time_local_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_e format)

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_e format, ip_address_at default_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_e format, unsigned_long_at default_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_e format, num_at default_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_e format, time_local_at default_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_e format, time_at default_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_URL_CATEGORY_T

Convert text_t to url_category_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (url_category_t : Retrieves URL category and attributes from an URL)

Returns: url_category_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 / This method is affected by whether the text mode is case sensitive or insensitive.

Parameters (expressions not allowed):

            c- Character

Returns: text_t

*URLSET_MATCHES_ANY (text_t urlset_name)

Results in Boolean TRUE value if and only if the Text matches any of the patterns that are specified in the urlset named by the string argument. The matching is case-insensitive for domains, but case-sensitive for paths. For example:

  • HTTP.REQ.HOST.APPEND(HTTP.REQ.URL).URLSET_MATCHES_ANY("urlset_forbidden") returns true when the combined domain and URL matches any pattern in the urlset whose name is "urlset_forbidden".

Parameters (expressions not allowed):

            urlset_name- urlset name

Returns: bool_at

*URL_CATEGORIZE (uint min_reputation, uint max_reputation)

Returns the URL category for the supplied URL with the given minimum and maximum reputation score. Where a score of 5 is most risky and 1 is least risky. If either score is set to 0, that bound would be ignored. By specifying the reputation scores, the function will returned the category with the highest score (most risky) based on the bounds. If there was an error getting the category or if the URL is invalid then it will result in an Undef error. For example: HTTP.REQ.HOST.APPEND(HTTP.REQ.URL).URL_CATEGORIZE(0, 0) returns value when the combined domain and URL is looked up for the URL category with the highest reputation score (most risky).

Parameters (expressions not allowed):

            min_reputation- Minimum reputation score of URL category

            max_reputation- Maximum reputation score of URL category

Returns: url_category_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

*XML_DECRYPT (text_t certKeyName)

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

Parameters (expressions not allowed):

            certKeyName- identifies the certkey object containing the RSA private key to be used to decrypt the bulk encryption key in the selected EncryptedData element.

Returns: text_t

*XML_ENCRYPT (text_t certKeyName, encrypt_method_e method)

Encrypt the selected cleartext using the W3C XML Encryption standard.

Parameters (expressions not allowed):

            certKeyName- identifies the certkey object containing an X.509 certificate with the RSA public key to be used to encrypt the generated bulk encryption key. Note that the certKey object need not, and usually will not, include the associated RSA private key.

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

Returns: text_t

*XML_ENCRYPT (text_t certKeyName, encrypt_method_e method, uint flags)

Encrypt the selected cleartext using the W3C XML Encryption standard.

Parameters (expressions not allowed):

            certKeyName- identifies the certkey object containing an X.509 certificate with the RSA public key to be used to encrypt the generated bulk encryption key. Note that the certKey object need not, and usually will not, include the associated RSA private key.

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

            flags- optional bit mask to specify optional elements in the EncryptedData element. These are hints to tell the receiver what private key to use to decrypt the bulk encryption key, 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%//md/head/title%) returns the

element in the document's This can be used in a rewrite action to replace or delete the <title> element. <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/text_t'>text_t</a></p> <p><code>*XPATH_HTML</code> (<code>xpath_bool</code> xpathex)</p> <p>Applies an XPath expression to the DOM for an HTML document and a boolean value.</p> <p>Examples: HTTP.RES.BODY(1000).XPATH_HTML(xp%boolean(/md/head/meta)%) returns true if the <meta> element exists as a child of </p> element. <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/bool_at'>bool_at</a></p> <p><code>*XPATH_HTML</code> (<code>xpath_double</code> xpathex)</p> <p>Applies an XPath expression to the DOM for an HTML document and a double value.</p> <p>Examples: HTTP.RES.BODY(1000).XPATH_HTML(xp%number(//video/@height)%) returns the numeric value of the height attribute of the first <video> element.</video></p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/double_at'>double_at</a></p> <p><code>*XPATH_HTML</code> (<code>xpath_str</code> xpathex)</p> <p>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.</p> <p>Examples: HTTP.REQ.BODY(1000).XPATH_HTML(xp%//img/@src%) returns the string value of the src attribute of the first <img loading="eager" class="images"> element in the document.</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/text_t'>text_t</a></p> <p><code>*XPATH_JSON_WITH_MARKUP</code> (<code>xpath_str</code> xpathex)</p> <p>xpath(1.0) expression evaluation. XPATH_JSON_WITH_MARKUP operates on a JSON text and returns a string with the entire portion of the text for the result node with JSON markup, including string quotes, keywords, and brackets.</p> <p>JSON data types are interpreted as XML data for the XPath processing:</p> <p>1. A JSON name-value pair "key": "value" is interpreted as <key>value</key>, so the XPath /key selects "key": "value".</p> <p>2. A JSON key can include characters that are not allowed in XML element names (anything other than alphahumerics, '<em>', '.', and '-'). Each disallowed character is encoded as "__uXX</em>", "<strong>uXXXX_", or "</strong>uXXXXXXX_", where XX, XXXX, or XXXXXX is the uppercase hexadecimal-encoded Unicode value for the character. Example: "My+Key": "My+Value" is interpreted as <my__u2b_key>My+Value</my__u2b_key>, so the XPath /My<strong>u2B_Key selects My+Value. so the XPath /My</strong>u2B_Key selects "My+Key": "My+Value".</p> <p>3. A JSON array ["value1","value2",...], is interpreted as <val>value1</val><val>value2</val>... so the XPath /Val[1] selects "value1".</p> <p>Example: Assume the body of an HTTP request contains this JSON text:</p> <pre><code> { "Books": \[ { "author": "Milton, John", "title": "Paradise Lost", "price": 16.99 }, { "author": "Milton, John", "title": "Paradise Regained", "price": 15.00 } \] } </code></pre> <p>This JSON text is interpreted as the following XML:</p> <pre><code> <Books> <Val> <author>Milton, John</author> <title>Paradise Lost</title> <price>16.99</price> </Val> <Val> <author>Milton, John</author> <title>Paradise Regained</title> <price>15.00</price> </Val> </Books> </code></pre> <p>HTTP.REQ.BODY(1000).XPATH_JSON_WITH_MARKUP(xp%/Books/Val[1]%)</p> <p>will return the string</p> <pre><code> { "author": "Milton, John", "title": "Paradise Lost", "price": 16.99 }, </code></pre> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/text_t'>text_t</a></p> <p><code>*XPATH_JSON</code> (<code>xpath_bool</code> xpathex)</p> <p>xpath(1.0) expression evaluation. XPATH_JSON operates on a JSON text and returns a boolean</p> <p>JSON data types are interpreted as XML data for the XPath processing:</p> <p>1. A JSON name-value pair "key": "value" is interpreted as <key>value</key>, so the XPath /key selects value.</p> <p>2. A JSON key can include characters that are not allowed in XML element names (anything other than alphahumerics, '<em>', '.', and '-'). Each disallowed character is encoded as "__uXX</em>", "<strong>uXXXX_", or "</strong>uXXXXXXX_", where XX, XXXX, or XXXXXX is the uppercase hexadecimal-encoded Unicode value for the character. Example: "My+Key": "My+Value" is interpreted as <my__u2b_key>My+Value</my__u2b_key>, so the XPath /My__u2B_Key selects My+Value.</p> <p>3. A JSON array ["value1","value2",...], is interpreted as <val>value1</val><val>value2</val>... so the XPath /Val[1] selects value1.</p> <p>Example: Assume the body of an HTTP request contains this JSON text:</p> <pre><code> { "Books": \[ { "author": "Milton, John", "title": "Paradise Lost", "price": 16.99 }, { "author": "Milton, John", "title": "Paradise Regained", "price": 15.00 } \] } </code></pre> <p>This JSON text is interpreted as the following XML:</p> <pre><code> <Books> <Val> <author>Milton, John</author> <title>Paradise Lost</title> <price>16.99</price> </Val> <Val> <author>Milton, John</author> <title>Paradise Regained</title> <price>15.00</price> </Val> </Books> </code></pre> <p>HTTP.REQ.BODY(1000).XPATH_JSON(xp%boolean(/Books/Val[2])%)</p> <p>will return true since there are at least two elements in the array value for the Books key.</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Boolean Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/bool_at'>bool_at</a></p> <p><code>*XPATH_JSON</code> (<code>xpath_double</code> xpathex)</p> <p>xpath(1.0) expression evaluation. XPATH_JSON operates on a JSON text and returns a double value.</p> <p>JSON data types are interpreted as XML data for the XPath processing:</p> <p>1. A JSON name-value pair "key": "value" is interpreted as <key>value</key>, so the XPath /key selects value.</p> <p>2. A JSON key can include characters that are not allowed in XML element names (anything other than alphahumerics, '<em>', '.', and '-'). Each disallowed character is encoded as "__uXX</em>", "<strong>uXXXX_", or "</strong>uXXXXXXX_", where XX, XXXX, or XXXXXX is the uppercase hexadecimal-encoded Unicode value for the character. Example: "My+Key": "My+Value" is interpreted as <my__u2b_key>My+Value</my__u2b_key>, so the XPath /My__u2B_Key selects My+Value.</p> <p>3. A JSON array ["value1","value2",...], is interpreted as <val>value1</val><val>value2</val>... so the XPath /Val[1] selects value1.</p> <p>Example: Assume the body of an HTTP request contains this JSON text:</p> <pre><code> { "Books": \[ { "author": "Milton, John", "title": "Paradise Lost", "price": 16.99 }, { "author": "Milton, John", "title": "Paradise Regained", "price": 15.00 } \] } </code></pre> <p>This JSON text is interpreted as the following XML:</p> <pre><code> <Books> <Val> <author>Milton, John</author> <title>Paradise Lost</title> <price>16.99</price> </Val> <Val> <author>Milton, John</author> <title>Paradise Regained</title> <price>15.00</price> </Val> </Books> </code></pre> <p>HTTP.REQ.BODY(1000).XPATH_JSON(xp%number(/Books/Val[1]/price)%)</p> <p>will return the value 16.99.</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/double_at'>double_at</a></p> <p><code>*XPATH_JSON</code> (<code>xpath_str</code> xpathex)</p> <p>xpath(1.0) expression evaluation. XPATH_JSON operates on a JSON text and returns a string or an XPath node-set converted to a string, with the text values of the nodes concatenated together.</p> <p>JSON data types are interpreted as XML data for the XPath processing:</p> <p>1. A JSON name-value pair "key": "value" is interpreted as <key>value</key>, so the XPath /key selects value.</p> <p>2. A JSON key can include characters that are not allowed in XML element names (anything other than alphahumerics, '<em>', '.', and '-'). Each disallowed character is encoded as "__uXX</em>", "<strong>uXXXX_", or "</strong>uXXXXXXX_", where XX, XXXX, or XXXXXX is the uppercase hexadecimal-encoded Unicode value for the character. Example: "My+Key": "My+Value" is interpreted as <my__u2b_key>My+Value</my__u2b_key>, so the XPath /My__u2B_Key selects My+Value.</p> <p>3. A JSON array ["value1","value2",...], is interpreted as <val>value1</val><val>value2</val>... so the XPath /Val[1] selects value1.</p> <p>Example: Assume the body of an HTTP request contains this JSON text:</p> <pre><code> { "Books": \[ { "author": "Milton, John", "title": "Paradise Lost", "price": 16.99 }, { "author": "Milton, John", "title": "Paradise Regained", "price": 15.00 } \] } </code></pre> <p>This JSON text is interpreted as the following XML:</p> <pre><code> <Books> <Val> <author>Milton, John</author> <title>Paradise Lost</title> <price>16.99</price> </Val> <Val> <author>Milton, John</author> <title>Paradise Regained</title> <price>15.00</price> </Val> </Books> </code></pre> <p>HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Books/Val[1]%)</p> <p>will select all the nodes enclosed by /Books/Val[1]. Since this is a node-set the corresponding string value returned is "Milton, JohnParadise Lost16.99".</p> <p>HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Books/Val[1]/author%)</p> <p>will select the text node enclosed by /Boosk/Val[1]/author, which is "Milton, John".</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/text_t'>text_t</a></p> <p><code>*XPATH_WITH_MARKUP</code> (<code>xpath_str</code> xpathex)</p> <p>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</p> <p>Examples: Milton Paradise Lost HTTP.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 Milton The original XML document is not disturbed but the part of the XML body selected by the xpath expression is marked for further processing.</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/text_t'>text_t</a></p> <p><code>*XPATH</code> (<code>xpath_bool</code> xpathex)</p> <p>xpath(1.0) expression evaluation. xpath operates on XML file and returns boolean value.</p> <p>Examples: For the XML file: Milton Paradise Lost HTTP.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.</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Boolean Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/bool_at'>bool_at</a></p> <p><code>*XPATH</code> (<code>xpath_double</code> xpathex)</p> <p>xpath(1.0) expression evaluation. xpath operates on XML file and returns double value.</p> <p>Examples: For the XML file: Milton Paradise Lost 36 HTTP.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.</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Numeric Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/double_at'>double_at</a></p> <p><code>*XPATH</code> (<code>xpath_str</code> xpathex)</p> <p>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.</p> <p>Examples: For the XML file: Milton Paradise Lost HTTP.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"</p> <p><code>Parameters</code> (expressions not allowed)<code>:</code></p> <p>            xpathex- XPath Expression</p> <p><code>Returns:</code> <a href='/en-us/adc-advanced-policy-expression-reference/current-release/text_t'>text_t</a></p>
HTTP_HOSTNAME_T