ADC Advanced Policy Expressions

HTTP_HEADER_T

The HTTP.REQ.HEADER("header name") or HTTP.RES.HEADER("header name")

object represents the multiple lines of a particular HTTP header

type. This object is also a Text object. Direct Text operations

on this object will mostly operate only on the value in the last header

line of this type. Some Text operations like CONTAINS have been

overridden to operate on values in all the header lines of this

type.

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

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

AFTER_REGEX(re regex)

The AFTER_REGEX operator in this object overrides the Text

AFTER_REGEX operator to operate on all the instances of the current

header type. Selects the Text after the text that matches the input

regular expression in any instance of the header value. The order in

which the header instances will be matched is from the last to the

first.

For example:

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

Parameters(expressions not allowed):

regex -

                        Regular Expression

Returns: text_t

* AFTER_STR_ANY(text_tpatset_name)

Selects the Text that is present after the first occurrence

of any of the strings that are bound to the patset named by

the string argument. If there is no match to any of the strings

bound to the patset in the current Text object then the result

Text object has 0 length.

The patset cannot have strings longer than 255 characters.

Parameters(expressions not allowed):

patset_name -

                        Pattern Set Name

Returns: text_t

AFTER_STR(text_ts)

The AFTER_STR operator in this object overrides the Text AFTER_STR

operator to operate on all the instances of the current header type.

Selects Text after the first occurrence of the input string

argument. The order in which the instances of the header are matched

is from the last instance to the first.

HTTP/1.1 200 OK\r\n MyHdr: 111abc\r\n Content-Length: 200\r\n MyHdr: 111def\r\n \r\n

Examples: HTTP.RES.HEADER("MyHdr").AFTER_STR("111") selects "def" in the

last instance of MyHdr, the one with value "111def". HTTP.RES.HEADER("MyHdr").AFTER_STR("1ab") selects "c" in the first

instance of MyHdr, the one with value "abc111".

Parameters(expressions not allowed):

s -

                        String

Returns: text_t

* APPEND(bool_atb)

Appends the given boolean's string representation to the

current string.

Parameters:

b -

                        the boolean value to append.

Returns: text_t

* APPEND(double_ati)

Appends the given double's string representation to the current

string.

Parameters:

i -

                        the double value to append.

Returns: text_t

* APPEND(ip_address_ataddr)

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

Parameters:

addr -

                        the IPv4 address to append.

Returns: text_t

* APPEND(num_ati)

Appends the given number's string representation to the current

string.

Parameters:

i -

                        the number value to append.

Returns: text_t

* APPEND(time_att)

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

Parameters:

t -

                        the time value to append.

Returns: text_t

* APPEND(unsigned_long_ati)

Appends the given unsigned long's string representation to the

current string.

Parameters:

i -

                        the unsigned long value to append.

Returns: text_t

* APPEND(ipv6_address_ataddr)

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

Parameters:

addr -

                        the IPv6 address to append.

Returns: text_t

* APPEND(ipv6_subnet_ataddr)

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

Parameters:

addr -

                        the IPv6 subnet to append.

Returns: text_t

* APPEND(mac_address_ataddr)

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

Parameters:

addr -

                        the MAC address to append.

Returns: text_t

* APPEND(text_tstr)

Appends the given string to the current string.

Parameters:

str -

                        the string to append.

Returns: text_t

* APPEND(time_att)

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

Parameters:

t -

                        the time value to append.

Returns: text_t

* B64DECODE

Decodes the selected text using base64 decoding.

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

Returns: text_t

* B64ENCODE

Encodes the selected text using base64 encoding.

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

Returns: text_t

BEFORE_REGEX(re regex)

The BEFORE_REGEX operator in this object overrides the Text

BEFORE_REGEX operator to operate on all the instances of the current

header type. Selects the Text before the text that matches the input

regular expression in any instance of the header value. The order in

which the header instances will be matched is from the last to the

first.

For example:

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

Parameters(expressions not allowed):

regex -

                        Regular Expression

Returns: text_t

* BEFORE_STR_ANY(text_tpatset_name)

Selects the Text that is present before the first occurrence

of any of the strings that are bound to the patset or

datasetnamed by the string argument.

If there is no match to any of the strings

bound to the patset in the current Text object then the result

Text object has 0 length.

The patset cannot have strings longer than 255 characters.

Parameters(expressions not allowed):

patset_name -

                        Pattern Set Name

Returns: text_t

BEFORE_STR(text_ts)

The BEFORE_STR operator in this object overrides the Text BEFORE_STR

operator to operate on all the instances of the current header type.

Selects Text before the first occurrence of the input string

argument. The order in which the instances of the header are matched

is from the last instance to the first.

HTTP/1.1 200 OK\r\n MyHdr: abc111\r\n Content-Length: 200\r\n MyHdr: def111\r\n \r\n

Examples: HTTP.RES.HEADER("MyHdr").BEFORE_STR("111") selects "def" in the

last instance of MyHdr, the one with value "def111". HTTP.RES.HEADER("MyHdr").BEFORE_STR("bc1") selects "a" in the first

instance of MyHdr, the one with value "abc111".

Parameters(expressions not allowed):

s -

                        String

Returns: text_t

* BETWEEN(text_tstart, text_tend)

Results in Boolean TRUE value if length of the Text object

is greater than or equal to the sum of the Start and End argument

lengths and if the prefix of the Text object

matches the Start string argument and if the Suffix of the Text

object matches the End string argument.

Parameters:

start -

                        Start

end -

                        End

Returns: bool_at

* BIN_DECODE(binary_encoding_eencoding)

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_eencoding)

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_ts)

Results in a Number Value which is the result of comparison of

the input argument with the Text object. The result is

greater than 0 if the Text object is lexicographically

greater than the argument. The result is 0 if the Text

object and the argument match. The result is less than 0 if

the Text object is lexicographically lesser than the argument.

Parameters:

s -

                        String

Returns: num_at

CONTAINS_ANY(text_tpatclass_name)

The CONTAINS_ANY in this object overrides the Text CONTAINS_ANY

operator to operate on all the instances of the current

header type. Returns Boolean TRUE if any of the patterns associated

with input patclass is present in any instance of the header value.

Parameters(expressions not allowed):

patclass_name -

                        Patclass Name

Returns: bool_at

CONTAINS_INDEX(text_tpatclass_name)

The CONTAINS_INDEX in this object overrides the Text CONTAINS_INDEX

operator to operate on all the instances of the current

header type. Returns the index of the matching pattern associated

with input patclass that is present in any instance of the header value.

Parameters(expressions not allowed):

patclass_name -

                        Patclass Name

Returns: num_at

CONTAINS(text_ts)

The CONTAINS in this object overrides the Text CONTAINS

operator to operate on all the instances of the current

header type. Returns Boolean TRUE if the input Pattern

String is present in any instance of the header value.

