76 #define sip_is_sip(sip) ((sip) && (sip)->sip_ident == SIP_PROTOCOL_TAG)
79 #define SIP_HDR_INIT(name) {{{ 0, 0, sip_##name##_class }}}
82 #define SIP_HEADER_INIT(h, sip_class, size) \
83 ((void)memset((h), 0, (size)), \
84 (void)(((sip_common_t *)(h))->h_class = (sip_class)), \
109 void const *extra, va_list headers);
135 #define sip_fragment_clear(a) ((a)->h_data = NULL, (a)->h_len = 0)
138 #if !defined(__GNUC__) && !defined(__attribute__)
139 #define __attribute__(x)
147 __attribute__((__format__ (printf, 3, 4)));
152 SOFIAPUBVAR
char const sip_method_name_ack[];
153 SOFIAPUBVAR
char const sip_method_name_bye[];
154 SOFIAPUBVAR
char const sip_method_name_cancel[];
155 SOFIAPUBVAR
char const sip_method_name_invite[];
156 SOFIAPUBVAR
char const sip_method_name_options[];
157 SOFIAPUBVAR
char const sip_method_name_register[];
158 SOFIAPUBVAR
char const sip_method_name_info[];
159 SOFIAPUBVAR
char const sip_method_name_prack[];
160 SOFIAPUBVAR
char const sip_method_name_comet[];
161 SOFIAPUBVAR
char const sip_method_name_message[];
162 SOFIAPUBVAR
char const sip_method_name_subscribe[];
163 SOFIAPUBVAR
char const sip_method_name_notify[];
164 SOFIAPUBVAR
char const sip_method_name_refer[];
167 SOFIAPUBVAR
char const sip_transport_udp[];
169 SOFIAPUBVAR
char const sip_transport_tcp[];
171 SOFIAPUBVAR
char const sip_transport_sctp[];
173 SOFIAPUBVAR
char const sip_transport_tls[];
175 SOFIAPUBVAR
char const sip_transport_ws[];
177 SOFIAPUBVAR
char const sip_transport_wss[];
181 #define SIP_VERSION_CURRENT sip_version_2_0
187 #define SIP_PORT(s) ((s) ? (s) : "5060")
190 #define SIPS_PORT(s) ((s) ? (s) : "5061")
200 #define SIP_METHOD_NAME(method, name) \
201 ((method) == sip_method_unknown ? (name) : sip_method_name(method, name))
203 #define sip_header_make(h, c, s) \
204 ((sip_header_t *)msg_header_make((h), (c), (s)))
205 #define sip_header_vformat(h, c, f, a) \
206 ((sip_header_t *)msg_header_vformat((h), (c), (f), (a)))
219 char const *version);
226 char const *version);
234 unsigned method,
char const *name);
283 char const *transport,
293 tp = strchr(tp,
'/');
295 tp = strchr(tp + 1,
'/');
328 #define SIP_PAYLOAD_INIT2(data, length) \
329 {{{ 0, 0, sip_payload_class, data, length }}, NULL, data, length }
369 #define SIP_IS_ALLOWED(allow, method) \
370 (sip_method_unknown < (method) && (method) < 32 && \
371 (allow) && ((allow)->k_bitmap & (1 << (method))) != 0)
520 #define sip_from_make_url sip_from_create
521 #define sip_to_make_url sip_to_create
522 #define sip_params_find msg_params_find
sip_call_id_t * sip_call_id_create(su_home_t *home, char const *domain)
Create a Call-ID header object.
Definition: sip_basic.c:1124
sip_content_length_t * sip_content_length_create(su_home_t *, uint32_t n)
Create a Content-Length header object.
Definition: sip_basic.c:1570
sip_cseq_t * sip_cseq_create(su_home_t *, uint32_t seq, unsigned method, char const *name)
Create a CSeq header object.
Definition: sip_basic.c:1281
sip_date_t * sip_date_create(su_home_t *, sip_time_t t)
Create an Date header object.
Definition: sip_basic.c:1656
sip_time_t sip_contact_expires(sip_contact_t const *m, sip_expires_t const *ex, sip_date_t const *date, sip_time_t def, sip_time_t now)
Calculate expiration time of a Contact header.
Definition: sip_time.c:72
sip_expires_t * sip_expires_create(su_home_t *, sip_time_t delta)
Create an Expires header object.
Definition: sip_basic.c:1740
int sip_from_tag(su_home_t *, sip_from_t *from, char const *tag)
Add a tag to a From header.
Definition: sip_basic.c:1860
sip_from_t * sip_from_create(su_home_t *, url_string_t const *url)
Create a From header object.
Definition: sip_basic.c:1819
int sip_from_add_param(su_home_t *, sip_from_t *, char const *)
Add a parameter to an sip_from_t object.
Definition: sip_basic.c:1837
sip_payload_t * sip_payload_create(su_home_t *, void const *data, isize_t len)
Create a SIP payload structure.
Definition: sip_basic.c:452
sip_record_route_t * sip_record_route_create(su_home_t *, url_t const *rq_url, url_t const *m_url)
Create a Record-Route header object.
Definition: sip_basic.c:2368
sip_request_t * sip_request_create(su_home_t *home, sip_method_t method, const char *name, url_string_t const *url, char const *version)
Create a request line object.
Definition: sip_basic.c:208
sip_route_t * sip_route_create(su_home_t *home, url_t const *url, url_t const *maddr)
Create a Route header object.
Definition: sip_basic.c:2293
sip_separator_t * sip_separator_create(su_home_t *home)
Create a SIP separator line structure.
Definition: sip_basic.c:514
sip_status_t * sip_status_create(su_home_t *home, unsigned status, char const *phrase, char const *version)
Create a status line object.
Definition: sip_basic.c:377
sip_to_t * sip_to_create(su_home_t *, url_string_t const *url)
Create a To header object.
Definition: sip_basic.c:2438
int sip_to_add_param(su_home_t *, sip_to_t *, char const *)
Add a parameter to a sip_to_t object.
Definition: sip_basic.c:2458
sip_via_t * sip_via_create(su_home_t *h, char const *host, char const *port, char const *transport,...)
Create a Via object.
Definition: sip_basic.c:2719
char const * sip_via_port(sip_via_t const *v, int *using_rport)
Get port number corresponding to a Via line.
Definition: sip_basic.c:2768
int sip_via_add_param(su_home_t *, sip_via_t *, char const *)
Add a parameter to a Via header object.
Definition: sip_basic.c:2693
struct msg_hclass_s const msg_hclass_t
msg_time_t sip_time_t
Time in seconds since Jan 01 1900.
Definition: sip.h:113
union sip_header_u sip_header_t
Any SIP header - union of all possible SIP headers.
Definition: sip.h:122
sip_method_t
IDs for well-known SIP methods.
Definition: sip.h:48
SIP prototypes and macros for each header.
Structure for From and To headers.
Definition: sip.h:394
Structure for Allow header field.
Definition: sip.h:427
Structure for Call-ID (and In-Reply-To) header fields.
Definition: sip.h:450
Structure for Content-Length header.
Definition: sip.h:516
Structure for CSeq header.
Definition: sip.h:473
Structure for Date header.
Definition: sip.h:541
Structure for Expires header.
Definition: sip.h:574
Structure for SIP request line.
Definition: sip.h:369
Structure for Route and Record-Route header fields.
Definition: sip.h:708
SIP message object.
Definition: sip.h:241
Structure for SIP status line.
Definition: sip.h:382
Structure for Via header field.
Definition: sip.h:780
char const * v_protocol
Application and transport protocol.
Definition: sip.h:783
struct tag_type_s const * tag_type_t