svn commit: r222665 - user/hrs/ipv6/usr.sbin/rtadvd

Hiroki Sato hrs at FreeBSD.org
Sat Jun 4 02:51:12 UTC 2011


Author: hrs
Date: Sat Jun  4 02:51:12 2011
New Revision: 222665
URL: http://svn.freebsd.org/changeset/base/222665

Log:
  - Fixes for WARNS=6.
  - Use IFNAMSIZ for an interface name.

Modified:
  user/hrs/ipv6/usr.sbin/rtadvd/Makefile
  user/hrs/ipv6/usr.sbin/rtadvd/advcap.c
  user/hrs/ipv6/usr.sbin/rtadvd/config.c
  user/hrs/ipv6/usr.sbin/rtadvd/dump.c
  user/hrs/ipv6/usr.sbin/rtadvd/dump.h
  user/hrs/ipv6/usr.sbin/rtadvd/if.c
  user/hrs/ipv6/usr.sbin/rtadvd/pathnames.h
  user/hrs/ipv6/usr.sbin/rtadvd/rrenum.c
  user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.c
  user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.h
  user/hrs/ipv6/usr.sbin/rtadvd/timer.c

Modified: user/hrs/ipv6/usr.sbin/rtadvd/Makefile
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/Makefile	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/Makefile	Sat Jun  4 02:51:12 2011	(r222665)
@@ -23,6 +23,6 @@ LDADD=	-lutil
 
 CFLAGS+= -DHAVE_ARC4RANDOM -DHAVE_POLL_H -DROUTEINFO
 
-WARNS?=	1
+WARNS?=	6
 
 .include <bsd.prog.mk>

Modified: user/hrs/ipv6/usr.sbin/rtadvd/advcap.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/advcap.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/advcap.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -64,8 +64,6 @@
 #define V_TERM		"HOST"
 #endif
 
-char	*RM;
-
 /*
  * termcap - routines for dealing with the terminal capability data base
  *
@@ -83,12 +81,11 @@ char	*RM;
 static	char *tbuf;
 static	int hopcount;	/* detect infinite loops in termcap, init 0 */
 
-static	char *remotefile;
-
-extern char *conffile;
+static const char *remotefile;
+extern const char *conffile;
 
 int tgetent(char *, char *);
-int getent(char *, char *, char *);
+int getent(char *, char *, const char *);
 int tnchktc(void);
 int tnamatch(char *);
 static char *tskip(char *);
@@ -105,18 +102,16 @@ static char *tdecode(char *, char **);
 int
 tgetent(char *bp, char *name)
 {
-	char *cp;
-
-	remotefile = cp = conffile ? conffile : _PATH_RTADVDCONF;
-	return (getent(bp, name, cp));
+	return (getent(bp, name, conffile));
 }
 
 int
