diff options
author | hrs <hrs@FreeBSD.org> | 2011-06-04 02:51:12 +0000 |
---|---|---|
committer | hrs <hrs@FreeBSD.org> | 2011-06-04 02:51:12 +0000 |
commit | 00e43e0cd59a008c0479029d721c758ef8d51316 (patch) | |
tree | 64dd37565c480cdf8d49d60fb44d1b5dbf7f4d90 /usr.sbin/rtadvd | |
parent | d3d16bccfc16f4d3a5f9935ded1ca476ec8fd9df (diff) | |
download | FreeBSD-src-00e43e0cd59a008c0479029d721c758ef8d51316.zip FreeBSD-src-00e43e0cd59a008c0479029d721c758ef8d51316.tar.gz |
- Fixes for WARNS=6.
- Use IFNAMSIZ for an interface name.
Diffstat (limited to 'usr.sbin/rtadvd')
-rw-r--r-- | usr.sbin/rtadvd/Makefile | 2 | ||||
-rw-r--r-- | usr.sbin/rtadvd/advcap.c | 25 | ||||
-rw-r--r-- | usr.sbin/rtadvd/config.c | 31 | ||||
-rw-r--r-- | usr.sbin/rtadvd/dump.c | 4 | ||||
-rw-r--r-- | usr.sbin/rtadvd/dump.h | 2 | ||||
-rw-r--r-- | usr.sbin/rtadvd/if.c | 4 | ||||
-rw-r--r-- | usr.sbin/rtadvd/pathnames.h | 5 | ||||
-rw-r--r-- | usr.sbin/rtadvd/rrenum.c | 6 | ||||
-rw-r--r-- | usr.sbin/rtadvd/rtadvd.c | 36 | ||||
-rw-r--r-- | usr.sbin/rtadvd/rtadvd.h | 10 | ||||
-rw-r--r-- | usr.sbin/rtadvd/timer.c | 4 |
11 files changed, 62 insertions, 67 deletions
diff --git a/usr.sbin/rtadvd/Makefile b/usr.sbin/rtadvd/Makefile index 9dbfc99..e34aa3c 100644 --- a/usr.sbin/rtadvd/Makefile +++ b/usr.sbin/rtadvd/Makefile @@ -23,6 +23,6 @@ LDADD= -lutil CFLAGS+= -DHAVE_ARC4RANDOM -DHAVE_POLL_H -DROUTEINFO -WARNS?= 1 +WARNS?= 6 .include <bsd.prog.mk> diff --git a/usr.sbin/rtadvd/advcap.c b/usr.sbin/rtadvd/advcap.c index 83c780e..b0f5ee0 100644 --- a/usr.sbin/rtadvd/advcap.c +++ b/usr.sbin/rtadvd/advcap.c @@ -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; diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c index c8faaf1..2909c87 100644 --- a/usr.sbin/rtadvd/config.c +++ b/usr.sbin/rtadvd/config.c @@ -76,7 +76,7 @@ static time_t prefix_timo = (60 * 120); /* 2 hours. 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 *src) } 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; diff --git a/usr.sbin/rtadvd/dump.c b/usr.sbin/rtadvd/dump.c index d163caa..1c595bf 100644 --- a/usr.sbin/rtadvd/dump.c +++ b/usr.sbin/rtadvd/dump.c @@ -66,7 +66,7 @@ static char *ether_str(struct sockaddr_dl *); 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); diff --git a/usr.sbin/rtadvd/dump.h b/usr.sbin/rtadvd/dump.h index 9b93ddd..8696e13 100644 --- a/usr.sbin/rtadvd/dump.h +++ b/usr.sbin/rtadvd/dump.h @@ -30,4 +30,4 @@ * SUCH DAMAGE. */ -extern void rtadvd_dump_file(char *); +extern void rtadvd_dump_file(const char *); diff --git a/usr.sbin/rtadvd/if.c b/usr.sbin/rtadvd/if.c index a15e3c1..5cbf515 100644 --- a/usr.sbin/rtadvd/if.c +++ b/usr.sbin/rtadvd/if.c @@ -239,7 +239,7 @@ lladdropt_fill(struct sockaddr_dl *sdl, struct nd_opt_hdr *ndopt) } int -rtbuf_len() +rtbuf_len(void) { size_t len; @@ -565,7 +565,7 @@ parse_iflist(struct if_msghdr ***ifmlist_p, char *buf, size_t bufsize) } void -init_iflist() +init_iflist(void) { if (ifblock) { free(ifblock); diff --git a/usr.sbin/rtadvd/pathnames.h b/usr.sbin/rtadvd/pathnames.h index 3afee55..13329da 100644 --- a/usr.sbin/rtadvd/pathnames.h +++ b/usr.sbin/rtadvd/pathnames.h @@ -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" + diff --git a/usr.sbin/rtadvd/rrenum.c b/usr.sbin/rtadvd/rrenum.c index 3f29bc2..3e46af4 100644 --- a/usr.sbin/rtadvd/rrenum.c +++ b/usr.sbin/rtadvd/rrenum.c @@ -306,7 +306,7 @@ do_rr(int len, struct icmp6_router_renum *rr) 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_router_renum *rr, struct in6_addr *from, /* 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_renum *rr, struct in6_pktinfo *pi, 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, diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c index b23abb2..bca5c9e 100644 --- a/usr.sbin/rtadvd/rtadvd.c +++ b/usr.sbin/rtadvd/rtadvd.c @@ -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_solicit *rs, 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_advert *ra, 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 limit, 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, diff --git a/usr.sbin/rtadvd/rtadvd.h b/usr.sbin/rtadvd/rtadvd.h index 64e61a5..251f0fe 100644 --- a/usr.sbin/rtadvd/rtadvd.h +++ b/usr.sbin/rtadvd/rtadvd.h @@ -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 */ diff --git a/usr.sbin/rtadvd/timer.c b/usr.sbin/rtadvd/timer.c index fcad4ab..c8528c6 100644 --- a/usr.sbin/rtadvd/timer.c +++ b/usr.sbin/rtadvd/timer.c @@ -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, struct rtadvd_timer *timer) * Return the next interval for select() call. */ struct timeval * -rtadvd_check_timer() +rtadvd_check_timer(void) { static struct timeval returnval; struct timeval now; |