#ifndef _sip_transport_h_ #define _sip_transport_h_ #if defined(__cplusplus) extern "C" { #endif // 19.1.1 SIP and SIPS URI Components (p152) // The default port value is transport and scheme dependent. The // default is 5060 for sip: using UDP, TCP, or SCTP. The default is // 5061 for sip: using TLS over TCP and sips: over TCP. #define SIP_PORT 5060 // 8.1.1.6 Max-Forwards (p39) #define DEFAULT_MAX_FORWARS 70 // 17.1.1.1 Overview of INVITE Transaction (p125) // T1 is an estimate of the round-trip time (RTT), and it defaults to 500 ms. #define DEFAULT_RTT 500 // 500ms #define T1 DEFAULT_RTT // RTT Estimate #define T2 (4 * 1000) // 4s, The maximum retransmit interval for non-INVITE requests and INVITE responses #define T4 (5 * 1000) // 5s, Maximum duration a message will remain in the network // A Table of Timer Values (p265) #define TIMER_A T1 // INVITE request retransmit interval, for UDP only #define TIMER_B (64 * T1) // INVITE transaction timeout timer #define TIMER_C (3 * 60 * 1000) // >3min, proxy INVITE transaction timeout #define TIMER_D (32 * 1000) // >32s, Wait time for response retransmits #define TIMER_E T1 // non-INVITE request retransmit interval, UDP only #define TIMER_F (64 * T1) // non-INVITE transaction timeout timer #define TIMER_G T1 // INVITE response retransmit interval #define TIMER_H (64 * T1) // Wait time for ACK receipt #define TIMER_I T4 // Wait time for ACK retransmits #define TIMER_J (64 * T1) // Wait time for non-INVITE request retransmits #define TIMER_K T4 // Wait time for response retransmits #define TIMER_L (64 * T1) // INVITE server accepted #define TIMER_M (64 * T1) // INVITE client accepted struct sip_transport_t { /// @param[in] destination remote host/addr /// @param[out] protocol UDP/TCP/TLS/SCTP /// @param[out] local local address, IPv4/IPv6 with port /// @param[out] dns local host dns(with port && with via maddr, ttl, and sent-by parameters) /// @return 0-ok, other-error int (*via)(void* transport, const char* destination, char protocol[16], char local[128], char dns[128]); /// @return 0-ok, other-error int (*send)(void* transport, const void* data, size_t bytes); }; #if defined(__cplusplus) } #endif #endif /* !_sip_transport_h_ */