46 lines
983 B
C
46 lines
983 B
C
//
|
|
// IP gethostname
|
|
//
|
|
|
|
#include "netlib.h"
|
|
|
|
const char *ip_host2name( char *buf, int max, const struct sockaddr_storage *sa )
|
|
{
|
|
const char *s = NULL;
|
|
|
|
switch (sa->ss_family)
|
|
{
|
|
case AF_INET:
|
|
s = inet_ntop(sa->ss_family,
|
|
&((struct sockaddr_in *)sa)->sin_addr,
|
|
buf, max);
|
|
break;
|
|
case AF_INET6:
|
|
s = inet_ntop(sa->ss_family,
|
|
&((struct sockaddr_in6 *)sa)->sin6_addr,
|
|
buf, max);
|
|
break;
|
|
}
|
|
if ( s )
|
|
return s;
|
|
|
|
return strerror(errno);
|
|
}
|
|
|
|
int ip_name2host( const char *buf, struct sockaddr_storage *sa )
|
|
{
|
|
// from string
|
|
switch (sa->ss_family)
|
|
{
|
|
case AF_INET:
|
|
return inet_pton(sa->ss_family, buf,
|
|
&((struct sockaddr_in *)sa)->sin_addr );
|
|
break;
|
|
case AF_INET6:
|
|
return inet_pton(sa->ss_family, buf,
|
|
&((struct sockaddr_in6 *)sa)->sin6_addr );
|
|
break;
|
|
}
|
|
return EAFNOSUPPORT;
|
|
}
|