summaryrefslogtreecommitdiff
path: root/sbin/isakmpd/if.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2004-04-15 18:39:31 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2004-04-15 18:39:31 +0000
commitb1ac98abf9e700f03d5aa5f97c06dab605d6da06 (patch)
treec08a9624b4a539b85c5650bcf09528d13eb2d039 /sbin/isakmpd/if.c
parentaeca45bc7d867b71e9600c7108674fae5db8ff9c (diff)
partial move to KNF. More to come. This has happened because there
are a raft of source code auditors who are willing to help improve this code only if this is done, and hey, isakmpd does need our standard auditing process. ok ho hshoexer
Diffstat (limited to 'sbin/isakmpd/if.c')
-rw-r--r--sbin/isakmpd/if.c149
1 files changed, 71 insertions, 78 deletions
diff --git a/sbin/isakmpd/if.c b/sbin/isakmpd/if.c
index ab6cd66bcc2..52bd4ec1905 100644
--- a/sbin/isakmpd/if.c
+++ b/sbin/isakmpd/if.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if.c,v 1.18 2004/04/13 21:48:15 hshoexer Exp $ */
+/* $OpenBSD: if.c,v 1.19 2004/04/15 18:39:25 deraadt Exp $ */
/* $EOM: if.c,v 1.12 1999/10/01 13:45:20 niklas Exp $ */
/*
@@ -59,96 +59,89 @@
* Return 0 if successful, -1 otherwise.
*/
int
-siocgifconf (struct ifconf *ifcp)
+siocgifconf(struct ifconf *ifcp)
{
- int s;
- int len;
- caddr_t buf, new_buf;
-
- /* Get a socket to ask for the network interface configurations. */
- s = monitor_socket (AF_INET, SOCK_DGRAM, 0);
- if (s == -1)
- {
- log_error ("siocgifconf: socket (AF_INET, SOCK_DGRAM, 0) failed");
- return -1;
- }
-
- len = sizeof (struct ifreq) * INITIAL_IFREQ_COUNT;
- buf = 0;
- while (1)
- {
- /*
- * Allocate a larger buffer each time around the loop and get the
- * network interfaces configurations into it.
- */
- new_buf = realloc (buf, len);
- if (!new_buf)
- {
- log_error ("siocgifconf: realloc (%p, %d) failed", buf, len);
- goto err;
+ caddr_t buf, new_buf;
+ int s, len;
+
+ /* Get a socket to ask for the network interface configurations. */
+ s = monitor_socket(AF_INET, SOCK_DGRAM, 0);
+ if (s == -1) {
+ log_error("siocgifconf: socket (AF_INET, SOCK_DGRAM, 0) failed");
+ return -1;
}
- ifcp->ifc_len = len;
- ifcp->ifc_buf = buf = new_buf;
- if (ioctl (s, SIOCGIFCONF, ifcp) == -1)
- {
- log_error ("siocgifconf: ioctl (%d, SIOCGIFCONF, ...) failed", s);
- goto err;
+ len = sizeof(struct ifreq) * INITIAL_IFREQ_COUNT;
+ buf = 0;
+ while (1) {
+ /*
+ * Allocate a larger buffer each time around the loop and get the
+ * network interfaces configurations into it.
+ */
+ new_buf = realloc(buf, len);
+ if (!new_buf) {
+ log_error("siocgifconf: realloc (%p, %d) failed", buf, len);
+ goto err;
+ }
+ ifcp->ifc_len = len;
+ ifcp->ifc_buf = buf = new_buf;
+ if (ioctl(s, SIOCGIFCONF, ifcp) == -1) {
+ log_error("siocgifconf: ioctl (%d, SIOCGIFCONF, ...) failed", s);
+ goto err;
+ }
+ /*
+ * If there is place for another ifreq we can be sure that the buffer
+ * was big enough, otherwise double the size and try again.
+ */
+ if (len - ifcp->ifc_len >= sizeof(struct ifreq))
+ break;
+ len *= 2;
}
-
- /*
- * If there is place for another ifreq we can be sure that the buffer
- * was big enough, otherwise double the size and try again.
- */
- if (len - ifcp->ifc_len >= sizeof (struct ifreq))
- break;
- len *= 2;
- }
- close (s);
- return 0;
+ close(s);
+ return 0;
err:
- if (buf)
- free (buf);
- ifcp->ifc_len = 0;
- ifcp->ifc_buf = 0;
- close (s);
- return -1;
+ if (buf)
+ free(buf);
+ ifcp->ifc_len = 0;
+ ifcp->ifc_buf = 0;
+ close(s);
+ return -1;
}
#endif
int
-if_map (int (*func) (char *, struct sockaddr *, void *), void *arg)
+if_map(int (*func)(char *, struct sockaddr *, void *), void *arg)
{
- int err = 0;
+ int err = 0;
+
#ifdef HAVE_GETIFADDRS
- struct ifaddrs *ifap, *ifa;
+ struct ifaddrs *ifap, *ifa;
- if (getifaddrs (&ifap) < 0)
- return -1;
+ if (getifaddrs(&ifap) < 0)
+ return -1;
- for (ifa = ifap; ifa; ifa = ifa->ifa_next)
- if ((*func) (ifa->ifa_name, ifa->ifa_addr, arg) == -1)
- err = -1;
- freeifaddrs (ifap);
+ for (ifa = ifap; ifa; ifa = ifa->ifa_next)
+ if ((*func) (ifa->ifa_name, ifa->ifa_addr, arg) == -1)
+ err = -1;
+ freeifaddrs(ifap);
#else
- struct ifconf ifc;
- struct ifreq *ifrp;
- caddr_t limit, p;
- size_t len;
-
- if (siocgifconf (&ifc))
- return -1;
-
- limit = ifc.ifc_buf + ifc.ifc_len;
- for (p = ifc.ifc_buf; p < limit; p += len)
- {
- ifrp = (struct ifreq *)p;
- if ((*func) (ifrp->ifr_name, &ifrp->ifr_addr, arg) == -1)
- err = -1;
- len = sizeof ifrp->ifr_name
- + MAX (sysdep_sa_len (&ifrp->ifr_addr), sizeof ifrp->ifr_addr);
- }
- free (ifc.ifc_buf);
+ struct ifconf ifc;
+ struct ifreq *ifrp;
+ caddr_t limit, p;
+ size_t len;
+
+ if (siocgifconf(&ifc))
+ return -1;
+
+ limit = ifc.ifc_buf + ifc.ifc_len;
+ for (p = ifc.ifc_buf; p < limit; p += len) {
+ ifrp = (struct ifreq *) p;
+ if ((*func) (ifrp->ifr_name, &ifrp->ifr_addr, arg) == -1)
+ err = -1;
+ len = sizeof ifrp->ifr_name +
+ MAX(sysdep_sa_len(&ifrp->ifr_addr), sizeof ifrp->ifr_addr);
+ }
+ free(ifc.ifc_buf);
#endif
- return err;
+ return err;
}