1/* 2 * libjingle 3 * Copyright 2004--2005, Google Inc. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, 9 * this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright notice, 11 * this list of conditions and the following disclaimer in the documentation 12 * and/or other materials provided with the distribution. 13 * 3. The name of the author may not be used to endorse or promote products 14 * derived from this software without specific prior written permission. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#ifndef TALK_P2P_BASE_CONSTANTS_H_ 29#define TALK_P2P_BASE_CONSTANTS_H_ 30 31#include <string> 32#include "webrtc/libjingle/xmllite/qname.h" 33 34// This file contains constants related to signaling that are used in various 35// classes in this directory. 36 37namespace cricket { 38 39// NS_ == namespace 40// QN_ == buzz::QName (namespace + name) 41// LN_ == "local name" == QName::LocalPart() 42// these are useful when you need to find a tag 43// that has different namespaces (like <description> or <transport>) 44 45extern const char NS_EMPTY[]; 46extern const char NS_JINGLE[]; 47extern const char NS_JINGLE_DRAFT[]; 48extern const char NS_GINGLE[]; 49 50enum SignalingProtocol { 51 PROTOCOL_JINGLE, 52 PROTOCOL_GINGLE, 53 PROTOCOL_HYBRID, 54}; 55 56// actions (aka Gingle <session> or Jingle <jingle>) 57extern const buzz::StaticQName QN_ACTION; 58extern const char LN_INITIATOR[]; 59extern const buzz::StaticQName QN_INITIATOR; 60extern const buzz::StaticQName QN_CREATOR; 61 62extern const buzz::StaticQName QN_JINGLE; 63extern const buzz::StaticQName QN_JINGLE_CONTENT; 64extern const buzz::StaticQName QN_JINGLE_CONTENT_NAME; 65extern const buzz::StaticQName QN_JINGLE_CONTENT_MEDIA; 66extern const buzz::StaticQName QN_JINGLE_REASON; 67extern const buzz::StaticQName QN_JINGLE_DRAFT_GROUP; 68extern const buzz::StaticQName QN_JINGLE_DRAFT_GROUP_TYPE; 69extern const char JINGLE_CONTENT_MEDIA_AUDIO[]; 70extern const char JINGLE_CONTENT_MEDIA_VIDEO[]; 71extern const char JINGLE_CONTENT_MEDIA_DATA[]; 72extern const char JINGLE_ACTION_SESSION_INITIATE[]; 73extern const char JINGLE_ACTION_SESSION_INFO[]; 74extern const char JINGLE_ACTION_SESSION_ACCEPT[]; 75extern const char JINGLE_ACTION_SESSION_TERMINATE[]; 76extern const char JINGLE_ACTION_TRANSPORT_INFO[]; 77extern const char JINGLE_ACTION_TRANSPORT_ACCEPT[]; 78extern const char JINGLE_ACTION_DESCRIPTION_INFO[]; 79 80extern const buzz::StaticQName QN_GINGLE_SESSION; 81extern const char GINGLE_ACTION_INITIATE[]; 82extern const char GINGLE_ACTION_INFO[]; 83extern const char GINGLE_ACTION_ACCEPT[]; 84extern const char GINGLE_ACTION_REJECT[]; 85extern const char GINGLE_ACTION_TERMINATE[]; 86extern const char GINGLE_ACTION_CANDIDATES[]; 87extern const char GINGLE_ACTION_UPDATE[]; 88 89extern const char LN_ERROR[]; 90extern const buzz::StaticQName QN_GINGLE_REDIRECT; 91extern const char STR_REDIRECT_PREFIX[]; 92 93// Session Contents (aka Gingle <session><description> 94// or Jingle <content><description>) 95extern const char LN_DESCRIPTION[]; 96extern const char LN_PAYLOADTYPE[]; 97extern const buzz::StaticQName QN_ID; 98extern const buzz::StaticQName QN_SID; 99extern const buzz::StaticQName QN_NAME; 100extern const buzz::StaticQName QN_CLOCKRATE; 101extern const buzz::StaticQName QN_BITRATE; 102extern const buzz::StaticQName QN_CHANNELS; 103extern const buzz::StaticQName QN_PARAMETER; 104extern const char LN_NAME[]; 105extern const char LN_VALUE[]; 106extern const buzz::StaticQName QN_PAYLOADTYPE_PARAMETER_NAME; 107extern const buzz::StaticQName QN_PAYLOADTYPE_PARAMETER_VALUE; 108extern const char PAYLOADTYPE_PARAMETER_BITRATE[]; 109extern const char PAYLOADTYPE_PARAMETER_HEIGHT[]; 110extern const char PAYLOADTYPE_PARAMETER_WIDTH[]; 111extern const char PAYLOADTYPE_PARAMETER_FRAMERATE[]; 112extern const char LN_BANDWIDTH[]; 113 114// CN_ == "content name". When we initiate a session, we choose the 115// name, and when we receive a Gingle session, we provide default 116// names (since Gingle has no content names). But when we receive a 117// Jingle call, the content name can be anything, so don't rely on 118// these values being the same as the ones received. 119extern const char CN_AUDIO[]; 120extern const char CN_VIDEO[]; 121extern const char CN_DATA[]; 122extern const char CN_OTHER[]; 123// other SDP related strings 124// GN stands for group name 125extern const char GROUP_TYPE_BUNDLE[]; 126 127extern const char NS_JINGLE_RTP[]; 128extern const buzz::StaticQName QN_JINGLE_RTP_CONTENT; 129extern const buzz::StaticQName QN_SSRC; 130extern const buzz::StaticQName QN_JINGLE_RTP_PAYLOADTYPE; 131extern const buzz::StaticQName QN_JINGLE_RTP_BANDWIDTH; 132extern const buzz::StaticQName QN_JINGLE_RTCP_MUX; 133extern const buzz::StaticQName QN_JINGLE_RTCP_FB; 134extern const buzz::StaticQName QN_SUBTYPE; 135extern const buzz::StaticQName QN_JINGLE_RTP_HDREXT; 136extern const buzz::StaticQName QN_URI; 137 138extern const char NS_JINGLE_DRAFT_SCTP[]; 139extern const buzz::StaticQName QN_JINGLE_DRAFT_SCTP_CONTENT; 140extern const buzz::StaticQName QN_JINGLE_DRAFT_SCTP_STREAM; 141 142extern const char NS_GINGLE_AUDIO[]; 143extern const buzz::StaticQName QN_GINGLE_AUDIO_CONTENT; 144extern const buzz::StaticQName QN_GINGLE_AUDIO_PAYLOADTYPE; 145extern const buzz::StaticQName QN_GINGLE_AUDIO_SRCID; 146extern const char NS_GINGLE_VIDEO[]; 147extern const buzz::StaticQName QN_GINGLE_VIDEO_CONTENT; 148extern const buzz::StaticQName QN_GINGLE_VIDEO_PAYLOADTYPE; 149extern const buzz::StaticQName QN_GINGLE_VIDEO_SRCID; 150extern const buzz::StaticQName QN_GINGLE_VIDEO_BANDWIDTH; 151 152// Crypto support. 153extern const buzz::StaticQName QN_ENCRYPTION; 154extern const buzz::StaticQName QN_ENCRYPTION_REQUIRED; 155extern const buzz::StaticQName QN_CRYPTO; 156extern const buzz::StaticQName QN_GINGLE_AUDIO_CRYPTO_USAGE; 157extern const buzz::StaticQName QN_GINGLE_VIDEO_CRYPTO_USAGE; 158extern const buzz::StaticQName QN_CRYPTO_SUITE; 159extern const buzz::StaticQName QN_CRYPTO_KEY_PARAMS; 160extern const buzz::StaticQName QN_CRYPTO_TAG; 161extern const buzz::StaticQName QN_CRYPTO_SESSION_PARAMS; 162 163// Transports and candidates. 164extern const char LN_TRANSPORT[]; 165extern const char LN_CANDIDATE[]; 166extern const buzz::StaticQName QN_JINGLE_P2P_TRANSPORT; 167extern const buzz::StaticQName QN_JINGLE_P2P_CANDIDATE; 168extern const buzz::StaticQName QN_UFRAG; 169extern const buzz::StaticQName QN_COMPONENT; 170extern const buzz::StaticQName QN_PWD; 171extern const buzz::StaticQName QN_IP; 172extern const buzz::StaticQName QN_PORT; 173extern const buzz::StaticQName QN_NETWORK; 174extern const buzz::StaticQName QN_GENERATION; 175extern const buzz::StaticQName QN_PRIORITY; 176extern const buzz::StaticQName QN_PROTOCOL; 177extern const char ICE_CANDIDATE_TYPE_PEER_STUN[]; 178extern const char ICE_CANDIDATE_TYPE_SERVER_STUN[]; 179extern const int ICE_UFRAG_LENGTH; 180extern const int ICE_PWD_LENGTH; 181extern const size_t ICE_UFRAG_MIN_LENGTH; 182extern const size_t ICE_PWD_MIN_LENGTH; 183extern const size_t ICE_UFRAG_MAX_LENGTH; 184extern const size_t ICE_PWD_MAX_LENGTH; 185extern const int ICE_CANDIDATE_COMPONENT_RTP; 186extern const int ICE_CANDIDATE_COMPONENT_RTCP; 187extern const int ICE_CANDIDATE_COMPONENT_DEFAULT; 188 189extern const buzz::StaticQName QN_FINGERPRINT; 190extern const buzz::StaticQName QN_FINGERPRINT_ALGORITHM; 191extern const buzz::StaticQName QN_FINGERPRINT_DIGEST; 192 193extern const char NS_JINGLE_ICE_UDP[]; 194 195extern const char ICE_OPTION_GICE[]; 196extern const char NS_GINGLE_P2P[]; 197extern const buzz::StaticQName QN_GINGLE_P2P_TRANSPORT; 198extern const buzz::StaticQName QN_GINGLE_P2P_CANDIDATE; 199extern const buzz::StaticQName QN_GINGLE_P2P_UNKNOWN_CHANNEL_NAME; 200extern const buzz::StaticQName QN_GINGLE_CANDIDATE; 201extern const buzz::StaticQName QN_ADDRESS; 202extern const buzz::StaticQName QN_USERNAME; 203extern const buzz::StaticQName QN_PASSWORD; 204extern const buzz::StaticQName QN_PREFERENCE; 205extern const char GINGLE_CANDIDATE_TYPE_STUN[]; 206extern const char GICE_CHANNEL_NAME_RTP[]; 207extern const char GICE_CHANNEL_NAME_RTCP[]; 208extern const char GICE_CHANNEL_NAME_VIDEO_RTP[]; 209extern const char GICE_CHANNEL_NAME_VIDEO_RTCP[]; 210extern const char GICE_CHANNEL_NAME_DATA_RTP[]; 211extern const char GICE_CHANNEL_NAME_DATA_RTCP[]; 212 213extern const char NS_GINGLE_RAW[]; 214extern const buzz::StaticQName QN_GINGLE_RAW_TRANSPORT; 215extern const buzz::StaticQName QN_GINGLE_RAW_CHANNEL; 216 217// terminate reasons and errors: see http://xmpp.org/extensions/xep-0166.html 218extern const char JINGLE_ERROR_BAD_REQUEST[]; // like parse error 219// got transport-info before session-initiate, for example 220extern const char JINGLE_ERROR_OUT_OF_ORDER[]; 221extern const char JINGLE_ERROR_UNKNOWN_SESSION[]; 222 223// Call terminate reasons from XEP-166 224extern const char STR_TERMINATE_DECLINE[]; // polite reject 225extern const char STR_TERMINATE_SUCCESS[]; // polite hangup 226extern const char STR_TERMINATE_ERROR[]; // something bad happened 227extern const char STR_TERMINATE_INCOMPATIBLE_PARAMETERS[]; // no codecs? 228 229// Old terminate reasons used by cricket 230extern const char STR_TERMINATE_CALL_ENDED[]; 231extern const char STR_TERMINATE_RECIPIENT_UNAVAILABLE[]; 232extern const char STR_TERMINATE_RECIPIENT_BUSY[]; 233extern const char STR_TERMINATE_INSUFFICIENT_FUNDS[]; 234extern const char STR_TERMINATE_NUMBER_MALFORMED[]; 235extern const char STR_TERMINATE_NUMBER_DISALLOWED[]; 236extern const char STR_TERMINATE_PROTOCOL_ERROR[]; 237extern const char STR_TERMINATE_INTERNAL_SERVER_ERROR[]; 238extern const char STR_TERMINATE_UNKNOWN_ERROR[]; 239 240// Draft view and notify messages. 241extern const char STR_JINGLE_DRAFT_CONTENT_NAME_VIDEO[]; 242extern const char STR_JINGLE_DRAFT_CONTENT_NAME_AUDIO[]; 243extern const buzz::StaticQName QN_NICK; 244extern const buzz::StaticQName QN_TYPE; 245extern const buzz::StaticQName QN_JINGLE_DRAFT_VIEW; 246extern const char STR_JINGLE_DRAFT_VIEW_TYPE_NONE[]; 247extern const char STR_JINGLE_DRAFT_VIEW_TYPE_STATIC[]; 248extern const buzz::StaticQName QN_JINGLE_DRAFT_PARAMS; 249extern const buzz::StaticQName QN_WIDTH; 250extern const buzz::StaticQName QN_HEIGHT; 251extern const buzz::StaticQName QN_FRAMERATE; 252extern const buzz::StaticQName QN_JINGLE_DRAFT_STREAM; 253extern const buzz::StaticQName QN_JINGLE_DRAFT_STREAMS; 254extern const buzz::StaticQName QN_DISPLAY; 255extern const buzz::StaticQName QN_CNAME; 256extern const buzz::StaticQName QN_JINGLE_DRAFT_SSRC; 257extern const buzz::StaticQName QN_JINGLE_DRAFT_SSRC_GROUP; 258extern const buzz::StaticQName QN_SEMANTICS; 259extern const buzz::StaticQName QN_JINGLE_LEGACY_NOTIFY; 260extern const buzz::StaticQName QN_JINGLE_LEGACY_SOURCE; 261 262// old stuff 263#ifdef FEATURE_ENABLE_VOICEMAIL 264extern const char NS_VOICEMAIL[]; 265extern const buzz::StaticQName QN_VOICEMAIL_REGARDING; 266#endif 267 268// RFC 4145, SDP setup attribute values. 269extern const char CONNECTIONROLE_ACTIVE_STR[]; 270extern const char CONNECTIONROLE_PASSIVE_STR[]; 271extern const char CONNECTIONROLE_ACTPASS_STR[]; 272extern const char CONNECTIONROLE_HOLDCONN_STR[]; 273 274} // namespace cricket 275 276#endif // TALK_P2P_BASE_CONSTANTS_H_ 277