version 1.58, 2008/10/21 17:32:03
|
version 1.59, 2008/10/30 13:57:44
|
|
|
(char *)calloc(PEGASUS_MAX_NETWORK_INTERFACES, sizeof(struct ifreq)); | (char *)calloc(PEGASUS_MAX_NETWORK_INTERFACES, sizeof(struct ifreq)); |
conf.ifc_len = PEGASUS_MAX_NETWORK_INTERFACES * sizeof(struct ifreq); | conf.ifc_len = PEGASUS_MAX_NETWORK_INTERFACES * sizeof(struct ifreq); |
| |
if (-1 < ioctl(AF_INET, SIOCGIFCONF, &conf)) |
int sd=socket(AF_INET, SOCK_DGRAM, 0); |
|
int rc = ioctl(sd, SIOCGIFCONF, &conf); |
|
close(sd); |
|
if (-1 < rc) |
{ | { |
struct ifreq* r = conf.ifc_req; | struct ifreq* r = conf.ifc_req; |
sockaddr_in* addr; | sockaddr_in* addr; |
|
|
ifc.ifc_req=(struct ifreq *)realloc(ifc.ifc_req, bsz); | ifc.ifc_req=(struct ifreq *)realloc(ifc.ifc_req, bsz); |
if (!ifc.ifc_req) | if (!ifc.ifc_req) |
{ | { |
|
close(sd); |
return ips; | return ips; |
} | } |
ifc.ifc_len=bsz; | ifc.ifc_len=bsz; |
if (ioctl(sd, SIOCGIFCONF, (caddr_t)&ifc) == -1) | if (ioctl(sd, SIOCGIFCONF, (caddr_t)&ifc) == -1) |
{ | { |
free(ifc.ifc_req); | free(ifc.ifc_req); |
|
close(sd); |
return ips; | return ips; |
} | } |
if (prevsz==ifc.ifc_len) | if (prevsz==ifc.ifc_len) |
|
|
prevsz=(0==ifc.ifc_len ? bsz : ifc.ifc_len); | prevsz=(0==ifc.ifc_len ? bsz : ifc.ifc_len); |
} | } |
} while (1); | } while (1); |
|
close(sd); |
| |
ifc.ifc_req=(struct ifreq *)realloc(ifc.ifc_req, prevsz); | ifc.ifc_req=(struct ifreq *)realloc(ifc.ifc_req, prevsz); |
| |