mirror of
https://github.com/fluencelabs/musl
synced 2025-05-28 15:11:34 +00:00
getifaddrs: one less indent level
This commit is contained in:
parent
c82f53f67c
commit
69a1983872
@ -137,39 +137,37 @@ int getifaddrs(struct ifaddrs **ifap)
|
||||
struct ifreq reqs[32]; /* arbitrary chosen boundary */
|
||||
struct ifconf conf = {.ifc_len = sizeof reqs, .ifc_req = reqs};
|
||||
if(-1 == ioctl(sock, SIOCGIFCONF, &conf)) goto err;
|
||||
else {
|
||||
size_t reqitems = conf.ifc_len / sizeof(struct ifreq);
|
||||
for(head = list; head; head = (stor*)head->next) {
|
||||
size_t i;
|
||||
for(i = 0; i < reqitems; i++) {
|
||||
// get SIOCGIFADDR of active interfaces.
|
||||
if(!strcmp(reqs[i].ifr_name, head->name)) {
|
||||
head->addr.v4 = *(struct sockaddr_in*)&reqs[i].ifr_addr;
|
||||
head->ifa.ifa_addr = (struct sockaddr*) &head->addr;
|
||||
break;
|
||||
}
|
||||
size_t reqitems = conf.ifc_len / sizeof(struct ifreq);
|
||||
for(head = list; head; head = (stor*)head->next) {
|
||||
size_t i;
|
||||
for(i = 0; i < reqitems; i++) {
|
||||
// get SIOCGIFADDR of active interfaces.
|
||||
if(!strcmp(reqs[i].ifr_name, head->name)) {
|
||||
head->addr.v4 = *(struct sockaddr_in*)&reqs[i].ifr_addr;
|
||||
head->ifa.ifa_addr = (struct sockaddr*) &head->addr;
|
||||
break;
|
||||
}
|
||||
struct ifreq req;
|
||||
snprintf(req.ifr_name, sizeof req.ifr_name, "%s", head->name);
|
||||
if(-1 == ioctl(sock, SIOCGIFFLAGS, &req)) goto err;
|
||||
}
|
||||
struct ifreq req;
|
||||
snprintf(req.ifr_name, sizeof req.ifr_name, "%s", head->name);
|
||||
if(-1 == ioctl(sock, SIOCGIFFLAGS, &req)) goto err;
|
||||
|
||||
head->ifa.ifa_flags = req.ifr_flags;
|
||||
if(head->ifa.ifa_addr) {
|
||||
/* or'ing flags with IFF_LOWER_UP on active interfaces to mimic glibc */
|
||||
head->ifa.ifa_flags |= IFF_LOWER_UP;
|
||||
if(-1 == ioctl(sock, SIOCGIFNETMASK, &req)) goto err;
|
||||
head->netmask.v4 = *(struct sockaddr_in*)&req.ifr_netmask;
|
||||
head->ifa.ifa_netmask = (struct sockaddr*) &head->netmask;
|
||||
|
||||
if(head->ifa.ifa_flags & IFF_POINTOPOINT) {
|
||||
if(-1 == ioctl(sock, SIOCGIFDSTADDR, &req)) goto err;
|
||||
head->dst.v4 = *(struct sockaddr_in*)&req.ifr_dstaddr;
|
||||
} else {
|
||||
if(-1 == ioctl(sock, SIOCGIFBRDADDR, &req)) goto err;
|
||||
head->dst.v4 = *(struct sockaddr_in*)&req.ifr_broadaddr;
|
||||
}
|
||||
head->ifa.ifa_ifu.ifu_dstaddr = (struct sockaddr*) &head->dst;
|
||||
head->ifa.ifa_flags = req.ifr_flags;
|
||||
if(head->ifa.ifa_addr) {
|
||||
/* or'ing flags with IFF_LOWER_UP on active interfaces to mimic glibc */
|
||||
head->ifa.ifa_flags |= IFF_LOWER_UP;
|
||||
if(-1 == ioctl(sock, SIOCGIFNETMASK, &req)) goto err;
|
||||
head->netmask.v4 = *(struct sockaddr_in*)&req.ifr_netmask;
|
||||
head->ifa.ifa_netmask = (struct sockaddr*) &head->netmask;
|
||||
|
||||
if(head->ifa.ifa_flags & IFF_POINTOPOINT) {
|
||||
if(-1 == ioctl(sock, SIOCGIFDSTADDR, &req)) goto err;
|
||||
head->dst.v4 = *(struct sockaddr_in*)&req.ifr_dstaddr;
|
||||
} else {
|
||||
if(-1 == ioctl(sock, SIOCGIFBRDADDR, &req)) goto err;
|
||||
head->dst.v4 = *(struct sockaddr_in*)&req.ifr_broadaddr;
|
||||
}
|
||||
head->ifa.ifa_ifu.ifu_dstaddr = (struct sockaddr*) &head->dst;
|
||||
}
|
||||
}
|
||||
close(sock);
|
||||
|
Loading…
x
Reference in New Issue
Block a user