|
|
|
|
@ -1282,21 +1282,27 @@ turn_time_t stun_adjust_allocate_lifetime(turn_time_t lifetime, turn_time_t max_ |
|
|
|
|
|
|
|
|
|
int stun_attr_get_type(stun_attr_ref attr) { |
|
|
|
|
if (attr) { |
|
|
|
|
return (int)(nswap16(((const uint16_t *)attr)[0])); |
|
|
|
|
uint16_t val; |
|
|
|
|
memcpy(&val, attr, sizeof(val)); |
|
|
|
|
return (int)(nswap16(val)); |
|
|
|
|
} |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int stun_attr_get_len(stun_attr_ref attr) { |
|
|
|
|
if (attr) { |
|
|
|
|
return (int)(nswap16(((const uint16_t *)attr)[1])); |
|
|
|
|
uint16_t val; |
|
|
|
|
memcpy(&val, attr + 2, sizeof(val)); |
|
|
|
|
return (int)(nswap16(val)); |
|
|
|
|
} |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const uint8_t *stun_attr_get_value(stun_attr_ref attr) { |
|
|
|
|
if (attr) { |
|
|
|
|
const int len = (int)(nswap16(((const uint16_t *)attr)[1])); |
|
|
|
|
uint16_t val; |
|
|
|
|
memcpy(&val, attr + 2, sizeof(val)); |
|
|
|
|
const int len = (int)(nswap16(val)); |
|
|
|
|
if (len < 1) { |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
@ -1307,7 +1313,9 @@ const uint8_t *stun_attr_get_value(stun_attr_ref attr) { |
|
|
|
|
|
|
|
|
|
int stun_get_requested_address_family(stun_attr_ref attr) { |
|
|
|
|
if (attr) { |
|
|
|
|
const int len = (int)(nswap16(((const uint16_t *)attr)[1])); |
|
|
|
|
uint16_t raw_len; |
|
|
|
|
memcpy(&raw_len, attr + 2, sizeof(raw_len)); |
|
|
|
|
const int len = (int)(nswap16(raw_len)); |
|
|
|
|
if (len != 4) { |
|
|
|
|
return STUN_ATTRIBUTE_REQUESTED_ADDRESS_FAMILY_VALUE_INVALID; |
|
|
|
|
} |
|
|
|
|
|