-getent(char *bp, char *name, char *cp)
+getent(char *bp, char *name, const char *cfile)
 {
 	int c;
 	int i = 0, cnt = 0;
 	char ibuf[BUFSIZ];
+	char *cp;
 	int tf;
 
 	tbuf = bp;
@@ -128,9 +123,9 @@ getent(char *bp, char *name, char *cp)
 	 * use so we don't have to read the file. In this case it
 	 * has to already have the newlines crunched out.
 	 */
-	if (cp && *cp) {
-		tf = open(RM = cp, O_RDONLY);
-	}
+	if (cfile && *cfile)
+		tf = open(cfile, O_RDONLY);
+
 	if (tf < 0) {
 		syslog(LOG_INFO,
 		       "<%s> open: %s", __func__, strerror(errno));
@@ -392,7 +387,7 @@ tdecode(char *str, char **area)
 {
 	char *cp;
 	int c;
-	char *dp;
+	const char *dp;
 	int i;
 	char term;
 

Modified: user/hrs/ipv6/usr.sbin/rtadvd/config.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/config.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/config.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -76,7 +76,7 @@ static time_t prefix_timo = (60 * 120);	
 extern struct rainfo *ralist;
 
 static struct rtadvd_timer *prefix_timeout(void *);
-static void makeentry(char *, size_t, int, char *);
+static void makeentry(char *, size_t, int, const char *);
 static int getinet6sysctl(int);
 static size_t dname_labelenc(char *, const char *);
 
@@ -117,8 +117,7 @@ dname_labelenc(char *dst, const char *sr
 }
 
 void
-getconfig(intface)
-	char *intface;
+getconfig(char *intface)
 {
 	int stat, i;
 	char tbuf[BUFSIZ];
@@ -211,7 +210,8 @@ getconfig(intface)
 	}
 	tmp->maxinterval = (u_int)val;
 	MAYHAVE(val, "mininterval", tmp->maxinterval/3);
-	if (val < MIN_MININTERVAL || val > (tmp->maxinterval * 3) / 4) {
+	if ((u_int)val < MIN_MININTERVAL ||
+	    (u_int)val > (tmp->maxinterval * 3) / 4) {
 		syslog(LOG_ERR,
 		       "<%s> mininterval (%ld) on %s is invalid "
 		       "(must be between %d and %d)",
@@ -257,7 +257,8 @@ getconfig(intface)
 	}
 
 	MAYHAVE(val, "rltime", tmp->maxinterval * 3);
-	if (val && (val < tmp->maxinterval || val > MAXROUTERLIFETIME)) {
+	if ((u_int)val && ((u_int)val < tmp->maxinterval ||
+	    (u_int)val > MAXROUTERLIFETIME)) {
 		syslog(LOG_ERR,
 		       "<%s> router lifetime (%ld) on %s is invalid "
 		       "(must be 0 or between %d and %d)",
@@ -429,7 +430,7 @@ getconfig(intface)
 		get_prefix(tmp);
 
 	MAYHAVE(val, "mtu", 0);
-	if (val < 0 || val > 0xffffffff) {
+	if (val < 0 || (u_int)val > 0xffffffff) {
 		syslog(LOG_ERR,
 		       "<%s> mtu (%ld) on %s out of range",
 		       __func__, val, intface);
@@ -649,7 +650,7 @@ getconfig(intface)
 		memset(rdn, 0, sizeof(*rdn));
 		TAILQ_INIT(&rdn->rd_list);
 
-		for (ap = addr; ap - addr < strlen(addr); ap += c+1) {
+		for (ap = addr; ap - addr < (ssize_t)strlen(addr); ap += c+1) {
 			c = strcspn(ap, ",");
 			strncpy(abuf, ap, c);
 			abuf[c] = '\0';
@@ -672,7 +673,8 @@ getconfig(intface)
 
 		makeentry(entbuf, sizeof(entbuf), i, "rdnssltime");
 		MAYHAVE(val, entbuf, (tmp->maxinterval * 3 / 2));
-		if (val < tmp->maxinterval || val > tmp->maxinterval * 2) {
+		if ((u_int)val < tmp->maxinterval ||
+		    (u_int)val > tmp->maxinterval * 2) {
 			syslog(LOG_ERR, "%s (%ld) on %s is invalid "
 			    "(must be between %d and %d)",
 			    entbuf, val, intface, tmp->maxinterval,
@@ -690,7 +692,6 @@ getconfig(intface)
 		struct dnssl_addr *dnsa;
 		char *ap;
 		int c;
-		char *p, *q;
 
 		makeentry(entbuf, sizeof(entbuf), i, "dnssl");
 		addr = (char *)agetstr(entbuf, &bp);
@@ -706,7 +707,7 @@ getconfig(intface)
 		memset(dns, 0, sizeof(*dns));
 		TAILQ_INIT(&dns->dn_list);
 
-		for (ap = addr; ap - addr < strlen(addr); ap += c+1) {
+		for (ap = addr; ap - addr < (ssize_t)strlen(addr); ap += c+1) {
 			c = strcspn(ap, ",");
 			strncpy(abuf, ap, c);
 			abuf[c] = '\0';
@@ -726,7 +727,8 @@ getconfig(intface)
 
 		makeentry(entbuf, sizeof(entbuf), i, "dnsslltime");
 		MAYHAVE(val, entbuf, (tmp->maxinterval * 3 / 2));
-		if (val < tmp->maxinterval || val > tmp->maxinterval * 2) {
+		if ((u_int)val < tmp->maxinterval ||
+		    (u_int)val > tmp->maxinterval * 2) {
 			syslog(LOG_ERR, "%s (%ld) on %s is invalid "
 			    "(must be between %d and %d)",
 			    entbuf, val, intface, tmp->maxinterval,
@@ -841,11 +843,7 @@ get_prefix(struct rainfo *rai)
 }
 
 static void
-makeentry(buf, len, id, string)
-	char *buf;
-	size_t len;
-	int id;
-	char *string;
+makeentry(char *buf, size_t len, int id, const char *string)
 {
 
 	if (id < 0)
@@ -1256,7 +1254,6 @@ make_packet(struct rainfo *rainfo)
 	}
 	TAILQ_FOREACH(dns, &rainfo->dnssl, dn_next) {
 		struct dnssl_addr *dnsa;
-		size_t len = 0;
 
 		ndopt_dnssl = (struct nd_opt_dnssl *)buf;
 		ndopt_dnssl->nd_opt_dnssl_type = ND_OPT_DNSSL;

Modified: user/hrs/ipv6/usr.sbin/rtadvd/dump.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/dump.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/dump.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -66,7 +66,7 @@ static char *ether_str(struct sockaddr_d
 static void if_dump(void);
 static size_t dname_labeldec(char *, size_t, const char *);
 
-static char *rtpref_str[] = {
+static const char *rtpref_str[] = {
 	"medium",		/* 00 */
 	"high",			/* 01 */
 	"rsv",			/* 10 */
@@ -273,7 +273,7 @@ if_dump(void)
 }
 
 void
-rtadvd_dump_file(char *dumpfile)
+rtadvd_dump_file(const char *dumpfile)
 {
 	syslog(LOG_DEBUG, "<%s> dump current status to %s", __func__,
 	    dumpfile);

Modified: user/hrs/ipv6/usr.sbin/rtadvd/dump.h
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/dump.h	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/dump.h	Sat Jun  4 02:51:12 2011	(r222665)
@@ -30,4 +30,4 @@
  * SUCH DAMAGE.
  */
 
-extern void rtadvd_dump_file(char *);
+extern void rtadvd_dump_file(const char *);

Modified: user/hrs/ipv6/usr.sbin/rtadvd/if.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/if.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/if.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -239,7 +239,7 @@ lladdropt_fill(struct sockaddr_dl *sdl, 
 }
 
 int
-rtbuf_len()
+rtbuf_len(void)
 {
 	size_t len;
 
@@ -565,7 +565,7 @@ parse_iflist(struct if_msghdr ***ifmlist
 }
 
 void
-init_iflist()
+init_iflist(void)
 {
 	if (ifblock) {
 		free(ifblock);

Modified: user/hrs/ipv6/usr.sbin/rtadvd/pathnames.h
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/pathnames.h	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/pathnames.h	Sat Jun  4 02:51:12 2011	(r222665)
@@ -1,4 +1,7 @@
 /*	$KAME: pathnames.h,v 1.2 2000/05/16 13:34:13 itojun Exp $	*/
 /* 	$FreeBSD$	*/
 
-#define _PATH_RTADVDCONF "/etc/rtadvd.conf"
+#define	_PATH_RTADVDCONF "/etc/rtadvd.conf"
+#define	_PATH_RTADVDDUMP "/var/run/rtadvd.dump"
+#define	_PATH_RTADVDPID "/var/run/rtadvd.pid"
+

Modified: user/hrs/ipv6/usr.sbin/rtadvd/rrenum.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/rrenum.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/rrenum.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -306,7 +306,7 @@ do_rr(int len, struct icmp6_router_renum
 		int rpmlen;
 
 		rpm = (struct rr_pco_match *)cp;
-		if (len < sizeof(struct rr_pco_match)) {
+		if ((size_t)len < sizeof(struct rr_pco_match)) {
 		    tooshort:
 			syslog(LOG_ERR, "<%s> pkt too short. left len = %d. "
 			       "gabage at end of pkt?", __func__, len);
@@ -341,7 +341,7 @@ rr_command_check(int len, struct icmp6_r
 
 	/* omit rr minimal length check. hope kernel have done it. */
 	/* rr_command length check */
-	if (len < (sizeof(struct icmp6_router_renum) +
+	if ((size_t)len < (sizeof(struct icmp6_router_renum) +
 		   sizeof(struct rr_pco_match))) {
 		syslog(LOG_ERR,	"<%s> rr_command len %d is too short",
 		       __func__, len);
@@ -431,7 +431,7 @@ rr_input(int len, struct icmp6_router_re
 	       if_indextoname(pi->ipi6_ifindex, ifnamebuf));
 
 	/* packet validation based on Section 4.1 of RFC2894 */
-	if (len < sizeof(struct icmp6_router_renum)) {
+	if ((size_t)len < sizeof(struct icmp6_router_renum)) {
 		syslog(LOG_NOTICE,
 		       "<%s>: RR short message (size %d) from %s to %s on %s",
 		       __func__, len,

Modified: user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -68,6 +68,7 @@
 #include "if.h"
 #include "config.h"
 #include "dump.h"
+#include "pathnames.h"
 
 struct msghdr rcvmhdr;
 static u_char *rcvcmsgbuf;
@@ -80,8 +81,9 @@ struct msghdr sndmhdr;
 struct iovec rcviov[2];
 struct iovec sndiov[2];
 struct sockaddr_in6 rcvfrom;
-static char *dumpfilename = "/var/run/rtadvd.dump";
-static char *pidfilename = "/var/run/rtadvd.pid";
+static const char *dumpfilename = _PATH_RTADVDDUMP;
+static const char *pidfilename = _PATH_RTADVDPID;
+const char *conffile = _PATH_RTADVDCONF;
 static struct pidfh *pfh;
 static char *mcastif;
 int sock;
@@ -89,8 +91,6 @@ int rtsock = -1;
 int accept_rr = 0;
 int dflag = 0, sflag = 0;
 
-u_char *conffile = NULL;
-
 struct rainfo *ralist = NULL;
 struct nd_optlist {
 	struct nd_optlist *next;
@@ -133,19 +133,19 @@ u_int32_t ndopt_flags[] = {
 	[ND_OPT_DNSSL]			= NDOPT_FLAG_DNSSL,
 };
 
-const struct sockaddr_in6 sin6_linklocal_allnodes = {
+struct sockaddr_in6 sin6_linklocal_allnodes = {
         .sin6_len =     sizeof(sin6_linklocal_allnodes),
         .sin6_family =  AF_INET6,
         .sin6_addr =    IN6ADDR_LINKLOCAL_ALLNODES_INIT,
 };
 
-const struct sockaddr_in6 sin6_linklocal_allrouters = {
+struct sockaddr_in6 sin6_linklocal_allrouters = {
         .sin6_len =     sizeof(sin6_linklocal_allrouters),
         .sin6_family =  AF_INET6,
         .sin6_addr =    IN6ADDR_LINKLOCAL_ALLROUTERS_INIT,
 };
 
-const struct sockaddr_in6 sin6_sitelocal_allrouters = {
+struct sockaddr_in6 sin6_sitelocal_allrouters = {
         .sin6_len =     sizeof(sin6_sitelocal_allrouters),
         .sin6_family =  AF_INET6,
         .sin6_addr =    IN6ADDR_SITELOCAL_ALLROUTERS_INIT,
@@ -376,13 +376,13 @@ main(int argc, char *argv[])
 }
 
 static void
-rtadvd_set_dump_file(int sig)
+rtadvd_set_dump_file(int sig __unused)
 {
 	do_dump = 1;
 }
 
 static void
-set_die(int sig)
+set_die(int sig __unused)
 {
 	do_die = 1;
 }
@@ -638,7 +638,7 @@ rtmsg_input(void)
 void
 rtadvd_input(void)
 {
-	int i;
+	ssize_t i;
 	int *hlimp = NULL;
 #ifdef OLDRAWSOCKET
 	struct ip6_hdr *ip;
@@ -703,7 +703,7 @@ rtadvd_input(void)
 	}
 
 #ifdef OLDRAWSOCKET
-	if (i < sizeof(struct ip6_hdr) + sizeof(struct icmp6_hdr)) {
+	if ((size_t)i < sizeof(struct ip6_hdr) + sizeof(struct icmp6_hdr)) {
 		syslog(LOG_ERR,
 		       "<%s> packet size(%d) is too short",
 		       __func__, i);
@@ -713,7 +713,7 @@ rtadvd_input(void)
 	ip = (struct ip6_hdr *)rcvmhdr.msg_iov[0].iov_base;
 	icp = (struct icmp6_hdr *)(ip + 1); /* XXX: ext. hdr? */
 #else
-	if (i < sizeof(struct icmp6_hdr)) {
+	if ((size_t)i < sizeof(struct icmp6_hdr)) {
 		syslog(LOG_ERR,
 		       "<%s> packet size(%d) is too short",
 		       __func__, i);
@@ -750,7 +750,7 @@ rtadvd_input(void)
 			    if_indextoname(pi->ipi6_ifindex, ifnamebuf));
 			return;
 		}
-		if (i < sizeof(struct nd_router_solicit)) {
+		if ((size_t)i < sizeof(struct nd_router_solicit)) {
 			syslog(LOG_NOTICE,
 			    "<%s> RS from %s on %s does not have enough "
 			    "length (len = %d)",
@@ -787,7 +787,7 @@ rtadvd_input(void)
 			    if_indextoname(pi->ipi6_ifindex, ifnamebuf));
 			return;
 		}
-		if (i < sizeof(struct nd_router_advert)) {
+		if ((size_t)i < sizeof(struct nd_router_advert)) {
 			syslog(LOG_NOTICE,
 			    "<%s> RA from %s on %s does not have enough "
 			    "length (len = %d)",
@@ -871,7 +871,7 @@ rs_input(int len, struct nd_router_solic
 
 	ra = ralist;
 	while (ra != NULL) {
-		if (pi->ipi6_ifindex == ra->ifindex)
+		if (pi->ipi6_ifindex == (unsigned int)ra->ifindex)
 			break;
 		ra = ra->next;
 	}
@@ -966,7 +966,7 @@ ra_input(int len, struct nd_router_adver
 	struct rainfo *rai;
 	u_char ntopbuf[INET6_ADDRSTRLEN], ifnamebuf[IFNAMSIZ];
 	union nd_opts ndopts;
-	char *on_off[] = {"OFF", "ON"};
+	const char *on_off[] = {"OFF", "ON"};
 	u_int32_t reachabletime, retranstimer, mtu;
 	int inconsistent = 0;
 
@@ -1304,7 +1304,7 @@ nd6_options(struct nd_opt_hdr *hdr, int 
 	int optlen = 0;
 
 	for (; limit > 0; limit -= optlen) {
-		if (limit < sizeof(struct nd_opt_hdr)) {
+		if ((size_t)limit < sizeof(struct nd_opt_hdr)) {
 			syslog(LOG_INFO, "<%s> short option header", __func__);
 			goto bad;
 		}
@@ -1619,7 +1619,7 @@ ra_output(struct rainfo *rainfo)
 
 	i = sendmsg(sock, &sndmhdr, 0);
 
-	if (i < 0 || i != rainfo->ra_datalen)  {
+	if (i < 0 || (size_t)i != rainfo->ra_datalen)  {
 		if (i < 0) {
 			syslog(LOG_ERR, "<%s> sendmsg on %s: %s",
 			       __func__, rainfo->ifname,

Modified: user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.h
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.h	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/rtadvd.h	Sat Jun  4 02:51:12 2011	(r222665)
@@ -42,9 +42,9 @@
 	{{{ 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	\
 	    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}}
 
-extern const struct sockaddr_in6 sin6_linklocal_allnodes;
-extern const struct sockaddr_in6 sin6_linklocal_allrouters;
-extern const struct sockaddr_in6 sin6_sitelocal_allrouters;
+extern struct sockaddr_in6 sin6_linklocal_allnodes;
+extern struct sockaddr_in6 sin6_linklocal_allrouters;
+extern struct sockaddr_in6 sin6_sitelocal_allrouters;
 
 /*
  * RFC 3542 API deprecates IPV6_PKTINFO in favor of
@@ -181,8 +181,8 @@ struct	rainfo {
 	int	ifindex;
 	int	advlinkopt;	/* bool: whether include link-layer addr opt */
 	struct sockaddr_dl *sdl;
-	char	ifname[16];
-	int	phymtu;		/* mtu of the physical interface */
+	char	ifname[IFNAMSIZ];
+	u_int32_t	phymtu;		/* mtu of the physical interface */
 
 	/* Router configuration variables */
 	u_short lifetime;	/* AdvDefaultLifetime */

Modified: user/hrs/ipv6/usr.sbin/rtadvd/timer.c
==============================================================================
--- user/hrs/ipv6/usr.sbin/rtadvd/timer.c	Sat Jun  4 01:20:47 2011	(r222664)
+++ user/hrs/ipv6/usr.sbin/rtadvd/timer.c	Sat Jun  4 02:51:12 2011	(r222665)
@@ -48,7 +48,7 @@ static struct rtadvd_timer timer_head;
 static struct timeval tm_max = {0x7fffffff, 0x7fffffff};
 
 void
-rtadvd_timer_init()
+rtadvd_timer_init(void)
 {
 	memset(&timer_head, 0, sizeof(timer_head));
 
@@ -119,7 +119,7 @@ rtadvd_set_timer(struct timeval *tm, str
  * Return the next interval for select() call.
  */
 struct timeval *
-rtadvd_check_timer()
+rtadvd_check_timer(void)
 {
 	static struct timeval returnval;
 	struct timeval now;


More information about the svn-src-user mailing list