Hi,
Enable gcc warnings for arp, rarpd, ndp and fix findings.
ok?
bluhm
Index: usr.sbin/arp/Makefile
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/arp/Makefile,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 Makefile
--- usr.sbin/arp/Makefile 29 Mar 2005 23:56:30 -0000 1.3
+++ usr.sbin/arp/Makefile 19 Jul 2013 22:35:30 -0000
@@ -2,6 +2,7 @@
PROG= arp
MAN= arp.4 arp.8
-CFLAGS+= -Wall
+
+WARNINGS= Yes
.include <bsd.prog.mk>
Index: usr.sbin/arp/arp.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/arp/arp.c,v
retrieving revision 1.52
diff -u -p -u -p -r1.52 arp.c
--- usr.sbin/arp/arp.c 21 Mar 2013 04:43:17 -0000 1.52
+++ usr.sbin/arp/arp.c 19 Jul 2013 22:35:30 -0000
@@ -82,7 +82,7 @@ static pid_t pid;
static int replace; /* replace entries when adding */
static int nflag; /* no reverse dns lookups */
static int aflag; /* do it for all entries */
-static int s = -1;
+static int rsock = -1;
static int rdomain = 0;
extern int h_errno;
@@ -238,11 +238,11 @@ file(char *name)
void
getsocket(void)
{
- if (s >= 0)
+ if (rsock >= 0)
return;
- s = socket(PF_ROUTE, SOCK_RAW, 0);
- if (s < 0)
- err(1, "socket");
+ rsock = socket(PF_ROUTE, SOCK_RAW, 0);
+ if (rsock < 0)
+ err(1, "routing socket");
}
struct sockaddr_in so_mask = { 8, 0, 0, { 0xffffffff } };
@@ -285,10 +285,10 @@ set(int argc, char *argv[])
doing_proxy = flags = export_only = expire_time = 0;
while (argc-- > 0) {
if (strncmp(argv[0], "temp", 4) == 0) {
- struct timeval time;
+ struct timeval now;
- gettimeofday(&time, 0);
- expire_time = time.tv_sec + 20 * 60;
+ gettimeofday(&now, 0);
+ expire_time = now.tv_sec + 20 * 60;
if (flags & RTF_PERMANENT_ARP) {
/* temp or permanent, not both */
usage();
@@ -622,14 +622,14 @@ doit:
l = rtm->rtm_msglen;
rtm->rtm_seq = ++seq;
rtm->rtm_type = cmd;
- if (write(s, (char *)&m_rtmsg, l) < 0)
+ if (write(rsock, (char *)&m_rtmsg, l) < 0)
if (errno != ESRCH || cmd != RTM_DELETE) {
warn("writing to routing socket");
return (-1);
}
do {
- l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg));
+ l = read(rsock, (char *)&m_rtmsg, sizeof(m_rtmsg));
} while (l > 0 && (rtm->rtm_version != RTM_VERSION ||
rtm->rtm_seq != seq || rtm->rtm_pid != pid));
Index: usr.sbin/ndp/Makefile
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/ndp/Makefile,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 Makefile
--- usr.sbin/ndp/Makefile 25 Jan 2004 20:45:13 -0000 1.2
+++ usr.sbin/ndp/Makefile 19 Jul 2013 22:28:57 -0000
@@ -6,4 +6,6 @@ MAN= ndp.8 # ndp.4
CPPFLAGS+=-DINET6 -I${.CURDIR}
+WARNINGS= Yes
+
.include <bsd.prog.mk>
Index: usr.sbin/ndp/ndp.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/ndp/ndp.c,v
retrieving revision 1.48
diff -u -p -u -p -r1.48 ndp.c
--- usr.sbin/ndp/ndp.c 19 Jul 2013 09:12:51 -0000 1.48
+++ usr.sbin/ndp/ndp.c 19 Jul 2013 22:22:26 -0000
@@ -116,7 +116,7 @@ static pid_t pid;
static int nflag;
static int tflag;
static int32_t thiszone; /* time difference with gmt */
-static int s = -1;
+static int rsock = -1;
static int repeat = 0;
char ntop_buf[INET6_ADDRSTRLEN]; /* inet_ntop() */
@@ -154,12 +154,11 @@ static char *rtpref_str[] = {
};
#endif
-int mode = 0;
-char *arg = NULL;
-
int
main(int argc, char *argv[])
{
+ char *arg = NULL;
+ int mode = 0;
int ch;
pid = getpid();
@@ -323,13 +322,11 @@ file(char *name)
void
getsocket(void)
{
- if (s < 0) {
- s = socket(PF_ROUTE, SOCK_RAW, 0);
- if (s < 0) {
- err(1, "socket");
- /* NOTREACHED */
- }
- }
+ if (rsock >= 0)
+ return;
+ rsock = socket(PF_ROUTE, SOCK_RAW, 0);
+ if (rsock < 0)
+ err(1, "routing socket");
}
struct sockaddr_in6 so_mask = {sizeof(so_mask), AF_INET6 };
@@ -384,10 +381,10 @@ set(int argc, char **argv)
flags = 0;
while (argc-- > 0) {
if (strncmp(argv[0], "temp", 4) == 0) {
- struct timeval time;
+ struct timeval now;
- gettimeofday(&time, 0);
- expire_time = time.tv_sec + 20 * 60;
+ gettimeofday(&now, 0);
+ expire_time = now.tv_sec + 20 * 60;
} else if (strncmp(argv[0], "proxy", 5) == 0)
flags |= RTF_ANNOUNCE;
argv++;
@@ -546,12 +543,12 @@ dump(struct in6_addr *addr, int cflag)
{
int mib[6];
size_t needed;
- char *lim, *buf = NULL, *next;
+ char *lim = NULL, *buf = NULL, *next;
struct rt_msghdr *rtm;
struct sockaddr_in6 *sin;
struct sockaddr_dl *sdl;
struct in6_nbrinfo *nbi;
- struct timeval time;
+ struct timeval now;
int addrwidth;
int llwidth;
int ifwidth;
@@ -645,9 +642,9 @@ again:;
#endif
continue;
}
- gettimeofday(&time, 0);
+ gettimeofday(&now, 0);
if (tflag)
- ts_print(&time);
+ ts_print(&now);
addrwidth = strlen(host_buf);
if (addrwidth < W_ADDR)
@@ -668,9 +665,9 @@ again:;
/* Print neighbor discovery specific informations */
nbi = getnbrinfo(&sin->sin6_addr, sdl->sdl_index, 1);
if (nbi) {
- if (nbi->expire > time.tv_sec) {
+ if (nbi->expire > now.tv_sec) {
printf(" %-9.9s",
- sec2str(nbi->expire - time.tv_sec));
+ sec2str(nbi->expire - now.tv_sec));
} else if (nbi->expire == 0)
printf(" %-9.9s", "permanent");
else
@@ -871,14 +868,14 @@ doit:
l = rtm->rtm_msglen;
rtm->rtm_seq = ++seq;
rtm->rtm_type = cmd;
- if ((rlen = write(s, (char *)&m_rtmsg, l)) < 0) {
+ if ((rlen = write(rsock, (char *)&m_rtmsg, l)) < 0) {
if (errno != ESRCH || cmd != RTM_DELETE) {
err(1, "writing to routing socket");
/* NOTREACHED */
}
}
do {
- l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg));
+ l = read(rsock, (char *)&m_rtmsg, sizeof(m_rtmsg));
} while (l > 0 && (rtm->rtm_version != RTM_VERSION ||
rtm->rtm_seq != seq || rtm->rtm_pid != pid));
if (l < 0)
@@ -1011,7 +1008,7 @@ rtrlist(void)
char *buf;
struct in6_defrouter *p, *ep;
size_t l;
- struct timeval time;
+ struct timeval now;
if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), NULL, &l, NULL, 0) < 0) {
err(1, "sysctl(ICMPV6CTL_ND6_DRLIST)");
@@ -1046,18 +1043,18 @@ rtrlist(void)
rtpref = ((p->flags & ND_RA_FLAG_RTPREF_MASK) >> 3) & 0xff;
printf(", pref=%s", rtpref_str[rtpref]);
- gettimeofday(&time, 0);
+ gettimeofday(&now, 0);
if (p->expire == 0)
printf(", expire=Never\n");
else
printf(", expire=%s\n",
- sec2str(p->expire - time.tv_sec));
+ sec2str(p->expire - now.tv_sec));
}
free(buf);
#else
struct in6_drlist dr;
int s, i;
- struct timeval time;
+ struct timeval now;
if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
err(1, "socket");
@@ -1086,12 +1083,12 @@ rtrlist(void)
printf(", flags=%s%s",
DR.flags & ND_RA_FLAG_MANAGED ? "M" : "",
DR.flags & ND_RA_FLAG_OTHER ? "O" : "");
- gettimeofday(&time, 0);
+ gettimeofday(&now, 0);
if (DR.expire == 0)
printf(", expire=Never\n");
else
printf(", expire=%s\n",
- sec2str(DR.expire - time.tv_sec));
+ sec2str(DR.expire - now.tv_sec));
}
#undef DR
close(s);
@@ -1107,7 +1104,7 @@ plist(void)
struct in6_prefix *p, *ep, *n;
struct sockaddr_in6 *advrtr;
size_t l;
- struct timeval time;
+ struct timeval now;
const int niflags = NI_NUMERICHOST;
int ninflags = nflag ? NI_NUMERICHOST : 0;
char namebuf[NI_MAXHOST];
@@ -1138,7 +1135,7 @@ plist(void)
printf("%s/%d if=%s\n", namebuf, p->prefixlen,
if_indextoname(p->if_index, ifix_buf));
- gettimeofday(&time, 0);
+ gettimeofday(&now, 0);
/*
* meaning of fields, especially flags, is very different
* by origin. notify the difference to the users.
@@ -1164,9 +1161,9 @@ plist(void)
printf(", pltime=%lu", (unsigned long)p->pltime);
if (p->expire == 0)
printf(", expire=Never");
- else if (p->expire >= time.tv_sec)
+ else if (p->expire >= now.tv_sec)
printf(", expire=%s",
- sec2str(p->expire - time.tv_sec));
+ sec2str(p->expire - now.tv_sec));
else
printf(", expired");
printf(", ref=%d", p->refcnt);
@@ -1214,9 +1211,9 @@ plist(void)
#else
struct in6_prlist pr;
int s, i;
- struct timeval time;
+ struct timeval now;
- gettimeofday(&time, 0);
+ gettimeofday(&now, 0);
if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
err(1, "socket");
@@ -1268,7 +1265,7 @@ plist(void)
printf("%s/%d if=%s\n", namebuf, PR.prefixlen,
if_indextoname(PR.if_index, ifix_buf));
- gettimeofday(&time, 0);
+ gettimeofday(&now, 0);
/*
* meaning of fields, especially flags, is very different
* by origin. notify the difference to the users.
@@ -1304,9 +1301,9 @@ plist(void)
printf(", pltime=%lu", PR.pltime);
if (PR.expire == 0)
printf(", expire=Never");
- else if (PR.expire >= time.tv_sec)
+ else if (PR.expire >= now.tv_sec)
printf(", expire=%s",
- sec2str(PR.expire - time.tv_sec));
+ sec2str(PR.expire - now.tv_sec));
else
printf(", expired");
#ifdef NDPRF_ONLINK
Index: usr.sbin/rarpd/Makefile
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/rarpd/Makefile,v
retrieving revision 1.6
diff -u -p -u -p -r1.6 Makefile
--- usr.sbin/rarpd/Makefile 15 May 2003 14:52:12 -0000 1.6
+++ usr.sbin/rarpd/Makefile 19 Jul 2013 22:28:37 -0000
@@ -10,4 +10,6 @@ DPADD+= ${LIBUTIL}
# to exist for a rarp reply to be sent.
# CFLAGS+=-DREQUIRE_TFTPBOOT
+WARNINGS= Yes
+
.include <bsd.prog.mk>
Index: usr.sbin/rarpd/arptab.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/rarpd/arptab.c,v
retrieving revision 1.18
diff -u -p -u -p -r1.18 arptab.c
--- usr.sbin/rarpd/arptab.c 27 Oct 2009 23:59:54 -0000 1.18
+++ usr.sbin/rarpd/arptab.c 19 Jul 2013 22:24:03 -0000
@@ -61,15 +61,7 @@
#include <err.h>
static pid_t pid;
-static int s = -1;
-
-void
-getsocket(void)
-{
- s = socket(PF_ROUTE, SOCK_RAW, 0);
- if (s < 0)
- err(1, "arp: socket");
-}
+static int rsock = -1;
struct sockaddr_in so_mask = {8, 0, 0, { 0xffffffff}};
struct sockaddr_inarp blank_sin = {sizeof(blank_sin), AF_INET }, sin_m;
@@ -81,9 +73,20 @@ struct {
char m_space[512];
} m_rtmsg;
+void getsocket(void);
int arptab_set(u_char *, u_int32_t);
int rtmsg(int);
+void
+getsocket(void)
+{
+ if (rsock >= 0)
+ return;
+ rsock = socket(PF_ROUTE, SOCK_RAW, 0);
+ if (rsock < 0)
+ err(1, "routing socket");
+}
+
/*
* Set an individual arp entry
*/
@@ -93,7 +96,7 @@ arptab_set(u_char *eaddr, u_int32_t host
struct sockaddr_inarp *sin = &sin_m;
struct rt_msghdr *rtm = &(m_rtmsg.m_rtm);
struct sockaddr_dl *sdl;
- struct timeval time;
+ struct timeval now;
int rt;
getsocket();
@@ -105,14 +108,14 @@ arptab_set(u_char *eaddr, u_int32_t host
memcpy((u_char *)LLADDR(&sdl_m), (char *)eaddr, 6);
sdl_m.sdl_alen = 6;
doing_proxy = flags = export_only = expire_time = 0;
- gettimeofday(&time, 0);
- expire_time = time.tv_sec + 20 * 60;
+ gettimeofday(&now, 0);
+ expire_time = now.tv_sec + 20 * 60;
tryagain:
if (rtmsg(RTM_GET) < 0) {
syslog(LOG_ERR,"%s: %m", inet_ntoa(sin->sin_addr));
- close(s);
- s = -1;
+ close(rsock);
+ rsock = -1;
return (1);
}
sin = (struct sockaddr_inarp *)((char *)rtm + rtm->rtm_hdrlen);
@@ -134,15 +137,15 @@ tryagain:
if (doing_proxy == 0) {
syslog(LOG_ERR, "arptab_set: can only proxy for %s",
inet_ntoa(sin->sin_addr));
- close(s);
- s = -1;
+ close(rsock);
+ rsock = -1;
return (1);
}
if (sin_m.sin_other & SIN_PROXY) {
syslog(LOG_ERR,
"arptab_set: proxy entry exists for non 802
device");
- close(s);
- s = -1;
+ close(rsock);
+ rsock = -1;
return(1);
}
sin_m.sin_other = SIN_PROXY;
@@ -154,15 +157,15 @@ overwrite:
syslog(LOG_ERR,
"arptab_set: cannot intuit interface index and type for %s",
inet_ntoa(sin->sin_addr));
- close(s);
- s = -1;
+ close(rsock);
+ rsock = -1;
return (1);
}
sdl_m.sdl_type = sdl->sdl_type;
sdl_m.sdl_index = sdl->sdl_index;
rt = rtmsg(RTM_ADD);
- close(s);
- s = -1;
+ close(rsock);
+ rsock = -1;
return (rt);
}
@@ -218,14 +221,14 @@ doit:
l = rtm->rtm_msglen;
rtm->rtm_seq = ++seq;
rtm->rtm_type = cmd;
- if (write(s, (char *)&m_rtmsg, l) < 0) {
+ if (write(rsock, (char *)&m_rtmsg, l) < 0) {
if (errno != ESRCH && errno != EEXIST) {
syslog(LOG_ERR, "writing to routing socket: %m");
return (-1);
}
}
do {
- l = read(s, (char *)&m_rtmsg, sizeof(m_rtmsg));
+ l = read(rsock, (char *)&m_rtmsg, sizeof(m_rtmsg));
} while (l > 0 && (rtm->rtm_version != RTM_VERSION ||
rtm->rtm_seq != seq || rtm->rtm_pid != pid));
if (l < 0)
Index: usr.sbin/rarpd/rarpd.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.sbin/rarpd/rarpd.c,v
retrieving revision 1.53
diff -u -p -u -p -r1.53 rarpd.c
--- usr.sbin/rarpd/rarpd.c 6 Apr 2012 18:03:52 -0000 1.53
+++ usr.sbin/rarpd/rarpd.c 19 Jul 2013 21:46:51 -0000
@@ -353,7 +353,7 @@ rarp_check(u_char *p, int len)
(void) debug("got a packet");
- if (len < sizeof(*ep) + sizeof(*ap)) {
+ if (len < (int)sizeof(*ep) + (int)sizeof(*ap)) {
error(NONFATAL, "truncated request");
return 0;
}
@@ -763,6 +763,7 @@ ipaddrtonetmask(u_int32_t addr)
return IN_CLASSC_NET;
error(FATAL, "unknown IP address class: %08X", addr);
/* NOTREACHED */
+ exit(1); /* silence gcc warning */
}
void