diff options
| author | Roy Marples <roy@marples.name> | 2009-04-17 12:49:25 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2009-04-17 12:49:25 +0000 |
| commit | 5ed586386c33ac859efeac16366768d060d9764b (patch) | |
| tree | 471b0dcd5284cf2a1707e135a9ff407addeecd48 /if-bsd.c | |
| parent | 4ca7460fa346b6e8003847864a058ab5f8c0befd (diff) | |
| download | dhcpcd-5ed586386c33ac859efeac16366768d060d9764b.tar.xz | |
discover_interfaces now uses getifaddrs instead of OS specific implementation.
do_interface then becomes do_address and also uses getifaddrs.
Binary size is a little smaller, code size is now a lot smaller.
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; -} |
