diff options
Diffstat (limited to 'if-bsd.c')
| -rw-r--r-- | if-bsd.c | 69 |
1 files changed, 0 insertions, 69 deletions
@@ -369,72 +369,3 @@ manage_link(int fd) } } } - -static void -discover_link(struct interface **ifs, int argc, char * const *argv, - struct ifreq *ifr) -{ - struct interface *ifp, *ifl = NULL; - struct sockaddr_dl *sdl; - int n; - - if (ifr->ifr_addr.sa_family != AF_LINK) - return; - for (ifp = *ifs; ifp; ifp = ifp->next) { - if (strcmp(ifp->name, ifr->ifr_name) == 0) - return; - ifl = ifp; - } - if (argc > 0) { - for (n = 0; n < argc; n++) - if (strcmp(ifr->ifr_name, argv[n]) == 0) - break; - if (n == argc) - return; - } else { - for (n = 0; n < ifdc; n++) - if (fnmatch(ifdv[n], ifr->ifr_name, 0) == 0) - return; - for (n = 0; n < ifac; n++) - if (fnmatch(ifav[n], ifr->ifr_name, 0) == 0) - break; - if (ifac && n == ifac) - return; - } - if (!(ifp = init_interface(ifr->ifr_name))) - return; - sdl = (struct sockaddr_dl *)(void *)&ifr->ifr_addr; - switch(sdl->sdl_type) { - case IFT_ETHER: - ifp->family = ARPHRD_ETHER; - ifp->hwlen = sdl->sdl_alen; - break; - case IFT_IEEE1394: - ifp->family = ARPHRD_IEEE1394; - ifp->hwlen = sdl->sdl_alen; - break; - case IFT_LOOP: - /* We don't allow loopback unless requested */ - if (argc == 0 && ifac == 0) { - free(ifp); - ifp = NULL; - } - break; - } - if (ifp && ifp->hwlen) - memcpy(ifp->hwaddr, LLADDR(sdl), ifp->hwlen); - if (ifl) - ifl->next = ifp; - else - *ifs = ifp; -} - -struct interface * -discover_interfaces(int argc, char * const *argv) -{ - struct interface *ifs = NULL; - - do_interface(NULL, discover_link, &ifs, argc, argv, - NULL, NULL, NULL, 2); - return ifs; -} |
