*/
SWITCH_DECLARE(const char *) switch_stun_value_to_name(int32_t type, uint32_t value);
+SWITCH_DECLARE(char *) switch_stun_host_lookup(const char *host, switch_memory_pool_t *pool);
/*!
\brief Extract a mapped address (IP:PORT) from a packet attribute
return status;
}
- if (!strncasecmp(sourceip, "stun:", 5)) {
+ if (!strncasecmp(sourceip, "host:", 5)) {
+ status = (*ip = switch_stun_host_lookup(sourceip + 5, pool)) ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
+ } else if (!strncasecmp(sourceip, "stun:", 5)) {
char *p;
if (!(profile->pflags & PFLAG_STUN_ENABLED)) {
return 1;
}
+SWITCH_DECLARE(char *) switch_stun_host_lookup(const char *host, switch_memory_pool_t *pool)
+{
+ switch_sockaddr_t *addr = NULL;
+ char buf[30];
+
+ switch_sockaddr_info_get(&addr, host, SWITCH_UNSPEC, 0, 0, pool);
+ return switch_core_strdup(pool, switch_str_nil(switch_get_addr(buf, sizeof(buf), addr)));
+
+}
+
SWITCH_DECLARE(switch_status_t) switch_stun_lookup(char **ip,
switch_port_t *port, char *stunip, switch_port_t stunport, char **err, switch_memory_pool_t *pool)
{