return SWITCH_STATUS_SUCCESS;
}
+SWITCH_STANDARD_API(gethost_api_function)
+{
+ struct sockaddr_in sa;
+ struct hostent *he;
+ const char *ip;
+ char buf[50] = "";
+
+ if (!zstr(cmd)) {
+ he = gethostbyname(cmd);
+
+ if (he) {
+ memcpy(&sa.sin_addr, he->h_addr, sizeof(struct in_addr));
+ ip = inet_ntop(AF_INET, &sa.sin_addr, buf, sizeof(buf));
+ stream->write_function(stream, "%s", ip);
+ return SWITCH_STATUS_SUCCESS;
+ }
+ }
+
+ stream->write_function(stream, "-ERR");
+
+ return SWITCH_STATUS_SUCCESS;
+}
+
SWITCH_STANDARD_API(shutdown_function)
{
SWITCH_ADD_API(commands_api_interface, "hostname", "Return the system hostname", hostname_api_function, "");
SWITCH_ADD_API(commands_api_interface, "interface_ip", "Return the primary IP of an interface", interface_ip_function, INTERFACE_IP_SYNTAX);
SWITCH_ADD_API(commands_api_interface, "switchname", "Return the switch name", switchname_api_function, "");
+ SWITCH_ADD_API(commands_api_interface, "gethost", "gethostbyname", gethost_api_function, "");
SWITCH_ADD_API(commands_api_interface, "hupall", "hupall", hupall_api_function, "<cause> [<var> <value>]");
SWITCH_ADD_API(commands_api_interface, "in_group", "Determine if a user is in a group", in_group_function, "<user>[@<domain>] <group_name>");
SWITCH_ADD_API(commands_api_interface, "is_lan_addr", "See if an ip is a lan addr", lan_addr_function, "<ip>");
if (!strchr(host, '.') || switch_true(switch_event_get_header(var_event, "sip_gethostbyname"))) {
struct sockaddr_in sa;
struct hostent *he = gethostbyname(host);
- char *ip, *tmp;
+ char buf[50] = "", *tmp;
+ const char *ip;
if (he) {
memcpy(&sa.sin_addr, he->h_addr, sizeof(struct in_addr));
- ip = inet_ntoa(sa.sin_addr);
-
+ ip = inet_ntop(AF_INET, &sa.sin_addr, buf, sizeof(buf));
tmp = switch_string_replace(dest, host, ip);
- //host = switch_core_session_strdup(nsession, ip);
- //dest = switch_core_session_strdup(nsession, tmp);
+
switch_channel_set_variable_printf(nchannel, "sip_route_uri", "sip:%s", tmp);
free(tmp);
}