GET / HTTP/1.1\r\n Host: abc.com\r\n MyHdr: abc\r\n Content-Length: 200\r\n MyHdr: def\r\n

HTTP/1.1 200 OK\r\n MyHdr: abc\r\n Content-Length: 200\r\n MyHdr: def\r\n \r\n

Examples: HTTP.RES.HEADER("MyHdr").CONTAINS("de") is TRUE. HTTP.RES.HEADER("MyHdr").CONTAINS("bcd") is

FALSE. HTTP.REQ.HEADER("MyHdr").CONTAINS("de") is

TRUE. HTTP.REQ.HEADER("MyHdr").CONTAINS("bcd") is FALSE. The

system does not concatenate the different values.

Parameters(expressions not allowed):

s -

                        Pattern String

Returns: bool_at

COUNT

An HTTP header can have multiple occurrences. COUNT will

return a Number containing how many headers of the current type

exist.

HTTP/1.1 200 OK\r\n MyHdr: abc\r\n Content-Length: 200\r\n MyHdr: def\r\n \r\n

For example: HTTP.RES.HEADER("MyHdr").COUNT will return Number 2. 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: num_at

* CRC32

Returns a 32-bit integer computed by applying a

CRC (cyclic redundancy check) function to the selected

text. This is the CRC function used by Ethernet,

MPEG-2, PKZIP, GZIP, PNG, and many other applications.

For example, the expression to compute the CRC value

of the (first 1000 bytes of the) body of an HTTP request is:

HTTP.REQ.BODY(1000).CRC32

Returns: num_at

* DECODE_USING_TEXT_MODE

Decodes the selected text using the currently configured

text encoding methods like URLENCODED, BACKSLASH_ENCODED,

PLUS_AS_SPACE, NOURLENCODED, NO_BACKSLASH_ENCODED and

NO_PLUS_AS_SPACE. Text encoding methods are set

using SET_TEXT_MODE method.

Returns: text_t

* DECRYPT

Decrypt the selected base64-encoded ciphertext using the

configured encryptionParams.

Returns: text_t

* DECRYPT(binary_encoding_ein_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_tencryptionKey)

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_tencryptionKey, binary_encoding_ein_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_emethod)

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_eout_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_tencryptionKey)

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_tencryptionKey, binary_encoding_eout_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_tpatset_name)

Results in Boolean TRUE value if the Text ends with any of

the strings that are bound to the patset or dataset named by the

string argument.

Parameters(expressions not allowed):

patset_name -

                        Pattern Set Name

Returns: bool_at

* ENDSWITH_INDEX(text_tpatset_name)

Returns the numerical index of the matching string, if the Text

ends with any of the strings that are bound to the patset or dataset

named by the string argument. Returns 0 if there is no match.

Parameters(expressions not allowed):

patset_name -

                        Pattern Set Name

Returns: num_at

* ENDSWITH(text_tend)

Results in Boolean TRUE value if a suffix of the Text

object matches the string argument.

Parameters:

end -

                        String

Returns: bool_at

EQUALS_ANY(text_tpatset_name)

The EQUALS_ANY in this object overrides the Text EQUALS_ANY

operator to operate on all the instances of the current

header type. Returns Boolean TRUE if any of the patterns associated

with input patset is equal to any instance of the header value.

Parameters(expressions not allowed):

patset_name -

                        Patset Name

Returns: bool_at

EQUALS_INDEX(text_tpatset_name)

The EQUALS_INDEX in this object overrides the Text EQUALS_INDEX

operator to operate on all the instances of the current

header type. Returns the index of the matching pattern associated

with input patset is equal to any instance of the header value.

Parameters(expressions not allowed):

patset_name -

                        Patset Name

Returns: num_at

* EQ(text_ts)

Results in Boolean TRUE value if the Text object matches the

input argument.

Parameters:

s -

                        String

Returns: bool_at

EXISTS

Returns TRUE if an instance of the current header type

exists.

Returns: bool_at

