#include <sofia-sip/string0.h>
#include <sofia-sip/sip.h>
Include dependency graph for sip_util.h:
Go to the source code of this file.
Data Structures | |
union | sip_pref |
Possible values for SIP media tags. More... | |
struct | sip_pref::sp_literal |
Literal (tag="foo"). More... | |
struct | sip_pref::sp_string |
String (tag="<foo>"). More... | |
struct | sip_pref::sp_range |
Numeric value or range (tag="#=1"; tag="#<=3"; tag="#>=-2"; tag="#1:6"). More... | |
Defines | |
#define | SIP_STRLOG(prefix, s) |
Add optional prefix and string to argument list if s is non-NULL. | |
Enumerations | |
enum | sp_type |
Type of the SIP media tag. | |
Functions | |
SOFIAPUBFUN sip_contact_t * | sip_contact_create_from_via_with_transport (su_home_t *home, sip_via_t const *v, char const *user, char const *transport) |
Convert a Via header to Contact header. | |
SOFIAPUBFUN sip_contact_t * | sip_contact_create_from_via (su_home_t *, sip_via_t const *, char const *user) |
Convert a Via header to Contact header. | |
SOFIAPUBFUN char * | sip_contact_string_from_via (su_home_t *home, sip_via_t const *v, char const *user, char const *transport) |
Convert a Via header to Contact URL string. | |
SOFIAPUBFUN int | sip_transport_has_tls (char const *transport_name) |
Check if tranport name refers to TLS. | |
SOFIAPUBFUN int | sip_response_terminates_dialog (int response_code, sip_method_t method, int *return_graceful_terminate) |
Checks if the response with given response code terminates dialog or dialog usage. | |
SOFIAPUBFUN int | sip_sanity_check (sip_t const *sip) |
Perform sanity check on a SIP message. | |
SOFIAPUBFUN unsigned | sip_q_value (char const *q) |
Calculate Q value. | |
SOFIAPUBFUN url_t * | sip_url_dup (su_home_t *sh, url_t const *o) |
Duplicate a url or make a url out of string. | |
SOFIAPUBFUN int | sip_addr_match (sip_addr_t const *a, sip_addr_t const *b) |
Compare two SIP addresses (From or To headers). | |
SOFIAPUBFUN int | sip_route_is_loose (sip_route_t const *r) |
Check if route header has lr param. | |
SOFIAPUBFUN sip_route_t * | sip_route_remove (msg_t *msg, sip_t *sip) |
Get first route header and remove it from its fragment chain. | |
SOFIAPUBFUN sip_route_t * | sip_route_pop (msg_t *msg, sip_t *sip) |
Get last route header and remove it from its fragment chain. | |
SOFIAPUBFUN sip_route_t * | sip_route_follow (msg_t *msg, sip_t *sip) |
Get first route header and rewrite the RequestURI. | |
SOFIAPUBFUN sip_route_t * | sip_route_reverse (su_home_t *, sip_route_t const *) |
Reverse a Route header. | |
SOFIAPUBFUN sip_route_t * | sip_route_fixdup (su_home_t *, sip_route_t const *) |
Fix and duplicate a Route header. | |
SOFIAPUBFUN sip_route_t * | sip_route_fix (sip_route_t *route) |
Fix Route header. | |
SOFIAPUBFUN sip_route_t * | sip_route_fixdup_as (su_home_t *, msg_hclass_t const *, sip_route_t const *) |
Fix and duplicate a route header (Route, Record-Route, Path, Service-Route). | |
SOFIAPUBFUN sip_route_t * | sip_route_reverse_as (su_home_t *, msg_hclass_t const *, sip_route_t const *) |
Reverse a route header (Route, Record-Route, Path, Service-Route). | |
SOFIAPUBFUN sip_via_t * | sip_via_remove (msg_t *msg, sip_t *sip) |
Get first via header and remove it from its fragment chain. | |
SOFIAPUBFUN int | sip_prefs_matching (char const *pvalue, char const *nvalue, int *return_parse_error) |
Check callerprefs. | |
SOFIAPUBFUN int | sip_is_callerpref (char const *param) |
Check if the parameter is a valid feature tag. | |
SOFIAPUBFUN int | sip_prefs_parse (union sip_pref *sp, char const **in_out_s, int *return_negation) |
Parse a single preference. | |
SOFIAPUBFUN int | sip_prefs_match (union sip_pref const *, union sip_pref const *) |
Match preferences. | |
SOFIAPUBFUN sip_contact_t * | sip_contact_immunize (su_home_t *home, sip_contact_t const *m) |
Immunize Contact is to callerprefs. | |
SOFIAPUBFUN int | sip_contact_reject (sip_contact_t const *m, sip_reject_contact_t const *rc) |
Check if Contact can be rejected by Reject-Contact. | |
SOFIAPUBFUN int | sip_contact_accept (sip_contact_t const *m, sip_accept_contact_t const *cp, unsigned *return_S, unsigned *return_N, int *return_error) |
Check if Contact matches by Accept-Contact. | |
SOFIAPUBFUN int | sip_contact_score (sip_contact_t const *m, sip_accept_contact_t const *ac, sip_reject_contact_t const *rc) |
Calculate score for contact. | |
SOFIAPUBFUN int | sip_aor_strip (url_t *url) |
Remove extra parameters from an AOR URL. | |
SOFIAPUBFUN sip_security_client_t const * | sip_security_client_select (sip_security_client_t const *client, sip_security_server_t const *server) |
Select best mechanism from Security-Client header. |
SOFIAPUBFUN int sip_addr_match | ( | sip_addr_t const * | a, | |
sip_addr_t const * | b | |||
) |
Compare two SIP addresses (From or To headers).
nonzero | if matching. | |
zero | if not matching. |
SOFIAPUBFUN int sip_aor_strip | ( | url_t * | url | ) |
Remove extra parameters from an AOR URL.
The extra parameters listed in the RFC 3261 table 1 include port number, method, maddr, ttl, transport, lr and headers.
0 | when successful | |
-1 | upon an error |
SOFIAPUBFUN int sip_contact_accept | ( | sip_contact_t const * | m, | |
sip_accept_contact_t const * | cp, | |||
unsigned * | return_S, | |||
unsigned * | return_N, | |||
int * | return_error | |||
) |
Check if Contact matches by Accept-Contact.
1 | if successful | |
0 | if an error occurs |
SOFIAPUBFUN sip_contact_t* sip_contact_create_from_via | ( | su_home_t * | home, | |
sip_via_t const * | v, | |||
char const * | user | |||
) |
Convert a Via header to Contact header.
The Contact URI will contain the port number if needed. If transport protocol name starts with "TLS", "SIPS:" URI schema is used. Transport parameter is included in the URI unless the transport protocol is UDP.
home | memory home | |
v | Via header field structure (with <sent-protocol> and <sent-by> parameters) | |
user | username for Contact URI (may be NULL) |
contact | header structure | |
NULL | upon an error |
SOFIAPUBFUN sip_contact_t* sip_contact_create_from_via_with_transport | ( | su_home_t * | home, | |
sip_via_t const * | v, | |||
char const * | user, | |||
char const * | transport | |||
) |
Convert a Via header to Contact header.
The Contact URI will contain the port number and transport parameters if needed. If transport protocol name starts with "TLS", "SIPS:" URI schema is used.
home | memory home | |
v | Via header field structure (with <sent-by> parameter containing host and port) | |
user | username for Contact URI (may be NULL) | |
transport | transport name for Contact URI (may be NULL) |
contact | header structure | |
NULL | upon an error |
SOFIAPUBFUN char* sip_contact_string_from_via | ( | su_home_t * | home, | |
sip_via_t const * | v, | |||
char const * | user, | |||
char const * | transport | |||
) |
Convert a Via header to Contact URL string.
The Contact URI will contain the port number and transport parameters if needed. If transport protocol name starts with "TLS", "SIPS:" URI schema is used.
The contact URI string returned will always have angle brackets ("<" and ">") around it.
home | memory home | |
v | Via header field structure (with <sent-by> parameter containing host and port) | |
user | username for Contact URI (may be NULL) | |
transport | transport name for Contact URI (may be NULL) |
string | containing Contact URI with angle brackets | |
NULL | upon an error |
SOFIAPUBFUN int sip_prefs_matching | ( | char const * | pvalue, | |
char const * | nvalue, | |||
int * | return_parse_error | |||
) |
Check callerprefs.
The function sip_prefs_matching() checks if the given feature values match with each other.
pvalue | first feature parameter | |
nvalue | second feature parameter | |
return_parse_error | return-value parameter for error (may be NULL) |
SOFIAPUBFUN unsigned sip_q_value | ( | char const * | q | ) |
Calculate Q value.
The function sip_q_value() converts q-value string q to numeric value in range (0..1000). Q values are used, for instance, to describe relative priorities of registered contacts.
q | q-value string ("1" | "." 1,3DIGIT) |
SOFIAPUBFUN int sip_response_terminates_dialog | ( | int | response_code, | |
sip_method_t | method, | |||
int * | return_graceful_terminate_usage | |||
) |
Checks if the response with given response code terminates dialog or dialog usage.
1 if the response terminates the dialog usage.
0 if the response does not terminate dialog or dialog usage.
The *return_graceful_terminate_usage is set to 1, if application should gracefully terminate its dialog usage. It is set to 0, if no graceful terminate is required. If it is up to application policy to decide whether to gracefully terminate or not, the *return_graceful_terminate_usage is left unmodified.
OPEN ISSUE: There has been some list discussion indicating a need for a response code that only terminates the usage, but not the dialog (Motivation: being able to destroy a subscription by refusing a NOTIFY without destroying the dialog that that subscription exists in, particularly when the susbcription exists because of an in-dialog REFER).
If the response contains a Retry-After header field value, the user is indicating willingness to communicate later and the request can be retried after the indicated interval. This usage, and any other usages sharing the dialog are unaffected. If the response does not contain a Retry-After header field value, the UA may decide to retry after an interval of its choosing or attempt to gracefully terminate the usage. Whether or not to terminate other usages depends on the application. If the UA receives a 600 (or unrecognized 6xx) in response to an attempt to gracefully terminate this usage, it can treat this usage as terminated. If this is the last usage sharing the dialog, the dialog is also terminated.
SOFIAPUBFUN int sip_sanity_check | ( | sip_t const * | sip | ) |
Perform sanity check on a SIP message.
Check that the SIP message has all the mandatory fields.
sip | SIP message to be checked |
SOFIAPUBFUN sip_security_client_t const* sip_security_client_select | ( | sip_security_client_t const * | client, | |
sip_security_server_t const * | server | |||
) |
Select best mechanism from Security-Client header.
SOFIAPUBFUN url_t* sip_url_dup | ( | su_home_t * | home, | |
url_t const * | o | |||
) |