reSIProcate
SIP stack, Dialog Usage Manager and related libraries
Loading...
Searching...
No Matches
Stun.hxx
Go to the documentation of this file.
1#ifndef STUN_HXX
2#define STUN_HXX
3
4#include <iostream>
5#include <time.h>
6#include "rutil/Data.hxx"
7#include "rutil/Socket.hxx"
8
9namespace resip
10{
11
12 // !jr! Bumped version to 0.97 with changes to make this stun implementation more compliant with RFC5389/8489
13 // Updated code to send (and receive) XOR_MAPPED_ADDRESS as 0x0020 (instead of 0x8020)
14 // Note: Magic cookie from RFC5389 is not used by default, but can be added by users of this implementation
15 // Also, While the latest version here is *more* compliant, there are still areas of improvement for complete
16 // compliance. In particular, some STUN attributes are not handled exactly as they should be, including missing
17 // support for IPV6, correct handling of the MESSAGE-INTEGRITY(-SHA256) header, correct processing of other
18 // credential handling headers such as USERNAME, PASSWORD, REALM and NONCE
19#define STUN_VERSION "0.97"
20
21#define STUN_MAX_STRING 256
22#define STUN_MAX_UNKNOWN_ATTRIBUTES 8
23#define STUN_MAX_MESSAGE_SIZE 2048
24
25#define STUN_PORT 3478
26
27#ifndef RESIP_COMPAT_HXX
28// define some basic types
29 typedef unsigned char uint8_t;
30 typedef unsigned short uint16_t;
31#ifdef __APPLE__
32 typedef unsigned long uint32_t;
33#else
34 typedef unsigned int uint32_t;
35#endif
36#if defined( WIN32 )
37 typedef unsigned __int64 uint64_t;
38#else
39 typedef unsigned long long uint64_t;
40#endif
41#endif
42
43 typedef struct { unsigned char octet[16]; } UInt128;
44
45#ifdef __cplusplus
46 bool operator<(const UInt128&, const UInt128&);
47 bool operator==(const UInt128&, const UInt128&);
48#endif
49
51 const uint8_t IPv4Family = 0x01;
52 const uint8_t IPv6Family = 0x02;
53
54 // define flags
55 const uint32_t ChangeIpFlag = 0x04;
57
58#define MAX_REALM_BYTES 763
59#define MAX_NONCE_BYTES 763
60
61 // define stun attributes - RFC5389
62 // Comprehension required attributes
63 const static uint16_t MappedAddress = 0x0001;
64 const static uint16_t ResponseAddress = 0x0002; // deprecated by RFC5389 (used for backwards compatibility to RFC3489 only)
65 const static uint16_t ChangeRequest = 0x0003; // deprecated by RFC5389 (used for backwards compatibility to RFC3489 only)
66 const static uint16_t SourceAddress = 0x0004; // deprecated by RFC5389 (used for backwards compatibility to RFC3489 only)
67 const static uint16_t ChangedAddress = 0x0005; // deprecated by RFC5389 (used for backwards compatibility to RFC3489 only)
68 const static uint16_t Username = 0x0006;
69 const static uint16_t Password = 0x0007; // deprecated by RFC5389 (used for backwards compatibility to RFC3489 only)
70 const static uint16_t MessageIntegrity = 0x0008;
71 const static uint16_t ErrorCode = 0x0009;
72 const static uint16_t UnknownAttribute = 0x000A;
73 const static uint16_t ReflectedFrom = 0x000B; // deprecated by RFC5389 (used for backwards compatibility to RFC3489 only)
74 const static uint16_t Realm = 0x0014;
75 const static uint16_t Nonce = 0x0015;
76 const static uint16_t XorMappedAddress = 0x0020;
77 const static uint16_t XorOnly = 0x0021; // Non standard extention
78 const static uint16_t XorMappedAddress_old = 0x8020; // deprecated
79
80 // Comprehension Optional Attributes
81 const static uint16_t Software = 0x8022;
82 const static uint16_t AlternateServer = 0x8023;
83 const static uint16_t Fingerprint = 0x8028;
84 const static uint16_t SecondaryAddress = 0x8050; // Non standard extension
85
86 // !jf! TURN specific message attributes - from turn-08
87 const uint16_t TurnLifetime = 0x000d;
89 const uint16_t TurnMagicCookie = 0x000f;
90 const uint16_t TurnBandwidth = 0x0010;
93 const uint16_t TurnData = 0x0013;
94 const uint16_t TurnNonce = 0x0014;
95 const uint16_t TurnRealm = 0x0015;
96
97
98 // define types for a stun message
99 const uint16_t BindRequestMsg = 0x0001;
100 const uint16_t BindResponseMsg = 0x0101;
105
106 // define types for a turn message - per turn-08
110 const uint16_t TurnSendRequest = 0x0004;
117
118 const static uint32_t StunMagicCookie = 0x2112A442;
119
126
127#ifdef __cplusplus
128 bool operator<(const StunMsgHdr&, const StunMsgHdr&);
129#endif
130
131 typedef struct
132 {
135 } StunAtrHdr;
136
137 typedef struct
138 {
141 } StunAddress4;
142
149
150 typedef struct
151 {
154
163
169
170 typedef struct
171 {
172 char value[STUN_MAX_STRING];
175
176 typedef struct
177 {
178 char hash[20];
180
181
190
191
193 {
194 // Every member is default-initialized below. Previously the constructor
195 // zeroed the whole object with memset(this, 0, sizeof(*this)), which is
196 // undefined behavior: StunMessage is not trivially copyable because of its
197 // user-declared destructor. Value-initializing each member is equivalent
198 // here -- pointers become nullptr, bools false, and the POD
199 // sub-structures/integers zero -- but well defined.
200 StunMessage() = default;
201
203 {
204 if (hasRealm) delete realm;
205 if (hasNonce) delete nonce;
206 if (hasTurnData) delete turnData;
207 }
208
210
211 bool hasMappedAddress = false;
213
214 bool hasResponseAddress = false;
216
217 bool hasChangeRequest = false;
219
220 bool hasSourceAddress = false;
222
223 bool hasChangedAddress = false;
225
226 bool hasUsername = false;
228
229 bool hasPassword = false;
231
234 // Byte offset of the MESSAGE-INTEGRITY attribute header from the start of
235 // the message buffer (populated by stunParseMessage). Used to verify the
236 // HMAC per RFC 5389 section 15.4.
237 unsigned int messageIntegrityOffset = 0;
238
239 bool hasErrorCode = false;
241
244
245 bool hasReflectedFrom = false;
247
248 bool hasRealm = false;
249 resip::Data* realm = nullptr;
250
251 bool hasNonce = false;
252 resip::Data* nonce = nullptr;
253
256
257 bool xorOnly = false;
258
259 bool hasSoftware = false;
261
264
265 bool hasAlternateServer = false;
267
268 bool hasFingerprint = false;
270
271 bool hasTurnLifetime = false;
273
276
277 bool hasTurnMagicCookie = false;
279
280 bool hasTurnBandwidth = false;
282
285
288
289 bool hasTurnData = false;
291
292 //bool hasTurnNonce;
293 // turnNonce;
294
295 //bool hasTurnRealm;
296 // turnRealm;
297 };
298
299
300 // Define enum with different types of NAT
302 {
307
312
313 //StunTypeConeNat,
314 //StunTypeRestrictedNat,
315 //StunTypePortRestrictedNat,
316 //StunTypeSymNat,
317
319 };
320
321
322#define MAX_MEDIA_RELAYS 500
323#define MAX_RTP_MSG_SIZE 1500
324#define MEDIA_RELAY_TIMEOUT 3*60
325
326 typedef struct
327 {
328 int relayPort; // media relay port
329 int fd; // media relay file descriptor
330 StunAddress4 destination; // NAT IP:port
331 time_t expireTime; // if no activity after time, close the socket
333
345
346 bool
347 stunParseMessage(char* buf,
348 unsigned int bufLen,
349 StunMessage& message,
350 bool verbose);
351
352 void
354 const StunAtrString& username,
355 bool changePort, bool changeIp, unsigned int id = 0);
356
362 bool
363 stunVerifyMessageIntegrity(const char* buf,
364 unsigned int bufLen,
365 const StunMessage& message,
366 const StunAtrString& password);
367
368 unsigned int
369 stunEncodeMessage(const StunMessage& message,
370 char* buf,
371 unsigned int bufLen,
372 const StunAtrString& password,
373 bool verbose);
374
375 void
376 stunCreateUserName(const StunAddress4& addr, StunAtrString* username);
377
378 void
380 StunAtrString* username,
381 StunAtrString* password);
382
383 void
384 stunCreatePassword(const StunAtrString& username, StunAtrString* password);
385
386 int
387 stunRand();
388
391
393 bool
394 stunParseServerName(char* software, StunAddress4& stunServerAddr);
395
396 bool
397 stunParseHostName(char* peerName,
398 uint32_t& ip,
399 uint16_t& portVal,
400 uint16_t defaultPort);
401
404 bool
406 const StunAddress4& myAddr,
407 const StunAddress4& altAddr,
408 int startMediaPort,
409 bool verbose);
410
411 void
413
415 bool
416 stunServerProcess(StunServerInfo& info, bool verbose);
417
419 int
420 stunFindLocalInterfaces(uint32_t* addresses, int maxSize);
421
422 bool
423 stunTest(StunAddress4& dest, int testNum, bool verbose, StunAddress4* srcAddr = 0, unsigned long timeoutMs = 5000);
424
425 NatType
426 stunNatType(StunAddress4& dest, bool verbose,
427 bool* preservePort = 0, // if set, is return for if NAT preservers ports or not
428 bool* hairpin = 0, // if set, is the return for if NAT will hairpin packets
429 int port = 0, // port to use for the test, 0 to choose random port
430 StunAddress4* sAddr = 0 // NIC to use
431 );
432
434 std::ostream&
435 operator<<(std::ostream& strm, const StunAddress4& addr);
436
437 std::ostream&
438 operator<< (std::ostream& strm, const UInt128&);
439
440 std::ostream&
441 operator<< (std::ostream& strm, const StunMsgHdr&);
442
443 bool
444 stunServerProcessMsg(char* buf,
445 unsigned int bufLen,
446 StunAddress4& from,
447 StunAddress4& secondary,
448 StunAddress4& myAddr,
449 StunAddress4& altAddr,
450 StunMessage* resp,
451 StunAddress4* destination,
452 StunAtrString* hmacPassword,
453 bool* changePort,
454 bool* changeIp,
455 bool verbose);
456
457 int
459 StunAddress4* mappedAddr,
460 int port = 0,
461 StunAddress4* srcAddr = 0,
462 bool verbose = false);
463
464 bool
466 int* fd1, int* fd2,
467 int srcPort = 0, StunAddress4* srcAddr = 0,
468 bool verbose = false);
469
470 int
472
473 void computeHmac(char* hmac, const char* input, int length, const char* key, int sizeKey);
474
475}
476#endif
477
478
479/* ====================================================================
480 * Copyright (c) 2026 SIP Spectrum, Inc. https://www.sipspectrum.com
481 * The Vovida Software License, Version 1.0
482 *
483 * Redistribution and use in source and binary forms, with or without
484 * modification, are permitted provided that the following conditions
485 * are met:
486 *
487 * 1. Redistributions of source code must retain the above copyright
488 * notice, this list of conditions and the following disclaimer.
489 *
490 * 2. Redistributions in binary form must reproduce the above copyright
491 * notice, this list of conditions and the following disclaimer in
492 * the documentation and/or other materials provided with the
493 * distribution.
494 *
495 * 3. The names "VOCAL", "Vovida Open Communication Application Library",
496 * and "Vovida Open Communication Application Library (VOCAL)" must
497 * not be used to endorse or promote products derived from this
498 * software without prior written permission. For written
499 * permission, please contact vocal@vovida.org.
500 *
501 * 4. Products derived from this software may not be called "VOCAL", nor
502 * may "VOCAL" appear in their name, without prior written
503 * permission of Vovida Networks, Inc.
504 *
505 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
506 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
507 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
508 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA
509 * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES
510 * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL,
511 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
512 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
513 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
514 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
515 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
516 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
517 * DAMAGE.
518 *
519 */
520
521 // Local Variables:
522 // mode:c++
523 // c-file-style:"ellemtel"
524 // c-file-offsets:((case-label . +))
525 // indent-tabs-mode:nil
526 // End:
527
Handles cross-platform sockets compatibility.
#define STUN_MAX_UNKNOWN_ATTRIBUTES
Definition Stun.hxx:22
#define STUN_MAX_STRING
Definition Stun.hxx:21
#define MAX_MEDIA_RELAYS
Definition Stun.hxx:322
An alternative to std::string, encapsulates an arbitrary buffer of bytes.
Definition Data.hxx:90
dcm! – add UnusedChecking(_enum) below;
const uint16_t TurnSendResponse
Definition Stun.hxx:111
bool stunParseServerName(char *name, StunAddress4 &addr)
find the IP address of a the specified stun server - return false is fails parse
Definition Stun.cxx:1313
void stunCreateUserName(const StunAddress4 &source, StunAtrString *username)
Definition Stun.cxx:1070
const uint16_t TurnSetActiveDestinationRequest
Definition Stun.hxx:114
bool stunInitServer(StunServerInfo &info, const StunAddress4 &myAddr, const StunAddress4 &altAddr, int startMediaPort, bool verbose)
return true if all is OK Create a media relay and do the STERN thing if startMediaPort is non-zero
Definition Stun.cxx:1581
StunHmacStatus
Definition Stun.hxx:183
@ HmacOK
Definition Stun.hxx:185
@ HmacUnknown
Definition Stun.hxx:184
@ HmacBadUserName
Definition Stun.hxx:186
@ HmacUnknownUserName
Definition Stun.hxx:187
@ HmacFailed
Definition Stun.hxx:188
void computeHmac(char *hmac, const char *input, int length, const char *key, int sizeKey)
Definition Stun.cxx:943
const uint16_t TurnLifetime
Definition Stun.hxx:87
static const uint16_t Username
Definition Stun.hxx:68
static const uint16_t AlternateServer
Definition Stun.hxx:82
const uint16_t SharedSecretErrorResponseMsg
Definition Stun.hxx:104
NatType stunNatType(StunAddress4 &dest, bool verbose, bool *preservePort, bool *hairpin, int port, StunAddress4 *sAddr)
Definition Stun.cxx:2220
const uint16_t TurnSendErrorResponse
Definition Stun.hxx:112
const uint16_t TurnMagicCookie
Definition Stun.hxx:89
void stunCreatePassword(const StunAtrString &username, StunAtrString *password)
Definition Stun.cxx:1110
static const uint16_t XorMappedAddress
Definition Stun.hxx:76
const uint8_t IPv4Family
define a structure to hold a stun address
Definition Stun.hxx:51
const uint16_t TurnDestinationAddress
Definition Stun.hxx:91
static const uint16_t ChangedAddress
Definition Stun.hxx:67
int stunFindLocalInterfaces(uint32_t *addresses, int maxRet)
returns number of address found - take array or addres
Definition Stun.cxx:1962
const uint16_t TurnData
Definition Stun.hxx:93
const uint16_t TurnRealm
Definition Stun.hxx:95
bool stunServerProcessMsg(char *buf, unsigned int bufLen, StunAddress4 &from, StunAddress4 &secondary, StunAddress4 &myAddr, StunAddress4 &altAddr, StunMessage *resp, StunAddress4 *destination, StunAtrString *hmacPassword, bool *changePort, bool *changeIp, bool verbose)
Definition Stun.cxx:1368
unsigned short uint16_t
Definition Stun.hxx:30
static const uint16_t Software
Definition Stun.hxx:81
const uint16_t BindResponseMsg
Definition Stun.hxx:100
static const uint16_t Realm
Definition Stun.hxx:74
const uint16_t TurnRemoteAddress
Definition Stun.hxx:92
const uint16_t TurnSetActiveDestinationErrorResponse
Definition Stun.hxx:116
NatType
Definition Stun.hxx:302
@ StunTypeIndependentFilter
Definition Stun.hxx:308
@ StunTypeFirewall
Definition Stun.hxx:318
@ StunTypeDependentMapping
Definition Stun.hxx:311
@ StunTypeOpen
Definition Stun.hxx:305
@ StunTypeUnknown
Definition Stun.hxx:303
@ StunTypePortDependedFilter
Definition Stun.hxx:310
@ StunTypeDependentFilter
Definition Stun.hxx:309
@ StunTypeBlocked
Definition Stun.hxx:306
@ StunTypeFailure
Definition Stun.hxx:304
static const uint16_t SourceAddress
Definition Stun.hxx:66
static const uint16_t XorMappedAddress_old
Definition Stun.hxx:78
int Socket
Definition Socket.hxx:94
const uint16_t TurnSetActiveDestinationResponse
Definition Stun.hxx:115
static const uint16_t ResponseAddress
Definition Stun.hxx:64
const uint16_t TurnNonce
Definition Stun.hxx:94
static const uint16_t Fingerprint
Definition Stun.hxx:83
int stunRand()
Definition Stun.cxx:908
const uint32_t ChangePortFlag
Definition Stun.hxx:56
int stunOpenSocket(StunAddress4 &dest, StunAddress4 *mapAddr, int port, StunAddress4 *srcAddr, bool verbose)
Definition Stun.cxx:2595
unsigned long long uint64_t
Definition Stun.hxx:39
static const uint16_t Nonce
Definition Stun.hxx:75
bool stunVerifyMessageIntegrity(const char *buf, unsigned int bufLen, const StunMessage &message, const StunAtrString &password)
Verify the MESSAGE-INTEGRITY attribute of a parsed message against the supplied short-term credential...
Definition Stun.cxx:1003
const uint16_t TurnAllocateRequest
Definition Stun.hxx:107
unsigned int uint32_t
Definition Stun.hxx:34
void stunBuildReqSimple(StunMessage *msg, const StunAtrString &username, bool changePort, bool changeIp, unsigned int id)
Definition Stun.cxx:2029
bool operator<(const Data &lhs, const Data &rhs)
Definition Data.cxx:778
const uint16_t TurnSendRequest
Definition Stun.hxx:110
bool stunParseHostName(char *peerName, uint32_t &ip, uint16_t &portVal, uint16_t defaultPort)
Definition Stun.cxx:1228
const uint32_t ChangeIpFlag
Definition Stun.hxx:55
static const uint16_t ErrorCode
Definition Stun.hxx:71
static const uint16_t SecondaryAddress
Definition Stun.hxx:84
static const uint16_t MappedAddress
Definition Stun.hxx:63
const uint16_t BindErrorResponseMsg
Definition Stun.hxx:101
void stunStopServer(StunServerInfo &info)
Definition Stun.cxx:1661
const uint16_t TurnAllocateErrorResponse
Definition Stun.hxx:109
const uint16_t SharedSecretResponseMsg
Definition Stun.hxx:103
static const uint16_t XorOnly
Definition Stun.hxx:77
static const uint16_t ReflectedFrom
Definition Stun.hxx:73
void stunGetUserNameAndPassword(const StunAddress4 &dest, StunAtrString *username, StunAtrString *password)
Definition Stun.cxx:2121
static const uint32_t StunMagicCookie
Definition Stun.hxx:118
bool stunParseMessage(char *buf, unsigned int bufLen, StunMessage &msg, bool verbose)
Definition Stun.cxx:233
static const uint16_t Password
Definition Stun.hxx:69
const uint16_t TurnAlternateServer
Definition Stun.hxx:88
static const uint16_t MessageIntegrity
Definition Stun.hxx:70
static const uint16_t UnknownAttribute
Definition Stun.hxx:72
bool stunServerProcess(StunServerInfo &info, bool verbose)
return true if all is OK
Definition Stun.cxx:1683
const uint16_t BindRequestMsg
Definition Stun.hxx:99
uint64_t stunGetSystemTimeSecs()
Definition Stun.cxx:1125
int stunRandomPort()
return a random number to use as a port
Definition Stun.cxx:920
const uint16_t TurnAllocateResponse
Definition Stun.hxx:108
const uint16_t TurnBandwidth
Definition Stun.hxx:90
const uint16_t SharedSecretRequestMsg
Definition Stun.hxx:102
EncodeStream & operator<<(EncodeStream &strm, const BaseException &e)
bool stunTest(StunAddress4 &dest, int testNum, bool verbose, StunAddress4 *sAddr, unsigned long timeoutMs)
Definition Stun.cxx:2133
const uint8_t IPv6Family
Definition Stun.hxx:52
bool operator==(const char *lhs, const Data &rhs)
Definition Data.hxx:1197
unsigned char uint8_t
Definition Stun.hxx:29
static const uint16_t ChangeRequest
Definition Stun.hxx:65
bool stunOpenSocketPair(StunAddress4 &dest, StunAddress4 *mapAddr, int *fd1, int *fd2, int port, StunAddress4 *srcAddr, bool verbose)
Definition Stun.cxx:2660
unsigned int stunEncodeMessage(const StunMessage &msg, char *buf, unsigned int bufLen, const StunAtrString &password, bool verbose)
Definition Stun.cxx:760
const uint16_t TurnDataIndication
Definition Stun.hxx:113
StunAddress4 ipv4
Definition Stun.hxx:147
uint8_t errorClass
Definition Stun.hxx:158
uint16_t sizeReason
Definition Stun.hxx:161
uint16_t length
Definition Stun.hxx:134
uint16_t type
Definition Stun.hxx:133
uint16_t sizeValue
Definition Stun.hxx:173
uint16_t numAttributes
Definition Stun.hxx:167
StunAddress4 destination
Definition Stun.hxx:330
bool hasChangedAddress
Definition Stun.hxx:223
bool hasUnknownAttributes
Definition Stun.hxx:242
StunAtrString software
Definition Stun.hxx:260
uint32_t turnLifetime
Definition Stun.hxx:272
bool hasResponseAddress
Definition Stun.hxx:214
bool hasMessageIntegrity
Definition Stun.hxx:232
StunAtrAddress4 reflectedFrom
Definition Stun.hxx:246
StunAtrAddress4 secondaryAddress
Definition Stun.hxx:263
StunAtrString password
Definition Stun.hxx:230
bool hasTurnAlternateServer
Definition Stun.hxx:274
StunAtrAddress4 turnRemoteAddress
Definition Stun.hxx:287
unsigned int messageIntegrityOffset
Definition Stun.hxx:237
StunAtrAddress4 changedAddress
Definition Stun.hxx:224
bool hasTurnBandwidth
Definition Stun.hxx:280
bool hasChangeRequest
Definition Stun.hxx:217
StunAtrError errorCode
Definition Stun.hxx:240
resip::Data * nonce
Definition Stun.hxx:252
bool hasTurnMagicCookie
Definition Stun.hxx:277
uint32_t turnMagicCookie
Definition Stun.hxx:278
StunAtrChangeRequest changeRequest
Definition Stun.hxx:218
StunAtrString username
Definition Stun.hxx:227
StunAtrAddress4 sourceAddress
Definition Stun.hxx:221
StunAtrAddress4 alternateServer
Definition Stun.hxx:266
StunMessage()=default
StunAtrAddress4 turnDestinationAddress
Definition Stun.hxx:284
bool hasMappedAddress
Definition Stun.hxx:211
bool hasReflectedFrom
Definition Stun.hxx:245
StunAtrUnknown unknownAttributes
Definition Stun.hxx:243
bool hasXorMappedAddress
Definition Stun.hxx:254
bool hasSecondaryAddress
Definition Stun.hxx:262
StunAtrAddress4 xorMappedAddress
Definition Stun.hxx:255
bool hasSourceAddress
Definition Stun.hxx:220
bool hasTurnDestinationAddress
Definition Stun.hxx:283
bool hasAlternateServer
Definition Stun.hxx:265
StunAtrAddress4 turnAlternateServer
Definition Stun.hxx:275
resip::Data * realm
Definition Stun.hxx:249
uint32_t fingerprint
Definition Stun.hxx:269
StunMsgHdr msgHdr
Definition Stun.hxx:209
resip::Data * turnData
Definition Stun.hxx:290
bool hasTurnRemoteAddress
Definition Stun.hxx:286
StunAtrAddress4 mappedAddress
Definition Stun.hxx:212
StunAtrAddress4 responseAddress
Definition Stun.hxx:215
uint32_t turnBandwidth
Definition Stun.hxx:281
StunAtrIntegrity messageIntegrity
Definition Stun.hxx:233
uint16_t msgType
Definition Stun.hxx:122
uint16_t msgLength
Definition Stun.hxx:123
resip::Socket altIpPortFd
Definition Stun.hxx:341
resip::Socket altIpFd
Definition Stun.hxx:340
resip::Socket altPortFd
Definition Stun.hxx:339
StunAddress4 myAddr
Definition Stun.hxx:336
StunAddress4 altAddr
Definition Stun.hxx:337
resip::Socket myFd
Definition Stun.hxx:338