* GET_SIGNED16(uint n, endian_eendianness)

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_eendianness)

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_eendianness)

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_eendianness)

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_eendianness)

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_turlset_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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>GE</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>Results in Boolean TRUE value if the Text object is greater than or
    

    equal to the input argument.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>GT</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>Results in Boolean TRUE value if the Text object is greater than the
    

    input argument.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>HASH</b></p><div><p>Returns a positive 31 bit integer value computed
    

    by applying a proprietary Citrix ADC 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_thmacKey)

    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_thmacKey, binary_encoding_eout_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.</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>HTML_XML_SAFE</b></p><div><p>Apply XML safe transform and select text.
    





    Converts '<', '>' and ';'

    in the input text to ';lt;', ';gt;' and ';amp;'

    respectively; other characters in the input are not modified.

    This transform safeguards against XSS based attacks.

    This is a read only operation.

    Returns: text_t

    * HTTP_HEADER_SAFE

    Apply Header safe transform and select text. Converts all new line

    ('\n') characters present in the input text to '%0A' so that they can

    safely be used in HTTP headers. This transform safeguards against

    response-splitting attacks. This is a read only operation.

    Returns: text_t

    * HTTP_URL_SAFE

    Apply URL safe transform and select text. Converts URL unsafe

    characters to corresponding '%xx' values and retains the rest.

    This is a read only operation.

    Based on RFC2396, following are considered URL safe characters:
    
    
    Alpha-numeric characters: a-z, A-Z, 0-9
    
    Hyphen and underscore: "-", "_"
    
    Dot: "."
    
    Exclamation mark: "!"
    
    Tilde: "~"
    
    Asterix: "*"
    
    Single quote: "'"
    
    Open and close parentheses: "(", ")"
    
    Semi-colon: ";"
    
    Colon: ":"
    
    At symbol: "@"
    
    Question mark: "?"
    
    Equals: "="
    
    Dollar: "$"
    
    Percent: "%"
    
    Ampersand: ";"
    
    Plus: "+"
    
    Comma: ","
    
    Forward slash: "/"
    

    The rest are converted to %XX encoding, 'XX' is the hex-based

    representation of the input character.

    If the requirement is to encode all but URL unreserved

    characters, please consider using URL_RESERVED_CHARS_SAFE

    method.

    Returns: text_t

    INSTANCE(uint lineno)

    An HTTP header can have multiple occurrences. INSTANCE(0) will

    select the last header line of the current type, INSTANCE(1) will

    select the last but one header line and so on. The counting goes

    backward. Only the last 15 instances of a header are accessible.

    Therefore Instance Number cannot be greater than 14.





    HTTP/1.1 200 OK\r\n

    MyHdr: abc\r\n

    Content-Length: 200\r\n

    MyHdr: def\r\n

    \r\n



    For example: HTTP.RES.HEADER("MyHdr").INSTANCE(1) will return a Text

    object referring to "MyHdr: abc\r\n".

    It can not be used in bi-directional policies.

    Parameters(expressions not allowed):

    lineno -

                            Instance Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>IS_BOOL_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of boolean type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_DOUBLE_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of double data type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_IPV6_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of IPv6 data type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_IPV6_SUBNET_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of IPv6 subnet data type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_IP_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of IPv4 data type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_MAC_ADDRESS_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of mac address data type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_NUM_AT</b></p><div><p>Results in Boolean TRUE value if the Text is of number type.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_NUM_AT</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_format_e/num_format_e.html">num_format_e</a>format)</p><div><p>Results in Boolean TRUE value if the Text is of number type
    

    with given input base.

    Parameters(expressions not allowed):

    format -

                            number format</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_STRINGMAP_KEY</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>string_map_name)</p><div><p>Returns true if the string that it operates on is
    

    present in the string map.

    IGNORECASE, NOIGNORECASE - controls whether key

    lookup in string map is case sensitive or not.

    For example:

    • HTTP.REQ.URL.IS_STRINGMAP_KEY("url_stringmap") returns

      true if value of HTTP.REQ.URL is present as key in the

      string map whose name is "url_stringmap".

    • HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE).

      IS_STRINGMAP_KEY("url_stringmap")

      returns true if value of HTTP.REQ.URL is present as key in

      the string map whose name is "url_stringmap".

      Key lookup in this case is done case-insensitively.

    Parameters(expressions not allowed):

    string_map_name -

                            identifies the string map.</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>IS_TIME_AT</b></p><div><p>Results in Boolean TRUE if the Text follows any of the
    

    standard time formats given below, otherwise false.

    Tue, 05 Nov 1994 08:12:31 GMT RFC822

    Tuesday, 05-Nov-94 08:12:31 GMT RFC850

    Tue Nov 4 08:12:31 1994 asctime

    Returns: bool_at

    IS_UNSIGNED_LONG_AT

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

    Returns: bool_at

    IS_UNSIGNED_LONG_AT(num_format_eformat)

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

    with given input base.

    Parameters(expressions not allowed):

    format -

                            number format</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>JWT_VERIFY_CERTKEY</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>certkey_name)</p><div><p>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_txml_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 &lt;RSAKeyValue&gt; 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_ts)

    Results in Boolean TRUE value if the Text object is less than or

    equal to the input argument.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>LOCATION_LONG</b></p><div><p>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_ts)

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

    input argument.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>MAP_STRING_DEFAULT_TO_KEY</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>string_map_name)</p><div><p>Returns the value corresponding to the key in the
    

    string map. This is similar to the MAP_STRING method, but if

    the key is not present then instead of returning a null

    string, it returns the key itself.

    Parameters(expressions not allowed):

    string_map_name -

                            identifies the string map.</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>MAP_STRING</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>string_map_name)</p><div><p>Returns value corresponding to key in the string map.
    

    Key is the string that it is given as input.

    IGNORECASE, NOIGNORECASE - controls whether key

    lookup in string map is case sensitive or not.

    For example:

    • HTTP.REQ.URL.MAP_STRING("url_stringmap") returns value

      when the value of HTTP.REQ.URL is used as key in the

      string map whose name is "url_stringmap".

    • HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE).

      MAP_STRING("url_stringmap") returns value

      when the value of HTTP.REQ.URL is used as key in the

      string map whose name is "url_stringmap".

      Key lookup in this case is done case-insensitively.

    Parameters(expressions not allowed):

    string_map_name -

                            identifies the string map.</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>MARK_SAFE</b></p><div><p>Mark the PIXL expression safe without applying any safe transform.</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>MAX</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>Compares the string argument with the current string and
    

    returns the max string.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>MIN</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>Compares the string argument with the current string and
    

    returns the min string.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>NE</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>Results in Boolean TRUE value if the Text object is not equal to the
    

    input argument.

    Parameters:

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>NORMALIZE_URL</b></p><div><p>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_tpem_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_tpem_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_tcertkey_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_txml_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 &lt;RSAKeyValue&gt; element with
    

    the private key. Example:

    <RSAKeyValue>

    <Modulus>qXm+BASPvcrGn73KfW/mA9HWmdzigszZrSRpbAE6wHqvMIjLrOfCe/AJjXFG9CFGUlIDIluWgvvBkUgnYU5HwLP7xlBZdTazIb652LgSdaouAVijAX3Mr6jv1rPn3t408COwdn8Lagv/7qpjlr9/XPxtA+scLgakV8AQmGH/42c=</Modulus>

    <Exponent>AQAB</Exponent>

    <P>08udZRun1Ts4Fs7ctk8znvr6LEoqIDaAI8GpmE8MXF9OCr0Z3847kNd/loKFgRZSV4KABJPu6T2l8Pr1xma8iQ==</P>

    <Q>zNjysxcIJV/J9cTpIgPp2/x1IXHT5GTH8OMuNad0qtRSLjU1QYUmmkm9QcJJAN+7h8FEXWGabySUzBrHj/IEbw==</Q>

    <DP>QavUDQLLQpnPJXtVAo6CYhxOMCd68mwTxYKKNLjmC0pd54SFHllTLPE1FZU5EjK6q3nCeijonpfH+XXHeZJniQ==</DP>

    <DQ>EiXOKouJzzXTQJC3TqomF7Uf81yQNxWumOqnd11kepXgyfMwyqMvLlAGEkNSEF/Bz18R3Wv+MIZ/IC3nLBt2xQ==</DQ>

    <InverseQ>ocuCmz36CP+N2aGqxaU+BKD5+3RLgRq9LFhULEz2jKx0iV9r76jsAxn3sLcTYYO9eqRPy2cz74AUToD6u1Q/nw==</InverseQ>

    <D>fTBD773a3GzcmgVdfZlaBLpN1ux2mf5uUVrTUQf7eVFm9egm4/tzC5A9zjC+I/oscwTH8epL3UfRLdtp05Q6pWfJBXEnGo0QmOFFBK4pLx/5JJpPGZ69ovDFEVOUHyiCfKE/g97T4WX3us0nFe1272zwGlHarM1YYwvfeE08UdE=</D>

    </RSAKeyValue>

    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_tcertkey_name, text_tsignature)

    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_txml_pkey, text_tsignature)

    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 &lt;RSAKeyVAlue&gt; element with
    

    the public key. Example:

    <RSAKeyValue>

    <Modulus>qXm+BASPvcrGn73KfW/mA9HWmdzigszZrSRpbAE6wHqvMIjLrOfCe/AJjXFG9CFGUlIDIluWgvvBkUgnYU5HwLP7xlBZdTazIb652LgSdaouAVijAX3Mr6jv1rPn3t408COwdn8Lagv/7qpjlr9/XPxtA+scLgakV8AQmGH/42c=</Modulus>

    <Exponent>AQAB</Exponent>

    </RSAKeyValue>

    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.

    Parameters:

    c -

                            Character</p><p>i -
    
                            Count</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>PREFIX</b>(uint i)</p><div><p>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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>REGEX_MATCH</b>(re regex)</p><div><p>The REGEX_MATCH operator in this object overrides the Text
    

    REGEX_MATCH operator to operate on all the instances of the current

    header type. Returns Boolean TRUE if the input regular expression

    matches any instance of the header value. The order in which the

    header instances will be matched is from the last to the first.





    The regular expression has to be of the format:

     <code>re&lt;delimiter&gt;regular expression&lt;same delimiter&gt;
    
     </code><br /><br /><br /><br />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 to not 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}/)
    <li></li>HTTP.REQ.URL.SET_TEXT_MODE(URLENCODED).REGEX_MATCH(re#(a*b+c*)#)
    
    <li></li>HTTP.REQ.URL.REGEX_MATCH(re/a(?i)b/) matches ab and aB
    
    <li></li>HTTP.REQ.URL.SET_TEXT_MODE(IGNORECASE).REGEX_MATCH(re/ab/) matches
    
        ab, aB, Ab and AB
    
    <li></li>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).
    
     </ul></p><p><b>Parameters</b>(expressions not allowed):</p><div><p>regex -
    
                            Regular Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>REGEX_SELECT</b>(re regex)</p><div><p>The REGEX_SELECT operator in this object overrides the Text
    

    REGEX_SELECT operator to operate on all the instances of the current

    header type. Selects the Text that matches the input regular

    expression in any instance of the header value. The order in which

    the header instances will be matched is from the last to the first.





    For example:

     HTTP.REQ.HEADER("via").REGEX_SELECT(re!NS-CACHE-\d\.\d:\s*\d{1,3}!) will select "NS-CACHE-7.0:  70"</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>regex -
    
                            Regular Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>REPEAT</b>(uint i)</p><div><p>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)</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>SET_CHAR_SET</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/charset_e/charset_e.html">charset_e</a>charset)</p><div><p>Set the character set to use for subsequent functions that
    

    use text.

    Parameters(expressions not allowed):

    charset -

                            Character Set</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/http_header_t/http_header_t.html">http_header_t</a></p></div></div></div><div><div><p><b>* </b><b>SET_TEXT_MODE</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/textmode_e/textmode_e.html">textmode_e</a>mode)</p><div><p>The mode setting of a Text object controls the behavior of
    

    many Text operations. The Text mode settings may also

    control the behavior of some operations in objects (like

    List) that build upon the Text object.

    IGNORECASE, NOIGNORECASE - controls whether string

    comparison is case sensitive or not.

    URLENCODED - If set then all Text operations are

    carried out after translating all %HH or %uHHHH encodings in the

    underlying byte stream.

    1. %HH will be translated to the character Y where HH denotes the

      ascii value of character Y in hexadecimal.

      For example, the encoded text "http%3a//" will be decoded to

      "http://"

    2. %uWWHH will be translated to the character sequence YZ where

      WW denotes the ascii value of character Y in hexadecimal and HH

      denotes the ascii value of character Z in hexadecimal.

      For example, the encoded text "http%u3a2f/" and "http%u003a//"

      will both be decoded to"http://"

    NOURLENCODED - Indicates that no percent encodings are present in

    the Text object. No percent decoding will be performed on the Text

    object.

    PLUS_AS_SPACE - If set then all Text operations are carried out

    after converting occurrences of the plus character to whitespace.

    For example, the text "hello+world" will be decoded to "hello world"

    NO_PLUS_AS_SPACE - If set, then the plus character will not be

    converted to whitespace in the Text object.

    BACKSLASH_ENCODED - If set, then all Text operations are carried

    out after performing the following operations:

    1. \XXX will be translated to the character Y where XXX denotes the

      ascii value of character Y in octal. The valid range of octal

      values for this type of encoding is \0 to \377.

      For example, the encoded text "http\72//" and "http\072//" will

      both be decoded to "http://"

    2. \xHH will be translated to the character Y where HH denotes the

      ascii value of character Y in hexadecimal.

      For example, the encoded text "http\x3a//" will be decoded to

      "http://"

    3. \uWWXX will be translated to the character sequence YZ where WW

      denotes the ascii value of character Y in hexadecimal and XX

      denotes the ascii value of character Z in hexadecimal.

      For example, the encoded text "http%u3a2f/" and "http%u003a//"

      will both be decoded to"http://"

    4. Occurences of "\b", "\n", "\t", "\f" and "\r" are translated to

      the corresponding ascii characters.

    NO_BACKSLASH_ENCODED - If set, then backslash decoding will not be

    performed on the Text object.

    BAD_ENCODE_RAISE_UNDEF - If set, then UNDEF is raised if either the

    URLENCODED or BACKSLASH_ENCODED mode is set and a bad encoding

    corresponding to the specified encoding mode is encountered.

    NO_BAD_ENCODE_RAISE_UNDEF - If set, then UNDEF will not be raised

    when a bad encoding is encountered in the Text object.

    The Text operations operate on characters (as opposed to operating

    on bytes). By default a single byte represents a character

    using the ASCII encoding. But if URLENCODED mode is set then

    3 bytes may represent a character. A PREFIX(3) operation

    will select the first 3 characters in the Text object. That

    means it may select up to 9 bytes for URLENCODED Text

    object.

    In the case of multibyte decodings as a result of %uXXXX or \uXXXX,

    Text operations which attempt to treat the multiple decoded bytes as

    distinct characters are not allowed.

    Parameters(expressions not allowed):

    mode -

                            Text Mode</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/http_header_t/http_header_t.html">http_header_t</a></p></div></div></div><div><div><p><b>* </b><b>SKIP</b>(char c, uint i)</p><div><p>Select the Text after skipping over a prefix of the current Text.
    

    The skipped over prefix is the longest prefix that has at most

    Count (2nd argument) occurrences of character in the 1st argument.

    Parameters:

    c -

                            Character</p><p>i -
    
                            Count</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>SKIP</b>(uint i)</p><div><p>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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>STARTSWITH_ANY</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>patset_name)</p><div><p>Results in Boolean TRUE value if the Text starts with any of
    

    the strings that are bound to the patset or dataset named by the

    string argument.

    Parameters(expressions not allowed):

    patset_name -

                            Pattern Set Name</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>STARTSWITH_INDEX</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>patset_name)</p><div><p>Returns the numerical index of the matching string, if the Text
    

    starts with any of the strings that are bound to the patset

    or dataset named by the string argument. Returns 0 if there

    is no match.

    Parameters(expressions not allowed):

    patset_name -

                            Pattern Set Name</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_at/num_at.html">num_at</a></p></div></div></div><div><div><p><b>* </b><b>STARTSWITH</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>start)</p><div><p>Results in Boolean TRUE value if a prefix of the  Text
    

    object matches the string argument.

    Parameters:

    start -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>STRIP_CHARS</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>From the selected text remove the characters specified
    

    in the string.





    For example: Say the selected text is / "foo.xyz=bar" /.

    Then on executing STRIP_CHARS('.=') or STRIP_CHARS('..=') the

    selected text will become /fooxyzbar /. Note that repeating

    character has same effect as it would be if it present only

    once.

    Parameters(expressions not allowed):

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>STRIP_END_CHARS</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>Selects the Text after stripping off characters in the
    

    end of the current Text object.





    For example: Say the selected text is / "foo.xyz=bar" /.

    Then on executing STRIP_END_CHARS('ar') the

    selected text will become /foo.xyz=b /. Note that repeating

    character has same effect as it would be if it present only

    once.

    Parameters(expressions not allowed):

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>STRIP_END_WS</b></p><div><p>Selects the Text after stripping off white space in the
    

    end of the current Text object.

    Returns: text_t

    * STRIP_START_CHARS(text_ts)

    Selects the Text after stripping off characters in the

    beginning of the current Text object.





    For example: Say the selected text is / "foo.xyz=bar" /.

    Then on executing STRIP_START_CHARS('of') the

    selected text will become /.xyz=bar /. Note that repeating

    character has same effect as it would be if it present only

    once.

    Parameters(expressions not allowed):

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>STRIP_START_WS</b></p><div><p>Selects the Text after stripping off white space in the
    

    beginning of the current Text object.

    Returns: text_t

    * SUBSTR_ANY(text_tpatset_name)

    Select any one sub-string that matches any string

    in the given patset or dataset.

    The patset cannot have strings longer than 255 characters.

    Parameters(expressions not allowed):

    patset_name -

                            Pattern Set Name</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>SUBSTR</b>(uint start, uint len)</p><div><p>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</p><p>len -
    
                            Length</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>SUBSTR</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>s)</p><div><p>The SUBSTR operator in this object overrides the Text SUBSTR
    

    operator to operate on all the instances of the current header type.

    Selects Text that matches the input string argument. The order in

    which the instances of the header are matched is from the last

    instance to the first.





    HTTP/1.1 200 OK\r\n

    MyHdr: 111abc\r\n

    Content-Length: 200\r\n

    MyHdr: 111def\r\n

    \r\n



    For example: HTTP.RES.HEADER("MyHdr").SUBSTR("111") selects "111" in the

    last instance of MyHdr, the one with value "111def".

    Parameters(expressions not allowed):

    s -

                            String</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>SUFFIX</b>(char c, uint i)</p><div><p>Select a suffix of the Text. The selected suffix is the
    

    longest possible suffix containing at most Count (2nd arg)

    occurrences of the character in the 1st argument.

    Parameters:

    c -

                            Character</p><p>i -
    
                            Count</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>SUFFIX</b>(uint i)</p><div><p>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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>TO_LOWER</b></p><div><p>Converts the selected text to lower case.<br /><br /><br /><br />For example, the string "ABCd" is converted to "abcd"</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>TO_UPPER</b></p><div><p>Converts the selected text to upper case.<br /><br /><br /><br />For example, the string "abcD" is converted to "ABCD"</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>TRUNCATE</b>(char c, uint i)</p><div><p>Select the Text after truncating a suffix from the current
    

    Text object. The truncated suffix is the longest possible

    suffix containing at most Count (2nd arg) occurrences of the

    character in the 1st argument.

    Parameters:

    c -

                            Character</p><p>i -
    
                            Count</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>TRUNCATE</b>(uint i)</p><div><p>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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_AVP_T</b></p><div><p>Convert text_t to avp_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (avp_t : Operations that can be performed on the returned AVPs.
    





    Note:An AVP can have multiple instances in a Diameter message.

    However, the system can access only the first 16 instances.





    Example:

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

    Returns: avp_t

    * TYPECAST_AVP_UNUM_T

    Convert text_t to avp_unum_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (avp_unum_t : In Diameter AVP based expressions can be written as DIAMETER.REQ.AVP(<avpcode>).

    For example Auth-Application-Id AVP (AVP code 258) can be extracted as DIAMETER.REQ.AVP(258)

    For few of the important AVPs we provide aliases.

    For example this AVP based expression can also be written as

    DIAMETER.REQ.AUTH_APPLICATION_ID.

    This expression returns either a object of class avp_t or

    returns a numerical value (object of class unsigned_long_at).

    The numerical value for this object is derived from the value in first instance of

    the AVP.)

    Returns: avp_unum_t

    TYPECAST_BOOL_AT

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

    Returns: bool_at

    TYPECAST_COOKIE_T

    Convert text_t to cookie_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (cookie_t : The HTTP Cookie type provides operations for a

    cookie as it appears in the Set-Cookie and Set-Cookie2 header.

    In this type the Name-Value List operations are also available. The

    first delimiter is = and the element delimiter is ;. Multiple

    consecutive ; are treated as one. (Same as applying the method

    IGNORE_EMPTY_ELEMENTS on a Name-Value List. You can use the

    Name-value List operations to access cookie attributes.

    In this type Text operations are also available.



    Each cookie begins with a COOKIE_NAME=COOKIE_VALUE pair followed by

    zero or more semi-colon separated attribute-value pairs. If an

    attribute appears more than once in a cookie, the value associated

    with the first appearance of the attribute is returned.





    Format Cookie:

    Cookie1=Value;Version=decimal;Value;Domain=Value;Path=Value)

    Returns: cookie_t

    * TYPECAST_DIAMETER_FLAG_T

    Convert text_t to diameter_flag_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (diameter_flag_t : Provides operation to treat the underlying 1 byte as set of bit

    flags. then set/unset/test/reset_all operations can be done on flag)

    Returns: diameter_flag_t

    * TYPECAST_DNS_DOMAINNAME_T

    Convert text_t to dns_domainname_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (dns_domainname_t : This object provides operations for parsing the DNS domain name as it

    appears at various places in the DNS data. The format is

    abc.foo.com.)

    Returns: dns_domainname_t

    TYPECAST_DNS_FLAG_T

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

    Returns: dns_flag_t

    TYPECAST_DOUBLE_AT

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

    Returns: double_at

    * TYPECAST_DOUBLE_T(double_format_eformat)

    Convert text_t to double_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (double_t : Treat the underlying text as a Double in the given format. The

    supported formats are DECIMAL, DECIMAL_PREFIX. All

    the formats strip off the beginning white space. DECIMAL

    also strips off trailing white space. DECIMAL requires that all

    the remaining characters must be a proper double value.

    DECIMAL_PREFIX requires that at least one or more

    more characters in the prefix must be a proper double value. In

    case of overflow, there will be a parsing error.)

    Parameters(expressions not allowed):

    format -

                            Format</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_t/double_t.html">double_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_DOUBLE_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_format_e/double_format_e.html">double_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_at/double_at.html">double_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Double</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_t/double_t.html">double_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_DOUBLE_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_format_e/double_format_e.html">double_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/ip_address_at/ip_address_at.html">ip_address_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Double</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_t/double_t.html">double_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_DOUBLE_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_format_e/double_format_e.html">double_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_at/num_at.html">num_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Double</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_t/double_t.html">double_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_DOUBLE_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_format_e/double_format_e.html">double_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/time_at/time_at.html">time_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Double</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_t/double_t.html">double_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_DOUBLE_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_format_e/double_format_e.html">double_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_at/unsigned_long_at.html">unsigned_long_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Double</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_t/double_t.html">double_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_HTTP_CACHE_CONTROL_T</b></p><div><p>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.)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/http_cache_control_t/http_cache_control_t.html">http_cache_control_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_HTTP_CONTENT_LENGTH_T</b></p><div><p>Convert text_t to http_content_length_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_content_length_t : The HTTP.REQ.CONTENT_LENGTH or HTTP.RES.CONTENT_LENGTH object can be
    

    treated as a HTTP Header or as a Number. The numerical value for

    this object is derived from the value in the last instance of the

    Content-Length header.)

    Returns: http_content_length_t

    * TYPECAST_HTTP_COOKIE_T

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

    The name-value pair is derived from the value in the last instance of

    Cookie header. The format is Cookie : name0=value0; name1=value1;

    An HTTP Cookie header can have multiple occurrences. COUNT will

    return a Number containing how many headers of the current type

    exist.

    The system does not keep track of more than 15 HTTP headers. The

    result will be undefined if there are more than 15 instances of

    the header.)

    Returns: http_cookie_t

    * TYPECAST_HTTP_DATE_T

    Convert text_t to http_date_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_date_t : The HTTP.REQ.DATE or HTTP.RES.DATE object can be treated as a HTTP

    header or a Time object. The Time value is derived from the value in

    the last instance of the Date header. The date formats supported are

    RFC 822 (updated by RFC 1123), RFC 1036 (obsoletes RFC850) and ANSI C

    asctime() formats.)

    Returns: http_date_t

    * TYPECAST_HTTP_HEADER_T(text_tname)

    Convert text_t to http_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_header_t : When typecasting a Text object to HTTP Header a header name

    must be provided.For example:

    HTTP.REQ.HEADER("MyHdr").TYPECAST_HTTP_HEADER_T("InHdr"))

    Parameters(expressions not allowed):

    name -

                            Header Name</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/http_header_t/http_header_t.html">http_header_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_HTTP_HOSTNAME_T</b></p><div><p>Convert text_t to http_hostname_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_hostname_t : This object provides operations for parsing the HTTP hostname as it
    

    appears at various places in the HTTP protocol data. The format is

    abc.foo.com:8080.)

    Returns: http_hostname_t

    * TYPECAST_HTTP_METHOD_T

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

    operations on the HTTP request method.)

    Returns: http_method_t

    * TYPECAST_HTTP_SET_COOKIE_T

    Convert text_t to http_set_cookie_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_set_cookie_t : HTTP.RES.SET_COOKIE provides operations for parsing and operating on the

    SET-COOKIE header that is present in the HTTP response.

    HTTP Set-Cookie header supports Text and HTTP Header operations.

    For most Text operations the value in the last Set-Cookie header is

    selected.

    HTTP Set-Cookie header also supports special operations to extract

    cookies from the response. It is assumed that there will be only one

    cookie in a Set-Cookie header.)

    Returns: http_set_cookie_t

    * TYPECAST_HTTP_URL_T

    Convert text_t to http_url_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (http_url_t : HTTP.REQ.URL provides operations for parsing and operating on the

    URL that is present in the first line of the HTTP request header.

    The supported format is [<protocol>://<hostname>]<path>?<query>. The

    Text object backing a HTTP URL object has the Text Mode set to

    URLENCODED by default.)

    Returns: http_url_t

    * TYPECAST_HTTP_VERSION_T

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

    version information.)

    Returns: http_version_t

    * TYPECAST_IPV6_ADDRESS_AT

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

    Some general information regarding IPv6 expressions:

    IPv6 PIXL expressions can be combined with other PIXL expressions

    using the '+' operator.  The output is expected to be the
    
    concatenation of the string representations of the individual PIXL
    
    expressions.  No other operator other than '+' is expected to work
    
    when any of the operands is an IPv6 PIXL expression.  Also, IPv6
    
    PIXL expressions can be combined with any other type of PIXL
    
    expression except a PIXL expression that produces a bool result.
    
    In other words, if A and/or B are two IPv6 addresses, A+B should result
    
    in the string AB.  When one of A or B is an IPv6 address, the other
    
    can only be a number or a string and not a boolean.  Further, when
    
    A and/or B is an IPv6 address, the only operator allowed between
    
    them is '+'.
    
    <br /><br /><br /><br />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".
    
    <br /><br />Similarly, CLIENT.IPV6.SRC + 5 should produce the result
    
    ABCD:1234::ABCD5)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/ipv6_address_at/ipv6_address_at.html">ipv6_address_at</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_IPV6_ADDRESS_T</b></p><div><p>Convert text_t to ipv6_address_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ipv6_address_t : This object represents an IPv6 address present in the
    

    1000:1001:CD10:0000:0000:89AB:4567:CDEF format.)

    Returns: ipv6_address_t

    TYPECAST_IPV6_SUBNET_AT

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

    Returns: ipv6_subnet_at

    TYPECAST_IPV6_SUBNET_T

    Convert text_t to ipv6_subnet_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (ipv6_subnet_t : This object represents an IPv6 subnet address present in the

    1000:1001:CD10:0000:0000:89AB:4567:CDEF/64 format.)

    Returns: ipv6_subnet_t

    TYPECAST_IP_ADDRESS_AT

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

    Returns: ip_address_at

    TYPECAST_IP_ADDRESS_T

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

    format.)

    Returns: ip_address_t

    * TYPECAST_LIST_T(char sep)

    Convert text_t to list_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (list_t : The character separator has to be provided when typecasting

    a textual context to list type. The current text mode has no

    effect on the character separator. For example if the

    current text mode is IGNORECASE and the separator is p then

    P will not be treated as a separator.)

    Parameters(expressions not allowed):

    sep -

                            Separator</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/list_t/list_t.html">list_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_MAC_ADDRESS_AT</b></p><div><p>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.)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/mac_address_at/mac_address_at.html">mac_address_at</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_MAC_ADDRESS_T</b></p><div><p>Convert text_t to mac_address_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (mac_address_t : Represents a MAC address present in the 12:34:56:78:9a:bc
    

    format.)

    Returns: mac_address_t

    TYPECAST_NUM_AT

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

    Returns: num_at

    TYPECAST_NUM_T(num_format_eformat)

    Convert text_t to num_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (num_t : Treat the underlying text as a Number in the given format. The

    supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All

    the formats strip off the beginning white space. DECIMAL and HEX

    also strip off trailing white space. DECIMAL and HEX require that all

    the remaining characters must be proper digits.

    DECIMAL_PREFIX and HEX_PREFIX require that at least one or more

    more characters in the prefix must be proper digits. In case of

    overflow, there will be a parsing error.)

    Parameters(expressions not allowed):

    format -

                            Format</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_t/num_t.html">num_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_NUM_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_format_e/num_format_e.html">num_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_at/num_at.html">num_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_t/num_t.html">num_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_NVLIST_T</b>(char sep1, char sep2)</p><div><p>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</p><p>sep2 -
    
                            delimiter2</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/nvlist_t/nvlist_t.html">nvlist_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_NVLIST_T</b>(char sep1, char sep2, char quote)</p><div><p>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</p><p>sep2 -
    
                            delimiter2</p><p>quote -
    
                            quote-character.</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/nvlist_t/nvlist_t.html">nvlist_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_RADIUS_AVP_T</b></p><div><p>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_tname)

    Convert text_t to sip_header_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_header_t : When typecasting a Text object to SIP Header a header name

    must be provided.For example:

    SIP.REQ.HEADER("MyHdr").TYPECAST_SIP_HEADER_T("InHdr"))

    Parameters(expressions not allowed):

    name -

                            Header Name</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/sip_header_t/sip_header_t.html">sip_header_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_SIP_HOSTNAME_T</b></p><div><p>Convert text_t to sip_hostname_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_hostname_t : This object provides operations for parsing the SIP hostname as it
    

    appears at various places in the SIP protocol data. The format is

    abc.foo.com:5060.)

    Returns: sip_hostname_t

    * TYPECAST_SIP_METHOD_T

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

    operations on the SIP request method.)

    Returns: sip_method_t

    TYPECAST_SIP_TO_HEADER_T

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

    Returns: sip_to_header_t

    TYPECAST_SIP_URL_T

    Convert text_t to sip_url_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (sip_url_t : SIP.REQ.URL provides operations for parsing and operating on the

    URL that is present in the first line of the SIP request header.

    The supported format is [<protocol>://<hostname>]<path>?<query>. The

    Text object backing a SIP URL object has the Text Mode set to

    URLENCODED by default.)

    Returns: sip_url_t

    * TYPECAST_SIP_VERSION_T

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

    version information.)

    Returns: sip_version_t

    TYPECAST_SIP_VIA_HEADER_T

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

    Returns: sip_via_header_t

    TYPECAST_SSLVPN_MODE_T

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

    operations on the SSLVPN request method.)

    Returns: sslvpn_mode_t

    * TYPECAST_SSL_TEXT_T(text_tname)

    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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/ssl_text_t/ssl_text_t.html">ssl_text_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_TCP_OPTIONS_T</b></p><div><p>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)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/tcp_options_t/tcp_options_t.html">tcp_options_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_TCP_OPTIONS_TYPE_T</b></p><div><p>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)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/tcp_options_type_t/tcp_options_type_t.html">tcp_options_type_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_TCP_REPEATER_OPTION_T</b></p><div><p>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)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/tcp_repeater_option_t/tcp_repeater_option_t.html">tcp_repeater_option_t</a></p></div></div></div><div><div><p><b>TYPECAST_TEXT_T</b></p><div><p>Convert http_header_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.)</p><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_TIME_AT</b></p><div><p>Convert text_t to time_at. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (time_at : Treats a number value as number of seconds since GMT Jan 1
    

    1970 0h 0m 0s.)

    Returns: time_at

    * TYPECAST_TIME_T

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

    supported are



    1. RFC822 :: Sun, 06 Nov 1994 08:49:37 GMT

    2. RFC850 :: Sunday, 06-Nov-94 08:49:37 GMT

    3. ASCTIME :: Sun Nov 6 08:49:37 1994

    4. ASCTIME like :: Sun Nov 6 08:49:37 1994

    5. ASCTIME like :: Sun Nov 06 08:49:37 1994

    6. Http Set-Cookie Expiry date :: Sun, 06-Nov-1994 08:49:37 GMT)

    Returns: time_t

    TYPECAST_UNSIGNED_LONG_AT

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

    Returns: unsigned_long_at

    TYPECAST_UNSIGNED_LONG_T(unsigned_long_format_eformat)

    Convert text_t to unsigned_long_t. Will raise an undef if the value is null, empty, or the value has an invalid format for the destination type. (unsigned_long_t : Treat the underlying text as a Unsigned Long in the given format. The

    supported formats are DECIMAL, HEX, DECIMAL_PREFIX, HEX_PREFIX. All

    the formats strip off the beginning white space. DECIMAL and HEX

    also strip off trailing white space. DECIMAL and HEX require that all

    the remaining characters must be proper digits.

    DECIMAL_PREFIX and HEX_PREFIX require that at least one or more

    more characters in the prefix must be proper digits. In case of

    overflow, there will be a parsing error.)

    Parameters(expressions not allowed):

    format -

                            Format</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_t/unsigned_long_t.html">unsigned_long_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_UNSIGNED_LONG_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_format_e/unsigned_long_format_e.html">unsigned_long_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/ip_address_at/ip_address_at.html">ip_address_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_t/unsigned_long_t.html">unsigned_long_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_UNSIGNED_LONG_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_format_e/unsigned_long_format_e.html">unsigned_long_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_at/unsigned_long_at.html">unsigned_long_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_t/unsigned_long_t.html">unsigned_long_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_UNSIGNED_LONG_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_format_e/unsigned_long_format_e.html">unsigned_long_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/num_at/num_at.html">num_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_t/unsigned_long_t.html">unsigned_long_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_UNSIGNED_LONG_T</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_format_e/unsigned_long_format_e.html">unsigned_long_format_e</a>format, <a href="/en-us/adc-advanced-policy-expression-reference/12-1/time_at/time_at.html">time_at</a>default_value)</p><div><p>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</p><p>default_value -
    
                            Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/unsigned_long_t/unsigned_long_t.html">unsigned_long_t</a></p></div></div></div><div><div><p><b>* </b><b>TYPECAST_UNUM_TEXT_T</b></p><div><p>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 /

    Parameters(expressions not allowed):

    c -

                            Character</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>URLSET_MATCHES_ANY</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>urlset_name)</p><div><p>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</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>URL_CATEGORIZE</b>(uint min_reputation, uint max_reputation)</p><div><p>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</p><p>max_reputation -
    
                            Maximum reputation score of URL category</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/url_category_t/url_category_t.html">url_category_t</a></p></div></div></div><div><div><p><b>* </b><b>URL_RESERVED_CHARS_SAFE</b></p><div><p>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

    VALUE(uint lineno)

    An HTTP header can have multiple occurrences. VALUE(0) will

    select the value in the last header line of the current type,

    VALUE(1) will select the value in the last but one header line

    and so on. The counting goes backward. Only the last 15 instances

    of a header are accessible. Therefore Instance Number cannot be

    greater than 14.





    HTTP/1.1 200 OK\r\n

    MyHdr: abc\r\n

    Content-Length: 200\r\n

    MyHdr: def\r\n

    \r\n



    For example: HTTP.RES.HEADER("MyHdr").VALUE(1) will return a Text

    object referring to "abc\r\n".

    Parameters(expressions not allowed):

    lineno -

                            Instance Number</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>XML_DECRYPT</b>(<a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a>certKeyName)</p><div><p>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_tcertKeyName, encrypt_method_emethod)

    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_tcertKeyName, encrypt_method_emethod, 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%//html/head/title%)
    
      returns the &lt;title&gt; element in the document's
    
      &lt;head&gt; This can be used in a rewrite action
    
      to replace or delete the &lt;title&gt; element.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_HTML</b>(xpath_bool xpathex)</p><div><p>Applies an XPath expression to the DOM for an HTML document
    

    and a boolean value.





    Examples:

      HTTP.RES.BODY(1000).XPATH_HTML(xp%boolean(/html/head/meta)%)
    
      returns true if the &lt;meta&gt; element exists as a child
    
      of &lt;head&gt; element.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_HTML</b>(xpath_double xpathex)</p><div><p>Applies an XPath expression to the DOM for an HTML document
    

    and a double value.





    Examples:

      HTTP.RES.BODY(1000).XPATH_HTML(xp%number(//video/@height)%)
    
      returns the numeric value of the height attribute of the
    
      first &lt;video&gt; element.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_at/double_at.html">double_at</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_HTML</b>(xpath_str xpathex)</p><div><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.





    Examples:

      HTTP.REQ.BODY(1000).XPATH_HTML(xp%//img/@src%)
    
      returns the string value of the src attribute of
    
      the first &lt;img&gt; element in the document.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_JSON_WITH_MARKUP</b>(xpath_str xpathex)</p><div><p>xpath(1.0) expression evaluation. xpath_json_with_markup operates on
    

    XML file and returns a string that contains the entire portion of the

    document for the result node including markup, such as

    including the enclosing element tags





    Examples:

      For the JSON file:
    
      {
    
         "Book":{
    
            "creator":{
    
               "person":{
    
                 "name":'Milton'
    
               }
    
            },
    
            "title":'Paradise Lost'
    
         }
    
      }
    
      HTTP.REQ.BODY(1000).XPATH_JSON_WITH_MARKUP(xp%/Top/Book/creator%)
    
          This expression when operated on the above JSON file,
    
          will select "all the nodes enclosed by
    
          /Book/creator"
    
          in the first 1000 bytes of the body which is
    
            creator:{
    
               person:{
    
                 name:'Milton'
    
               }
    
            }
    
          The original JSON document is not disturbed but the
    
          part of the JSON body selected by the
    
          expression is marked for further processing.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_JSON</b>(xpath_bool xpathex)</p><div><p>xpath(1.0) expression evaluation. xpath_json operates on JSON file
    

    and returns boolean value.





    Examples:

      For the JSON file:
    
      {
    
         "Book":{
    
            "creator":{
    
               "person":{
    
                 "name":'Milton'
    
               }
    
            },
    
            "title":'Paradise Lost'
    
         }
    
      }
    
      HTTP.REQ.BODY(1000).XPATH_JSON(xp%boolean(/Top/Book/creator)%)
    
          This will return true as there is a node named
    
          'creator' with parent 'Book' in the first 1000 bytes of the
    
          document.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Boolean Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_JSON</b>(xpath_double xpathex)</p><div><p>xpath(1.0) expression evaluation. xpath_json operates on JSON file
    

    and returns double value.





    Examples:

      For the JSON file:
    
      {
    
         "Book":{
    
            "creator":{
    
               "person":{
    
                 "name":'Milton'
    
               }
    
            },
    
            "title":'Paradise Lost',
    
            "price":"36"
    
         }
    
      }
    
      HTTP.REQ.BODY(1000).XPATH_JSON(xp%number(/Top/Book/price)%)
    
          This will convert the string '36' string to double if it is
    
          in the first 1000 bytes of the document.</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Numeric Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_at/double_at.html">double_at</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_JSON</b>(xpath_str xpathex)</p><div><p>xpath(1.0) expression evaluation. xpath_json operates on JSON file
    

    and returns node-set or string.

    node-sets are converted into corresponding strings using the

    standard xpath string conversion routine.





    Examples:

      For the JSON file:
    
      {
    
         "Book":{
    
            "creator":{
    
               "person":{
    
                 "name":'Milton'
    
               }
    
            },
    
            "title":'Paradise Lost'
    
         }
    
      }
    
      HTTP.REQ.BODY(1000).XPATH_JSON(xp%/Top/Book%)
    
          This will select "all the nodes enclosed by /Book"
    
          in the first 1000 bytes of the body.
    
          Since this is a node-set the corresponding string
    
          value will be returned which is "MiltonParadise
    
          Lost".</p><p><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>XPATH_WITH_MARKUP</b>(xpath_str xpathex)</p><div><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





    Examples:

      <book><creator><person><name>Milton</name></person></creator><title>Paradise Lost</title></book>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
    
          <creator><person><name>Milton</name></person></creator>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><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div><div><div><p><b>* </b><b>XPATH</b>(xpath_bool xpathex)</p><div><p>xpath(1.0) expression evaluation. xpath operates on XML file and
    

    returns boolean value.





    Examples:

      For the XML file:
    
      <book><creator><person><name>Milton</name></person></creator><title>Paradise Lost</title></book>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><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Boolean Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/bool_at/bool_at.html">bool_at</a></p></div></div></div><div><div><p><b>* </b><b>XPATH</b>(xpath_double xpathex)</p><div><p>xpath(1.0) expression evaluation. xpath operates on XML file and
    

    returns double value.





    Examples:

      For the XML file:
    
      <book><creator><person><name>Milton</name></person></creator><title>Paradise Lost</title><price>36</price></book>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><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Numeric Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/double_at/double_at.html">double_at</a></p></div></div></div><div><div><p><b>* </b><b>XPATH</b>(xpath_str xpathex)</p><div><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.





    Examples:

      For the XML file:
    
      <book><creator><person><name>Milton</name></person></creator><title>Paradise Lost</title></book>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><b>Parameters</b>(expressions not allowed):</p><div><p>xpathex -
    
                            XPath Expression</p></div><p><b>Returns: </b><a href="/en-us/adc-advanced-policy-expression-reference/12-1/text_t/text_t.html">text_t</a></p></div></div></div></body></html>
    
HTTP_HEADER_T

In this article