X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/d76cf88cd996f286bbace99a149ce16c50c2f852..49e57291d78de2b583d6f2197ae6f9d9ff05e456:/lib/ifreq.c diff --git a/lib/ifreq.c b/lib/ifreq.c index 91d5090..3ec92b0 100644 --- a/lib/ifreq.c +++ b/lib/ifreq.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2007 Richard Kettlewell + * Copyright (C) 2007, 2008 Richard Kettlewell * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,47 +17,22 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ -/** @file lib/ffreq.c +/** @file lib/ifreq.c * @brief Network interface support */ -#include -#include "types.h" +#include "common.h" #include #include #include #include #include -#include #include "ifreq.h" #include "mem.h" #include "log.h" -/** @brief Get the list of network interfaces - * @param fd File descriptor to use - * @param interfaces Where to put pointer to array of interfaces - * @param ninterfaces Where to put count of interfaces - */ -void ifreq_list(int fd, struct ifreq **interfaces, int *ninterfaces) { - struct ifconf ifc; - int l; - - ifc.ifc_len = 0; - ifc.ifc_req = 0; - do { - l = ifc.ifc_len = ifc.ifc_len ? 2 * ifc.ifc_len - : 16 * (int)sizeof (struct ifreq); - if(!l) fatal(0, "out of memory"); - ifc.ifc_req = xrealloc(ifc.ifc_req, l); - if(ioctl(fd, SIOCGIFCONF, &ifc) < 0) - fatal(errno, "error calling ioctl SIOCGIFCONF"); - } while(l == ifc.ifc_len); - *ninterfaces = ifc.ifc_len / sizeof (struct ifreq); - *interfaces = ifc.ifc_req; -} - /** @brief Return true if two socket addresses match */ int sockaddr_equal(const struct sockaddr *a, const struct sockaddr *b) { if(a->sa_family != b->sa_family)