getlocaladdrs

pull/5/head
yuqing 2016-01-18 10:17:45 +08:00
parent 05e01ce113
commit a786f36d65
2 changed files with 49 additions and 47 deletions

View File

@ -1571,36 +1571,36 @@ int getlocaladdrs(char ip_addrs[][IP_ADDRESS_SIZE], \
ifc1 = ifc; ifc1 = ifc;
while (NULL != ifc) while (NULL != ifc)
{ {
struct sockaddr *s; struct sockaddr *s;
s = ifc->ifa_addr; s = ifc->ifa_addr;
if (NULL != s && AF_INET == s->sa_family) if (NULL != s && AF_INET == s->sa_family)
{ {
if (max_count <= *count) if (max_count <= *count)
{ {
logError("file: "__FILE__", line: %d, "\ logError("file: "__FILE__", line: %d, "\
"max_count: %d < iterface count: %d", \ "max_count: %d < iterface count: %d", \
__LINE__, max_count, *count); __LINE__, max_count, *count);
freeifaddrs(ifc1); freeifaddrs(ifc1);
return ENOSPC; return ENOSPC;
} }
if (inet_ntop(AF_INET, &((struct sockaddr_in *)s)-> \ if (inet_ntop(AF_INET, &((struct sockaddr_in *)s)-> \
sin_addr, ip_addrs[*count], IP_ADDRESS_SIZE) != NULL) sin_addr, ip_addrs[*count], IP_ADDRESS_SIZE) != NULL)
{ {
(*count)++; (*count)++;
} }
else else
{ {
logWarning("file: "__FILE__", line: %d, " \ logWarning("file: "__FILE__", line: %d, " \
"call inet_ntop fail, " \ "call inet_ntop fail, " \
"errno: %d, error info: %s", \ "errno: %d, error info: %s", \
__LINE__, errno, STRERROR(errno)); __LINE__, errno, STRERROR(errno));
} }
} }
ifc = ifc->ifa_next; ifc = ifc->ifa_next;
} }
freeifaddrs(ifc1); freeifaddrs(ifc1);
return *count > 0 ? 0 : ENOENT; return *count > 0 ? 0 : ENOENT;
@ -1619,7 +1619,7 @@ int getlocaladdrs(char ip_addrs[][IP_ADDRESS_SIZE], \
int result; int result;
*count = 0; *count = 0;
s = socket(AF_INET, SOCK_STREAM, 0); s = socket(AF_INET, SOCK_DGRAM, 0);
if (s < 0) if (s < 0)
{ {
logError("file: "__FILE__", line: %d, " \ logError("file: "__FILE__", line: %d, " \
@ -1656,26 +1656,28 @@ int getlocaladdrs(char ip_addrs[][IP_ADDRESS_SIZE], \
return ENOSPC; return ENOSPC;
} }
s_in = (struct sockaddr_in *) &ifrp->ifr_addr;
s_in = (struct sockaddr_in *) &ifrp->ifr_addr;
if (sa->sa_family == AF_INET) if (sa->sa_family == AF_INET)
{ {
if (!inet_ntop(AF_INET, &s_in->sin_addr, \ if (!inet_ntop(AF_INET, &s_in->sin_addr, \
ip_addrs[*count], IP_ADDRESS_SIZE)) ip_addrs[*count], IP_ADDRESS_SIZE))
{ {
result = errno != 0 ? errno : EMFILE; result = errno != 0 ? errno : EMFILE;
logError("file: "__FILE__", line: %d, " \ logError("file: "__FILE__", line: %d, " \
"call inet_ntop fail, " \ "call inet_ntop fail, " \
"errno: %d, error info: %s", \ "errno: %d, error info: %s", \
__LINE__, result, STRERROR(result)); __LINE__, result, STRERROR(result));
close(s); close(s);
return result; return result;
} }
(*count)++; (*count)++;
} }
#ifdef OS_FREEBSD
ifrp = (struct ifreq*)((caddr_t)&ifrp->ifr_addr + sa->sa_len); ifrp = (struct ifreq*)((caddr_t)&ifrp->ifr_addr + sa->sa_len);
#else
ifrp++;
#endif
} }
close(s); close(s);

View File

@ -93,7 +93,7 @@ print_local_host_ip_addrs();
{ {
FastProcessInfo *processes; FastProcessInfo *processes;
get_processes(&processes, &count); get_processes(&processes, &count);
printf("count: %d\n", count); printf("process count: %d\n", count);
for (i=0; i<count; i++) for (i=0; i<count; i++)
{ {
printf("%d %d %c %s\n", processes[i].field_count, processes[i].pid, processes[i].state, processes[i].comm); printf("%d %d %c %s\n", processes[i].field_count, processes[i].pid, processes[i].state, processes[i].comm);