ifconfig(8): Sync with FreeBSD a bit and various cleanups
authorAaron LI <aly@aaronly.me>
Sat, 24 Mar 2018 08:56:39 +0000 (16:56 +0800)
committerAaron LI <aly@aaronly.me>
Sun, 5 Aug 2018 01:47:42 +0000 (09:47 +0800)
* Sync ifconfig.c a bit with FreeBSD; replace several warnx() with
  errx(), and improve error messages a bit.

* Remove unnecessary exit() after Perror().

* Sync if_clone.c with FreeBSD.

* Add inclusion guard to ifconfig.h.

* Make iseq() a static function for ifieee80211.c and regdomain.c,
  replacing the duplicate definitions of it; and use iseq()
  consistently to replace strncasecmp() and strcasecmp().

* Move "struct ident" from regdomain.c to regdomain.h, and add and use
  "enum IdentType".

* Various whitespace cleanups.

* Cleanup header file inclusion: remove duplicates, and reorder a bit.

* Fix various signed vs. unsigned comparisons.

* Fix some compilation warnings, and raise WARNS to 3.

15 files changed:
sbin/ifconfig/Makefile
sbin/ifconfig/af_inet.c
sbin/ifconfig/af_inet6.c
sbin/ifconfig/af_link.c
sbin/ifconfig/ifbridge.c
sbin/ifconfig/ifcarp.c
sbin/ifconfig/ifclone.c
sbin/ifconfig/ifconfig.c
sbin/ifconfig/ifconfig.h
sbin/ifconfig/ifieee80211.c
sbin/ifconfig/iflagg.c
sbin/ifconfig/ifmedia.c
sbin/ifconfig/ifvlan.c
sbin/ifconfig/regdomain.c
sbin/ifconfig/regdomain.h

index 4cee84d..52c75fe 100644 (file)
@@ -17,24 +17,24 @@ SRCS+=      af_inet.c               # IPv4 support
 SRCS+= af_inet6.c              # IPv6 support
 
 SRCS+= ifclone.c               # clone device support
-SRCS+=  iflagg.c
 #SRCS+=        ifmac.c                 # MAC support
 SRCS+= ifmedia.c               # SIOC[GS]IFMEDIA support
 SRCS+= ifvlan.c                # SIOC[GS]ETVLAN support
-SRCS+= ifieee80211.c           # SIOC[GS]IEEE80211 support
+SRCS+= ifieee80211.c           # SIOC[GS]IEEE80211 support
 SRCS+= regdomain.c
 
 SRCS+= ifcarp.c                # SIOC[GS]VH support
 #SRCS+=        ifpfsync.c              # pfsync(4) support
 
 SRCS+= ifbridge.c              # bridge support
+SRCS+= iflagg.c                # lagg support
 
 DPADD= ${LIBBSDXML} ${LIBSBUF}
 LDADD= -lbsdxml -lsbuf
 
 MAN=   ifconfig.8
 
-WARNS= 2
+WARNS?=        3
 NO_STRICT_ALIASING=
 
 .include <bsd.prog.mk>
index 04e3fa2..c804596 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 #include <net/if.h>
+#include <net/if_var.h>                /* for struct ifaddr */
 #include <net/route.h>         /* for RTX_IFA */
+#include <netinet/in.h>
+#include <netinet/in_var.h>
+#include <arpa/inet.h>
+#include <netdb.h>
 
 #include <err.h>
 #include <stdio.h>
 #include <string.h>
 #include <unistd.h>
 
-#include <netinet/in.h>
-#include <net/if_var.h>                /* for struct ifaddr */
-#include <netinet/in_var.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-
 #include "ifconfig.h"
 
 static struct ifaliasreq in_addreq;
@@ -56,7 +55,7 @@ static void
 in_status(int s __unused, const struct rt_addrinfo * info)
 {
        struct sockaddr_in *sin, null_sin;
-       
+
        memset(&null_sin, 0, sizeof(null_sin));
 
        sin = (struct sockaddr_in *)info->rti_info[RTAX_IFA];
@@ -119,16 +118,16 @@ in_getaddr(const char *s, int which)
                                errx(1, "%s: bad value", s);
                        }
                        min->sin_len = sizeof(*min);
-                       min->sin_addr.s_addr = htonl(~((1LL << (32 - masklen)) - 1) & 
-                                             0xffffffff);
+                       min->sin_addr.s_addr = htonl(~((1LL << (32 - masklen)) - 1) &
+                                                    0xffffffff);
                }
        }
 
        if (inet_aton(s, &sin->sin_addr))
                return;
        if ((hp = gethostbyname(s)) != NULL)
-               bcopy(hp->h_addr, (char *)&sin->sin_addr, 
-                   MIN(hp->h_length, sizeof(sin->sin_addr)));
+               bcopy(hp->h_addr, (char *)&sin->sin_addr,
+                     MIN((size_t)hp->h_length, sizeof(sin->sin_addr)));
        else if ((np = getnetbyname(s)) != NULL)
                sin->sin_addr = inet_makeaddr(np->n_net, INADDR_ANY);
        else
index 91bb76b..76561e2 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 #include <net/if.h>
+#include <net/if_var.h>                /* for struct ifaddr */
 #include <net/route.h>         /* for RTX_IFA */
+#include <netinet/in.h>
+#include <netinet/in_var.h>
+#include <netinet6/nd6.h>      /* Define ND6_INFINITE_LIFETIME */
+#include <arpa/inet.h>
+#include <netdb.h>
 
 #include <err.h>
 #include <stdio.h>
 #include <time.h>
 #include <ifaddrs.h>
 
-#include <arpa/inet.h>
-
-#include <netinet/in.h>
-#include <net/if_var.h>                /* for struct ifaddr */
-#include <netinet/in_var.h>
-#include <netdb.h>
-
-#include <netinet6/nd6.h>      /* Define ND6_INFINITE_LIFETIME */
-
 #include "ifconfig.h"
 
 static struct in6_ifreq in6_ridreq;
