{
return getsockopt(sock, level, option, optval, opt_len);
}
+
/* Checks whether IP address sent as argument is valid IP address. */
bool silc_net_is_ip(const char *addr)
/* Find the address from list */
for (i = 0; dest->h_addr_list[i]; i++)
if (!memcmp(dest->h_addr_list[i], &remote.sin_addr,
- sizeof(struct in_addr)))
+ sizeof(struct in_addr)))
break;
if (!dest->h_addr_list[i])
return FALSE;
/* Return name of localhost. */
-char *silc_net_localhost()
+char *silc_net_localhost(void)
{
char hostname[256];
struct hostent *dest;
return strdup(dest->h_name);
}
+
+/* Returns local IP address */
+
+char *silc_net_localip(void)
+{
+ char hostname[256];
+ struct hostent *dest;
+ struct in_addr ip;
+ char *ips;
+
+ if (gethostname(hostname, sizeof(hostname)))
+ return NULL;
+
+ dest = gethostbyname(hostname);
+ if (!dest)
+ return NULL;
+
+ memcpy(&ip.s_addr, dest->h_addr_list[0], 4);
+ ips = inet_ntoa(ip);
+
+ return strdup(ips);
+}