Its syntax defined in RFC 3261 as follows:
Request-Line = Method SP Request-URI SP SIP-Version CRLF Request-URI = SIP-URI / SIPS-URI / absoluteURI absoluteURI = scheme ":" ( hier-part / opaque-part ) hier-part = ( net-path / abs-path ) [ "?" query ] net-path = "//" authority [ abs-path ] abs-path = "/" path-segments opaque-part = uric-no-slash *uric uric = reserved / unreserved / escaped uric-no-slash = unreserved / escaped / ";" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / "," path-segments = segment *( "/" segment ) segment = *pchar *( ";" param ) param = *pchar pchar = unreserved / escaped / ":" / "@" / "&" / "=" / "+" / "$" / "," scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) authority = srvr / reg-name srvr = [ [ userinfo "@" ] hostport ] reg-name = 1*( unreserved / escaped / "$" / "," / ";" / ":" / "@" / "&" / "=" / "+" ) query = *uric SIP-Version = "SIP" "/" 1*DIGIT "." 1*DIGIT
The parsed request-line is stored in sip_request_t structure.
Data Structures | |
| struct | sip_request_s |
| Structure for SIP request line. More... | |
Defines | |
| #define | sip_request(sip) |
| Access a SIP request line structure sip_request_t from sip_t. | |
| #define | SIP_REQUEST_INIT() |
| Initializer for structure sip_request_t. | |
| #define | SIPTAG_REQUEST(x) |
| Tag list item for pointer to a request line structure sip_request_t. | |
| #define | SIPTAG_REQUEST_REF(x) |
| Tag list item for reference to a request line pointer. | |
| #define | SIPTAG_REQUEST_STR(s) |
| Tag list item for string with request line value. | |
| #define | SIPTAG_REQUEST_STR_REF(x) |
| Tag list item for reference to a request line string. | |
Typedefs | |
| typedef sip_request_s | sip_request_t |
| The structure sip_request_t contains representation of SIP request line. | |
Functions | |
| issize_t | sip_request_d (su_home_t *, msg_header_t *, char *s, isize_t slen) |
| Parse a SIP request line. | |
| issize_t | sip_request_e (char b[], isize_t bsiz, msg_header_t const *h, int flags) |
| Print a SIP request line. | |
| sip_request_t * | sip_request_init (sip_request_t x[1]) |
| Initialize a structure sip_request_t. | |
| int | sip_is_request (sip_header_t const *header) |
| Test if header object is instance of sip_request_t. | |
| sip_request_t * | sip_request_dup (su_home_t *home, sip_request_t const *hdr)) |
| Duplicate a list of request line header structures sip_request_t. | |
| sip_request_t * | sip_request_copy (su_home_t *home, sip_request_t const *hdr)) |
| Copy a list of request line header structures sip_request_t. | |
| sip_request_t * | sip_request_make (su_home_t *home, char const *s)) |
| Make a request line structure sip_request_t. | |
| sip_request_t * | sip_request_format (su_home_t *home, char const *fmt,...))) |
| Make a request line from formatting result. | |
| sip_request_t * | sip_request_create (su_home_t *home, sip_method_t method, char const *name, url_string_t const *uri, char const *version) |
| Create a request line object. | |
Variables | |
| msg_hclass_t | sip_request_class [] |
| Header class for request line. | |
| tag_typedef_t | siptag_request |
| Tag for request line object. | |
| tag_typedef_t | siptag_request_str |
| Tag for string with request line value. | |
|
|
Initializer for structure sip_request_t. A static sip_request_t structure for request line must be initialized with the SIP_REQUEST_INIT() macro. For instance, |
|
|
Tag list item for pointer to a request line structure sip_request_t. The SIPTAG_REQUEST() macro is used to include a tag item with a pointer to a sip_request_t structure in a tag list.
|
|
|
Tag list item for string with request line value. The SIPTAG_REQUEST_STR() macro is used to include a tag item with a string containing value of a sip_request_t header in a tag list.
The corresponding tag taking reference parameter is SIPTAG_REQUEST_STR_REF(). |
|
|
The structure sip_request_t contains representation of SIP request line. The sip_request_t is defined as follows: typedef struct sip_request_s { sip_common_t rq_common[1]; // Common fragment info sip_unknown_t *rq_next; // Link to next (dummy) sip_method_t rq_method; // Method enum char const *rq_method_name; // Method name url_t rq_url[1]; // RequestURI char const *rq_version; // Protocol version } sip_request_t; |
|
|
Test if header object is instance of sip_request_t. Check if the header class is an instance of request line object and return true (nonzero), otherwise return false (zero).
|
|
||||||||||||
|
Copy a list of request line header structures sip_request_t.
The function sip_request_copy() copies a header structure hdr. If the header structure hdr contains a reference (
|
|
||||||||||||||||||||||||
|
Create a request line object. Create a request line object with method enum method, method name name, request URI uri, and protocol version version. The memory for the header object is allocated from the memory home home.
|
|
||||||||||||
|
Duplicate a list of request line header structures sip_request_t.
Duplicate a header structure hdr. If the header structure hdr contains a reference (
|
|
||||||||||||||||
|
Make a request line from formatting result. Make a new sip_request_t object using formatting result as its value. The function first prints the arguments according to the format fmt specified. Then it allocates a new header structure, and parses the formatting result to the structure sip_request_t.
|
|
|
Initialize a structure sip_request_t. An sip_request_t structure for request line can be initialized with the sip_request_init() function/macro. For instance, |
|
||||||||||||
|
Make a request line structure sip_request_t. The function sip_request_make() makes a new sip_request_t header structure. It allocates a new header structure, and decodes the string s as the value of the structure.
|
|
|
Header class for request line. The header class sip_request_class defines how a SIP request line is parsed and printed. It also contains methods used by SIP parser and other functions to manipulate the sip_request_t header structure. |