| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843 |
- siputils
- Hardy Kahl
- 1&1 Internet AG
- Henning Westerholt
- 1&1 Internet AG
- Nils Ohlmeier
- FhG Fokus
- Jan Janak
- FhG FOKUS
- Daniel-Constantin Mierla
- asipto.com
- Gabriel Vasile
- FhG FOKUS
- Juha Heinanen
- TutPro Inc.
- Edited by
- Jan Janak
- Edited by
- Bogdan-Andrei Iancu
- Edited by
- Gabriel Vasile
- Copyright (c) 2008, 2005, 2003 1&1 Internet AG, FhG Fokus, Voice Sistem
- SRL
- __________________________________________________________________
- Table of Contents
- 1. Admin Guide
- 1. Overview
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 3. Parameters
- 3.1. ring_timeout (int)
- 3.2. options_accept (string)
- 3.3. options_accept_encoding (string)
- 3.4. contact_flds_separator (string)
- 3.5. options_accept_language (string)
- 3.6. options_support (string)
- 3.7. rpid_prefix (string)
- 3.8. rpid_suffix (string)
- 3.9. rpid_avp (string)
- 4. Functions
- 4.1. ring_insert_callid()
- 4.2. options_reply()
- 4.3. is_user(username)
- 4.4. has_totag()
- 4.5. uri_param(param)
- 4.6. uri_param(param,value)
- 4.7. add_uri_param(param)
- 4.8. get_uri_param(name, var)
- 4.9. tel2sip(uri, hostpart, result)
- 4.10. is_e164(pseudo-variable)
- 4.11. is_uri_user_e164(pseudo-variable)
- 4.12. encode_contact(encoding_prefix,hostpart)
- 4.13. decode_contact()
- 4.14. decode_contact_header()
- 4.15. cmp_uri(str1, str2)
- 4.16. cmp_aor(str1, str2)
- 4.17. is_rpid_user_e164()
- 4.18. append_rpid_hf()
- 4.19. append_rpid_hf(prefix, suffix)
- 4.20. is_rpid_user_e164()
- 4.21. set_uri_user(uri, user)
- 4.22. set_uri_host(uri, host)
- 4.23. is_request()
- 4.24. is_reply()
- 4.25. is_gruu([uri])
- 4.26. is_supported(option)
- List of Examples
- 1.1. Set ring_timeout parameter
- 1.2. Set options_accept parameter
- 1.3. Set options_accept_encoding parameter
- 1.4. Set contact_flds_separator parameter
- 1.5. Set options_accept_language parameter
- 1.6. Set options_support parameter
- 1.7. rpid_prefix parameter example
- 1.8. rpid_suffix parameter example
- 1.9. rpid_avp parameter example
- 1.10. ring_insert_callid() usage
- 1.11. options_reply usage
- 1.12. is_user usage
- 1.13. has_totag usage
- 1.14. uri_param usage
- 1.15. uri_param usage
- 1.16. add_uri_param usage
- 1.17. add_uri_param usage
- 1.18. tel2sip usage
- 1.19. is_e164 usage
- 1.20. is_uri_user_e164 usage
- 1.21. encode_contact usage
- 1.22. decode_contact usage
- 1.23. decode_contact_header usage
- 1.24. cmp_uri usage
- 1.25. cmp_aor usage
- 1.26. is_rpid_user_e164 usage
- 1.27. append_rpid_hf usage
- 1.28. append_rpid_hf(prefix, suffix) usage
- 1.29. is_rpid_user_e164 usage
- 1.30. set_uri_user usage
- 1.31. set_uri_host usage
- 1.32. is_request usage
- 1.33. is_reply usage
- 1.34. is_gruu() usage
- 1.35. is_supported() usage
- Chapter 1. Admin Guide
- Table of Contents
- 1. Overview
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 3. Parameters
- 3.1. ring_timeout (int)
- 3.2. options_accept (string)
- 3.3. options_accept_encoding (string)
- 3.4. contact_flds_separator (string)
- 3.5. options_accept_language (string)
- 3.6. options_support (string)
- 3.7. rpid_prefix (string)
- 3.8. rpid_suffix (string)
- 3.9. rpid_avp (string)
- 4. Functions
- 4.1. ring_insert_callid()
- 4.2. options_reply()
- 4.3. is_user(username)
- 4.4. has_totag()
- 4.5. uri_param(param)
- 4.6. uri_param(param,value)
- 4.7. add_uri_param(param)
- 4.8. get_uri_param(name, var)
- 4.9. tel2sip(uri, hostpart, result)
- 4.10. is_e164(pseudo-variable)
- 4.11. is_uri_user_e164(pseudo-variable)
- 4.12. encode_contact(encoding_prefix,hostpart)
- 4.13. decode_contact()
- 4.14. decode_contact_header()
- 4.15. cmp_uri(str1, str2)
- 4.16. cmp_aor(str1, str2)
- 4.17. is_rpid_user_e164()
- 4.18. append_rpid_hf()
- 4.19. append_rpid_hf(prefix, suffix)
- 4.20. is_rpid_user_e164()
- 4.21. set_uri_user(uri, user)
- 4.22. set_uri_host(uri, host)
- 4.23. is_request()
- 4.24. is_reply()
- 4.25. is_gruu([uri])
- 4.26. is_supported(option)
- 1. Overview
- This module implement various functions and checks related to SIP
- message handling and URI handling.
- It offers some functions related to handle ringing. In a parallel
- forking scenario you get several 183s with SDP. You don't want that
- your customers hear more than one ringtone or answer machine in
- parallel on the phone. So its necessary to drop the 183 in this cases
- and send a 180 instead.
- This module also provides a function to answer OPTIONS requests which
- are directed to the server itself. This means an OPTIONS request which
- has the address of the server in the request URI, and no username in
- the URI. The request will be answered with a 200 OK with the
- capabilities of the server.
- To answer OPTIONS request directed to your server is the easiest way
- for is-alive-tests on the SIP (application) layer from remote (similar
- to ICMP echo requests, also known as "ping", on the network layer).
- 2. Dependencies
- 2.1. Kamailio Modules
- 2.2. External Libraries or Applications
- 2.1. Kamailio Modules
- The following modules must be loaded before this module:
- * sl -- Stateless replies.
- 2.2. External Libraries or Applications
- The following libraries or applications must be installed before
- running Kamailio with this module loaded:
- * None.
- 3. Parameters
- 3.1. ring_timeout (int)
- 3.2. options_accept (string)
- 3.3. options_accept_encoding (string)
- 3.4. contact_flds_separator (string)
- 3.5. options_accept_language (string)
- 3.6. options_support (string)
- 3.7. rpid_prefix (string)
- 3.8. rpid_suffix (string)
- 3.9. rpid_avp (string)
- 3.1. ring_timeout (int)
- Timeout value in seconds, define how long the call-id is stored in the
- internal list kept for replacing 183 messages with 180. A reasonable
- value is "30".
- Default value is "0". This means functionality is disabled.
- Example 1.1. Set ring_timeout parameter
- ...
- modparam("siputils", "ring_timeout", 30)
- ...
- 3.2. options_accept (string)
- This parameter is the content of the Accept header field. Note: it is
- not clearly written in RFC3261 if a proxy should accept any content
- (the default "*/*") because it does not care about content. Or if it
- does not accept any content, which is "".
- Default value is "*/*".
- Example 1.2. Set options_accept parameter
- ...
- modparam("siputils", "options_accept", "application/*")
- ...
- 3.3. options_accept_encoding (string)
- This parameter is the content of the Accept-Encoding header field.
- Please do not change the default value because Kamailio does not
- support any encodings yet.
- Default value is "".
- Example 1.3. Set options_accept_encoding parameter
- ...
- modparam("siputils", "options_accept_encoding", "gzip")
- ...
- 3.4. contact_flds_separator (string)
- First char of this parameter is used as separator for encoding/decoding
- Contact header.
- Warning
- First char of this field must be set to a value which is not used
- inside username,password or other fields of contact. Otherwise it is
- possible for the decoding step to fail/produce wrong results.
- Default value is "*".
- Example 1.4. Set contact_flds_separator parameter
- ...
- modparam("siputils", "contact_flds_separator", "-")
- ...
- then an encoded uri might look
- sip:user-password-ip-port-protocol@PublicIP
- 3.5. options_accept_language (string)
- This parameter is the content of the Accept-Language header field. You
- can set any language code which you prefer for error descriptions from
- other devices, but presumably there are not many devices around which
- support other languages than the default English.
- Default value is "en".
- Example 1.5. Set options_accept_language parameter
- ...
- modparam("siputils", "options_accept_language", "de")
- ...
- 3.6. options_support (string)
- This parameter is the content of the Support header field, indicating
- SIP extensions. Please do not change the default value, because
- Kamailio currently does not support any of the SIP extensions
- registered at the IANA.
- Default value is "".
- Example 1.6. Set options_support parameter
- ...
- modparam("siputils", "options_support", "100rel")
- ...
- 3.7. rpid_prefix (string)
- Prefix to be added to Remote-Party-ID header field just before the URI
- returned from either radius or database.
- Default value is "".
- Example 1.7. rpid_prefix parameter example
- modparam("auth", "rpid_prefix", "Whatever <")
- 3.8. rpid_suffix (string)
- Suffix to be added to Remote-Party-ID header field after the URI
- returned from either radius or database.
- Default value is ";party=calling;id-type=subscriber;screen=yes".
- Example 1.8. rpid_suffix parameter example
- modparam("auth", "rpid_suffix", "@1.2.3.4>")
- 3.9. rpid_avp (string)
- Full AVP specification for the AVP which stores the RPID value. It used
- to transport the RPID value from authentication backend modules
- (auth_db or auth_radius) or from script to the auth function
- append_rpid_hf and is_rpid_user_e164.
- If defined to NULL string, all RPID functions will fail at runtime.
- Default value is "$avp(s:rpid)".
- Example 1.9. rpid_avp parameter example
- modparam("auth", "rpid_avp", "$avp(myrpid)")
- 4. Functions
- 4.1. ring_insert_callid()
- 4.2. options_reply()
- 4.3. is_user(username)
- 4.4. has_totag()
- 4.5. uri_param(param)
- 4.6. uri_param(param,value)
- 4.7. add_uri_param(param)
- 4.8. get_uri_param(name, var)
- 4.9. tel2sip(uri, hostpart, result)
- 4.10. is_e164(pseudo-variable)
- 4.11. is_uri_user_e164(pseudo-variable)
- 4.12. encode_contact(encoding_prefix,hostpart)
- 4.13. decode_contact()
- 4.14. decode_contact_header()
- 4.15. cmp_uri(str1, str2)
- 4.16. cmp_aor(str1, str2)
- 4.17. is_rpid_user_e164()
- 4.18. append_rpid_hf()
- 4.19. append_rpid_hf(prefix, suffix)
- 4.20. is_rpid_user_e164()
- 4.21. set_uri_user(uri, user)
- 4.22. set_uri_host(uri, host)
- 4.23. is_request()
- 4.24. is_reply()
- 4.25. is_gruu([uri])
- 4.26. is_supported(option)
- 4.1. ring_insert_callid()
- Inserting the call-id in the internal list, which is checked when
- further replies arrive. Any 183 reply that is received during the
- timeout value will be converted to a 180 message. Please note that you
- need to set a positive timeout value in order to use this function.
- The function returns TRUE on success, and FALSE during processing
- failures.
- This function can be used from REQUEST_ROUTE and FAILURE_ROUTE.
- Example 1.10. ring_insert_callid() usage
- ...
- ring_insert_callid();
- ...
- 4.2. options_reply()
- This function checks if the request method is OPTIONS and if the
- request URI does not contain an username. If both is true the request
- will be answered stateless with "200 OK" and the capabilities from the
- modules parameters.
- It sends "500 Server Internal Error" for some errors and returns false
- if it is called for a wrong request.
- The check for the request method and the missing username is optional
- because it is also done by the function itself. But you should not call
- this function outside the myself check because in this case the
- function could answer OPTIONS requests which are sent to you as
- outbound proxy but with an other destination then your proxy (this
- check is currently missing in the function).
- This function can be used from REQUEST_ROUTE.
- Example 1.11. options_reply usage
- ...
- if (uri==myself) {
- if ((method==OPTIONS) && (! uri=~"sip:.*[@]+.*")) {
- options_reply();
- }
- }
- ...
- 4.3. is_user(username)
- Check if the username in credentials matches the given username.
- Meaning of the parameters is as follows:
- * username - Username string.
- This function can be used from REQUEST_ROUTE.
- Example 1.12. is_user usage
- ...
- if (is_user("john")) {
- ...
- };
- ...
- 4.4. has_totag()
- Check if To header field uri contains tag parameter.
- This function can be used from ANY_ROUTE.
- Example 1.13. has_totag usage
- ...
- if (has_totag()) {
- ...
- };
- ...
- 4.5. uri_param(param)
- Find if Request URI has a given parameter with no value
- Meaning of the parameters is as follows:
- * param - parameter name to look for.
- This function can be used from REQUEST_ROUTE.
- Example 1.14. uri_param usage
- ...
- if (uri_param("param1")) {
- ...
- };
- ...
- 4.6. uri_param(param,value)
- Find if Request URI has a given parameter with matching value
- Meaning of the parameters is as follows:
- * param - parameter name to look for.
- * value - parameter value to match.
- This function can be used from REQUEST_ROUTE.
- Example 1.15. uri_param usage
- ...
- if (uri_param("param1","value1")) {
- ...
- };
- ...
- 4.7. add_uri_param(param)
- Add to RURI a parameter (name=value);
- Meaning of the parameters is as follows:
- * param - parameter to be appended in "name=value" format.
- This function can be used from REQUEST_ROUTE.
- Example 1.16. add_uri_param usage
- ...
- add_uri_param("nat=yes");
- ...
- 4.8. get_uri_param(name, var)
- Get the value of RURI parameter.
- Meaning of the parameters is as follows:
- * name - the name of R-URI parameter
- * var - the variable where to store the value of the parameter
- This function can be used from REQUEST_ROUTE.
- Example 1.17. add_uri_param usage
- ...
- get_uri_param("nat", "$var(nat)");
- ...
- 4.9. tel2sip(uri, hostpart, result)
- Converts URI in first param (pseudo variable or string) to SIP URI, if
- it is a tel URI. If conversion was done, writes resulting SIP URI to
- third param (pseudo variable). Returns 1 if conversion succeeded or if
- no conversion was needed.
- The conversion follows the rules in RFC 3261 section 19.1.6:
- * Visual separators ( "-", ".", "(", ")" ) are removed from tel URI
- number before converting it to SIP URI userinfo.
- * tel URI parameters are downcased before appending them to SIP URI
- userinfo
- The SIP URI hostpart is taken from second param (pseudo variable or
- string).
- This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
- BRANCH_ROUTE, or ONREPLY_ROUTE.
- Example 1.18. tel2sip usage
- ...
- # $ru: tel:+(34)-999-888-777
- # $fu: sip:[email protected]
- tel2sip("$ru", $fd", "$ru");
- # $ru: sip:[email protected];user=phone
- # $ru: tel:+12-(34)-56-78;Ext=200;ISUB=+123-456
- # $fu: sip:[email protected]
- tel2sip("$ru", $fd", "$ru");
- # $ru: sip:+12345678;ext=200;[email protected];user=phone
- ...
- 4.10. is_e164(pseudo-variable)
- Checks if string value of pseudo variable argument is an E164 number.
- This function can be used from REQUEST_ROUTE, FAILURE_ROUTE, and
- LOCAL_ROUTE.
- Example 1.19. is_e164 usage
- ...
- if (is_164("$fU")) { # Check From header URI user part
- ...
- }
- if (is_e164("$avp(i:705)") {
- # Check stgring value stored in avp i:705
- ...
- };
- ...
- 4.11. is_uri_user_e164(pseudo-variable)
- Checks if userpart of URI stored in pseudo variable is E164 number.
- This function can be used from ANY_ROUTE.
- Example 1.20. is_uri_user_e164 usage
- ...
- if (is_uri_user_e164("$fu")) { # Check From header URI user part
- ...
- }
- if (is_uri_user_e164("$avp(i:705)") {
- # Check user part of URI stored in avp i:705
- ...
- };
- ...
- 4.12. encode_contact(encoding_prefix,hostpart)
- This function will encode uri-s inside Contact header in the following
- manner sip:username:password@ip:port;transport=protocol goes
- sip:encoding_prefix*username*ip*port*protocol@hostpart.
- * is the default separator and can be changed by setting the
- contact_flds_separator module parameter.
- Note: This function discards all of the URI parameters. Thus, none of
- the parameters (except the transport parameter which is encoded into
- the userpart) can be restored.
- The function returns negative on error, 1 on success.
- Meaning of the parameters is as follows:
- * encoding_prefix - Something to allow us to determine that a contact
- is encoded.
- * hostpart - An IP address or a hostname.
- This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
- Example 1.21. encode_contact usage
- ...
- if (src_ip == 10.0.0.0/8) encode_contact("natted_client","1.2.3.4");
- ...
- 4.13. decode_contact()
- This function will decode the request URI. If the RURI is in the format
- sip:encoding_prefix*username*ip*port*protocol@hostpart it will be
- decoded to sip:username:password@ip:port;transport=protocol It uses the
- default set parameter for contact encoding separator.
- The function returns negative on error, 1 on success.
- Meaning of the parameters is as follows:
- This function can be used from REQUEST_ROUTE.
- Example 1.22. decode_contact usage
- ...
- if (uri =~ "^sip:natted_client") { decode_contact(); }
- ...
- 4.14. decode_contact_header()
- This function will decode URIs inside Contact header. If the URI in the
- format sip:encoding_prefix*username*ip*port*protocol@hostpart it will
- be decoded to sip:username:password@ip:port;transport=protocol. It uses
- the default set parameter for contact encoding separator.
- The function returns negative on error, 1 on success.
- Meaning of the parameters is as follows:
- This function can be used from REQUEST_ROUTE, ONREPLY_ROUTE.
- Example 1.23. decode_contact_header usage
- ...
- reply_route[2] {
- ...
- decode_contact_header();
- ...
- }
- ...
- 4.15. cmp_uri(str1, str2)
- The function returns true if the two parameters matches as SIP URI.
- This function can be used from ANY_ROUTE.
- Example 1.24. cmp_uri usage
- ...
- if(cmp_uri("$ru", "sip:[email protected]"))
- {
- # do interesting stuff here
- }
- ...
- 4.16. cmp_aor(str1, str2)
- The function returns true if the two parameters matches as AoR. The
- parameters have to be SIP URIs.
- This function can be used from ANY_ROUTE.
- Example 1.25. cmp_aor usage
- ...
- if(cmp_aor("[email protected]", "sip:kamailio@$fd"))
- {
- # do interesting stuff here
- }
- ...
- 4.17. is_rpid_user_e164()
- The function checks if the SIP URI received from the database or radius
- server and will potentially be used in Remote-Party-ID header field
- contains an E164 number (+followed by up to 15 decimal digits) in its
- user part. Check fails, if no such SIP URI exists (i.e. radius server
- or database didn't provide this information).
- This function can be used from REQUEST_ROUTE.
- Example 1.26. is_rpid_user_e164 usage
- ...
- if (is_rpid_user_e164()) {
- # do something here
- };
- ...
- 4.18. append_rpid_hf()
- Appends to the message a Remote-Party-ID header that contains header
- 'Remote-Party-ID: ' followed by the saved value of the SIP URI received
- from the database or radius server followed by the value of module
- parameter radius_rpid_suffix. The function does nothing if no saved SIP
- URI exists.
- This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
- BRANCH_ROUTE.
- Example 1.27. append_rpid_hf usage
- ...
- append_rpid_hf(); # Append Remote-Party-ID header field
- ...
- 4.19. append_rpid_hf(prefix, suffix)
- This function is the same as Section 4.18, " append_rpid_hf()". The
- only difference is that it accepts two parameters--prefix and suffix to
- be added to Remote-Party-ID header field. This function ignores
- rpid_prefix and rpid_suffix parameters, instead of that allows to set
- them in every call.
- Meaning of the parameters is as follows:
- * prefix - Prefix of the Remote-Party-ID URI. The string will be
- added at the begining of body of the header field, just before the
- URI.
- * suffix - Suffix of the Remote-Party-ID header field. The string
- will be appended at the end of the header field. It can be used to
- set various URI parameters, for example.
- This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
- BRANCH_ROUTE.
- Example 1.28. append_rpid_hf(prefix, suffix) usage
- ...
- # Append Remote-Party-ID header field
- append_rpid_hf("", ";party=calling;id-type=subscriber;screen=yes");
- ...
- 4.20. is_rpid_user_e164()
- The function checks if the SIP URI received from the database or radius
- server and will potentially be used in Remote-Party-ID header field
- contains an E164 number (+followed by up to 15 decimal digits) in its
- user part. Check fails, if no such SIP URI exists (i.e. radius server
- or database didn't provide this information).
- This function can be used from REQUEST_ROUTE.
- Example 1.29. is_rpid_user_e164 usage
- ...
- if (is_rpid_user_e164()) {
- # do something here
- };
- ...
- 4.21. set_uri_user(uri, user)
- Sets userpart of SIP URI stored in writable pseudo variable 'uri' to
- value of pseudo variable 'user'.
- This function can be used from ANY_ROUTE.
- Example 1.30. set_uri_user usage
- ...
- $var(uri) = "sip:user@host";
- $var(user) = "new_user";
- set_uri_user("$var(uri)", "$var(user)");
- ...
- 4.22. set_uri_host(uri, host)
- Sets hostpart of SIP URI stored in writable pseudo variable 'uri' to
- value of pseudo variable 'host'.
- This function can be used from ANY_ROUTE.
- Example 1.31. set_uri_host usage
- ...
- $var(uri) = "sip:user@host";
- $var(host) = "new_host";
- set_uri_host("$var(uri)", "$var(host)");
- ...
- 4.23. is_request()
- Return true if the SIP message is a request.
- This function can be used from ANY_ROUTE.
- Example 1.32. is_request usage
- ...
- if (is_request()) {
- ...
- }
- ...
- 4.24. is_reply()
- Return true if the SIP message is a reply.
- This function can be used from ANY_ROUTE.
- Example 1.33. is_reply usage
- ...
- if (is_reply()) {
- ...
- }
- ...
- 4.25. is_gruu([uri])
- The function returns true if the uri is GRUU ('gr' parameter is
- present): 1 - pub-gruu; 2 - temp-gruu.
- Meaning of the parameters is as follows:
- * uri - the SIP URI to check for GRUU parameter. It is optional, when
- missing, the value of R-URI is used.
- This function can be used from ANY_ROUTE.
- Example 1.34. is_gruu() usage
- ...
- if(is_gruu()) { ... }
- ...
- 4.26. is_supported(option)
- Function returns true if given option is listed in Supported header(s)
- (if any) of the request. Currently the following options are known:
- path, 100rel, timer, eventlist, gruu, and outbound.
- This function can be used from ANY_ROUTE.
- Example 1.35. is_supported() usage
- ...
- if (is_supported("outbound")) { ... }
- ...
|