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.
302 lines
14 KiB
302 lines
14 KiB
//
|
|
// SIP Definitions
|
|
//
|
|
// This file contains SIP definitions, named constants, enumerated types, and data structures.
|
|
// See RFC 2543 for more information.
|
|
//
|
|
// This file should never contain any implementation-specific information, including
|
|
// function prototypes or C++ classes.
|
|
//
|
|
|
|
|
|
#ifndef __sipdef_h
|
|
#define __sipdef_h
|
|
|
|
|
|
//
|
|
// Versions
|
|
//
|
|
|
|
#define SIP_VERSION_2_0_TEXT "SIP/2.0"
|
|
|
|
|
|
// Used for User-Agent header
|
|
#define SIP_USER_AGENT_TEXT "Windows RTC/1.0"
|
|
// Used for Content-Type header
|
|
#define SIP_CONTENT_TYPE_SDP_TEXT "application/sdp"
|
|
#define SIP_CONTENT_TYPE_SDP_MEDIA_TYPE "application"
|
|
#define SIP_CONTENT_TYPE_SDP_MEDIA_SUBTYPE "sdp"
|
|
#define SIP_CONTENT_TYPE_MSGTEXT_TEXT "text/plain"
|
|
#define SIP_CONTENT_TYPE_MSGTEXT_MEDIA_TYPE "text"
|
|
#define SIP_CONTENT_TYPE_MSGTEXT_MEDIA_SUBTYPE "plain"
|
|
#define SIP_CONTENT_TYPE_TEXTREG_TEXT "text/registration-event"
|
|
#define SIP_CONTENT_TYPE_TEXTREG_MEDIA_TYPE "text"
|
|
#define SIP_CONTENT_TYPE_TEXTREG_MEDIA_SUBTYPE "registration-event"
|
|
#define SIP_CONTENT_TYPE_MSGXML_TEXT "application/xml"
|
|
#define SIP_CONTENT_TYPE_MSGXPIDF_TEXT "application/xpidf+xml"
|
|
#define SIP_CONTENT_TYPE_MSGXML_MEDIA_TYPE "application"
|
|
#define SIP_CONTENT_TYPE_MSGXML_MEDIA_SUBTYPE "xml"
|
|
#define SIP_CONTENT_TYPE_XPIDF_MEDIA_TYPE "application"
|
|
#define SIP_CONTENT_TYPE_XPIDF_MEDIA_SUBTYPE "xpidf+xml"
|
|
|
|
//
|
|
// Status Codes
|
|
//
|
|
// Status codes are similar to HTTP.
|
|
//
|
|
// 1xx Informational: Request received, continuing to process the request.
|
|
// 2xx Success: The action was successfully received, understood, and accepted.
|
|
// 3xx Redirection: Further action needs to be taken in order to complete the request.
|
|
// 4xx Client Error: The request contains bad syntax or cannot be fulfilled at this server.
|
|
// 5xx Server Error: The server failed to fulfill an apparently valid request.
|
|
// 6xx Global Failure: The request cannot be fulfilled at any server.
|
|
//
|
|
|
|
#define SIP_STATUS_CLASS_INFO 1
|
|
#define SIP_STATUS_CLASS_SUCCESS 2
|
|
#define SIP_STATUS_CLASS_REDIRECT 3
|
|
#define SIP_STATUS_CLASS_CLIENT 4
|
|
#define SIP_STATUS_CLASS_SERVER 5
|
|
#define SIP_STATUS_CLASS_GLOBAL 6
|
|
|
|
#define SIP_STATUS_INFO_TRYING 100
|
|
#define SIP_STATUS_INFO_RINGING 180
|
|
#define SIP_STATUS_INFO_CALL_FORWARDING 181
|
|
#define SIP_STATUS_INFO_QUEUED 182
|
|
#define SIP_STATUS_SESSION_PROGRESS 183
|
|
|
|
#define SIP_STATUS_SUCCESS 200
|
|
|
|
#define SIP_STATUS_REDIRECT_MULTIPLE_CHOICES 300
|
|
#define SIP_STATUS_REDIRECT_MOVED_PERMANENTLY 301
|
|
#define SIP_STATUS_REDIRECT_MOVED_TEMPORARILY 302
|
|
#define SIP_STATUS_REDIRECT_SEE_OTHER 303
|
|
#define SIP_STATUS_REDIRECT_USE_PROXY 305
|
|
#define SIP_STATUS_REDIRECT_ALTERNATIVE_SERVICE 380
|
|
|
|
#define SIP_STATUS_CLIENT_BAD_REQUEST 400
|
|
#define SIP_STATUS_CLIENT_UNAUTHORIZED 401
|
|
#define SIP_STATUS_CLIENT_PAYMENT_REQUIRED 402
|
|
#define SIP_STATUS_CLIENT_FORBIDDEN 403
|
|
#define SIP_STATUS_CLIENT_NOT_FOUND 404
|
|
#define SIP_STATUS_CLIENT_METHOD_NOT_ALLOWED 405
|
|
#define SIP_STATUS_CLIENT_NOT_ACCEPTABLE 406
|
|
#define SIP_STATUS_CLIENT_PROXY_AUTHENTICATION_REQUIRED 407
|
|
#define SIP_STATUS_CLIENT_REQUEST_TIMEOUT 408
|
|
#define SIP_STATUS_CLIENT_CONFLICT 409
|
|
#define SIP_STATUS_CLIENT_GONE 410
|
|
#define SIP_STATUS_CLIENT_LENGTH_REQUIRED 411
|
|
#define SIP_STATUS_CLIENT_REQUEST_ENTITY_TOO_LARGE 413
|
|
#define SIP_STATUS_CLIENT_REQUEST_URI_TOO_LARGE 414
|
|
#define SIP_STATUS_CLIENT_UNSUPPORTED_MEDIA_TYPE 415
|
|
#define SIP_STATUS_CLIENT_BAD_EXTENSION 420
|
|
#define SIP_STATUS_CLIENT_TEMPORARILY_NOT_AVAILABLE 480
|
|
#define SIP_STATUS_CLIENT_TRANSACTION_DOES_NOT_EXIST 481
|
|
#define SIP_STATUS_CLIENT_LOOP_DETECTED 482
|
|
#define SIP_STATUS_CLIENT_TOO_MANY_HOPS 483
|
|
#define SIP_STATUS_CLIENT_ADDRESS_INCOMPLETE 484
|
|
#define SIP_STATUS_CLIENT_AMBIGUOUS 485
|
|
#define SIP_STATUS_CLIENT_BUSY_HERE 486
|
|
#define SIP_STATUS_REQUEST_TERMINATED 487
|
|
#define SIP_STATUS_NOT_ACCEPTABLE_HERE 488
|
|
|
|
#define SIP_STATUS_SERVER_INTERNAL_ERROR 500
|
|
#define SIP_STATUS_SERVER_NOT_IMPLEMENTED 501
|
|
#define SIP_STATUS_SERVER_BAD_GATEWAY 502
|
|
#define SIP_STATUS_SERVER_SERVICE_UNAVAILABLE 503
|
|
#define SIP_STATUS_SERVER_SERVER_TIMEOUT 504
|
|
#define SIP_STATUS_SERVER_VERSION_NOT_SUPPORTED 505
|
|
|
|
#define SIP_STATUS_GLOBAL_BUSY_EVERYWHERE 600
|
|
#define SIP_STATUS_GLOBAL_DECLINE 603
|
|
#define SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE 604
|
|
#define SIP_STATUS_GLOBAL_NOT_ACCEPTABLE 606
|
|
|
|
// Text Phrases
|
|
|
|
#define SIP_STATUS_INFO_TRYING_TEXT "Trying"
|
|
#define SIP_STATUS_INFO_RINGING_TEXT "Ringing"
|
|
#define SIP_STATUS_INFO_CALL_FORWARDING_TEXT "Call Is Being Forwarded"
|
|
#define SIP_STATUS_INFO_QUEUED_TEXT "Queued"
|
|
#define SIP_STATUS_SESSION_PROGRESS_TEXT "Session Progress"
|
|
|
|
#define SIP_STATUS_SUCCESS_TEXT "OK"
|
|
|
|
#define SIP_STATUS_REDIRECT_MULTIPLE_CHOICES_TEXT "Multiple Choices"
|
|
#define SIP_STATUS_REDIRECT_MOVED_PERMANENTLY_TEXT "Moved Permanently"
|
|
#define SIP_STATUS_REDIRECT_MOVED_TEMPORARILY_TEXT "Moved Temporarily"
|
|
#define SIP_STATUS_REDIRECT_SEE_OTHER_TEXT "See Other"
|
|
#define SIP_STATUS_REDIRECT_USE_PROXY_TEXT "Use Proxy"
|
|
#define SIP_STATUS_REDIRECT_ALTERNATIVE_SERVICE_TEXT "Alternative Service"
|
|
|
|
#define SIP_STATUS_CLIENT_BAD_REQUEST_TEXT "Bad Request"
|
|
#define SIP_STATUS_CLIENT_UNAUTHORIZED_TEXT "Unauthorized"
|
|
#define SIP_STATUS_CLIENT_PAYMENT_REQUIRED_TEXT "Payment Required"
|
|
#define SIP_STATUS_CLIENT_FORBIDDEN_TEXT "Forbidden"
|
|
#define SIP_STATUS_CLIENT_NOT_FOUND_TEXT "Not Found"
|
|
#define SIP_STATUS_CLIENT_METHOD_NOT_ALLOWED_TEXT "Method Not Allowed"
|
|
#define SIP_STATUS_CLIENT_NOT_ACCEPTABLE_TEXT "Not Acceptable"
|
|
#define SIP_STATUS_CLIENT_PROXY_AUTHENTICATION_REQUIRED_TEXT "Proxy Authentication Required"
|
|
#define SIP_STATUS_CLIENT_REQUEST_TIMEOUT_TEXT "Request Timeout"
|
|
#define SIP_STATUS_CLIENT_CONFLICT_TEXT "Conflict"
|
|
#define SIP_STATUS_CLIENT_GONE_TEXT "Gone"
|
|
#define SIP_STATUS_CLIENT_LENGTH_REQUIRED_TEXT "Length Required"
|
|
#define SIP_STATUS_CLIENT_REQUEST_ENTITY_TOO_LARGE_TEXT "Request Entity Too Large"
|
|
#define SIP_STATUS_CLIENT_REQUEST_URI_TOO_LARGE_TEXT "Request-URI Too Long"
|
|
#define SIP_STATUS_CLIENT_UNSUPPORTED_MEDIA_TYPE_TEXT "Unsupported Media Type"
|
|
#define SIP_STATUS_CLIENT_BAD_EXTENSION_TEXT "Bad Extension"
|
|
#define SIP_STATUS_CLIENT_TEMPORARILY_NOT_AVAILABLE_TEXT "Temporarily Unavailable"
|
|
#define SIP_STATUS_CLIENT_TRANSACTION_DOES_NOT_EXIST_TEXT "Call Leg/Transaction Does Not Exist"
|
|
#define SIP_STATUS_CLIENT_LOOP_DETECTED_TEXT "Loop Detected"
|
|
#define SIP_STATUS_CLIENT_TOO_MANY_HOPS_TEXT "Too Many Hops"
|
|
#define SIP_STATUS_CLIENT_ADDRESS_INCOMPLETE_TEXT "Address Incomplete"
|
|
#define SIP_STATUS_CLIENT_AMBIGUOUS_TEXT "Ambiguous"
|
|
#define SIP_STATUS_CLIENT_BUSY_HERE_TEXT "Busy Here"
|
|
#define SIP_STATUS_REQUEST_TERMINATED_TEXT "Request Terminated"
|
|
#define SIP_STATUS_NOT_ACCEPTABLE_HERE_TEXT "Not Acceptable Here"
|
|
|
|
#define SIP_STATUS_SERVER_INTERNAL_ERROR_TEXT "Server Internal Error"
|
|
#define SIP_STATUS_SERVER_NOT_IMPLEMENTED_TEXT "Not Implemented"
|
|
#define SIP_STATUS_SERVER_BAD_GATEWAY_TEXT "Bad Gateway"
|
|
#define SIP_STATUS_SERVER_SERVICE_UNAVAILABLE_TEXT "Service Unavailable"
|
|
#define SIP_STATUS_SERVER_SERVER_TIMEOUT_TEXT "Server Time-out"
|
|
#define SIP_STATUS_SERVER_VERSION_NOT_SUPPORTED_TEXT "Version Not Supported"
|
|
|
|
#define SIP_STATUS_GLOBAL_BUSY_EVERYWHERE_TEXT "Busy Everywhere"
|
|
#define SIP_STATUS_GLOBAL_DECLINE_TEXT "Decline"
|
|
#define SIP_STATUS_GLOBAL_DOES_NOT_EXIST_ANYWHERE_TEXT "Does Not Exist Anywhere"
|
|
#define SIP_STATUS_GLOBAL_NOT_ACCEPTABLE_TEXT "Not Acceptable"
|
|
|
|
// Phrases
|
|
#define SIP_STATUS_100_TEXT "Trying"
|
|
#define SIP_STATUS_180_TEXT "Ringing"
|
|
#define SIP_STATUS_181_TEXT "Call Is Being Forwarded"
|
|
#define SIP_STATUS_182_TEXT "Queued"
|
|
#define SIP_STATUS_183_TEXT "Session Progress"
|
|
|
|
#define SIP_STATUS_200_TEXT "OK"
|
|
|
|
#define SIP_STATUS_300_TEXT "Multiple Choices"
|
|
#define SIP_STATUS_301_TEXT "Moved Permanently"
|
|
#define SIP_STATUS_302_TEXT "Moved Temporarily"
|
|
#define SIP_STATUS_303_TEXT "See Other"
|
|
#define SIP_STATUS_305_TEXT "Use Proxy"
|
|
#define SIP_STATUS_380_TEXT "Alternative Service"
|
|
|
|
#define SIP_STATUS_400_TEXT "Bad Request"
|
|
#define SIP_STATUS_401_TEXT "Unauthorized"
|
|
#define SIP_STATUS_402_TEXT "Payment Required"
|
|
#define SIP_STATUS_403_TEXT "Forbidden"
|
|
#define SIP_STATUS_404_TEXT "Not Found"
|
|
#define SIP_STATUS_405_TEXT "Method Not Allowed"
|
|
#define SIP_STATUS_406_TEXT "Not Acceptable"
|
|
#define SIP_STATUS_407_TEXT "Proxy Authentication Required"
|
|
#define SIP_STATUS_408_TEXT "Request Timeout"
|
|
#define SIP_STATUS_409_TEXT "Conflict"
|
|
#define SIP_STATUS_410_TEXT "Gone"
|
|
#define SIP_STATUS_411_TEXT "Length Required"
|
|
#define SIP_STATUS_413_TEXT "Request Entity Too Large"
|
|
#define SIP_STATUS_414_TEXT "Request-URI Too Long"
|
|
#define SIP_STATUS_415_TEXT "Unsupported Media Type"
|
|
#define SIP_STATUS_420_TEXT "Bad Extension"
|
|
#define SIP_STATUS_480_TEXT "Temporarily Unavailable"
|
|
#define SIP_STATUS_481_TEXT "Call Leg/Transaction Does Not Exist"
|
|
#define SIP_STATUS_482_TEXT "Loop Detected"
|
|
#define SIP_STATUS_483_TEXT "Too Many Hops"
|
|
#define SIP_STATUS_484_TEXT "Address Incomplete"
|
|
#define SIP_STATUS_485_TEXT "Ambiguous"
|
|
#define SIP_STATUS_486_TEXT "Busy Here"
|
|
#define SIP_STATUS_487_TEXT "Request Terminated"
|
|
#define SIP_STATUS_488_TEXT "Not Acceptable Here"
|
|
|
|
#define SIP_STATUS_500_TEXT "Server Internal Error"
|
|
#define SIP_STATUS_501_TEXT "Not Implemented"
|
|
#define SIP_STATUS_502_TEXT "Bad Gateway"
|
|
#define SIP_STATUS_503_TEXT "Service Unavailable"
|
|
#define SIP_STATUS_504_TEXT "Server Time-out"
|
|
#define SIP_STATUS_505_TEXT "Version Not Supported"
|
|
|
|
#define SIP_STATUS_600_TEXT "Busy Everywhere"
|
|
#define SIP_STATUS_603_TEXT "Decline"
|
|
#define SIP_STATUS_604_TEXT "Does Not Exist Anywhere"
|
|
#define SIP_STATUS_606_TEXT "Not Acceptable"
|
|
|
|
#define SIP_STATUS_TEXT(Code) SIP_STATUS_## Code ## _TEXT
|
|
#define SIP_STATUS_TEXT_SIZE(Code) sizeof(SIP_STATUS_TEXT(Code)) - 1
|
|
|
|
//
|
|
// Timer values
|
|
//
|
|
// All values are in milliseconds
|
|
//
|
|
|
|
#ifndef SIP_TIMER_DBG
|
|
// Actual Timer values in milliseconds
|
|
|
|
#define SIP_TIMER_RETRY_INTERVAL_T1 500
|
|
#define SIP_TIMER_RETRY_INTERVAL_T2 4000
|
|
|
|
#define SIP_TIMER_INTERVAL_AFTER_INVITE_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_BYE_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_REGISTER_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_REQFAIL_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_PROV_RESPONSE_RCVD 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_INVITE_PROV_RESPONSE_RCVD 128000
|
|
|
|
#define SIP_TIMER_MAX_RETRY_INTERVAL 32000
|
|
#define SIP_TIMER_MAX_INTERVAL 32000
|
|
|
|
// Timer used for SSL negotiation
|
|
#define SSL_DEFAULT_TIMER 30000
|
|
|
|
// Timer used for HTTPS connect
|
|
#define HTTPS_CONNECT_DEFAULT_TIMER 60000
|
|
|
|
// in seconds
|
|
#define REGISTER_DEFAULT_TIMER 900
|
|
#define SUBSCRIBE_DEFAULT_TIMER 3000 //50 minutes.
|
|
#define REGISTER_SSL_TUNNEL_TIMER 90
|
|
|
|
#else // SIP_TIMER_DBG
|
|
// Timer values to play with while debugging
|
|
|
|
#define SIP_TIMER_RETRY_INTERVAL_T1 500
|
|
#define SIP_TIMER_RETRY_INTERVAL_T2 4000
|
|
|
|
#define SIP_TIMER_INTERVAL_AFTER_INVITE_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_BYE_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_REGISTER_SENT_TCP 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_PROV_RESPONSE_RCVD 32000
|
|
#define SIP_TIMER_INTERVAL_AFTER_INVITE_PROV_RESPONSE_RCVD 128000
|
|
|
|
#define SIP_TIMER_MAX_RETRY_INTERVAL 32000
|
|
#define SIP_TIMER_MAX_INTERVAL 32000
|
|
|
|
// Timer used for HTTPS connect
|
|
#define HTTPS_CONNECT_DEFAULT_TIMER 500
|
|
|
|
// in seconds
|
|
#define REGISTER_DEFAULT_TIMER 900
|
|
#define SUBSCRIBE_DEFAULT_TIMER 3000 //50 minutes.
|
|
#define REGISTER_SSL_TUNNEL_TIMER 90
|
|
|
|
#endif // SIP_TIMER_DBG
|
|
|
|
|
|
//
|
|
// Well-known protocol addresses
|
|
// Taken from RFC 2543
|
|
//
|
|
|
|
#define SIP_NETWORK_ADDRESS_ALL_SERVERS 0xE0000149 // 224.0.1.75
|
|
#define SIP_DEFAULT_TCP_PORT 5060
|
|
#define SIP_DEFAULT_UDP_PORT 5060
|
|
#define SIP_DEFAULT_SSL_PORT 5061
|
|
//#define SIP_DEFAULT_PORT 5060
|
|
|
|
|
|
#define SIP_ACCEPT_ENCODING_TEXT "identity"
|
|
#define SIP_ALLOW_TEXT "INVITE, BYE, OPTIONS, MESSAGE, ACK, CANCEL, NOTIFY, SUBSCRIBE, INFO"
|
|
#define USR_STATUS_TYPING_TEXT "Typing"
|
|
#define USR_STATUS_IDLE_TEXT "Idle"
|
|
#endif // __sipdef_h
|