Commit 60cf169b authored by Youness Alaoui's avatar Youness Alaoui Committed by Olivier Crête

Add support for MS-TURN in OC2007 compatibility turn usage

parent 714c9603
...@@ -211,6 +211,8 @@ typedef enum ...@@ -211,6 +211,8 @@ typedef enum
* libjingle * libjingle
* @STUN_ATTRIBUTE_MS_VERSION: The MS-VERSION optional attribute as defined * @STUN_ATTRIBUTE_MS_VERSION: The MS-VERSION optional attribute as defined
* by [MS-TURN] * by [MS-TURN]
* @STUN_ATTRIBUTE_MS_XOR_MAPPED_ADDRESS: The XOR-MAPPED-ADDRESS optional
* attribute as defined by [MS-TURN]
* @STUN_ATTRIBUTE_SOFTWARE: The SOFTWARE optional attribute as defined by RFC5389 * @STUN_ATTRIBUTE_SOFTWARE: The SOFTWARE optional attribute as defined by RFC5389
* @STUN_ATTRIBUTE_ALTERNATE_SERVER: The ALTERNATE-SERVER optional attribute as * @STUN_ATTRIBUTE_ALTERNATE_SERVER: The ALTERNATE-SERVER optional attribute as
* defined by RFC5389 * defined by RFC5389
...@@ -288,6 +290,7 @@ typedef enum ...@@ -288,6 +290,7 @@ typedef enum
/* 0x8000-0x8021 */ /* reserved */ /* 0x8000-0x8021 */ /* reserved */
STUN_ATTRIBUTE_OPTIONS=0x8001, /* libjingle */ STUN_ATTRIBUTE_OPTIONS=0x8001, /* libjingle */
STUN_ATTRIBUTE_MS_VERSION=0x8008, /* MS-TURN */ STUN_ATTRIBUTE_MS_VERSION=0x8008, /* MS-TURN */
STUN_ATTRIBUTE_MS_XOR_MAPPED_ADDRESS=0x8020, /* MS-TURN */
STUN_ATTRIBUTE_SOFTWARE=0x8022, /* RFC5389 */ STUN_ATTRIBUTE_SOFTWARE=0x8022, /* RFC5389 */
STUN_ATTRIBUTE_ALTERNATE_SERVER=0x8023, /* RFC5389 */ STUN_ATTRIBUTE_ALTERNATE_SERVER=0x8023, /* RFC5389 */
/* 0x8024 */ /* reserved */ /* 0x8024 */ /* reserved */
......
...@@ -343,14 +343,36 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -343,14 +343,36 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
stun_debug (" No MAPPED-ADDRESS: %d\n", val); stun_debug (" No MAPPED-ADDRESS: %d\n", val);
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
} else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_MSN || } else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_MSN) {
compatibility == STUN_USAGE_TURN_COMPATIBILITY_OC2007) {
val = stun_message_find_addr (msg, val = stun_message_find_addr (msg,
STUN_ATTRIBUTE_MSN_MAPPED_ADDRESS, addr, addrlen); STUN_ATTRIBUTE_MSN_MAPPED_ADDRESS, addr, addrlen);
if (val == STUN_MESSAGE_RETURN_SUCCESS) if (val == STUN_MESSAGE_RETURN_SUCCESS)
ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS; ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS;
val = stun_message_find_addr (msg,
STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen);
if (val != STUN_MESSAGE_RETURN_SUCCESS) {
stun_debug (" No MAPPED-ADDRESS: %d\n", val);
return STUN_USAGE_TURN_RETURN_ERROR;
}
} else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_OC2007) {
union {
StunTransactionId id;
uint32_t u32[4];
} transid;
uint32_t magic_cookie;
stun_message_id (msg, transid.id);
magic_cookie = transid.u32[0];
val = stun_message_find_xor_addr_full (msg,
STUN_ATTRIBUTE_MS_XOR_MAPPED_ADDRESS, addr, addrlen,
htonl (magic_cookie));
if (val == STUN_MESSAGE_RETURN_SUCCESS)
ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS;
val = stun_message_find_addr (msg, val = stun_message_find_addr (msg,
STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen); STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen);
if (val != STUN_MESSAGE_RETURN_SUCCESS) { if (val != STUN_MESSAGE_RETURN_SUCCESS) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment