FS-5081 --resolve cool, thanks
This commit is contained in:
parent
4b46a5511e
commit
a55a9b3915
|
@ -193,6 +193,7 @@ SWITCH_DECLARE(switch_stun_packet_t *) switch_stun_packet_parse(uint8_t *buf, ui
|
||||||
*/
|
*/
|
||||||
switch (attr->type) {
|
switch (attr->type) {
|
||||||
case SWITCH_STUN_ATTR_MAPPED_ADDRESS: /* Address, we only care about this one, but parse the others too */
|
case SWITCH_STUN_ATTR_MAPPED_ADDRESS: /* Address, we only care about this one, but parse the others too */
|
||||||
|
case SWITCH_STUN_ATTR_XOR_MAPPED_ADDRESS:
|
||||||
case SWITCH_STUN_ATTR_RESPONSE_ADDRESS:
|
case SWITCH_STUN_ATTR_RESPONSE_ADDRESS:
|
||||||
case SWITCH_STUN_ATTR_SOURCE_ADDRESS:
|
case SWITCH_STUN_ATTR_SOURCE_ADDRESS:
|
||||||
case SWITCH_STUN_ATTR_CHANGED_ADDRESS:
|
case SWITCH_STUN_ATTR_CHANGED_ADDRESS:
|
||||||
|
@ -350,6 +351,28 @@ SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_get_mapped_address(switch_s
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_get_xor_mapped_address(switch_stun_packet_attribute_t *attribute, uint32_t cookie, char *ipstr, uint16_t *port)
|
||||||
|
{
|
||||||
|
switch_stun_ip_t *ip;
|
||||||
|
uint8_t x, *i;
|
||||||
|
char *p = ipstr;
|
||||||
|
|
||||||
|
ip = (switch_stun_ip_t *) attribute->value;
|
||||||
|
ip->address ^= cookie;
|
||||||
|
|
||||||
|
i = (uint8_t *) & ip->address;
|
||||||
|
*ipstr = 0;
|
||||||
|
for (x = 0; x < 4; x++) {
|
||||||
|
sprintf(p, "%u%s", i[x], x == 3 ? "" : ".");
|
||||||
|
p = ipstr + strlen(ipstr);
|
||||||
|
}
|
||||||
|
|
||||||
|
ip->port ^= ntohl(cookie) >> 16;
|
||||||
|
*port = ip->port;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
SWITCH_DECLARE(char *) switch_stun_packet_attribute_get_username(switch_stun_packet_attribute_t *attribute, char *username, uint16_t len)
|
SWITCH_DECLARE(char *) switch_stun_packet_attribute_get_username(switch_stun_packet_attribute_t *attribute, char *username, uint16_t len)
|
||||||
{
|
{
|
||||||
uint16_t cpylen;
|
uint16_t cpylen;
|
||||||
|
@ -605,6 +628,11 @@ SWITCH_DECLARE(switch_status_t) switch_stun_lookup(char **ip,
|
||||||
switch_stun_packet_attribute_get_mapped_address(attr, rip, &rport);
|
switch_stun_packet_attribute_get_mapped_address(attr, rip, &rport);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SWITCH_STUN_ATTR_XOR_MAPPED_ADDRESS:
|
||||||
|
if (attr->type) {
|
||||||
|
switch_stun_packet_attribute_get_xor_mapped_address(attr, packet->header.cookie, rip, &rport);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SWITCH_STUN_ATTR_USERNAME:
|
case SWITCH_STUN_ATTR_USERNAME:
|
||||||
if (attr->type) {
|
if (attr->type) {
|
||||||
switch_stun_packet_attribute_get_username(attr, username, 32);
|
switch_stun_packet_attribute_get_username(attr, username, 32);
|
||||||
|
|
Loading…
Reference in New Issue