40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * CDDL HEADER START
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * The contents of this file are subject to the terms of the
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * Common Development and Distribution License (the "License").
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * You may not use this file except in compliance with the License.
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * See the License for the specific language governing permissions
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * and limitations under the License.
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * When distributing Covered Code, include this CDDL HEADER in each
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * If applicable, add the following below this CDDL HEADER, with the
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * fields enclosed by brackets "[]" replaced with your own identifying
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * information: Portions Copyright [yyyy] [name of copyright owner]
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * CDDL HEADER END
2c2c41837e330b002c4220a39638150db504fe0evi * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * Use is subject to license terms.
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#pragma ident "%Z%%M% %I% %E% SMI"
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern "C" {
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int mutex_held();
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern sip_header_function_t *sip_header_function_table_external;
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Compare Cseq numbers */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* List of registered sent-by values */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi /* active/deleted or has deleted val */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi /* True if header was allocated */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Structure for the SIP message body */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* General definitions */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Two string values */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* An integer and a string value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Warn value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Date value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Authorization and authentication value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* RACK value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Cseq value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Value for Contact, From and To header */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* SIP name/version/transport value in Via */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Via value */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi * NOTE: ALL value structs MUST have sip_value_t as the first field.
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_value_parsed_uri sip_value.sip_value_parse_uri
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define via_protocol_name hdr_value.via.sent_protocol.name
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define via_protocol_vers hdr_value.via.sent_protocol.version
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define via_protocol_transport hdr_value.via.sent_protocol.transport
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* hdr value contains two string */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* hdr value contains one string only */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* hdr value contain one int only */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* hdr value contain one int, two strings */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* hdr field value is a list of param=param_val */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* SIP request line structure */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* SIP response line structure */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* SIP message type - request or response */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi /* This is to save old value when we use a recvd message. */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Increment reference count on SIP message */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi (void) pthread_mutex_unlock(&(sip_msg)->sip_msg_mutex); \
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Decrement reference count on SIP message */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi } else { \
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi (void) pthread_mutex_unlock(&(sip_msg)->sip_msg_mutex); \
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* SIP message structure */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi /* All fields synchronizes on this */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi /* doubly linked list of headers */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern char *sip_get_tcp_msg(sip_conn_object_t, char *, size_t *);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern char *sip_msg_to_msgbuf(_sip_msg_t *msg, int *error);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern char *_sip_startline_to_str(_sip_msg_t *sip_msg, int *error);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern _sip_header_t *sip_dup_header(_sip_header_t *from);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int _sip_copy_header(_sip_msg_t *, _sip_header_t *, char *,
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int _sip_find_and_copy_header(_sip_msg_t *, _sip_msg_t *,
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi char *, char *, boolean_t);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern _sip_header_t *sip_search_for_header(_sip_msg_t *, char *,
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern void _sip_add_header(_sip_msg_t *, _sip_header_t *,
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int sip_create_nonOKack(sip_msg_t, sip_msg_t, sip_msg_t);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int sip_parse_contentencode_header(_sip_header_t *,
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int sip_parse_rseq(_sip_header_t *, sip_parsed_header_t **);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern int sip_parse_rack(_sip_header_t *, sip_parsed_header_t **);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331viextern sip_param_t *sip_get_param_from_list(sip_param_t *, char *);
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi/* Useful access macros */
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_resp_phrase_len U.sip_response.sip_response_phrase.sip_str_len
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_resp_phrase_ptr U.sip_response.sip_response_phrase.sip_str_ptr
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_resp_phrase U.sip_response.sip_response_phrase
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_req_uri_ptr U.sip_request.sip_request_uri.sip_str_ptr
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_req_uri_len U.sip_request.sip_request_uri.sip_str_ptr
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#define sip_header_parse sip_header_functions->header_parse_func
40cb5e5daa7b80bb70fcf8dadfb20f9281566331vi#endif /* _SIP_MSG_H */