You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.2KB

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