Hi, Enable WARNINGS=Yes for route and fix findings. Avoid shadowing for routing socket and use global variable af.
ok? bluhm Index: sbin/route/Makefile =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sbin/route/Makefile,v retrieving revision 1.13 diff -u -p -r1.13 Makefile --- sbin/route/Makefile 19 Jul 2013 14:41:46 -0000 1.13 +++ sbin/route/Makefile 19 Jul 2013 22:43:54 -0000 @@ -4,7 +4,7 @@ PROG= route MAN= route.8 SRCS= route.c show.c -CFLAGS+= -Wall +WARNINGS= Yes route.o .depend lint tags: keywords.h Index: sbin/route/route.c =================================================================== RCS file: /data/mirror/openbsd/cvs/src/sbin/route/route.c,v retrieving revision 1.163 diff -u -p -r1.163 route.c --- sbin/route/route.c 19 Jul 2013 20:10:23 -0000 1.163 +++ sbin/route/route.c 19 Jul 2013 22:54:46 -0000 @@ -66,7 +66,7 @@ union sockunion so_dst, so_gate, so_mask typedef union sockunion *sup; pid_t pid; -int rtm_addrs, s; +int rtm_addrs, rsock; int forcehost, forcenet, Fflag, nflag, af, qflag, tflag, Tflag; int iflag, verbose, aflen = sizeof(struct sockaddr_in); int locking, lockrest, debugonly; @@ -183,14 +183,14 @@ main(int argc, char **argv) break; default: if (tflag) - s = open(_PATH_DEVNULL, O_WRONLY); + rsock = open(_PATH_DEVNULL, O_WRONLY); else - s = socket(PF_ROUTE, SOCK_RAW, 0); - if (s == -1) - err(1, "socket"); + rsock = socket(PF_ROUTE, SOCK_RAW, 0); + if (rsock == -1) + err(1, "routing socket"); /* force socket onto table user requested */ if (Tflag == 1 && Terr == 0 && - setsockopt(s, AF_ROUTE, ROUTE_TABLEFILTER, + setsockopt(rsock, AF_ROUTE, ROUTE_TABLEFILTER, &tableid, sizeof(tableid)) == -1) err(1, "setsockopt(ROUTE_TABLEFILTER)"); break; @@ -242,7 +242,7 @@ flushroutes(int argc, char **argv) if (uid) errx(1, "must be root to alter routing table"); - shutdown(s, 0); /* Don't want to read back our messages */ + shutdown(rsock, 0); /* Don't want to read back our messages */ while (--argc > 0) { if (**(++argv) == '-') switch (keyword(*argv + 1)) { @@ -334,7 +334,7 @@ flushroutes(int argc, char **argv) rtm->rtm_type = RTM_DELETE; rtm->rtm_seq = seqno; rtm->rtm_tableid = tableid; - rlen = write(s, next, rtm->rtm_msglen); + rlen = write(rsock, next, rtm->rtm_msglen); if (rlen < (int)rtm->rtm_msglen) { warn("write to routing socket"); printf("got only %d for rlen\n", rlen); @@ -411,7 +411,7 @@ newroute(int argc, char **argv) errx(1, "must be root to alter routing table"); cmd = argv[0]; if (*cmd != 'g') - shutdown(s, 0); /* Don't want to read back our messages */ + shutdown(rsock, 0); /* Don't want to read back our messages */ while (--argc > 0) { if (**(++argv)== '-') { switch (key = keyword(1 + *argv)) { @@ -662,8 +662,6 @@ newroute(int argc, char **argv) void show(int argc, char *argv[]) { - int af = 0; - while (--argc > 0) { if (**(++argv)== '-') switch (keyword(*argv + 1)) { @@ -1058,7 +1056,6 @@ interfaces(void) void monitor(int argc, char *argv[]) { - int af = 0; unsigned int filter = 0; int n; char msg[2048]; @@ -1086,14 +1083,14 @@ monitor(int argc, char *argv[]) usage(*argv); } - s = socket(PF_ROUTE, SOCK_RAW, af); - if (s == -1) - err(1, "socket"); + rsock = socket(PF_ROUTE, SOCK_RAW, af); + if (rsock == -1) + err(1, "routing socket"); - if (setsockopt(s, AF_ROUTE, ROUTE_MSGFILTER, &filter, + if (setsockopt(rsock, AF_ROUTE, ROUTE_MSGFILTER, &filter, sizeof(filter)) == -1) err(1, "setsockopt(ROUTE_MSGFILTER)"); - if (Tflag && setsockopt(s, AF_ROUTE, ROUTE_TABLEFILTER, &tableid, + if (Tflag && setsockopt(rsock, AF_ROUTE, ROUTE_TABLEFILTER, &tableid, sizeof(tableid)) == -1) err(1, "setsockopt(ROUTE_TABLEFILTER)"); @@ -1103,7 +1100,7 @@ monitor(int argc, char *argv[]) exit(0); } for (;;) { - if ((n = read(s, msg, sizeof(msg))) == -1) { + if ((n = read(rsock, msg, sizeof(msg))) == -1) { if (errno == EINTR) continue; err(1, "read"); @@ -1179,14 +1176,14 @@ rtmsg(int cmd, int flags, int fmask, u_c print_rtmsg(&rtm, l); if (debugonly) return (0); - if (write(s, &m_rtmsg, l) != l) { + if (write(rsock, &m_rtmsg, l) != l) { if (qflag == 0) warn("writing to routing socket"); return (-1); } if (cmd == RTM_GET) { do { - l = read(s, &m_rtmsg, sizeof(m_rtmsg)); + l = read(rsock, &m_rtmsg, sizeof(m_rtmsg)); } while (l > 0 && (rtm.rtm_version != RTM_VERSION || rtm.rtm_seq != seq || rtm.rtm_pid != pid)); if (l == -1)