-static struct in6_aliasreq in6_addreq = 
-  { { 0 }, 
-    { 0 }, 
-    { 0 }, 
-    { 0 }, 
-    0, 
+static struct in6_aliasreq in6_addreq =
+  { { 0 },
+    { 0 },
+    { 0 },
+    { 0 },
+    0,
     { 0, 0, ND6_INFINITE_LIFETIME, ND6_INFINITE_LIFETIME } };
 static int ip6lifetime;
 
@@ -94,7 +91,7 @@ setip6flags(const char *dummyaddr __unused, int flag, int dummysoc __unused,
 }
 
 static void
-setip6lifetime(const char *cmd, const char *val, int s, 
+setip6lifetime(const char *cmd, const char *val, int s,
     const struct afswtch *afp)
 {
        struct timespec now;
@@ -117,14 +114,14 @@ setip6lifetime(const char *cmd, const char *val, int s,
 }
 
 static void
-setip6pltime(const char *seconds, int dummy __unused, int s, 
+setip6pltime(const char *seconds, int dummy __unused, int s,
     const struct afswtch *afp)
 {
        setip6lifetime("pltime", seconds, s, afp);
 }
 
 static void
-setip6vltime(const char *seconds, int dummy __unused, int s, 
+setip6vltime(const char *seconds, int dummy __unused, int s,
     const struct afswtch *afp)
 {
        setip6lifetime("vltime", seconds, s, afp);
@@ -157,7 +154,7 @@ setip6eui64(const char *cmd, int dummy __unused, int s,
                }
        }
        if (!lladdr)
-               errx(EXIT_FAILURE, "could not determine link local address"); 
+               errx(EXIT_FAILURE, "could not determine link local address");
 
        memcpy(&in6->s6_addr[8], &lladdr->s6_addr[8], 8);
 
@@ -478,7 +475,7 @@ in6_status_tunnel(int s)
 static void
 in6_set_tunnel(int s, struct addrinfo *srcres, struct addrinfo *dstres)
 {
-       struct in6_aliasreq in6_addreq; 
+       struct in6_aliasreq in6_addreq;
 
        memset(&in6_addreq, 0, sizeof(in6_addreq));
        strlcpy(in6_addreq.ifra_name, name, IFNAMSIZ);
@@ -499,8 +496,8 @@ static struct cmd inet6_cmds[] = {
        DEF_CMD("-deprecated", -IN6_IFF_DEPRECATED,     setip6flags),
        DEF_CMD("autoconf",     IN6_IFF_AUTOCONF,       setip6flags),
        DEF_CMD("-autoconf",    -IN6_IFF_AUTOCONF,      setip6flags),
-       DEF_CMD_ARG("pltime",                           setip6pltime),
-       DEF_CMD_ARG("vltime",                           setip6vltime),
+       DEF_CMD_ARG("pltime",                           setip6pltime),
+       DEF_CMD_ARG("vltime",                           setip6vltime),
        DEF_CMD("eui64",        0,                      setip6eui64),
 };
 
@@ -524,12 +521,12 @@ in6_Lopt_cb(const char *optarg __unused)
 {
        ip6lifetime++;  /* print IPv6 address lifetime */
 }
-static struct option in6_Lopt = { "L", "[-L]", in6_Lopt_cb };
+static struct option in6_Lopt = { "L", "[-L]", in6_Lopt_cb, NULL };
 
 static __constructor(101) void
 inet6_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(inet6_cmds);  i++)
                cmd_register(&inet6_cmds[i]);
index 7ae6eb7..0d21555 100644 (file)
 
 #include <sys/types.h>
 #include <sys/ioctl.h>
-#include <sys/socket.h>
 #include <net/if.h>
 #include <net/route.h>         /* for RTX_IFA */
+#include <net/if_dl.h>
+#include <net/if_types.h>
+#include <net/ethernet.h>
 
 #include <err.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-#include <net/if_dl.h>
-#include <net/if_types.h>
-#include <net/ethernet.h>
-
 #include "ifconfig.h"
 
 static struct ifreq link_ridreq;
index 48c1881..81c5c2d 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 #include <sys/sockio.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <net/ethernet.h>
 #include <net/if.h>
-#include <net/bridge/if_bridgevar.h>
 #include <net/route.h>
+#include <net/ethernet.h>
+#include <net/bridge/if_bridgevar.h>
 
 #include <ctype.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <err.h>
 #include <errno.h>
 
@@ -121,7 +119,7 @@ bridge_interfaces(int s, const char *prefix)
        struct ifbreq *req;
        char *inbuf = NULL, *ninbuf;
        char *p, *pad;
-       int i, len = 8192;
+       size_t i, len = 8192;
 
        pad = strdup(prefix);
        if (pad == NULL)
@@ -150,7 +148,7 @@ bridge_interfaces(int s, const char *prefix)
                printf("%s%s ", prefix, req->ifbr_ifsname);
                printb("flags", req->ifbr_ifsflags, IFBIFBITS);
                printf("\n");
-               
+
                if (req->ifbr_ifsflags & IFBIF_STP) {
                        printf("%s", pad);
                        printf("port %u priority %u",
@@ -193,9 +191,9 @@ bridge_addresses(int s, const char *prefix)
 {
        struct ifbaconf ifbac;
        struct ifbareq *ifba;
-       char *inbuf = NULL, *ninbuf;
-       int i, len = 8192;
        struct ether_addr ea;
+       char *inbuf = NULL, *ninbuf;
+       size_t i, len = 8192;
 
        for (;;) {
                ninbuf = realloc(inbuf, len);
@@ -592,7 +590,7 @@ static struct afswtch af_bridge = {
 static __constructor(101) void
 bridge_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(bridge_cmds);  i++)
                cmd_register(&bridge_cmds[i]);
index 21141e4..cb46b61 100644 (file)
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 #include <sys/sockio.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <net/ethernet.h>
 #include <net/if.h>
+#include <net/route.h>
+#include <net/ethernet.h>
 #include <netinet/in.h>
 #include <netinet/ip_carp.h>
-#include <net/route.h>
-
 #include <arpa/inet.h>
 
 #include <ctype.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <err.h>
 #include <errno.h>
 
@@ -250,7 +247,7 @@ static struct afswtch af_carp = {
 static __constructor(101) void
 carp_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(carp_cmds);  i++)
                cmd_register(&carp_cmds[i]);
index d74f701..93bc855 100644 (file)
@@ -1,4 +1,6 @@
-/*
+/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
  * Copyright (c) 1983, 1993
  *     The Regents of the University of California.  All rights reserved.
  *
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: head/sbin/ifconfig/ifclone.c 194799 2009-06-23 23:49:52Z delphij $
+ * $FreeBSD: head/sbin/ifconfig/ifclone.c 326025 2017-11-20 19:49:47Z pfg $
  */
 
+#include <sys/param.h>
 #include <sys/queue.h>
-#include <sys/types.h>
 #include <sys/ioctl.h>
 #include <sys/socket.h>
 #include <net/if.h>
@@ -84,6 +86,7 @@ list_cloners(void)
 
        putchar('\n');
        free(buf);
+       close(s);
 }
 
 struct clone_defcb {
@@ -113,7 +116,7 @@ clone_setdefcallback(const char *ifprefix, clone_callback_func *p)
  * no parameters.
  */
 static void
-ifclonecreate(int s, void *arg)
+ifclonecreate(int s, __unused void *arg)
 {
        struct ifreq ifr;
        struct clone_defcb *dcp;
@@ -141,11 +144,12 @@ ifclonecreate(int s, void *arg)
        }
 
        /*
-        * If we get a different name back than we put in, print it.
+        * If we get a different name back than we put in, update record and
+        * indicate it should be printed later.
         */
        if (strncmp(name, ifr.ifr_name, sizeof(name)) != 0) {
                strlcpy(name, ifr.ifr_name, sizeof(name));
-               printf("%s\n", name);
+               printifname = 1;
        }
 }
 
@@ -176,7 +180,11 @@ clone_Copt_cb(const char *optarg __unused)
        list_cloners();
        exit(0);
 }
-static struct option clone_Copt = { .opt = "C", .opt_usage = "[-C]", .cb = clone_Copt_cb };
+static struct option clone_Copt = {
+       .opt = "C",
+       .opt_usage = "[-C]",
+       .cb = clone_Copt_cb,
+};
 
 static __constructor(101) void
 clone_ctor(void)
index 964bc43..8ff2da9 100644 (file)
@@ -64,7 +64,7 @@
 
 /*
  * Since "struct ifreq" is composed of various union members, callers
- * should pay special attention to interprete the value.
+ * should pay special attention to interpret the value.
  * (.e.g. little/big endian difference in the structure.)
  */
 struct ifreq ifr;
@@ -80,9 +80,10 @@ int  verbose;
 
 int    supmedia = 0;
 int    printkeys = 0;          /* Print keying material for interfaces. */
-int    printname = 0;          /* Print the name of the created interface. */
+int    printifname = 0;        /* Print the name of the created interface. */
 
-static int ifconfig(int argc, char *const *argv, int, const struct afswtch *afp);
+static int ifconfig(int argc, char *const *argv, int iscreate,
+                    const struct afswtch *afp);
 static void status(const struct afswtch *afp, int addrcount,
                    struct sockaddr_dl *sdl, struct if_msghdr *ifm,
                    struct ifa_msghdr *ifam);
@@ -224,6 +225,7 @@ main(int argc, char *argv[])
 
                /* check and maybe load support for this interface */
                ifmaybeload(ifname);
+
                ifindex = if_nametoindex(ifname);
                if (ifindex == 0) {
                        /*
@@ -283,7 +285,7 @@ retry:
                int name_len;
 
                ifm = (struct if_msghdr *)next;
-               
+
                if (ifm->ifm_type == RTM_IFINFO) {
 #ifdef notyet
                        if (ifm->ifm_data.ifi_datalen == 0)
@@ -308,7 +310,6 @@ retry:
                ifam = NULL;
                addrcount = 0;
                while (next < lim) {
-
                        nextifm = (struct if_msghdr *)next;
 
                        if (nextifm->ifm_type != RTM_NEWADDR)
@@ -357,7 +358,7 @@ retry:
 
        if (namesonly && need_nl > 0)
                putchar('\n');
-       if (printname)
+       if (printifname)
                printf("%s\n", name);
 
        exit (0);
@@ -508,18 +509,18 @@ top:
 
                p = cmd_lookup(*argv, iscreate);
 
-                if (iscreate && p == NULL) {
-                        /*
-                         * Push the clone create callback so the new
-                         * device is created and can be used for any
-                         * remaining arguments.
-                         */
-                        cb = callbacks;
-                        if (cb == NULL)
-                                errx(1, "internal error, no callback");
-                        callbacks = cb->cb_next;
-                        cb->cb_func(s, cb->cb_arg);
-                        iscreate = 0;
+               if (iscreate && p == NULL) {
+                       /*
+                        * Push the clone create callback so the new
+                        * device is created and can be used for any
+                        * remaining arguments.
+                        */
+                       cb = callbacks;
+                       if (cb == NULL)
+                               errx(1, "internal error, no callback");
+                       callbacks = cb->cb_next;
+                       cb->cb_func(s, cb->cb_arg);
+                       iscreate = 0;
 
                        /*
                         * After cloning, make sure we have an up-to-date name
@@ -527,24 +528,24 @@ top:
                         */
                        strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
 
-                        /*
-                         * Handle any address family spec that
-                         * immediately follows and potentially
-                         * recreate the socket.
-                         */
-                        nafp = af_getbyname(*argv);
-                        if (nafp != NULL) {
-                                argc--, argv++;
-                                if (nafp != afp) {
-                                        close(s);
-                                        afp = nafp;
-                                        goto top;
-                                }
-                        }
-                        /*
-                         * Look for a normal parameter.
-                         */
-                        continue;
+                       /*
+                        * Handle any address family spec that
+                        * immediately follows and potentially
+                        * recreate the socket.
+                        */
+                       nafp = af_getbyname(*argv);
+                       if (nafp != NULL) {
+                               argc--, argv++;
+                               if (nafp != afp) {
+                                       close(s);
+                                       afp = nafp;
+                                       goto top;
+                               }
+                       }
+                       /*
+                        * Look for a normal parameter.
+                        */
+                       continue;
                }
                if (p == NULL) {
                        /*
@@ -658,7 +659,7 @@ settunnel(const char *src, const char *dst, int s, const struct afswtch *afp)
                errx(1, "error in parsing address string: %s",
                    gai_strerror(ecode));
 
-       if ((ecode = getaddrinfo(dst, NULL, NULL, &dstres)) != 0)  
+       if ((ecode = getaddrinfo(dst, NULL, NULL, &dstres)) != 0)
                errx(1, "error in parsing address string: %s",
                    gai_strerror(ecode));
 
@@ -719,7 +720,7 @@ notealias(const char *addr, int param, int s, const struct afswtch *afp)
 
 /*ARGSUSED*/
 static void
-setifdstaddr(const char *addr, int param __unused, int s, 
+setifdstaddr(const char *addr, int param __unused, int s,
     const struct afswtch *afp)
 {
        if (afp->af_getaddr != NULL)
@@ -738,10 +739,9 @@ setifflags(const char *vname, int value, int s, const struct afswtch *afp)
 
        bcopy((char *)&ifr, (char *)&my_ifr, sizeof(struct ifreq));
 
-       if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&my_ifr) < 0) {
-               Perror("ioctl (SIOCGIFFLAGS)");
-               exit(1);
-       }
+       if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&my_ifr) < 0) {
+               Perror("ioctl (SIOCGIFFLAGS)");
+       }
        strlcpy(my_ifr.ifr_name, name, sizeof (my_ifr.ifr_name));
        flags = (my_ifr.ifr_flags & 0xffff) | (my_ifr.ifr_flagshigh << 16);
 
@@ -760,10 +760,9 @@ void
 setifcap(const char *vname, int value, int s, const struct afswtch *afp)
 {
 
-       if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) < 0) {
-               Perror("ioctl (SIOCGIFCAP)");
-               exit(1);
-       }
+       if (ioctl(s, SIOCGIFCAP, (caddr_t)&ifr) < 0) {
+               Perror("ioctl (SIOCGIFCAP)");
+       }
        flags = ifr.ifr_curcap;
        if (value < 0) {
                value = -value;
@@ -776,23 +775,23 @@ setifcap(const char *vname, int value, int s, const struct afswtch *afp)
 }
 
 static void
-setifmetric(const char *val, int dummy __unused, int s, 
+setifmetric(const char *val, int dummy __unused, int s,
     const struct afswtch *afp)
 {
        strlcpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
        ifr.ifr_metric = atoi(val);
        if (ioctl(s, SIOCSIFMETRIC, (caddr_t)&ifr) < 0)
-               warn("ioctl (set metric)");
+               err(1, "ioctl SIOCSIFMETRIC (set metric)");
 }
 
 static void
-setifmtu(const char *val, int dummy __unused, int s, 
+setifmtu(const char *val, int dummy __unused, int s,
     const struct afswtch *afp)
 {
        strlcpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
        ifr.ifr_mtu = atoi(val);
        if (ioctl(s, SIOCSIFMTU, (caddr_t)&ifr) < 0)
-               warn("ioctl (set mtu)");
+               err(1, "ioctl SIOCSIFMTU (set mtu)");
 }
 
 static void
@@ -802,38 +801,32 @@ setiftsolen(const char *val, int dummy __unused, int s,
        strlcpy(ifr.ifr_name, name, sizeof (ifr.ifr_name));
        ifr.ifr_tsolen = atoi(val);
        if (ioctl(s, SIOCSIFTSOLEN, (caddr_t)&ifr) < 0)
-               warn("ioctl (set tsolen)");
+               err(1, "ioctl SIOCSIFTSOLEN (set tsolen)");
 }
 
 static void
-setifname(const char *val, int dummy __unused, int s, 
+setifname(const char *val, int dummy __unused, int s,
     const struct afswtch *afp)
 {
        char *newname;
 
+       strlcpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
+
        newname = strdup(val);
-       if (newname == NULL) {
-               warn("no memory to set ifname");
-               return;
-       }
+       if (newname == NULL)
+               err(1, "no memory to set ifname");
        ifr.ifr_data = newname;
        if (ioctl(s, SIOCSIFNAME, (caddr_t)&ifr) < 0) {
-               warn("ioctl (set name)");
                free(newname);
-               return;
+               err(1, "ioctl SIOCSIFNAME (set name)");
        }
+       printifname = 1;
        strlcpy(name, newname, sizeof(name));
        free(newname);
-
-       /*
-        * Even if we just created the interface, we don't need to print
-        * its name because we just nailed it down separately.
-        */
-       printname = 0;
 }
 
 static void
-setifpollcpu(const char *val, int dummy __unused, int s, 
+setifpollcpu(const char *val, int dummy __unused, int s,
     const struct afswtch *afp)
 {
        warnx("pollcpu is deprecated, use polling or npolling instead");
@@ -958,8 +951,8 @@ status(const struct afswtch *afp, int addrcount, struct     sockaddr_dl *sdl,
        else if (afp->af_other_status != NULL)
                afp->af_other_status(s);
 
-       if (ioctl(s, SIOCGIFSTATUS, &ifs) == 0) 
        strlcpy(ifs.ifs_name, name, sizeof ifs.ifs_name);
+       if (ioctl(s, SIOCGIFSTATUS, &ifs) == 0)
                printf("%s", ifs.ascii);
 
        close(s);
@@ -1128,7 +1121,7 @@ static struct cmd basic_cmds[] = {
 static __constructor(101) void
 ifconfig_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(basic_cmds);  i++)
                cmd_register(&basic_cmds[i]);
index 81bec63..af301bc 100644 (file)
@@ -34,6 +34,9 @@
  * $FreeBSD: src/sbin/ifconfig/ifconfig.h,v 1.16.2.1 2005/07/21 12:25:40 rwatson Exp $
  */
 
+#ifndef IFCONFIG_IFCONFIG_H
+#define IFCONFIG_IFCONFIG_H
+
 struct afswtch;
 struct cmd;
 
@@ -135,7 +138,7 @@ extern      struct ifreq ifr;
 extern char name[IFNAMSIZ];    /* name of interface */
 extern int supmedia;
 extern int printkeys;
-extern int printname;
+extern int printifname;
 extern int flags;
 extern int newaddr;
 extern int verbose;
@@ -148,10 +151,12 @@ void      printb(const char *s, unsigned value, const char *bits);
 void   ifmaybeload(const char *);
 
 typedef void clone_callback_func(int, struct ifreq *);
-void    clone_setdefcallback(const char *, clone_callback_func *);
+void   clone_setdefcallback(const char *, clone_callback_func *);
 
 /*
  * XXX expose this so modules that neeed to know of any pending
  * operations on ifmedia can avoid cmd line ordering confusion.
  */
 struct ifmediareq *ifmedia_getstate(int s);
+
+#endif  /* !IFCONFIG_IFCONFIG_H */
index af8768f..129784b 100644 (file)
@@ -146,7 +146,7 @@ static const char *modename[IEEE80211_MODE_MAX] = {
 
 static void set80211(int s, int type, int val, int len, void *data);
 static int get80211(int s, int type, void *data, int len);
-static int get80211len(int s, int type, void *data, int len, int *plen);
+static int get80211len(int s, int type, void *data, size_t len, size_t *plen);
 static int get80211val(int s, int type, int *val);
 static const char *get_string(const char *val, const char *sep,
     u_int8_t *buf, int *lenp);
@@ -169,7 +169,19 @@ static struct ieee80211_channel curchan;
 static int gotcurchan = 0;
 static struct ifmediareq *ifmr;
 static int htconf = 0;
-static int gothtconf = 0;
+static int gothtconf = 0;
+
+static int
+iseq(const char *a, const char *b)
+{
+       return (strcasecmp(a, b) == 0);
+}
+
+static int
+ismatch(const char *a, const char *b)
+{
+       return (strncasecmp(a, b, strlen(b)) == 0);
+}
 
 static void
 gethtconf(int s)
@@ -220,10 +232,10 @@ getregdata(void)
  * 11b > 11g.
  */
 static int
-canpromote(int i, int from, int to)
+canpromote(u_int i, uint32_t from, uint32_t to)
 {
        const struct ieee80211_channel *fc = &chaninfo->ic_chans[i];
-       int j;
+       u_int j;
 
        if ((fc->ic_flags & from) != from)
                return i;
@@ -300,9 +312,9 @@ promote(int i)
 }
 
 static void
-mapfreq(struct ieee80211_channel *chan, int freq, int flags)
+mapfreq(struct ieee80211_channel *chan, uint16_t freq, uint32_t flags)
 {
-       int i;
+       u_int i;
 
        for (i = 0; i < chaninfo->ic_nchans; i++) {
                const struct ieee80211_channel *c = &chaninfo->ic_chans[i];
@@ -320,9 +332,9 @@ mapfreq(struct ieee80211_channel *chan, int freq, int flags)
 }
 
 static void
-mapchan(struct ieee80211_channel *chan, int ieee, int flags)
+mapchan(struct ieee80211_channel *chan, uint8_t ieee, uint32_t flags)
 {
-       int i;
+       u_int i;
 
        for (i = 0; i < chaninfo->ic_nchans; i++) {
                const struct ieee80211_channel *c = &chaninfo->ic_chans[i];
@@ -543,8 +555,9 @@ ieee80211_mhz2ieee(int freq, int flags)
 static int
 isanyarg(const char *arg)
 {
-       return (strncmp(arg, "-", 1) == 0 ||
-           strncasecmp(arg, "any", 3) == 0 || strncasecmp(arg, "off", 3) == 0);
+       return (ismatch(arg, "-") ||
+               ismatch(arg, "any") ||
+               ismatch(arg, "off"));
 }
 
 static void
@@ -581,7 +594,7 @@ set80211meshid(const char *val, int d, int s, const struct afswtch *rafp)
                exit(1);
 
        set80211(s, IEEE80211_IOC_MESH_ID, 0, len, data);
-}      
+}
 
 static void
 set80211stationname(const char *val, int d, int s, const struct afswtch *rafp)
@@ -607,7 +620,7 @@ set80211stationname(const char *val, int d, int s, const struct afswtch *rafp)
  *
  * The result is not validated here; it's assumed to be
  * checked against the channel table fetched from the kernel.
- */ 
+ */
 static int
 getchannelflags(const char *val, int freq)
 {
@@ -683,7 +696,7 @@ getchannelflags(const char *val, int freq)
        }
        /*
         * Cleanup specifications.
-        */ 
+        */
        if ((flags & _CHAN_HT) == 0) {
                /*
                 * If user specified freq/20 or freq/40 quietly remove
@@ -769,15 +782,15 @@ set80211authmode(const char *val, int d, int s, const struct afswtch *rafp)
 {
        int     mode;
 
-       if (strcasecmp(val, "none") == 0) {
+       if (iseq(val, "none")) {
                mode = IEEE80211_AUTH_NONE;
-       } else if (strcasecmp(val, "open") == 0) {
+       } else if (iseq(val, "open")) {
                mode = IEEE80211_AUTH_OPEN;
-       } else if (strcasecmp(val, "shared") == 0) {
+       } else if (iseq(val, "shared")) {
                mode = IEEE80211_AUTH_SHARED;
-       } else if (strcasecmp(val, "8021x") == 0) {
+       } else if (iseq(val, "8021x")) {
                mode = IEEE80211_AUTH_8021X;
-       } else if (strcasecmp(val, "wpa") == 0) {
+       } else if (iseq(val, "wpa")) {
                mode = IEEE80211_AUTH_WPA;
        } else {
                errx(1, "unknown authmode");
@@ -791,15 +804,15 @@ set80211powersavemode(const char *val, int d, int s, const struct afswtch *rafp)
 {
        int     mode;
 
-       if (strcasecmp(val, "off") == 0) {
+       if (iseq(val, "off")) {
                mode = IEEE80211_POWERSAVE_OFF;
-       } else if (strcasecmp(val, "on") == 0) {
+       } else if (iseq(val, "on")) {
                mode = IEEE80211_POWERSAVE_ON;
-       } else if (strcasecmp(val, "cam") == 0) {
+       } else if (iseq(val, "cam")) {
                mode = IEEE80211_POWERSAVE_CAM;
-       } else if (strcasecmp(val, "psp") == 0) {
+       } else if (iseq(val, "psp")) {
                mode = IEEE80211_POWERSAVE_PSP;
-       } else if (strcasecmp(val, "psp-cam") == 0) {
+       } else if (iseq(val, "psp-cam")) {
                mode = IEEE80211_POWERSAVE_PSP_CAM;
        } else {
                errx(1, "unknown powersavemode");
@@ -830,11 +843,11 @@ set80211wepmode(const char *val, int d, int s, const struct afswtch *rafp)
 {
        int     mode;
 
-       if (strcasecmp(val, "off") == 0) {
+       if (iseq(val, "off")) {
                mode = IEEE80211_WEP_OFF;
-       } else if (strcasecmp(val, "on") == 0) {
+       } else if (iseq(val, "on")) {
                mode = IEEE80211_WEP_ON;
-       } else if (strcasecmp(val, "mixed") == 0) {
+       } else if (iseq(val, "mixed")) {
                mode = IEEE80211_WEP_MIXED;
        } else {
                errx(1, "unknown wep mode");
@@ -852,7 +865,7 @@ set80211wep(const char *val, int d, int s, const struct afswtch *rafp)
 static int
 isundefarg(const char *arg)
 {
-       return (strcmp(arg, "-") == 0 || strncasecmp(arg, "undef", 5) == 0);
+       return (strcmp(arg, "-") == 0 || ismatch(arg, "undef"));
 }
 
 static void
@@ -938,11 +951,11 @@ set80211protmode(const char *val, int d, int s, const struct afswtch *rafp)
 {
        int     mode;
 
-       if (strcasecmp(val, "off") == 0) {
+       if (iseq(val, "off")) {
                mode = IEEE80211_PROTMODE_OFF;
-       } else if (strcasecmp(val, "cts") == 0) {
+       } else if (iseq(val, "cts")) {
                mode = IEEE80211_PROTMODE_CTS;
-       } else if (strncasecmp(val, "rtscts", 3) == 0) {
+       } else if (ismatch(val, "rts")) {
                mode = IEEE80211_PROTMODE_RTSCTS;
        } else {
                errx(1, "unknown protection mode");
@@ -956,9 +969,9 @@ set80211htprotmode(const char *val, int d, int s, const struct afswtch *rafp)
 {
        int     mode;
 
-       if (strcasecmp(val, "off") == 0) {
+       if (iseq(val, "off")) {
                mode = IEEE80211_PROTMODE_OFF;
-       } else if (strncasecmp(val, "rts", 3) == 0) {
+       } else if (ismatch(val, "rts")) {
                mode = IEEE80211_PROTMODE_RTSCTS;
        } else {
                errx(1, "unknown protection mode");
@@ -988,11 +1001,11 @@ set80211roaming(const char *val, int d, int s, const struct afswtch *rafp)
 {
        int mode;
 
-       if (strcasecmp(val, "device") == 0) {
+       if (iseq(val, "device")) {
                mode = IEEE80211_ROAMING_DEVICE;
-       } else if (strcasecmp(val, "auto") == 0) {
+       } else if (iseq(val, "auto")) {
                mode = IEEE80211_ROAMING_AUTO;
-       } else if (strcasecmp(val, "manual") == 0) {
+       } else if (iseq(val, "manual")) {
                mode = IEEE80211_ROAMING_MANUAL;
        } else {
                errx(1, "unknown roaming mode");
@@ -1111,13 +1124,13 @@ set80211bssid(const char *val, int d, int s, const struct afswtch *rafp)
 static int
 getac(const char *ac)
 {
-       if (strcasecmp(ac, "ac_be") == 0 || strcasecmp(ac, "be") == 0)
+       if (iseq(ac, "ac_be") || iseq(ac, "be"))
                return WME_AC_BE;
-       if (strcasecmp(ac, "ac_bk") == 0 || strcasecmp(ac, "bk") == 0)
+       if (iseq(ac, "ac_bk") || iseq(ac, "bk"))
                return WME_AC_BK;
-       if (strcasecmp(ac, "ac_vi") == 0 || strcasecmp(ac, "vi") == 0)
+       if (iseq(ac, "ac_vi") || iseq(ac, "vi"))
                return WME_AC_VI;
-       if (strcasecmp(ac, "ac_vo") == 0 || strcasecmp(ac, "vo") == 0)
+       if (iseq(ac, "ac_vo") || iseq(ac, "vo"))
                return WME_AC_VO;
        errx(1, "unknown wme access class %s", ac);
 }
@@ -1312,11 +1325,11 @@ DECL_CMD_FUNC(set80211hwmprootmode, val, d)
 {
        int mode;
 
-       if (strcasecmp(val, "normal") == 0)
+       if (iseq(val, "normal"))
                mode = IEEE80211_HWMP_ROOTMODE_NORMAL;
-       else if (strcasecmp(val, "proactive") == 0)
+       else if (iseq(val, "proactive"))
                mode = IEEE80211_HWMP_ROOTMODE_PROACTIVE;
-       else if (strcasecmp(val, "rann") == 0)
+       else if (iseq(val, "rann"))
                mode = IEEE80211_HWMP_ROOTMODE_RANN;
        else
                mode = IEEE80211_HWMP_ROOTMODE_DISABLED;
@@ -1706,7 +1719,7 @@ DECL_CMD_FUNC(set80211ampdudensity, val, d)
 {
        int v;
 
-       if (isanyarg(val) || strcasecmp(val, "na") == 0)
+       if (isanyarg(val) || iseq(val, "na"))
                v = IEEE80211_HTCAP_MPDUDENSITY_NA;
        else switch ((int)(atof(val)*4)) {
        case 0:
@@ -1861,7 +1874,7 @@ static
 DECL_CMD_FUNC(set80211meshmetric, val, d)
 {
        char v[12];
-       
+
        memcpy(v, val, sizeof(v));
        set80211(s, IEEE80211_IOC_MESH_PR_METRIC, 0, 0, v);
 }
@@ -1870,7 +1883,7 @@ static
 DECL_CMD_FUNC(set80211meshpath, val, d)
 {
        char v[12];
-       
+
        memcpy(v, val, sizeof(v));
        set80211(s, IEEE80211_IOC_MESH_PR_PATH, 0, 0, v);
 }
@@ -1884,7 +1897,7 @@ regdomain_sort(const void *a, const void *b)
        const struct ieee80211_channel *cb = b;
 
        return ca->ic_freq == cb->ic_freq ?
-           (ca->ic_flags & CHAN_ALL) - (cb->ic_flags & CHAN_ALL) :
+           ((int)ca->ic_flags & CHAN_ALL) - ((int)cb->ic_flags & CHAN_ALL) :
            ca->ic_freq - cb->ic_freq;
 #undef CHAN_ALL
 }
@@ -1899,7 +1912,7 @@ chanlookup(const struct ieee80211_channel chans[], int nchans,
        for (i = 0; i < nchans; i++) {
                const struct ieee80211_channel *c = &chans[i];
                if (c->ic_freq == freq &&
-                   (c->ic_flags & IEEE80211_CHAN_ALLTURBO) == flags)
+                   ((int)c->ic_flags & IEEE80211_CHAN_ALLTURBO) == flags)
                        return c;
        }
        return NULL;
@@ -1912,7 +1925,7 @@ chanfind(const struct ieee80211_channel chans[], int nchans, int flags)
 
        for (i = 0; i < nchans; i++) {
                const struct ieee80211_channel *c = &chans[i];
-               if ((c->ic_flags & flags) == flags)
+               if (((int)c->ic_flags & flags) == flags)
                        return 1;
        }
        return 0;
@@ -2075,7 +2088,7 @@ regdomain_addchans(struct ieee80211req_chaninfo *ci,
                            prev != NULL && (freq - prev->ic_freq) < channelSep) {
                                if (verbose)
                                        printf("%u: skip, only %u channel "
-                                           "separation, need %d\n", freq, 
+                                           "separation, need %d\n", freq,
                                            freq - prev->ic_freq, channelSep);
                                continue;
                        }
@@ -2432,7 +2445,7 @@ printie(const char* tag, const uint8_t *ie, size_t ielen, int maxlen)
        printf("%s", tag);
        if (verbose) {
                maxlen -= strlen(tag)+2;
-               if (2*ielen > maxlen)
+               if (2*ielen > (size_t)maxlen)
                        maxlen--;
                printf("<");
                for (; ielen > 0; ie++, ielen--) {
@@ -2832,6 +2845,9 @@ static void
 printwpsie(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
 {
        u_int8_t len = ie[1];
+       size_t n;
+       uint16_t tlv_type;
+       uint16_t tlv_len;
 
        printf("%s", tag);
        if (verbose) {
@@ -2843,15 +2859,14 @@ printwpsie(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
                        "P",    /* PushButton */
                        "R"     /* Registrar-specified */
                };
-               int n;
 
                ie +=6, len -= 4;               /* NB: len is payload only */
 
                /* WPS IE in Beacon and Probe Resp frames have different fields */
                printf("<");
                while (len) {
-                       uint16_t tlv_type = BE_READ_2(ie);
-                       uint16_t tlv_len  = BE_READ_2(ie + 2);
+                       tlv_type = BE_READ_2(ie);
+                       tlv_len  = BE_READ_2(ie + 2);
 
                        ie += 4, len -= 4;
 
@@ -2876,7 +2891,7 @@ printwpsie(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
                                break;
                        case IEEE80211_WPS_UUID_E:
                                printf(" uuid-e:");
-                               for (n = 0; n < (tlv_len - 1); n++)
+                               for (n = 0; n < (size_t)(tlv_len - 1); n++)
                                        printf("%02x-", ie[n]);
                                printf("%02x", ie[n]);
                                break;
@@ -2912,9 +2927,9 @@ printtdmaie(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
 static int
 copy_essid(char buf[], size_t bufsize, const u_int8_t *essid, size_t essid_len)
 {
-       const u_int8_t *p; 
+       const u_int8_t *p;
        size_t maxlen;
-       int i;
+       size_t i;
 
        if (essid_len > bufsize)
                maxlen = bufsize;
@@ -2954,10 +2969,11 @@ printssid(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
 }
 
 static void
-printrates(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
+printrates(const char *tag, const u_int8_t *ie, size_t ielen,
+          __unused int maxlen)
 {
        const char *sep;
-       int i;
+       size_t i;
 
        printf("%s", tag);
        sep = "<";
@@ -2971,11 +2987,12 @@ printrates(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
 }
 
 static void
-printcountry(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
+printcountry(const char *tag, const u_int8_t *ie, size_t ielen,
+            __unused int maxlen)
 {
        const struct ieee80211_country_ie *cie =
           (const struct ieee80211_country_ie *) ie;
-       int i, nbands, schan, nchan;
+       size_t i, nbands, schan, nchan;
 
        printf("%s<%c%c%c", tag, cie->cc[0], cie->cc[1], cie->cc[2]);
        nbands = (cie->len - 3) / sizeof(cie->band[0]);
@@ -2983,15 +3000,15 @@ printcountry(const char *tag, const u_int8_t *ie, size_t ielen, int maxlen)
                schan = cie->band[i].schan;
                nchan = cie->band[i].nchan;
                if (nchan != 1)
-                       printf(" %u-%u,%u", schan, schan + nchan-1,
+                       printf(" %zu-%zu,%u", schan, schan + nchan-1,
                            cie->band[i].maxtxpwr);
                else
-                       printf(" %u,%u", schan, cie->band[i].maxtxpwr);
+                       printf(" %zu,%u", schan, cie->band[i].maxtxpwr);
        }
        printf(">");
 }
 
-/* unaligned little endian access */     
+/* unaligned little endian access */
 #define LE_READ_4(p)                                   \
        ((u_int32_t)                                    \
         ((((const u_int8_t *)(p))[0]      ) |          \
@@ -3150,7 +3167,7 @@ list_scan(int s, int long_ssids)
        uint8_t buf[24*1024];
        char ssid[IEEE80211_NWID_LEN+1];
        const uint8_t *cp;
-       int len, ssidmax, idlen;
+       size_t len, ssidmax, idlen;
 
        if (get80211len(s, IEEE80211_IOC_SCAN_RESULTS, buf, sizeof(buf), &len) < 0)
                errx(1, "unable to get scan results");
@@ -3161,7 +3178,7 @@ list_scan(int s, int long_ssids)
 
        ssidmax = (verbose || long_ssids) ? IEEE80211_NWID_LEN - 1 : 14;
        printf("%-*.*s  %-17.17s  %4s %4s  %-7s  %3s %4s\n"
-               , ssidmax, ssidmax, "SSID/MESH ID"
+               , (int)ssidmax, (int)ssidmax, "SSID/MESH ID"
                , "BSSID"
                , "CHAN"
                , "RATE"
@@ -3184,9 +3201,9 @@ list_scan(int s, int long_ssids)
                        idlen = sr->isr_ssid_len;
                }
                printf("%-*.*s  %s  %3d  %3dM %3d:%-3d  %3d %-4.4s"
-                       , ssidmax
-                         , copy_essid(ssid, ssidmax, idp, idlen)
-                         , ssid
+                       , (int)ssidmax
+                       , copy_essid(ssid, ssidmax, idp, idlen)
+                       , ssid
                        , ether_ntoa((const struct ether_addr *) sr->isr_bssid)
                        , ieee80211_mhz2ieee(sr->isr_freq, sr->isr_flags)
                        , getmaxrate(sr->isr_rates, sr->isr_nrates)
@@ -3213,7 +3230,7 @@ scan_and_wait(int s)
                perror("socket(PF_ROUTE,SOCK_RAW)");
                return;
        }
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = IEEE80211_IOC_SCAN_REQ;
 
@@ -3295,16 +3312,16 @@ list_stations(int s)
        } u;
        enum ieee80211_opmode opmode = get80211opmode(s);
        const uint8_t *cp;
-       int len;
+       size_t len;
 
        /* broadcast address =>'s get all stations */
-       (void) memset(u.req.is_u.macaddr, 0xff, IEEE80211_ADDR_LEN);
+       memset(u.req.is_u.macaddr, 0xff, IEEE80211_ADDR_LEN);
        if (opmode == IEEE80211_M_STA) {
                /*
                 * Get information about the associated AP.
                 */
-               (void) get80211(s, IEEE80211_IOC_BSSID,
-                   u.req.is_u.macaddr, IEEE80211_ADDR_LEN);
+               get80211(s, IEEE80211_IOC_BSSID,
+                        u.req.is_u.macaddr, IEEE80211_ADDR_LEN);
        }
        if (get80211len(s, IEEE80211_IOC_STA_INFO, &u, sizeof(u), &len) < 0)
                errx(1, "unable to get station information");
@@ -3313,7 +3330,7 @@ list_stations(int s)
 
        getchaninfo(s);
 
-       if (opmode == IEEE80211_M_MBSS)
+       if (opmode == IEEE80211_M_MBSS) {
                printf("%-17.17s %4s %5s %5s %7s %4s %4s %4s %6s %6s\n"
                        , "ADDR"
                        , "CHAN"
@@ -3326,7 +3343,7 @@ list_stations(int s)
                        , "TXSEQ"
                        , "RXSEQ"
                );
-       else 
+       } else {
                printf("%-17.17s %4s %4s %4s %4s %4s %6s %6s %4s %-7s\n"
                        , "ADDR"
                        , "AID"
@@ -3339,6 +3356,7 @@ list_stations(int s)
                        , "CAPS"
                        , "FLAG"
                );
+       }
        cp = (const uint8_t *) u.req.info;
        do {
                const struct ieee80211req_sta_info *si;
@@ -3346,7 +3364,7 @@ list_stations(int s)
                si = (const struct ieee80211req_sta_info *) cp;
                if (si->isi_len < sizeof(*si))
                        break;
-               if (opmode == IEEE80211_M_MBSS)
+               if (opmode == IEEE80211_M_MBSS) {
                        printf("%s %4d %5x %5x %7.7s %3dM %4.1f %4d %6d %6d"
                                , ether_ntoa((const struct ether_addr*)
                                    si->isi_macaddr)
@@ -3361,7 +3379,7 @@ list_stations(int s)
                                , gettxseq(si)
                                , getrxseq(si)
                        );
-               else 
+               } else {
                        printf("%s %4u %4d %3dM %4.1f %4d %6d %6d %-4.4s %-7.7s"
                                , ether_ntoa((const struct ether_addr*)
                                    si->isi_macaddr)
@@ -3376,6 +3394,7 @@ list_stations(int s)
                                , getcaps(si->isi_capinfo)
                                , getflags(si->isi_state)
                        );
+               }
                printies(cp + si->isi_ie_off, si->isi_ie_len, 24);
                printmimo(&si->isi_mimo);
                printf("\n");
@@ -3399,8 +3418,9 @@ mesh_linkstate_string(uint8_t state)
                static char buf[10];
                snprintf(buf, sizeof(buf), "#%u", state);
                return buf;
-       } else
+       } else {
                return state_names[state];
+       }
 }
 
 static const char *
@@ -3478,7 +3498,7 @@ print_channels(int s, const struct ieee80211req_chaninfo *chans,
        struct ieee80211req_chaninfo *achans;
        uint8_t reported[IEEE80211_CHAN_BYTES];
        const struct ieee80211_channel *c;
-       int i, half;
+       size_t i, half;
 
        achans = malloc(IEEE80211_CHANINFO_SPACE(chans));
        if (achans == NULL)
@@ -3572,7 +3592,7 @@ list_txpow(int s)
        struct ieee80211req_chaninfo *achans;
        uint8_t reported[IEEE80211_CHAN_BYTES];
        struct ieee80211_channel *c, *prev;
-       int i, half;
+       size_t i, half;
 
        getchaninfo(s);
        achans = malloc(IEEE80211_CHANINFO_SPACE(chaninfo));
@@ -3663,7 +3683,7 @@ get80211wme(int s, int param, int ac, int *val)
 {
        struct ieee80211req ireq;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = param;
        ireq.i_len = ac;
@@ -3844,7 +3864,7 @@ list_mac(int s)
        uint8_t *data;
        char c;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name)); /* XXX ?? */
        ireq.i_type = IEEE80211_IOC_MACCMD;
        ireq.i_val = IEEE80211_MACCMD_POLICY;
@@ -3950,14 +3970,14 @@ list_mesh(int s)
        struct ieee80211req_mesh_route routes[128];
        struct ieee80211req_mesh_route *rt;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = IEEE80211_IOC_MESH_RTCMD;
        ireq.i_val = IEEE80211_MESH_RTCMD_LIST;
        ireq.i_data = &routes;
        ireq.i_len = sizeof(routes);
        if (ioctl(s, SIOCG80211, &ireq) < 0)
-               err(1, "unable to get the Mesh routing table");
+               err(1, "unable to get the Mesh routing table");
 
        printf("%-17.17s %-17.17s %4s %4s %4s %6s %s\n"
                , "DEST"
@@ -3968,7 +3988,9 @@ list_mesh(int s)
                , "MSEQ"
                , "FLAGS");
 
-       for (rt = &routes[0]; rt - &routes[0] < ireq.i_len / sizeof(*rt); rt++){
+       for (rt = &routes[0];
+            rt - &routes[0] < (int)(ireq.i_len / sizeof(*rt));
+            rt++) {
                printf("%s ",
                    ether_ntoa((const struct ether_addr *)rt->imr_dest));
                printf("%s %4u   %4u   %6u %6u    %c%c\n",
@@ -3985,8 +4007,6 @@ list_mesh(int s)
 static
 DECL_CMD_FUNC(set80211list, arg, d)
 {
-#define        iseq(a,b)       (strncasecmp(a,b,sizeof(b)-1) == 0)
-
        LINE_INIT('\t');
 
        if (iseq(arg, "sta"))
@@ -4022,7 +4042,6 @@ DECL_CMD_FUNC(set80211list, arg, d)
        else
                errx(1, "Don't know how to list %s for %s", arg, name);
        LINE_BREAK();
-#undef iseq
 }
 
 static enum ieee80211_opmode
@@ -4030,7 +4049,7 @@ get80211opmode(int s)
 {
        struct ifmediareq ifmr;
 
-       (void) memset(&ifmr, 0, sizeof(ifmr));
+       memset(&ifmr, 0, sizeof(ifmr));
        strlcpy(ifmr.ifm_name, name, sizeof(ifmr.ifm_name));
 
        if (ioctl(s, SIOCGIFMEDIA, (caddr_t)&ifmr) >= 0) {
@@ -4058,7 +4077,7 @@ printcipher(int s, struct ieee80211req *ireq, int keylenop)
        case IEEE80211_CIPHER_WEP:
                ireq->i_type = keylenop;
                if (ioctl(s, SIOCG80211, ireq) != -1)
-                       printf("WEP-%s", 
+                       printf("WEP-%s",
                            ireq->i_len <= 5 ? "40" :
                            ireq->i_len <= 13 ? "104" : "128");
                else
@@ -4170,11 +4189,11 @@ printrate(const char *tag, int v, int defrate, int defmcs)
 }
 
 static int
-getid(int s, int ix, void *data, size_t len, int *plen, int mesh)
+getid(int s, int ix, void *data, size_t len, size_t *plen, int mesh)
 {
        struct ieee80211req ireq;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = (!mesh) ? IEEE80211_IOC_SSID : IEEE80211_IOC_MESH_ID;
        ireq.i_val = ix;
@@ -4191,7 +4210,8 @@ ieee80211_status(int s)
 {
        static const uint8_t zerobssid[IEEE80211_ADDR_LEN];
        enum ieee80211_opmode opmode = get80211opmode(s);
-       int i, num, wpa, wme, bgscan, bgscaninterval, val, len, wepmode;
+       int i, num, wpa, wme, bgscan, bgscaninterval, val, wepmode;
+       size_t len;
        uint8_t data[32];
        const struct ieee80211_channel *c;
        const struct ieee80211_roamparam *rp;
@@ -4472,7 +4492,7 @@ end:
        }
 
        bgscaninterval = -1;
-       (void) get80211val(s, IEEE80211_IOC_BGSCAN_INTERVAL, &bgscaninterval);
+       get80211val(s, IEEE80211_IOC_BGSCAN_INTERVAL, &bgscaninterval);
 
        if (get80211val(s, IEEE80211_IOC_SCANVALID, &val) != -1) {
                if (val != bgscaninterval || verbose)
@@ -4835,7 +4855,7 @@ get80211(int s, int type, void *data, int len)
 {
        struct ieee80211req ireq;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = type;
        ireq.i_data = data;
@@ -4844,11 +4864,11 @@ get80211(int s, int type, void *data, int len)
 }
 
 static int
-get80211len(int s, int type, void *data, int len, int *plen)
+get80211len(int s, int type, void *data, size_t len, size_t *plen)
 {
        struct ieee80211req ireq;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = type;
        ireq.i_len = len;
@@ -4865,7 +4885,7 @@ get80211val(int s, int type, int *val)
 {
        struct ieee80211req ireq;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = type;
        if (ioctl(s, SIOCG80211, &ireq) < 0)
@@ -4879,7 +4899,7 @@ set80211(int s, int type, int val, int len, void *data)
 {
        struct ieee80211req     ireq;
 
-       (void) memset(&ireq, 0, sizeof(ireq));
+       memset(&ireq, 0, sizeof(ireq));
        strlcpy(ireq.i_name, name, sizeof(ireq.i_name));
        ireq.i_type = type;
        ireq.i_val = val;
@@ -4979,7 +4999,7 @@ static struct ieee80211_clone_params params = {
        .icp_opmode     = IEEE80211_M_STA,      /* default to station mode */
 };
 
-void
+static void
 wlan_create(int s, struct ifreq *ifr)
 {
        static const uint8_t zerobssid[IEEE80211_ADDR_LEN];
@@ -5027,7 +5047,6 @@ DECL_CMD_FUNC(set80211clone_wlanaddr, arg, d)
 static
 DECL_CMD_FUNC(set80211clone_wlanmode, arg, d)
 {
-#define        iseq(a,b)       (strncasecmp(a,b,sizeof(b)-1) == 0)
        if (iseq(arg, "sta"))
                params.icp_opmode = IEEE80211_M_STA;
        else if (iseq(arg, "ahdemo") || iseq(arg, "adhoc-demo"))
@@ -5047,7 +5066,6 @@ DECL_CMD_FUNC(set80211clone_wlanmode, arg, d)
                params.icp_opmode = IEEE80211_M_MBSS;
        else
                errx(1, "Don't know to create %s for %s", arg, name);
-#undef iseq
 }
 
 static void
@@ -5257,7 +5275,7 @@ static struct afswtch af_ieee80211 = {
 static __constructor(101) void
 ieee80211_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(ieee80211_cmds);  i++)
                cmd_register(&ieee80211_cmds[i]);
index 5c1ec0b..9c3273c 100644 (file)
@@ -7,17 +7,17 @@
 #include <sys/socket.h>
 #include <sys/sockio.h>
 
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <net/ethernet.h>
 #include <net/if.h>
-#include <net/lagg/if_lagg.h>
 #include <net/route.h>
+#include <net/ethernet.h>
+#include <net/lagg/if_lagg.h>
 
 #include <ctype.h>
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <unistd.h>
 #include <err.h>
 #include <errno.h>
 
@@ -57,7 +57,7 @@ setlaggproto(const char *val, int d, int s, const struct afswtch *afp)
 {
        struct lagg_protos lpr[] = LAGG_PROTOS;
        struct lagg_reqall ra;
-       int i;
+       size_t i;
 
        bzero(&ra, sizeof(ra));
        ra.ra_proto = LAGG_PROTO_MAX;
@@ -141,7 +141,8 @@ lagg_status(int s)
        struct lagg_reqflags rf;
        struct lacp_opreq *lp;
        const char *proto = "<unknown>";
-       int i, isport = 0;
+       bool isport = false;
+       size_t i;
 
        bzero(&rp, sizeof(rp));
        bzero(&ra, sizeof(ra));
@@ -150,7 +151,7 @@ lagg_status(int s)
        strlcpy(rp.rp_portname, name, sizeof(rp.rp_portname));
 
        if (ioctl(s, SIOCGLAGGPORT, &rp) == 0)
-               isport = 1;
+               isport = true;
 
        strlcpy(ra.ra_ifname, name, sizeof(ra.ra_ifname));
        ra.ra_size = sizeof(rpbuf);
@@ -164,7 +165,7 @@ lagg_status(int s)
                lp = (struct lacp_opreq *)&ra.ra_lacpreq;
 
                for (i = 0; i < nitems(lpr); i++) {
-                       if (ra.ra_proto == lpr[i].lpr_proto) {
+                       if ((int)ra.ra_proto == lpr[i].lpr_proto) {
                                proto = lpr[i].lpr_name;
                                break;
                        }
@@ -195,7 +196,7 @@ lagg_status(int s)
                        printf("\tlag id: %s\n",
                            lacp_format_peer(lp, "\n\t\t "));
 
-               for (i = 0; i < ra.ra_ports; i++) {
+               for (i = 0; i < (size_t)ra.ra_ports; i++) {
                        lp = (struct lacp_opreq *)&rpbuf[i].rp_lacpreq;
                        printf("\tlaggport: %s ", rpbuf[i].rp_portname);
                        printb("flags", rpbuf[i].rp_flags, LAGG_PORT_BITS);
@@ -230,7 +231,7 @@ static struct afswtch af_lagg = {
 static __constructor(101) void
 lagg_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(lagg_cmds);  i++)
                cmd_register(&lagg_cmds[i]);
index ed37146..562e318 100644 (file)
@@ -195,7 +195,7 @@ ifmedia_getstate(int s)
                if (ifmr == NULL)
                        err(1, "malloc");
 
-               (void) memset(ifmr, 0, sizeof(struct ifmediareq));
+               memset(ifmr, 0, sizeof(struct ifmediareq));
                strlcpy(ifmr->ifm_name, name, sizeof(ifmr->ifm_name));
 
                ifmr->ifm_count = 0;
@@ -217,7 +217,7 @@ ifmedia_getstate(int s)
                mwords = (int *)malloc(ifmr->ifm_count * sizeof(int));
                if (mwords == NULL)
                        err(1, "malloc");
-  
+
                ifmr->ifm_ulist = mwords;
                if (ioctl(s, SIOCGIFMEDIA, (caddr_t)ifmr) < 0)
                        err(1, "SIOCGIFMEDIA");
@@ -247,7 +247,6 @@ setmedia(const char *val, int d, int s, const struct afswtch *afp)
 {
        struct ifmediareq *ifmr;
        int subtype;
-       
 
        ifmr = ifmedia_getstate(s);
 
@@ -575,7 +574,7 @@ static struct ifmedia_type_to_subtype *get_toptype_ttos(int ifmw)
        return ttos;
 }
 
-static struct ifmedia_description *get_subtype_desc(int ifmw, 
+static struct ifmedia_description *get_subtype_desc(int ifmw,
     struct ifmedia_type_to_subtype *ttos)
 {
        int i;
@@ -594,7 +593,7 @@ static struct ifmedia_description *get_subtype_desc(int ifmw,
        return NULL;
 }
 
-static struct ifmedia_description *get_mode_desc(int ifmw, 
+static struct ifmedia_description *get_mode_desc(int ifmw,
     struct ifmedia_type_to_subtype *ttos)
 {
        int i;
@@ -741,7 +740,7 @@ static struct afswtch af_media = {
 static __constructor(101) void
 ifmedia_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(media_cmds);  i++)
                cmd_register(&media_cmds[i]);
index 207a2ca..3347dc6 100644 (file)
 #include <sys/socket.h>
 #include <sys/sockio.h>
 
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <net/ethernet.h>
 #include <net/if.h>
 #include <net/if_var.h>
-#include <net/vlan/if_vlan_var.h>
 #include <net/route.h>
+#include <net/ethernet.h>
+#include <net/vlan/if_vlan_var.h>
 
 #include <ctype.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
+#include <unistd.h>
 #include <err.h>
 #include <errno.h>
 
@@ -153,7 +152,7 @@ static struct afswtch af_vlan = {
 static __constructor(101) void
 vlan_ctor(void)
 {
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(vlan_cmds);  i++)
                cmd_register(&vlan_cmds[i]);
index 8d138c3..df33212 100644 (file)
@@ -25,6 +25,7 @@
  * $FreeBSD: head/sbin/ifconfig/regdomain.c 200587 2009-12-15 20:44:12Z gavin $
  */
 
+#include <sys/param.h>
 #include <sys/types.h>
 #include <sys/errno.h>
 #include <sys/mman.h>
@@ -59,16 +60,15 @@ struct mystate {
        int                     nident;
 };
 
-struct ident {
-       const void *id;
-       void *p;
-       enum { DOMAIN, COUNTRY, FREQBAND } type;
-};
+static int
+iseq(const char *a, const char *b)
+{
+       return (strcasecmp(a, b) == 0);
+}
 
 static void
 start_element(void *data, const char *name, const char **attr)
 {
-#define        iseq(a,b)       (strcasecmp(a,b) == 0)
        struct mystate *mt;
        const void *id, *ref, *mode;
        int i;
@@ -164,13 +164,11 @@ start_element(void *data, const char *name, const char **attr)
                LIST_INSERT_HEAD(&mt->rdp->freqbands, mt->freqband, next);
                return;
        }
-#undef iseq
 }
 
 static int
 decode_flag(struct mystate *mt, const char *p, int len)
 {
-#define        iseq(a,b)       (strcasecmp(a,b) == 0)
        static const struct {
                const char *name;
                int len;
@@ -211,7 +209,7 @@ decode_flag(struct mystate *mt, const char *p, int len)
                { "INDOOR",     6,      REQ_INDOOR },
                { "OUTDOOR",    7,      REQ_OUTDOOR },
        };
-       int i;
+       size_t i;
 
        for (i = 0; i < nitems(flags); i++)
                if (len == flags[i].len && iseq(p, flags[i].name))
@@ -219,13 +217,11 @@ decode_flag(struct mystate *mt, const char *p, int len)
        warnx("unknown flag \"%.*s\" at line %ld ignored",
            len, p, XML_GetCurrentLineNumber(mt->parser));
        return 0;
-#undef iseq
 }
 
 static void
 end_element(void *data, const char *name)
 {
-#define        iseq(a,b)       (strcasecmp(a,b) == 0)
        struct mystate *mt;
        int len;
        char *p;
@@ -364,7 +360,6 @@ end_element(void *data, const char *name)
 done:
        sbuf_delete(mt->sbuf[mt->level]);
        mt->sbuf[mt->level--] = NULL;
-#undef iseq
 }
 
 static void
@@ -386,12 +381,12 @@ char_data(void *data, const XML_Char *s, int len)
 }
 
 static void *
-findid(struct regdata *rdp, const void *id, int type)
+findid(struct regdata *rdp, const void *id, enum IdentType type)
 {
        struct ident *ip;
 
        for (ip = rdp->ident; ip->id != NULL; ip++)
-               if (ip->type == type && strcasecmp(ip->id, id) == 0)
+               if (ip->type == type && iseq(ip->id, id))
                        return ip->p;
        return NULL;
 }
@@ -661,7 +656,7 @@ lib80211_regdomain_findbyname(const struct regdata *rdp, const char *name)
        const struct regdomain *dp;
 
        LIST_FOREACH(dp, &rdp->domains, next) {
-               if (strcasecmp(dp->name, name) == 0)
+               if (iseq(dp->name, name))
                        return dp;
        }
        return NULL;
@@ -691,11 +686,11 @@ lib80211_country_findbyname(const struct regdata *rdp, const char *name)
        const struct country *cp;
        int len;
 
-       len = strlen(name);
        LIST_FOREACH(cp, &rdp->countries, next) {
-               if (strcasecmp(cp->isoname, name) == 0)
+               if (iseq(cp->isoname, name))
                        return cp;
        }
+       len = strlen(name);
        LIST_FOREACH(cp, &rdp->countries, next) {
                if (strncasecmp(cp->name, name, len) == 0)
                        return cp;
index c1afe88..cf6b4b3 100644 (file)
@@ -67,20 +67,20 @@ struct country;
 
 struct regdomain {
        enum RegdomainCode      sku;    /* regdomain code/SKU */
-       const char              *name;  /* printable name */ 
+       const char              *name;  /* printable name */
        const struct country    *cc;    /* country code for 1-1/default map */
 
        netband_head     bands_11b;     /* 11b operation */
        netband_head     bands_11g;     /* 11g operation */
        netband_head     bands_11a;     /* 11a operation */
-       netband_head     bands_11ng;/* 11ng operation */
-       netband_head     bands_11na;/* 11na operation */
+       netband_head     bands_11ng;    /* 11ng operation */
+       netband_head     bands_11na;    /* 11na operation */
 
        LIST_ENTRY(regdomain)   next;
 };
 
 struct country {
-       enum ISOCountryCode     code;      
+       enum ISOCountryCode     code;
 #define        NO_COUNTRY      0xffff
        const struct regdomain  *rd;
        const char*             isoname;
@@ -89,7 +89,13 @@ struct country {
        LIST_ENTRY(country)     next;
 };
 
-struct ident;
+enum IdentType { DOMAIN, COUNTRY, FREQBAND };
+
+struct ident {
+       const void *id;
+       void *p;
+       enum IdentType type;
+};
 
 struct regdata {
        LIST_HEAD(, country)    countries;      /* country code table */