summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sbin/ifconfig/af_inet6.c12
-rw-r--r--sbin/ifconfig/ifclone.c1
-rw-r--r--sbin/ifconfig/ifconfig.c47
-rw-r--r--sbin/ifconfig/iflagg.c13
-rw-r--r--sbin/ifconfig/ifpfsync.c1
5 files changed, 35 insertions, 39 deletions
diff --git a/sbin/ifconfig/af_inet6.c b/sbin/ifconfig/af_inet6.c
index 3ddf303..cc0ec16 100644
--- a/sbin/ifconfig/af_inet6.c
+++ b/sbin/ifconfig/af_inet6.c
@@ -349,12 +349,14 @@ in6_getaddr(const char *s, int which)
bzero(&hints, sizeof(struct addrinfo));
hints.ai_family = AF_INET6;
error = getaddrinfo(s, NULL, &hints, &res);
+ if (error != 0) {
+ if (inet_pton(AF_INET6, s, &sin->sin6_addr) != 1)
+ errx(1, "%s: bad value", s);
+ } else {
+ bcopy(res->ai_addr, sin, res->ai_addrlen);
+ freeaddrinfo(res);
+ }
}
- if (error != 0) {
- if (inet_pton(AF_INET6, s, &sin->sin6_addr) != 1)
- errx(1, "%s: bad value", s);
- } else
- bcopy(res->ai_addr, sin, res->ai_addrlen);
}
static int
diff --git a/sbin/ifconfig/ifclone.c b/sbin/ifconfig/ifclone.c
index 530f5c1..21dcdc3 100644
--- a/sbin/ifconfig/ifclone.c
+++ b/sbin/ifconfig/ifclone.c
@@ -87,6 +87,7 @@ list_cloners(void)
putchar('\n');
free(buf);
+ close(s);
}
struct clone_defcb {
diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c
index cd61166..dd65086 100644
--- a/sbin/ifconfig/ifconfig.c
+++ b/sbin/ifconfig/ifconfig.c
@@ -106,7 +106,7 @@ static int ifconfig(int argc, char *const *argv, int iscreate,
static void status(const struct afswtch *afp, const struct sockaddr_dl *sdl,
struct ifaddrs *ifa);
static void tunnel_status(int s);
-static void usage(void);
+static void usage(void) _Noreturn;
static struct afswtch *af_getbyname(const char *name);
static struct afswtch *af_getbyfamily(int af);
@@ -802,26 +802,24 @@ top:
*/
p = (setaddr ? &setifdstaddr_cmd : &setifaddr_cmd);
}
- if (p->c_u.c_func || p->c_u.c_func2) {
- if (p->c_parameter == NEXTARG) {
- if (argv[1] == NULL)
- errx(1, "'%s' requires argument",
- p->c_name);
- p->c_u.c_func(argv[1], 0, s, afp);
+ if (p->c_parameter == NEXTARG && p->c_u.c_func) {
+ if (argv[1] == NULL)
+ errx(1, "'%s' requires argument",
+ p->c_name);
+ p->c_u.c_func(argv[1], 0, s, afp);
+ argc--, argv++;
+ } else if (p->c_parameter == OPTARG && p->c_u.c_func) {
+ p->c_u.c_func(argv[1], 0, s, afp);
+ if (argv[1] != NULL)
argc--, argv++;
- } else if (p->c_parameter == OPTARG) {
- p->c_u.c_func(argv[1], 0, s, afp);
- if (argv[1] != NULL)
- argc--, argv++;
- } else if (p->c_parameter == NEXTARG2) {
- if (argc < 3)
- errx(1, "'%s' requires 2 arguments",
- p->c_name);
- p->c_u.c_func2(argv[1], argv[2], s, afp);
- argc -= 2, argv += 2;
- } else
- p->c_u.c_func(*argv, p->c_parameter, s, afp);
- }
+ } else if (p->c_parameter == NEXTARG2 && p->c_u.c_func2) {
+ if (argc < 3)
+ errx(1, "'%s' requires 2 arguments",
+ p->c_name);
+ p->c_u.c_func2(argv[1], argv[2], s, afp);
+ argc -= 2, argv += 2;
+ } else if (p->c_u.c_func)
+ p->c_u.c_func(*argv, p->c_parameter, s, afp);
argc--, argv++;
}
@@ -1297,8 +1295,8 @@ printb(const char *s, unsigned v, const char *bits)
printf("%s=%o", s, v);
else
printf("%s=%x", s, v);
- bits++;
if (bits) {
+ bits++;
putchar('<');
while ((i = *bits++) != '\0') {
if (v & (1 << (i-1))) {
@@ -1376,8 +1374,11 @@ ifmaybeload(const char *name)
}
}
- /* not present, we should try to load it */
- kldload(ifkind);
+ /*
+ * Try to load the module. But ignore failures, because ifconfig can't
+ * infer the names of all drivers (eg mlx4en(4)).
+ */
+ (void) kldload(ifkind);
}
static struct cmd basic_cmds[] = {
diff --git a/sbin/ifconfig/iflagg.c b/sbin/ifconfig/iflagg.c
index e1b50cf..825acf6 100644
--- a/sbin/ifconfig/iflagg.c
+++ b/sbin/ifconfig/iflagg.c
@@ -200,24 +200,17 @@ static void
lagg_status(int s)
{
struct lagg_protos lpr[] = LAGG_PROTOS;
- struct lagg_reqport rp, rpbuf[LAGG_MAX_PORTS];
+ struct lagg_reqport rpbuf[LAGG_MAX_PORTS];
struct lagg_reqall ra;
struct lagg_reqopts ro;
struct lagg_reqflags rf;
struct lacp_opreq *lp;
const char *proto = "<unknown>";
- int i, isport = 0;
+ int i;
- bzero(&rp, sizeof(rp));
bzero(&ra, sizeof(ra));
bzero(&ro, sizeof(ro));
- strlcpy(rp.rp_ifname, name, sizeof(rp.rp_ifname));
- strlcpy(rp.rp_portname, name, sizeof(rp.rp_portname));
-
- if (ioctl(s, SIOCGLAGGPORT, &rp) == 0)
- isport = 1;
-
strlcpy(ra.ra_ifname, name, sizeof(ra.ra_ifname));
ra.ra_size = sizeof(rpbuf);
ra.ra_port = rpbuf;
@@ -257,8 +250,6 @@ lagg_status(int s)
sep = ",";
}
}
- if (isport)
- printf(" laggdev %s", rp.rp_ifname);
putchar('\n');
if (verbose) {
printf("\tlagg options:\n");
diff --git a/sbin/ifconfig/ifpfsync.c b/sbin/ifconfig/ifpfsync.c
index 9dbe1d6..82199ee 100644
--- a/sbin/ifconfig/ifpfsync.c
+++ b/sbin/ifconfig/ifpfsync.c
@@ -120,6 +120,7 @@ setpfsync_syncpeer(const char *val, int d, int s, const struct afswtch *rafp)
if (ioctl(s, SIOCSETPFSYNC, (caddr_t)&ifr) == -1)
err(1, "SIOCSETPFSYNC");
+ freeaddrinfo(peerres);
}
/* ARGSUSED */
OpenPOWER on IntegriCloud