56 lines
2.2 KiB
C++
56 lines
2.2 KiB
C++
#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_ */
|