- *cp = '0' + ifp->if_unit;
- ifr.ifr_addr = ifp->if_addr;
- error = copyout((caddr_t)&ifr, ifc->ifc_buf, sizeof (ifr));
- if (error)
- break;
- space -= sizeof (ifr);
- ifc->ifc_req++;
+ *cp++ = '0' + ifp->if_unit; *cp = '\0';
+ if ((ifa = ifp->if_addrlist) == 0) {
+ bzero((caddr_t)&ifr.ifr_addr, sizeof(ifr.ifr_addr));
+ error = copyout((caddr_t)&ifr, (caddr_t)ifrp, sizeof (ifr));
+ if (error)
+ break;
+ space -= sizeof (ifr), ifrp++;
+ } else
+ for ( ; space > sizeof (ifr) && ifa; ifa = ifa->ifa_next) {
+ ifr.ifr_addr = ifa->ifa_addr;
+ error = copyout((caddr_t)&ifr, (caddr_t)ifrp, sizeof (ifr));
+ if (error)
+ break;
+ space -= sizeof (ifr), ifrp++;
+ }