/* $Id$ */ /* * Copyright (C) 2008-2009 Teluu Inc. (http://www.teluu.com) * Copyright (C) 2003-2008 Benny Prijono * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __PJSIP_SIP_TYPES_H__ #define __PJSIP_SIP_TYPES_H__ /* * My note: Doxygen PJSIP and PJSIP_CORE group is declared in * sip_config.h */ /** * @file sip_types.h * @brief Basic PJSIP types. */ #include #include /** * @addtogroup PJSIP_BASE */ /* @defgroup PJSIP_TYPES Basic Data Types * @ingroup PJSIP_BASE * @brief Basic data types. * @{ */ /** * Forward declaration for SIP transport. */ typedef struct pjsip_transport pjsip_transport; /** * Forward declaration for transport manager. */ typedef struct pjsip_tpmgr pjsip_tpmgr; /** * Transport types. */ typedef enum pjsip_transport_type_e { /** Unspecified. */ PJSIP_TRANSPORT_UNSPECIFIED, /** UDP. */ PJSIP_TRANSPORT_UDP, /** TCP. */ PJSIP_TRANSPORT_TCP, /** TLS. */ PJSIP_TRANSPORT_TLS, /** SCTP. */ PJSIP_TRANSPORT_SCTP, /** Loopback (stream, reliable) */ PJSIP_TRANSPORT_LOOP, /** Loopback (datagram, unreliable) */ PJSIP_TRANSPORT_LOOP_DGRAM, /** Start of user defined transport */ PJSIP_TRANSPORT_START_OTHER, /** Start of IPv6 transports */ PJSIP_TRANSPORT_IPV6 = 128, /** UDP over IPv6 */ PJSIP_TRANSPORT_UDP6 = PJSIP_TRANSPORT_UDP + PJSIP_TRANSPORT_IPV6, /** TCP over IPv6 */ PJSIP_TRANSPORT_TCP6 = PJSIP_TRANSPORT_TCP + PJSIP_TRANSPORT_IPV6 } pjsip_transport_type_e; /** * Forward declaration for endpoint (sip_endpoint.h). */ typedef struct pjsip_endpoint pjsip_endpoint; /** * Forward declaration for transactions (sip_transaction.h). */ typedef struct pjsip_transaction pjsip_transaction; /** * Forward declaration for events (sip_event.h). */ typedef struct pjsip_event pjsip_event; /** * Forward declaration for transmit data/buffer (sip_transport.h). */ typedef struct pjsip_tx_data pjsip_tx_data; /** * Forward declaration for receive data/buffer (sip_transport.h). */ typedef struct pjsip_rx_data pjsip_rx_data; /** * Forward declaration for message (sip_msg.h). */ typedef struct pjsip_msg pjsip_msg; /** * Forward declaration for message body (sip_msg.h). */ typedef struct pjsip_msg_body pjsip_msg_body; /** * Forward declaration for header field (sip_msg.h). */ typedef struct pjsip_hdr pjsip_hdr; /** * Forward declaration for URI (sip_uri.h). */ typedef struct pjsip_uri pjsip_uri; /** * Forward declaration for SIP method (sip_msg.h) */ typedef struct pjsip_method pjsip_method; /** * Opaque data type for the resolver engine (sip_resolve.h). */ typedef struct pjsip_resolver_t pjsip_resolver_t; /** * Forward declaration for credential. */ typedef struct pjsip_cred_info pjsip_cred_info; /** * Forward declaration for module (sip_module.h). */ typedef struct pjsip_module pjsip_module; /** * Forward declaration for user agent type (sip_ua_layer.h). */ typedef pjsip_module pjsip_user_agent; /** * Forward declaration for dialog (sip_dialog.h). */ typedef struct pjsip_dialog pjsip_dialog; /** * Transaction role. */ typedef enum pjsip_role_e { PJSIP_ROLE_UAC, /**< Role is UAC. */ PJSIP_ROLE_UAS, /**< Role is UAS. */ /* Alias: */ PJSIP_UAC_ROLE = PJSIP_ROLE_UAC, /**< Role is UAC. */ PJSIP_UAS_ROLE = PJSIP_ROLE_UAS /**< Role is UAS. */ } pjsip_role_e; /** * General purpose buffer. */ typedef struct pjsip_buffer { /** The start of the buffer. */ char *start; /** Pointer to current end of the buffer, which also indicates the position of subsequent buffer write. */ char *cur; /** The absolute end of the buffer. */ char *end; } pjsip_buffer; /** * General host:port pair, used for example as Via sent-by. */ typedef struct pjsip_host_port { pj_str_t host; /**< Host part or IP address. */ int port; /**< Port number. */ } pjsip_host_port; /** * Host information. */ typedef struct pjsip_host_info { unsigned flag; /**< Flags of pjsip_transport_flags_e. */ pjsip_transport_type_e type; /**< Transport type. */ pjsip_host_port addr; /**< Address information. */ } pjsip_host_info; /** * Convert exception ID into pj_status_t status. * * @param exception_id Exception Id. * * @return Error code for the specified exception Id. */ PJ_DECL(pj_status_t) pjsip_exception_to_status(int exception_id); /** * Return standard pj_status_t status from current exception. */ #define PJSIP_RETURN_EXCEPTION() pjsip_exception_to_status(PJ_GET_EXCEPTION()) /** * Attributes to inform that the function may throw exceptions. */ #define PJSIP_THROW_SPEC(list) /** * @} */ #endif /* __PJSIP_SIP_TYPES_H__ */