summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Giedat <rainer@cvs.openbsd.org>2008-04-21 20:40:56 +0000
committerRainer Giedat <rainer@cvs.openbsd.org>2008-04-21 20:40:56 +0000
commit2eb896a3c2545b2c1f068c4a4ea865cba56418a4 (patch)
treeb4c4b2186f745d4ab97c4812b626304985b68b3a
parente06955861e1dc82e1d1c55fa4694375ae703ede6 (diff)
Clean up logging by introducing the logging API used in
other daemons and clean up the command line options. For details, see rtadvd(8). ok bluhm@, pyr@
-rw-r--r--usr.sbin/rtadvd/Makefile5
-rw-r--r--usr.sbin/rtadvd/advcap.c12
-rw-r--r--usr.sbin/rtadvd/config.c236
-rw-r--r--usr.sbin/rtadvd/dump.c7
-rw-r--r--usr.sbin/rtadvd/if.c67
-rw-r--r--usr.sbin/rtadvd/log.c157
-rw-r--r--usr.sbin/rtadvd/log.h28
-rw-r--r--usr.sbin/rtadvd/rrenum.c113
-rw-r--r--usr.sbin/rtadvd/rtadvd.816
-rw-r--r--usr.sbin/rtadvd/rtadvd.c630
-rw-r--r--usr.sbin/rtadvd/timer.c29
11 files changed, 608 insertions, 692 deletions
diff --git a/usr.sbin/rtadvd/Makefile b/usr.sbin/rtadvd/Makefile
index 92c928d92fe..c9df9e0ae7f 100644
--- a/usr.sbin/rtadvd/Makefile
+++ b/usr.sbin/rtadvd/Makefile
@@ -1,8 +1,9 @@
-# $OpenBSD: Makefile,v 1.5 2006/12/19 14:50:29 itojun Exp $
+# $OpenBSD: Makefile,v 1.6 2008/04/21 20:40:55 rainer Exp $
PROG= rtadvd
-SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c dump.c
+SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c dump.c log.c
+CFLAGS+=-Wall
LDADD+= -lutil
DPADD+= ${LIBUTIL}
MAN= rtadvd.8 rtadvd.conf.5
diff --git a/usr.sbin/rtadvd/advcap.c b/usr.sbin/rtadvd/advcap.c
index be9cf8baf9b..463f8352206 100644
--- a/usr.sbin/rtadvd/advcap.c
+++ b/usr.sbin/rtadvd/advcap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: advcap.c,v 1.12 2008/04/20 11:36:48 rainer Exp $ */
+/* $OpenBSD: advcap.c,v 1.13 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: advcap.c,v 1.9 2002/05/29 14:28:35 itojun Exp $ */
/*
@@ -42,10 +42,10 @@
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
-#include <syslog.h>
#include <errno.h>
#include <string.h>
#include "pathnames.h"
+#include "log.h"
#ifndef BUFSIZ
#define BUFSIZ 1024
@@ -64,7 +64,6 @@
#define V_TERM "HOST"
#endif
-char *RM;
/*
* termcap - routines for dealing with the terminal capability data base
@@ -131,11 +130,10 @@ getent(bp, name, cp)
* has to already have the newlines crunched out.
*/
if (cp && *cp) {
- tf = open(RM = cp, O_RDONLY);
+ tf = open(cp, O_RDONLY);
}
if (tf < 0) {
- syslog(LOG_WARNING,
- "<%s> open: %s", __func__, strerror(errno));
+ log_warn("open");
return (-2);
}
for (;;) {
@@ -211,6 +209,8 @@ tnchktc()
return (0);
}
if (getent(tcbuf, tcname, remotefile) != 1) {
+ log_warnx("Could not parse %s: "
+ "Unresolvable reference to %s.", remotefile, tcname);
return (0);
}
for (q = tcbuf; *q++ != ':'; )
diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c
index 2c7d032ca80..b344b51f13a 100644
--- a/usr.sbin/rtadvd/config.c
+++ b/usr.sbin/rtadvd/config.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: config.c,v 1.24 2008/04/20 11:36:48 rainer Exp $ */
+/* $OpenBSD: config.c,v 1.25 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: config.c,v 1.62 2002/05/29 10:13:10 itojun Exp $ */
/*
@@ -49,7 +49,6 @@
#include <arpa/inet.h>
#include <stdio.h>
-#include <syslog.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
@@ -62,6 +61,7 @@
#include "timer.h"
#include "if.h"
#include "config.h"
+#include "log.h"
static void makeentry(char *, size_t, int, char *);
static int getinet6sysctl(int);
@@ -86,7 +86,7 @@ getconfig(intface)
do { \
int64_t t; \
if ((t = agetnum(cap)) < 0) { \
- fprintf(stderr, "rtadvd: need %s for interface %s\n", \
+ log_warnx("need %s for interface %s", \
cap, intface); \
exit(1); \
} \
@@ -100,19 +100,15 @@ getconfig(intface)
if ((stat = agetent(tbuf, intface)) <= 0) {
memset(tbuf, 0, sizeof(tbuf));
- syslog(LOG_INFO,
- "<%s> %s isn't defined in the configuration file"
- " or the configuration file doesn't exist."
- " Treat it as default",
- __func__, intface);
+ log_info("Could not parse configuration file for %s"
+ " or the configuration file doesn't exist."
+ " Treat it as default", intface);
}
tmp = (struct rainfo *)malloc(sizeof(*ralist));
- if (tmp == NULL) {
- syslog(LOG_INFO, "<%s> %s: can't allocate enough memory",
- __func__, intface);
- exit(1);
- }
+ if (tmp == NULL)
+ fatal("malloc");
+
memset(tmp, 0, sizeof(*tmp));
tmp->prefix.next = tmp->prefix.prev = &tmp->prefix;
@@ -129,9 +125,7 @@ getconfig(intface)
tmp->advlinkopt = 1;
if (tmp->advlinkopt) {
if ((tmp->sdl = if_nametosdl(intface)) == NULL) {
- syslog(LOG_ERR,
- "<%s> can't get information of %s",
- __func__, intface);
+ log_warnx("can't get information of %s", intface);
exit(1);
}
tmp->ifindex = tmp->sdl->sdl_index;
@@ -140,9 +134,8 @@ getconfig(intface)
strncpy(tmp->ifname, intface, sizeof(tmp->ifname));
if ((tmp->phymtu = if_getmtu(intface)) == 0) {
tmp->phymtu = IPV6_MMTU;
- syslog(LOG_WARNING,
- "<%s> can't get interface mtu of %s. Treat as %d",
- __func__, intface, IPV6_MMTU);
+ log_warn("can't get interface mtu of %s. Treat as %d",
+ intface, IPV6_MMTU);
}
/*
@@ -150,20 +143,17 @@ getconfig(intface)
*/
MAYHAVE(val, "maxinterval", DEF_MAXRTRADVINTERVAL);
if (val < MIN_MAXINTERVAL || val > MAX_MAXINTERVAL) {
- syslog(LOG_ERR,
- "<%s> maxinterval (%ld) on %s is invalid "
- "(must be between %e and %u)", __func__, val,
- intface, MIN_MAXINTERVAL, MAX_MAXINTERVAL);
+ log_warnx("maxinterval (%ld) on %s is invalid "
+ "(must be between %e and %u)", val,
+ intface, MIN_MAXINTERVAL, MAX_MAXINTERVAL);
exit(1);
}
tmp->maxinterval = (u_int)val;
MAYHAVE(val, "mininterval", tmp->maxinterval/3);
if (val < MIN_MININTERVAL || val > (tmp->maxinterval * 3) / 4) {
- syslog(LOG_ERR,
- "<%s> mininterval (%ld) on %s is invalid "
- "(must be between %e and %d)",
- __func__, val, intface, MIN_MININTERVAL,
- (tmp->maxinterval * 3) / 4);
+ log_warnx("mininterval (%ld) on %s is invalid "
+ "(must be between %e and %d)",
+ val, intface, MIN_MININTERVAL, (tmp->maxinterval * 3) / 4);
exit(1);
}
tmp->mininterval = (u_int)val;
@@ -180,18 +170,17 @@ getconfig(intface)
#endif
tmp->rtpref = val & ND_RA_FLAG_RTPREF_MASK;
if (tmp->rtpref == ND_RA_FLAG_RTPREF_RSV) {
- syslog(LOG_ERR, "<%s> invalid router preference (%02x) on %s",
- __func__, tmp->rtpref, intface);
+ log_warnx("invalid router preference (%02x) on %s",
+ tmp->rtpref, intface);
exit(1);
}
MAYHAVE(val, "rltime", tmp->maxinterval * 3);
if (val && (val < tmp->maxinterval || val > MAXROUTERLIFETIME)) {
- syslog(LOG_ERR,
- "<%s> router lifetime (%ld) on %s is invalid "
- "(must be 0 or between %d and %d)",
- __func__, val, intface,
- tmp->maxinterval, MAXROUTERLIFETIME);
+ log_warnx("router lifetime (%ld) on %s is invalid "
+ "(must be 0 or between %d and %d)",
+ val, intface,
+ tmp->maxinterval, MAXROUTERLIFETIME);
exit(1);
}
/*
@@ -203,37 +192,33 @@ getconfig(intface)
* explicitly set zero. (see also the above section)
*/
if (val && forwarding == 0) {
- syslog(LOG_ERR,
- "<%s> non zero router lifetime is specified for %s, "
- "which must not be allowed for hosts. you must "
- "change router lifetime or enable IPv6 forwarding.",
- __func__, intface);
+ log_warnx("non zero router lifetime is specified for %s, "
+ "which must not be allowed for hosts. you must "
+ "change router lifetime or enable IPv6 forwarding.",
+ intface);
exit(1);
}
tmp->lifetime = val & 0xffff;
MAYHAVE(val, "rtime", DEF_ADVREACHABLETIME);
if (val < 0 || val > MAXREACHABLETIME) {
- syslog(LOG_ERR,
- "<%s> reachable time (%ld) on %s is invalid "
- "(must be no greater than %d)",
- __func__, val, intface, MAXREACHABLETIME);
+ log_warnx("reachable time (%ld) on %s is invalid"
+ " (must be no greater than %d)",
+ val, intface, MAXREACHABLETIME);
exit(1);
}
tmp->reachabletime = (u_int32_t)val;
MAYHAVE(val64, "retrans", DEF_ADVRETRANSTIMER);
if (val64 < 0 || val64 > 0xffffffff) {
- syslog(LOG_ERR, "<%s> retrans time (%lld) on %s out of range",
- __func__, (long long)val64, intface);
+ log_warnx("retrans time (%lld) on %s out of range",
+ (long long)val64, intface);
exit(1);
}
tmp->retranstimer = (u_int32_t)val64;
if (agetnum("hapref") != -1 || agetnum("hatime") != -1) {
- syslog(LOG_ERR,
- "<%s> mobile-ip6 configuration not supported",
- __func__);
+ log_warnx("mobile-ip6 configuration not supported");
exit(1);
}
/* prefix information */
@@ -257,12 +242,8 @@ getconfig(intface)
continue;
/* allocate memory to store prefix information */
- if ((pfx = malloc(sizeof(struct prefix))) == NULL) {
- syslog(LOG_ERR,
- "<%s> can't allocate enough memory",
- __func__);
- exit(1);
- }
+ if ((pfx = malloc(sizeof(struct prefix))) == NULL)
+ fatal("malloc");
memset(pfx, 0, sizeof(*pfx));
/* link into chain */
@@ -272,30 +253,26 @@ getconfig(intface)
pfx->origin = PREFIX_FROM_CONFIG;
if (inet_pton(AF_INET6, addr, &pfx->prefix) != 1) {
- syslog(LOG_ERR,
- "<%s> inet_pton failed for %s",
- __func__, addr);
+ log_warn("inet_pton failed for %s", addr);
exit(1);
}
if (IN6_IS_ADDR_MULTICAST(&pfx->prefix)) {
- syslog(LOG_ERR,
- "<%s> multicast prefix (%s) must "
- "not be advertised on %s",
- __func__, addr, intface);
+ log_warnx("multicast prefix (%s) must"
+ " not be advertised on %s",
+ addr, intface);
exit(1);
}
if (IN6_IS_ADDR_LINKLOCAL(&pfx->prefix))
- syslog(LOG_NOTICE,
- "<%s> link-local prefix (%s) will be"
- " advertised on %s",
- __func__, addr, intface);
+ log_info("link-local prefix (%s) will be"
+ " advertised on %s",
+ addr, intface);
makeentry(entbuf, sizeof(entbuf), i, "prefixlen");
MAYHAVE(val, entbuf, 64);
if (val < 0 || val > 128) {
- syslog(LOG_ERR, "<%s> prefixlen (%ld) for %s "
- "on %s out of range",
- __func__, val, addr, intface);
+ log_warnx("prefixlen (%ld) for %s "
+ "on %s out of range",
+ val, addr, intface);
exit(1);
}
pfx->prefixlen = (int)val;
@@ -309,9 +286,9 @@ getconfig(intface)
makeentry(entbuf, sizeof(entbuf), i, "vltime");
MAYHAVE(val64, entbuf, DEF_ADVVALIDLIFETIME);
if (val64 < 0 || val64 > 0xffffffff) {
- syslog(LOG_ERR, "<%s> vltime (%lld) for "
- "%s/%d on %s is out of range",
- __func__, (long long)val64,
+ log_warnx("vltime (%lld) for"
+ " %s/%d on %s is out of range",
+ (long long)val64,
addr, pfx->prefixlen, intface);
exit(1);
}
@@ -328,10 +305,9 @@ getconfig(intface)
makeentry(entbuf, sizeof(entbuf), i, "pltime");
MAYHAVE(val64, entbuf, DEF_ADVPREFERREDLIFETIME);
if (val64 < 0 || val64 > 0xffffffff) {
- syslog(LOG_ERR,
- "<%s> pltime (%lld) for %s/%d on %s "
- "is out of range",
- __func__, (long long)val64,
+ log_warnx("pltime (%lld) for %s/%d on %s"
+ " is out of range",
+ (long long)val64,
addr, pfx->prefixlen, intface);
exit(1);
}
@@ -350,9 +326,7 @@ getconfig(intface)
MAYHAVE(val, "mtu", 0);
if (val < 0 || val > 0xffffffff) {
- syslog(LOG_ERR,
- "<%s> mtu (%ld) on %s out of range",
- __func__, val, intface);
+ log_warnx("mtu (%ld) on %s out of range", val, intface);
exit(1);
}
tmp->linkmtu = (u_int32_t)val;
@@ -364,18 +338,17 @@ getconfig(intface)
tmp->linkmtu = tmp->phymtu;
}
else if (tmp->linkmtu < IPV6_MMTU || tmp->linkmtu > tmp->phymtu) {
- syslog(LOG_ERR,
- "<%s> advertised link mtu (%lu) on %s is invalid (must "
- "be between least MTU (%d) and physical link MTU (%d)",
- __func__, (unsigned long)tmp->linkmtu, intface,
- IPV6_MMTU, tmp->phymtu);
+ log_warnx("advertised link mtu (%lu) on %s is invalid (must"
+ " be between least MTU (%d) and physical link MTU (%d)",
+ (unsigned long)tmp->linkmtu, intface,
+ IPV6_MMTU, tmp->phymtu);
exit(1);
}
/* route information */
MAYHAVE(val, "routes", -1);
if (val != -1)
- syslog(LOG_INFO, "route information option is not available");
+ log_info("route information option is not available");
/* okey */
tmp->next = ralist;
@@ -400,12 +373,8 @@ get_prefix(struct rainfo *rai)
u_char *p, *ep, *m, *lim;
u_char ntopbuf[INET6_ADDRSTRLEN];
- if (getifaddrs(&ifap) < 0) {
- syslog(LOG_ERR,
- "<%s> can't get interface addresses",
- __func__);
- exit(1);
- }
+ if (getifaddrs(&ifap) < 0)
+ fatal("can't get interface addresses");
for (ifa = ifap; ifa; ifa = ifa->ifa_next) {
int plen;
@@ -421,12 +390,8 @@ get_prefix(struct rainfo *rai)
m = (u_char *)&((struct sockaddr_in6 *)ifa->ifa_netmask)->sin6_addr;
lim = (u_char *)(ifa->ifa_netmask) + ifa->ifa_netmask->sa_len;
plen = prefixlen(m, lim);
- if (plen <= 0 || plen > 128) {
- syslog(LOG_ERR, "<%s> failed to get prefixlen "
- "or prefix is invalid",
- __func__);
- exit(1);
- }
+ if (plen <= 0 || plen > 128)
+ fatalx("failed to get prefixlen or prefix is invalid");
if (plen == 128) /* XXX */
continue;
if (find_prefix(rai, a, plen)) {
@@ -435,12 +400,8 @@ get_prefix(struct rainfo *rai)
}
/* allocate memory to store prefix info. */
- if ((pp = malloc(sizeof(*pp))) == NULL) {
- syslog(LOG_ERR,
- "<%s> can't get allocate buffer for prefix",
- __func__);
- exit(1);
- }
+ if ((pp = malloc(sizeof(*pp))) == NULL)
+ fatal("malloc");
memset(pp, 0, sizeof(*pp));
/* set prefix, sweep bits outside of prefixlen */
@@ -456,13 +417,10 @@ get_prefix(struct rainfo *rai)
*p++ = 0x00;
}
if (!inet_ntop(AF_INET6, &pp->prefix, ntopbuf,
- sizeof(ntopbuf))) {
- syslog(LOG_ERR, "<%s> inet_ntop failed", __func__);
- exit(1);
- }
- syslog(LOG_DEBUG,
- "<%s> add %s/%d to prefix list on %s",
- __func__, ntopbuf, pp->prefixlen, rai->ifname);
+ sizeof(ntopbuf)))
+ fatal("inet_ntop failed");
+ log_debug("add %s/%d to prefix list on %s",
+ ntopbuf, pp->prefixlen, rai->ifname);
/* set other fields with protocol defaults */
pp->validlifetime = DEF_ADVVALIDLIFETIME;
@@ -509,8 +467,7 @@ add_prefix(struct rainfo *rai, struct in6_prefixreq *ipr)
u_char ntopbuf[INET6_ADDRSTRLEN];
if ((prefix = malloc(sizeof(*prefix))) == NULL) {
- syslog(LOG_ERR, "<%s> memory allocation failed",
- __func__);
+ log_warn("malloc");
return; /* XXX: error or exit? */
}
memset(prefix, 0, sizeof(*prefix));
@@ -524,10 +481,10 @@ add_prefix(struct rainfo *rai, struct in6_prefixreq *ipr)
insque(prefix, &rai->prefix);
- syslog(LOG_DEBUG, "<%s> new prefix %s/%d was added on %s",
- __func__, inet_ntop(AF_INET6, &ipr->ipr_prefix.sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- ipr->ipr_plen, rai->ifname);
+ log_debug("new prefix %s/%d was added on %s",
+ inet_ntop(AF_INET6, &ipr->ipr_prefix.sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ ipr->ipr_plen, rai->ifname);
/* free the previous packet */
free(rai->ra_data);
@@ -556,10 +513,9 @@ delete_prefix(struct rainfo *rai, struct prefix *prefix)
u_char ntopbuf[INET6_ADDRSTRLEN];
remque(prefix);
- syslog(LOG_DEBUG, "<%s> prefix %s/%d was deleted on %s",
- __func__, inet_ntop(AF_INET6, &prefix->prefix,
- ntopbuf, INET6_ADDRSTRLEN),
- prefix->prefixlen, rai->ifname);
+ log_debug("prefix %s/%d was deleted on %s",
+ inet_ntop(AF_INET6, &prefix->prefix, ntopbuf, INET6_ADDRSTRLEN),
+ prefix->prefixlen, rai->ifname);
free(prefix);
rai->pfxs--;
make_packet(rai);
@@ -577,14 +533,12 @@ init_prefix(struct in6_prefixreq *ipr)
int s;
if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
- syslog(LOG_ERR, "<%s> socket: %s", __func__,
- strerror(errno));
+ log_warn("socket");
exit(1);
}
if (ioctl(s, SIOCGIFPREFIX_IN6, (caddr_t)ipr) < 0) {
- syslog(LOG_WARNING, "<%s> ioctl:SIOCGIFPREFIX %s", __func__,
- strerror(errno));
+ log_warn("ioctl:SIOCGIFFLAGS: failed for %s", ifr.ifr_name);
ipr->ipr_vltime = DEF_ADVVALIDLIFETIME;
ipr->ipr_pltime = DEF_ADVPREFERREDLIFETIME;
@@ -595,11 +549,11 @@ init_prefix(struct in6_prefixreq *ipr)
else if (ipr->ipr_origin < PR_ORIG_RR) {
u_char ntopbuf[INET6_ADDRSTRLEN];
- syslog(LOG_WARNING, "<%s> Added prefix(%s)'s origin %d is"
- "lower than PR_ORIG_RR(router renumbering)."
- "This should not happen if I am router", __func__,
- inet_ntop(AF_INET6, &ipr->ipr_prefix.sin6_addr, ntopbuf,
- sizeof(ntopbuf)), ipr->ipr_origin);
+ log_warn("Added prefix(%s)'s origin %d is"
+ " lower than PR_ORIG_RR(router renumbering)."
+ " This should not happen if I am router",
+ inet_ntop(AF_INET6, &ipr->ipr_prefix.sin6_addr, ntopbuf,
+ sizeof(ntopbuf)), ipr->ipr_origin);
close(s);
return 1;
}
@@ -622,9 +576,8 @@ make_prefix(struct rainfo *rai, int ifindex, struct in6_addr *addr, int plen)
memset(&ipr, 0, sizeof(ipr));
if (if_indextoname(ifindex, ipr.ipr_name) == NULL) {
- syslog(LOG_ERR, "<%s> Prefix added interface No.%d doesn't"
- "exist. This should not happen! %s", __func__,
- ifindex, strerror(errno));
+ log_warn("Prefix added interface No.%d doesn't"
+ " exist. This should not happen!", ifindex);
exit(1);
}
ipr.ipr_prefix.sin6_len = sizeof(ipr.ipr_prefix);
@@ -651,10 +604,9 @@ make_packet(struct rainfo *rainfo)
packlen = sizeof(struct nd_router_advert);
if (rainfo->advlinkopt) {
if ((lladdroptlen = lladdropt_length(rainfo->sdl)) == 0) {
- syslog(LOG_INFO,
- "<%s> link-layer address option has"
- " null length on %s. Treat as not included.",
- __func__, rainfo->ifname);
+ log_info("link-layer address option has"
+ " null length on %s. Treat as not included.",
+ rainfo->ifname);
rainfo->advlinkopt = 0;
}
packlen += lladdroptlen;
@@ -665,12 +617,8 @@ make_packet(struct rainfo *rainfo)
packlen += sizeof(struct nd_opt_mtu);
/* allocate memory for the packet */
- if ((buf = malloc(packlen)) == NULL) {
- syslog(LOG_ERR,
- "<%s> can't get enough memory for an RA packet",
- __func__);
- exit(1);
- }
+ if ((buf = malloc(packlen)) == NULL)
+ fatal("malloc");
if (rainfo->ra_data) {
/* free the previous packet */
free(rainfo->ra_data);
@@ -776,9 +724,7 @@ getinet6sysctl(int code)
size = sizeof(value);
if (sysctl(mib, sizeof(mib)/sizeof(mib[0]), &value, &size, NULL, 0)
< 0) {
- syslog(LOG_ERR, "<%s>: failed to get ip6 sysctl(%d): %s",
- __func__, code,
- strerror(errno));
+ log_warn("failed to get ip6 sysctl(%d)", code);
return(-1);
}
else
diff --git a/usr.sbin/rtadvd/dump.c b/usr.sbin/rtadvd/dump.c
index 401e97fc688..d6263f79935 100644
--- a/usr.sbin/rtadvd/dump.c
+++ b/usr.sbin/rtadvd/dump.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dump.c,v 1.6 2002/06/10 19:57:35 espie Exp $ */
+/* $OpenBSD: dump.c,v 1.7 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: dump.c,v 1.27 2002/05/29 14:23:55 itojun Exp $ */
/*
@@ -47,7 +47,6 @@
#include <time.h>
#include <stdio.h>
#include <stdarg.h>
-#include <syslog.h>
#include <string.h>
#include <errno.h>
#include <netdb.h>
@@ -56,6 +55,7 @@
#include "timer.h"
#include "if.h"
#include "dump.h"
+#include "log.h"
static FILE *fp;
@@ -207,8 +207,7 @@ rtadvd_dump_file(dumpfile)
char *dumpfile;
{
if ((fp = fopen(dumpfile, "w")) == NULL) {
- syslog(LOG_WARNING, "<%s> open a dump file(%s)",
- __func__, dumpfile);
+ log_warn("open a dump file(%s)", dumpfile);
return;
}
diff --git a/usr.sbin/rtadvd/if.c b/usr.sbin/rtadvd/if.c
index 9bf5037987d..a388dfec180 100644
--- a/usr.sbin/rtadvd/if.c
+++ b/usr.sbin/rtadvd/if.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if.c,v 1.17 2006/11/16 16:08:15 henning Exp $ */
+/* $OpenBSD: if.c,v 1.18 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: if.c,v 1.17 2001/01/21 15:27:30 itojun Exp $ */
/*
@@ -46,9 +46,9 @@
#include <errno.h>
#include <stdlib.h>
#include <string.h>
-#include <syslog.h>
#include "rtadvd.h"
#include "if.h"
+#include "log.h"
#define ROUNDUP(a, size) \
(((a) & ((size)-1)) ? (1 + ((a) | ((size)-1))) : (a))
@@ -161,15 +161,13 @@ if_getflags(int ifindex, int oifflags)
int s;
if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
- syslog(LOG_ERR, "<%s> socket: %s", __func__,
- strerror(errno));
+ log_warn("socket");
return (oifflags & ~IFF_UP);
}
if_indextoname(ifindex, ifr.ifr_name);
if (ioctl(s, SIOCGIFFLAGS, (caddr_t)&ifr) < 0) {
- syslog(LOG_ERR, "<%s> ioctl:SIOCGIFFLAGS: failed for %s",
- __func__, ifr.ifr_name);
+ log_warn("ioctl:SIOCGIFFLAGS: failed for %s", ifr.ifr_name);
close(s);
return (oifflags & ~IFF_UP);
}
@@ -205,8 +203,7 @@ lladdropt_fill(struct sockaddr_dl *sdl, struct nd_opt_hdr *ndopt)
memcpy(addr, LLADDR(sdl), ETHER_ADDR_LEN);
break;
default:
- syslog(LOG_ERR, "<%s> unsupported link type(%d)",
- __func__, sdl->sdl_type);
+ log_warn("unsupported link type(%d)", sdl->sdl_type);
exit(1);
}
@@ -242,9 +239,8 @@ get_next_msg(char *buf, char *lim, int ifindex, size_t *lenp, int filter)
rtm = (struct rt_msghdr *)(((char *)rtm) + rtm->rtm_msglen)) {
/* just for safety */
if (!rtm->rtm_msglen) {
- syslog(LOG_WARNING, "<%s> rtm_msglen is 0 "
- "(buf=%p lim=%p rtm=%p)", __func__,
- buf, lim, rtm);
+ log_warnx("rtm_msglen is 0 (buf=%p lim=%p rtm=%p)",
+ buf, lim, rtm);
break;
}
if (FILTER_MATCH(rtm->rtm_type, filter) == 0) {
@@ -463,20 +459,12 @@ get_iflist(char **buf, size_t *size)
mib[4] = NET_RT_IFLIST;
mib[5] = 0;
- if (sysctl(mib, 6, NULL, size, NULL, 0) < 0) {
- syslog(LOG_ERR, "<%s> sysctl: iflist size get failed",
- __func__);
- exit(1);
- }
- if ((*buf = malloc(*size)) == NULL) {
- syslog(LOG_ERR, "<%s> malloc failed", __func__);
- exit(1);
- }
- if (sysctl(mib, 6, *buf, size, NULL, 0) < 0) {
- syslog(LOG_ERR, "<%s> sysctl: iflist get failed",
- __func__);
- exit(1);
- }
+ if (sysctl(mib, 6, NULL, size, NULL, 0) < 0)
+ fatal("sysctl: iflist size get failed");
+ if ((*buf = malloc(*size)) == NULL)
+ fatal("malloc");
+ if (sysctl(mib, 6, *buf, size, NULL, 0) < 0)
+ fatal("sysctl: iflist get failed");
return;
}
@@ -499,29 +487,26 @@ parse_iflist(struct if_msghdr ***ifmlist_p, char *buf, size_t bufsize)
iflentry_size = sizeof(struct if_msghdr);
/* roughly estimate max list size of pointers to each if_msghdr */
malloc_size = (bufsize/iflentry_size) * sizeof(size_t);
- if ((*ifmlist_p = (struct if_msghdr **)malloc(malloc_size)) == NULL) {
- syslog(LOG_ERR, "<%s> malloc failed", __func__);
- exit(1);
- }
+ if ((*ifmlist_p = (struct if_msghdr **)malloc(malloc_size)) == NULL)
+ fatal("malloc");
lim = buf + bufsize;
for (ifm = (struct if_msghdr *)buf; ifm < (struct if_msghdr *)lim;) {
if (ifm->ifm_msglen == 0) {
- syslog(LOG_WARNING, "<%s> ifm_msglen is 0 "
- "(buf=%p lim=%p ifm=%p)", __func__,
- buf, lim, ifm);
+ log_warn("ifm_msglen is 0 (buf=%p lim=%p ifm=%p)",
+ buf, lim, ifm);
return;
}
if (ifm->ifm_type == RTM_IFINFO) {
(*ifmlist_p)[ifm->ifm_index] = ifm;
} else {
- syslog(LOG_ERR, "out of sync parsing NET_RT_IFLIST,"
- "expected %d, got %d, msglen = %d,"
- "buf:%p, ifm:%p, lim:%p",
- RTM_IFINFO, ifm->ifm_type, ifm->ifm_msglen,
- buf, ifm, lim);
- exit (1);
+ log_warn("out of sync parsing NET_RT_IFLIST,"
+ " expected %d, got %d, msglen = %d,"
+ " buf:%p, ifm:%p, lim:%p",
+ RTM_IFINFO, ifm->ifm_type, ifm->ifm_msglen,
+ buf, ifm, lim);
+ exit(1);
}
for (ifam = (struct ifa_msghdr *)
((char *)ifm + ifm->ifm_msglen);
@@ -530,9 +515,9 @@ parse_iflist(struct if_msghdr ***ifmlist_p, char *buf, size_t bufsize)
((char *)ifam + ifam->ifam_msglen)) {
/* just for safety */
if (!ifam->ifam_msglen) {
- syslog(LOG_WARNING, "<%s> ifa_msglen is 0 "
- "(buf=%p lim=%p ifam=%p)", __func__,
- buf, lim, ifam);
+ log_warnx("ifa_msglen is 0 "
+ "(buf=%p lim=%p ifam=%p)",
+ buf, lim, ifam);
return;
}
if (ifam->ifam_type != RTM_NEWADDR)
diff --git a/usr.sbin/rtadvd/log.c b/usr.sbin/rtadvd/log.c
new file mode 100644
index 00000000000..9b6c8980590
--- /dev/null
+++ b/usr.sbin/rtadvd/log.c
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <netdb.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "log.h"
+
+int debug;
+
+void logit(int, const char *, ...);
+void vlog(int pri, const char *fmt, va_list ap);
+
+void
+log_init(int n_debug)
+{
+ extern char *__progname;
+
+ debug = n_debug;
+
+ if (!debug)
+ openlog(__progname, LOG_PID | LOG_NDELAY, LOG_DAEMON);
+
+ tzset();
+}
+
+void
+logit(int pri, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vlog(pri, fmt, ap);
+ va_end(ap);
+}
+
+void
+vlog(int pri, const char *fmt, va_list ap)
+{
+ char *nfmt;
+
+ if (debug) {
+ /* best effort in out of mem situations */
+ if (asprintf(&nfmt, "%s\n", fmt) == -1) {
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ } else {
+ vfprintf(stderr, nfmt, ap);
+ free(nfmt);
+ }
+ fflush(stderr);
+ } else
+ vsyslog(pri, fmt, ap);
+}
+
+void
+log_warn(const char *emsg, ...)
+{
+ char *nfmt;
+ va_list ap;
+
+ if (emsg == NULL)
+ logit(LOG_CRIT, "%s", strerror(errno));
+ else {
+ va_start(ap, emsg);
+
+ /* best effort to even work in out of memory situations */
+ if (asprintf(&nfmt, "%s: %s", emsg, strerror(errno)) == -1) {
+ /* we tried it... */
+ vlog(LOG_CRIT, emsg, ap);
+ logit(LOG_CRIT, "%s", strerror(errno));
+ } else {
+ vlog(LOG_CRIT, nfmt, ap);
+ free(nfmt);
+ }
+ va_end(ap);
+ }
+}
+
+void
+log_warnx(const char *emsg, ...)
+{
+ va_list ap;
+
+ va_start(ap, emsg);
+ vlog(LOG_CRIT, emsg, ap);
+ va_end(ap);
+}
+
+void
+log_info(const char *emsg, ...)
+{
+ va_list ap;
+
+ va_start(ap, emsg);
+ vlog(LOG_INFO, emsg, ap);
+ va_end(ap);
+}
+
+void
+log_debug(const char *emsg, ...)
+{
+ va_list ap;
+
+ if (debug) {
+ va_start(ap, emsg);
+ vlog(LOG_DEBUG, emsg, ap);
+ va_end(ap);
+ }
+}
+
+void
+fatal(const char *emsg)
+{
+ extern char *__progname;
+
+ if (emsg == NULL)
+ logit(LOG_CRIT, "fatal in %s: %s", __progname,
+ strerror(errno));
+ else
+ if (errno)
+ logit(LOG_CRIT, "fatal in %s: %s: %s",
+ __progname, emsg, strerror(errno));
+ else
+ logit(LOG_CRIT, "fatal in %s: %s",
+ __progname, emsg);
+
+ exit(1);
+}
+
+void
+fatalx(const char *emsg)
+{
+ errno = 0;
+ fatal(emsg);
+}
diff --git a/usr.sbin/rtadvd/log.h b/usr.sbin/rtadvd/log.h
new file mode 100644
index 00000000000..aeb2c5bc6b5
--- /dev/null
+++ b/usr.sbin/rtadvd/log.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 20083, 2004 Henning Brauer <henning@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <stdarg.h>
+
+void log_init(int);
+void logit(int pri, const char *fmt, ...);
+
+void fatal(const char*);
+void log_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
+void log_info(const char*, ...) __attribute__((format(printf, 1, 2)));
+void log_debug(const char*, ...) __attribute__((format(printf, 1, 2)));
+
+void fatalx(const char*);
+void log_warnx(const char*, ...) __attribute__((format(printf, 1, 2)));
diff --git a/usr.sbin/rtadvd/rrenum.c b/usr.sbin/rtadvd/rrenum.c
index 6ef891bf395..4664ff2baad 100644
--- a/usr.sbin/rtadvd/rrenum.c
+++ b/usr.sbin/rtadvd/rrenum.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rrenum.c,v 1.10 2002/06/10 19:57:35 espie Exp $ */
+/* $OpenBSD: rrenum.c,v 1.11 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: rrenum.c,v 1.11 2002/05/21 14:26:55 itojun Exp $ */
/*
@@ -46,10 +46,10 @@
#include <errno.h>
#include <string.h>
#include <stdlib.h>
-#include <syslog.h>
#include "rtadvd.h"
#include "rrenum.h"
#include "if.h"
+#include "log.h"
#define RR_ISSET_SEGNUM(segnum_bits, segnum) \
((((segnum_bits)[(segnum) >> 5]) & (1 << ((segnum) & 31))) != 0)
@@ -84,8 +84,7 @@ rr_pco_check(int len, struct rr_pco_match *rpm)
/* rpm->rpm_len must be (4N * 3) as router-renum-05.txt */
if ((rpm->rpm_len - 3) < 0 || /* must be at least 3 */
(rpm->rpm_len - 3) & 0x3) { /* must be multiple of 4 */
- syslog(LOG_WARNING, "<%s> rpm_len %d is not 4N * 3",
- __func__, rpm->rpm_len);
+ log_warnx("rpm_len %d is not 4N * 3", rpm->rpm_len);
return 1;
}
/* rpm->rpm_code must be valid value */
@@ -95,14 +94,12 @@ rr_pco_check(int len, struct rr_pco_match *rpm)
case RPM_PCO_SETGLOBAL:
break;
default:
- syslog(LOG_WARNING, "<%s> unknown rpm_code %d", __func__,
- rpm->rpm_code);
+ log_warnx("unknown rpm_code %d", rpm->rpm_code);
return 1;
}
/* rpm->rpm_matchlen must be 0 to 128 inclusive */
if (rpm->rpm_matchlen > 128) {
- syslog(LOG_WARNING, "<%s> rpm_matchlen %d is over 128",
- __func__, rpm->rpm_matchlen);
+ log_warnx("rpm_matchlen %d is over 128", rpm->rpm_matchlen);
return 1;
}
@@ -124,11 +121,11 @@ rr_pco_check(int len, struct rr_pco_match *rpm)
* (rpu_uselen + rpu_keeplen > 0)
*/
if (checklen > 128) {
- syslog(LOG_WARNING, "<%s> sum of rpu_uselen %d and"
- " rpu_keeplen %d is %d(over 128)",
- __func__, rpu->rpu_uselen,
- rpu->rpu_keeplen,
- rpu->rpu_uselen + rpu->rpu_keeplen);
+ log_warnx("sum of rpu_uselen %d and"
+ " rpu_keeplen %d is %d(over 128)",
+ rpu->rpu_uselen,
+ rpu->rpu_keeplen,
+ rpu->rpu_uselen + rpu->rpu_keeplen);
return 1;
}
}
@@ -162,8 +159,7 @@ do_use_prefix(int len, struct rr_pco_match *rpm,
irr->irr_useprefix.sin6_addr = in6addr_any;
if (ioctl(s, rrcmd2pco[rpm->rpm_code], (caddr_t)irr) < 0 &&
errno != EADDRNOTAVAIL)
- syslog(LOG_ERR, "<%s> ioctl: %s", __func__,
- strerror(errno));
+ log_warn("ioctl");
return;
}
@@ -194,8 +190,7 @@ do_use_prefix(int len, struct rr_pco_match *rpm,
if (ioctl(s, rrcmd2pco[rpm->rpm_code], (caddr_t)irr) < 0 &&
errno != EADDRNOTAVAIL)
- syslog(LOG_ERR, "<%s> ioctl: %s", __func__,
- strerror(errno));
+ log_warn("ioctl");
/* very adhoc: should be rewritten */
if (rpm->rpm_code == RPM_PCO_CHANGE &&
@@ -246,11 +241,8 @@ do_pco(struct icmp6_router_renum *rr, int len, struct rr_pco_match *rpm)
if ((rr_pco_check(len, rpm) != NULL))
return 1;
- if (s == -1 && (s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
- syslog(LOG_ERR, "<%s> socket: %s", __func__,
- strerror(errno));
- exit(1);
- }
+ if (s == -1 && (s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0)
+ fatal("socket");
memset(&irr, 0, sizeof(irr));
irr.irr_origin = PR_ORIG_RR;
@@ -275,8 +267,7 @@ do_pco(struct icmp6_router_renum *rr, int len, struct rr_pco_match *rpm)
if (errno == ENXIO)
return 0;
else if (errno) {
- syslog(LOG_ERR, "<%s> if_indextoname: %s", __func__,
- strerror(errno));
+ log_warn("if_indextoname");
return 1;
}
return 0;
@@ -306,8 +297,8 @@ do_rr(int len, struct icmp6_router_renum *rr)
rpm = (struct rr_pco_match *)cp;
if (len < sizeof(struct rr_pco_match)) {
tooshort:
- syslog(LOG_ERR, "<%s> pkt too short. left len = %d. "
- "gabage at end of pkt?", __func__, len);
+ log_warnx("pkt too short. left len = %d. "
+ "gabage at end of pkt?", len);
return 1;
}
rpmlen = rpm->rpm_len << 3;
@@ -315,7 +306,7 @@ do_rr(int len, struct icmp6_router_renum *rr)
goto tooshort;
if (do_pco(rr, rpmlen, rpm)) {
- syslog(LOG_WARNING, "<%s> invalid PCO", __func__);
+ log_warn("invalid PCO");
goto next;
}
@@ -341,37 +332,33 @@ rr_command_check(int len, struct icmp6_router_renum *rr, struct in6_addr *from,
/* rr_command length check */
if (len < (sizeof(struct icmp6_router_renum) +
sizeof(struct rr_pco_match))) {
- syslog(LOG_ERR, "<%s> rr_command len %d is too short",
- __func__, len);
+ log_warnx("rr_command len %d is too short", len);
return 1;
}
/* destination check. only for multicast. omit unicast check. */
if (IN6_IS_ADDR_MULTICAST(dst) && !IN6_IS_ADDR_MC_LINKLOCAL(dst) &&
!IN6_IS_ADDR_MC_SITELOCAL(dst)) {
- syslog(LOG_ERR, "<%s> dst mcast addr %s is illegal",
- __func__,
- inet_ntop(AF_INET6, dst, ntopbuf, INET6_ADDRSTRLEN));
+ log_warnx("dst mcast addr %s is illegal",
+ inet_ntop(AF_INET6, dst, ntopbuf, INET6_ADDRSTRLEN));
return 1;
}
/* seqnum and segnum check */
if (rro.rro_seqnum > rr->rr_seqnum) {
- syslog(LOG_WARNING,
- "<%s> rcvd old seqnum %d from %s",
- __func__, (u_int32_t)ntohl(rr->rr_seqnum),
- inet_ntop(AF_INET6, from, ntopbuf, INET6_ADDRSTRLEN));
+ log_warnx("rcvd old seqnum %d from %s",
+ (u_int32_t)ntohl(rr->rr_seqnum),
+ inet_ntop(AF_INET6, from, ntopbuf, INET6_ADDRSTRLEN));
return 1;
}
if (rro.rro_seqnum == rr->rr_seqnum &&
(rr->rr_flags & ICMP6_RR_FLAGS_TEST) == 0 &&
RR_ISSET_SEGNUM(rro.rro_segnum_bits, rr->rr_segnum)) {
if ((rr->rr_flags & ICMP6_RR_FLAGS_REQRESULT) != 0)
- syslog(LOG_WARNING,
- "<%s> rcvd duped segnum %d from %s",
- __func__, rr->rr_segnum,
- inet_ntop(AF_INET6, from, ntopbuf,
- INET6_ADDRSTRLEN));
+ log_warnx("rcvd duped segnum %d from %s",
+ rr->rr_segnum,
+ inet_ntop(AF_INET6, from, ntopbuf,
+ INET6_ADDRSTRLEN));
return 0;
}
@@ -410,7 +397,7 @@ rr_command_input(int len, struct icmp6_router_renum *rr,
return;
failed:
- syslog(LOG_ERR, "<%s> received RR was invalid", __func__);
+ log_warnx("received RR was invalid");
return;
}
@@ -420,23 +407,20 @@ rr_input(int len, struct icmp6_router_renum *rr, struct in6_pktinfo *pi,
{
u_char ntopbuf[2][INET6_ADDRSTRLEN], ifnamebuf[IFNAMSIZ];
- syslog(LOG_DEBUG,
- "<%s> RR received from %s to %s on %s",
- __func__,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf[0], INET6_ADDRSTRLEN),
- inet_ntop(AF_INET6, &dst, ntopbuf[1], INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_debug("RR received from %s to %s on %s",
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf[0], INET6_ADDRSTRLEN),
+ inet_ntop(AF_INET6, &dst, ntopbuf[1], INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
/* packet validation based on Section 4.1 of RFC2894 */
if (len < sizeof(struct icmp6_router_renum)) {
- syslog(LOG_NOTICE,
- "<%s>: RR short message (size %d) from %s to %s on %s",
- __func__, len,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf[0], INET6_ADDRSTRLEN),
- inet_ntop(AF_INET6, &dst, ntopbuf[1], INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_info("RR short message (size %d) from %s to %s on %s",
+ len,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf[0], INET6_ADDRSTRLEN),
+ inet_ntop(AF_INET6, &dst, ntopbuf[1], INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
@@ -450,14 +434,12 @@ rr_input(int len, struct icmp6_router_renum *rr, struct in6_pktinfo *pi,
*/
if (IN6_IS_ADDR_MULTICAST(&pi->ipi6_addr) &&
!IN6_ARE_ADDR_EQUAL(&in6a_site_allrouters, &pi->ipi6_addr)) {
- syslog(LOG_NOTICE,
- "<%s>: RR message with invalid destination (%s) "
- "from %s on %s",
- __func__,
- inet_ntop(AF_INET6, &dst, ntopbuf[0], INET6_ADDRSTRLEN),
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf[1], INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_info("RR message with invalid destination (%s) "
+ "from %s on %s",
+ inet_ntop(AF_INET6, &dst, ntopbuf[0], INET6_ADDRSTRLEN),
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf[1], INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
@@ -475,8 +457,7 @@ rr_input(int len, struct icmp6_router_renum *rr, struct in6_pktinfo *pi,
/* TODO: sequence number reset */
break;
default:
- syslog(LOG_ERR, "<%s> received unknown code %d",
- __func__, rr->rr_code);
+ log_warnx("received unknown code %d", rr->rr_code);
break;
}
diff --git a/usr.sbin/rtadvd/rtadvd.8 b/usr.sbin/rtadvd/rtadvd.8
index 6bc200c48d6..55d9cb393b1 100644
--- a/usr.sbin/rtadvd/rtadvd.8
+++ b/usr.sbin/rtadvd/rtadvd.8
@@ -1,4 +1,4 @@
-.\" $OpenBSD: rtadvd.8,v 1.23 2007/05/31 19:20:29 jmc Exp $
+.\" $OpenBSD: rtadvd.8,v 1.24 2008/04/21 20:40:55 rainer Exp $
.\" $KAME: rtadvd.8,v 1.18 2002/04/28 10:43:02 jinmei Exp $
.\"
.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd $Mdocdate: May 31 2007 $
+.Dd $Mdocdate: April 21 2008 $
.Dt RTADVD 8
.Os
.Sh NAME
@@ -36,7 +36,7 @@
.Nd router advertisement daemon
.Sh SYNOPSIS
.Nm
-.Op Fl DdfMRs
+.Op Fl dMRs
.Op Fl c Ar configfile
.Ar interface ...
.Sh DESCRIPTION
@@ -95,15 +95,9 @@ for the configuration file.
By default,
.Pa /etc/rtadvd.conf
is used.
-.It Fl D
-Even more debugging information than that offered by the
-.Fl d
-option is printed.
.It Fl d
-Print debugging information.
-.It Fl f
-Foreground mode (useful when debugging).
-Log messages will be dumped to stderr when this option is specified.
+Do not daemonize. If this option is specified, rtadvd will run
+in the foreground and log to stderr.
.It Fl M
Specify an interface to join the all-routers site-local multicast group.
By default,
diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c
index b258ca92fad..7640c8793b5 100644
--- a/usr.sbin/rtadvd/rtadvd.c
+++ b/usr.sbin/rtadvd/rtadvd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtadvd.c,v 1.31 2008/04/13 00:22:17 djm Exp $ */
+/* $OpenBSD: rtadvd.c,v 1.32 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: rtadvd.c,v 1.66 2002/05/29 14:18:36 itojun Exp $ */
/*
@@ -54,7 +54,6 @@
#include <errno.h>
#include <string.h>
#include <stdlib.h>
-#include <syslog.h>
#include <util.h>
#include "rtadvd.h"
@@ -64,6 +63,7 @@
#include "if.h"
#include "config.h"
#include "dump.h"
+#include "log.h"
struct msghdr rcvmhdr;
static u_char *rcvcmsgbuf;
@@ -84,6 +84,7 @@ int sock;
int rtsock = -1;
int accept_rr = 0;
int dflag = 0, sflag = 0;
+int log_perror = 0;
u_char *conffile = NULL;
@@ -151,10 +152,11 @@ main(argc, argv)
int maxfd = 0;
struct timeval *timeout;
int i, ch;
- int fflag = 0, logopt;
+
+ log_init(1); /* log to stderr until daemonized */
/* get command line options and arguments */
-#define OPTIONS "c:dDfM:Rs"
+#define OPTIONS "c:dM:Rs"
while ((ch = getopt(argc, argv, OPTIONS)) != -1) {
#undef OPTIONS
switch (ch) {
@@ -164,12 +166,6 @@ main(argc, argv)
case 'd':
dflag = 1;
break;
- case 'D':
- dflag = 2;
- break;
- case 'f':
- fflag = 1;
- break;
case 'M':
mcastif = optarg;
break;
@@ -188,22 +184,11 @@ main(argc, argv)
argv += optind;
if (argc == 0) {
fprintf(stderr,
- "usage: rtadvd [-DdfMRs] [-c configfile] "
+ "usage: rtadvd [-dMRs] [-c configfile] "
"interface ...\n");
exit(1);
}
- logopt = LOG_NDELAY | LOG_PID;
- if (fflag)
- logopt |= LOG_PERROR;
- openlog("rtadvd", logopt, LOG_DAEMON);
-
- /* set log level */
- if (dflag == 0)
- (void)setlogmask(LOG_UPTO(LOG_ERR));
- if (dflag == 1)
- (void)setlogmask(LOG_UPTO(LOG_INFO));
-
/* timer initialization */
rtadvd_timer_init();
@@ -213,22 +198,19 @@ main(argc, argv)
while (argc--)
getconfig(*argv++);
- if (inet_pton(AF_INET6, ALLNODES, &sin6_allnodes.sin6_addr) != 1) {
- fprintf(stderr, "fatal: inet_pton failed\n");
- exit(1);
- }
+ if (inet_pton(AF_INET6, ALLNODES, &sin6_allnodes.sin6_addr) != 1)
+ fatal("inet_pton failed");
+
+ log_init(dflag);
- if (!fflag)
+ if (!dflag)
daemon(1, 0);
sock_open();
/* record the current PID */
- if (pidfile(NULL) < 0) {
- syslog(LOG_ERR,
- "<%s> failed to open the pid log file, run anyway.",
- __func__);
- }
+ if (pidfile(NULL) < 0)
+ log_warnx("failed to open the pid log file, run anyway.");
maxfd = sock;
if (sflag == 0) {
@@ -271,24 +253,19 @@ main(argc, argv)
/* timer expiration check and reset the timer */
timeout = rtadvd_check_timer();
- if (timeout != NULL) {
- syslog(LOG_DEBUG,
- "<%s> set timer to %ld:%ld. waiting for "
- "inputs or timeout", __func__,
+ if (timeout != NULL)
+ log_debug("set timer to %ld:%ld. waiting for "
+ "inputs or timeout",
(long int)timeout->tv_sec,
(long int)timeout->tv_usec);
- } else {
- syslog(LOG_DEBUG,
- "<%s> there's no timer. waiting for inputs",
- __func__);
- }
+ else
+ log_debug("there's no timer. waiting for inputs");
if ((i = select(maxfd + 1, selectfdp, NULL, NULL,
timeout)) < 0) {
/* EINTR would occur upon SIGUSR1 for status dump */
if (errno != EINTR)
- syslog(LOG_ERR, "<%s> select: %s",
- __func__, strerror(errno));
+ log_warn("select");
continue;
}
if (i == 0) /* timeout */
@@ -320,10 +297,8 @@ die()
int i;
const int retrans = MAX_FINAL_RTR_ADVERTISEMENTS;
- if (dflag > 1) {
- syslog(LOG_DEBUG, "<%s> cease to be an advertising router",
- __func__);
- }
+ if (dflag)
+ log_debug("cease to be an advertising router");
for (ra = ralist; ra; ra = ra->next) {
ra->lifetime = 0;
@@ -351,21 +326,19 @@ rtmsg_input()
char addrbuf[INET6_ADDRSTRLEN];
n = read(rtsock, msg, sizeof(msg));
- if (dflag > 1) {
- syslog(LOG_DEBUG, "<%s> received a routing message "
- "(type = %d, len = %d)", __func__, rtmsg_type(msg), n);
- }
+ if (dflag)
+ log_debug("received a routing message "
+ "(type = %d, len = %d)", rtmsg_type(msg), n);
if (n > rtmsg_len(msg)) {
/*
* This usually won't happen for messages received on
* a routing socket.
*/
- if (dflag > 1)
- syslog(LOG_DEBUG,
- "<%s> received data length is larger than "
+ if (dflag)
+ log_debug("received data length is larger than "
"1st routing message len. multiple messages? "
"read %d bytes, but 1st msg len = %d",
- __func__, n, rtmsg_len(msg));
+ n, rtmsg_len(msg));
#if 0
/* adjust length */
n = rtmsg_len(msg);
@@ -399,23 +372,17 @@ rtmsg_input()
break;
default:
/* should not reach here */
- if (dflag > 1) {
- syslog(LOG_DEBUG,
- "<%s:%d> unknown rtmsg %d on %s",
- __func__, __LINE__, type,
- if_indextoname(ifindex, ifname));
- }
+ if (dflag)
+ log_debug("unknown rtmsg %d on %s",
+ type, if_indextoname(ifindex, ifname));
continue;
}
if ((rai = if_indextorainfo(ifindex)) == NULL) {
- if (dflag > 1) {
- syslog(LOG_DEBUG,
- "<%s> route changed on "
- "non advertising interface(%s)",
- __func__,
- if_indextoname(ifindex, ifname));
- }
+ if (dflag)
+ log_debug("route changed on "
+ "non advertising interface(%s)",
+ if_indextoname(ifindex, ifname));
continue;
}
oldifflags = iflist[ifindex]->ifm_flags;
@@ -434,23 +401,19 @@ rtmsg_input()
/* sanity check for plen */
/* as RFC2373, prefixlen is at least 4 */
if (plen < 4 || plen > 127) {
- syslog(LOG_INFO, "<%s> new interface route's"
- "plen %d is invalid for a prefix",
- __func__, plen);
+ log_info("new interface route's"
+ " plen %d is invalid for a prefix", plen);
break;
}
prefix = find_prefix(rai, addr, plen);
if (prefix) {
- if (dflag > 1) {
- syslog(LOG_DEBUG,
- "<%s> new prefix(%s/%d) "
+ if (dflag)
+ log_debug("new prefix(%s/%d) "
"added on %s, "
"but it was already in list",
- __func__,
inet_ntop(AF_INET6, addr,
(char *)addrbuf, INET6_ADDRSTRLEN),
plen, rai->ifname);
- }
break;
}
make_prefix(rai, ifindex, addr, plen);
@@ -468,24 +431,19 @@ rtmsg_input()
/* sanity check for plen */
/* as RFC2373, prefixlen is at least 4 */
if (plen < 4 || plen > 127) {
- syslog(LOG_INFO,
- "<%s> deleted interface route's "
- "plen %d is invalid for a prefix",
- __func__, plen);
+ log_info("deleted interface route's "
+ "plen %d is invalid for a prefix", plen);
break;
}
prefix = find_prefix(rai, addr, plen);
if (prefix == NULL) {
- if (dflag > 1) {
- syslog(LOG_DEBUG,
- "<%s> prefix(%s/%d) was "
+ if (dflag)
+ log_debug("prefix(%s/%d) was "
"deleted on %s, "
"but it was not in list",
- __func__,
inet_ntop(AF_INET6, addr,
(char *)addrbuf, INET6_ADDRSTRLEN),
plen, rai->ifname);
- }
break;
}
delete_prefix(rai, prefix);
@@ -501,27 +459,22 @@ rtmsg_input()
break;
default:
/* should not reach here */
- if (dflag > 1) {
- syslog(LOG_DEBUG,
- "<%s:%d> unknown rtmsg %d on %s",
- __func__, __LINE__, type,
- if_indextoname(ifindex, ifname));
- }
+ if (dflag)
+ log_debug("unknown rtmsg %d on %s",
+ type, if_indextoname(ifindex, ifname));
return;
}
/* check if an interface flag is changed */
if ((oldifflags & IFF_UP) != 0 && /* UP to DOWN */
(iflist[ifindex]->ifm_flags & IFF_UP) == 0) {
- syslog(LOG_INFO,
- "<%s> interface %s becomes down. stop timer.",
- __func__, rai->ifname);
+ log_info("interface %s becomes down. stop timer.",
+ rai->ifname);
rtadvd_remove_timer(&rai->timer);
} else if ((oldifflags & IFF_UP) == 0 && /* DOWN to UP */
(iflist[ifindex]->ifm_flags & IFF_UP) != 0) {
- syslog(LOG_INFO,
- "<%s> interface %s becomes up. restart timer.",
- __func__, rai->ifname);
+ log_info("interface %s becomes up. restart timer.",
+ rai->ifname);
rai->initcounter = 0; /* reset the counter */
rai->waiting = 0; /* XXX */
@@ -573,15 +526,11 @@ rtadvd_input()
hlimp = (int *)CMSG_DATA(cm);
}
if (ifindex == 0) {
- syslog(LOG_ERR,
- "<%s> failed to get receiving interface",
- __func__);
+ log_warnx("failed to get receiving interface");
return;
}
if (hlimp == NULL) {
- syslog(LOG_ERR,
- "<%s> failed to get receiving hop limit",
- __func__);
+ log_warnx("failed to get receiving hop limit");
return;
}
@@ -590,17 +539,13 @@ rtadvd_input()
* just discard the data.
*/
if ((iflist[pi->ipi6_ifindex]->ifm_flags & IFF_UP) == 0) {
- syslog(LOG_INFO,
- "<%s> received data on a disabled interface (%s)",
- __func__,
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_info("received data on a disabled interface (%s)",
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
if (i < sizeof(struct icmp6_hdr)) {
- syslog(LOG_ERR,
- "<%s> packet size(%d) is too short",
- __func__, i);
+ log_warnx("packet size(%d) is too short", i);
return;
}
@@ -614,30 +559,26 @@ rtadvd_input()
* but we can't completely rely on them.
*/
if (*hlimp != 255) {
- syslog(LOG_NOTICE,
- "<%s> RS with invalid hop limit(%d) "
+ log_info("RS with invalid hop limit(%d) "
"received from %s on %s",
- __func__, *hlimp,
+ *hlimp,
inet_ntop(AF_INET6, &from.sin6_addr, ntopbuf,
INET6_ADDRSTRLEN),
if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
if (icp->icmp6_code) {
- syslog(LOG_NOTICE,
- "<%s> RS with invalid ICMP6 code(%d) "
+ log_info("RS with invalid ICMP6 code(%d) "
"received from %s on %s",
- __func__, icp->icmp6_code,
+ icp->icmp6_code,
inet_ntop(AF_INET6, &from.sin6_addr, ntopbuf,
INET6_ADDRSTRLEN),
if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
if (i < sizeof(struct nd_router_solicit)) {
- syslog(LOG_NOTICE,
- "<%s> RS from %s on %s does not have enough "
+ log_info("RS from %s on %s does not have enough "
"length (len = %d)",
- __func__,
inet_ntop(AF_INET6, &from.sin6_addr, ntopbuf,
INET6_ADDRSTRLEN),
if_indextoname(pi->ipi6_ifindex, ifnamebuf), i);
@@ -651,30 +592,26 @@ rtadvd_input()
* XXX: there's a same dilemma as above...
*/
if (*hlimp != 255) {
- syslog(LOG_NOTICE,
- "<%s> RA with invalid hop limit(%d) "
+ log_info("RA with invalid hop limit(%d) "
"received from %s on %s",
- __func__, *hlimp,
+ *hlimp,
inet_ntop(AF_INET6, &from.sin6_addr, ntopbuf,
INET6_ADDRSTRLEN),
if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
if (icp->icmp6_code) {
- syslog(LOG_NOTICE,
- "<%s> RA with invalid ICMP6 code(%d) "
+ log_info("RA with invalid ICMP6 code(%d) "
"received from %s on %s",
- __func__, icp->icmp6_code,
+ icp->icmp6_code,
inet_ntop(AF_INET6, &from.sin6_addr, ntopbuf,
INET6_ADDRSTRLEN),
if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
if (i < sizeof(struct nd_router_advert)) {
- syslog(LOG_NOTICE,
- "<%s> RA from %s on %s does not have enough "
+ log_info("RA from %s on %s does not have enough "
"length (len = %d)",
- __func__,
inet_ntop(AF_INET6, &from.sin6_addr, ntopbuf,
INET6_ADDRSTRLEN),
if_indextoname(pi->ipi6_ifindex, ifnamebuf), i);
@@ -684,9 +621,8 @@ rtadvd_input()
break;
case ICMP6_ROUTER_RENUMBERING:
if (accept_rr == 0) {
- syslog(LOG_ERR, "<%s> received a router renumbering "
- "message, but not allowed to be accepted",
- __func__);
+ log_warnx("received a router renumbering "
+ "message, but not allowed to be accepted");
break;
}
rr_input(i, (struct icmp6_router_renum *)icp, pi, &from,
@@ -699,8 +635,7 @@ rtadvd_input()
* could receive message after opening the socket and
* before setting ICMP6 type filter(see sock_open()).
*/
- syslog(LOG_ERR, "<%s> invalid icmp type(%d)",
- __func__, icp->icmp6_type);
+ log_warnx("invalid icmp type(%d)", icp->icmp6_type);
return;
}
@@ -715,24 +650,20 @@ rs_input(int len, struct nd_router_solicit *rs,
union nd_opts ndopts;
struct rainfo *ra;
- syslog(LOG_DEBUG,
- "<%s> RS received from %s on %s",
- __func__,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_debug("RS received from %s on %s",
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
/* ND option check */
memset(&ndopts, 0, sizeof(ndopts));
if (nd6_options((struct nd_opt_hdr *)(rs + 1),
len - sizeof(struct nd_router_solicit),
&ndopts, NDOPT_FLAG_SRCLINKADDR)) {
- syslog(LOG_DEBUG,
- "<%s> ND option check failed for an RS from %s on %s",
- __func__,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_debug("ND option check failed for an RS from %s on %s",
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
@@ -743,10 +674,8 @@ rs_input(int len, struct nd_router_solicit *rs,
*/
if (IN6_IS_ADDR_UNSPECIFIED(&from->sin6_addr) &&
ndopts.nd_opts_src_lladdr) {
- syslog(LOG_ERR,
- "<%s> RS from unspecified src on %s has a link-layer"
+ log_warnx("RS from unspecified src on %s has a link-layer"
" address option",
- __func__,
if_indextoname(pi->ipi6_ifindex, ifnamebuf));
goto done;
}
@@ -758,10 +687,8 @@ rs_input(int len, struct nd_router_solicit *rs,
ra = ra->next;
}
if (ra == NULL) {
- syslog(LOG_INFO,
- "<%s> RS received on non advertising interface(%s)",
- __func__,
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_info("RS received on non advertising interface(%s)",
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
goto done;
}
@@ -807,10 +734,8 @@ rs_input(int len, struct nd_router_solicit *rs,
interval.tv_usec = delay;
rest = rtadvd_timer_rest(ra->timer);
if (TIMEVAL_LT(*rest, interval)) {
- syslog(LOG_DEBUG,
- "<%s> random delay is larger than "
- "the rest of normal timer",
- __func__);
+ log_debug("random delay is larger than "
+ "the rest of normal timer");
interval = *rest;
}
@@ -849,12 +774,10 @@ ra_input(int len, struct nd_router_advert *ra,
u_int32_t reachabletime, retranstimer, mtu;
int inconsistent = 0;
- syslog(LOG_DEBUG,
- "<%s> RA received from %s on %s",
- __func__,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_debug("RA received from %s on %s",
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
/* ND option check */
memset(&ndopts, 0, sizeof(ndopts));
@@ -862,12 +785,10 @@ ra_input(int len, struct nd_router_advert *ra,
len - sizeof(struct nd_router_advert),
&ndopts, NDOPT_FLAG_SRCLINKADDR |
NDOPT_FLAG_PREFIXINFO | NDOPT_FLAG_MTU)) {
- syslog(LOG_ERR,
- "<%s> ND option check failed for an RA from %s on %s",
- __func__,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_warnx("ND option check failed for an RA from %s on %s",
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
return;
}
@@ -875,13 +796,10 @@ ra_input(int len, struct nd_router_advert *ra,
* RA consistency check according to RFC-2461 6.2.7
*/
if ((rai = if_indextorainfo(pi->ipi6_ifindex)) == 0) {
- syslog(LOG_INFO,
- "<%s> received RA from %s on non-advertising"
- " interface(%s)",
- __func__,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- if_indextoname(pi->ipi6_ifindex, ifnamebuf));
+ log_info("received RA from %s on non-advertising interface(%s)",
+ inet_ntop(AF_INET6, &from->sin6_addr, ntopbuf,
+ INET6_ADDRSTRLEN),
+ if_indextoname(pi->ipi6_ifindex, ifnamebuf));
goto done;
}
rai->rainput++; /* increment statistics */
@@ -889,87 +807,69 @@ ra_input(int len, struct nd_router_advert *ra,
/* Cur Hop Limit value */
if (ra->nd_ra_curhoplimit && rai->hoplimit &&
ra->nd_ra_curhoplimit != rai->hoplimit) {
- syslog(LOG_INFO,
- "<%s> CurHopLimit inconsistent on %s:"
- " %d from %s, %d from us",
- __func__,
- rai->ifname,
- ra->nd_ra_curhoplimit,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- rai->hoplimit);
+ log_info("CurHopLimit inconsistent on %s: %d from %s,"
+ " %d from us",
+ rai->ifname,
+ ra->nd_ra_curhoplimit,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ rai->hoplimit);
inconsistent++;
}
/* M flag */
if ((ra->nd_ra_flags_reserved & ND_RA_FLAG_MANAGED) !=
rai->managedflg) {
- syslog(LOG_INFO,
- "<%s> M flag inconsistent on %s:"
- " %s from %s, %s from us",
- __func__,
- rai->ifname,
- on_off[!rai->managedflg],
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- on_off[rai->managedflg]);
+ log_info("M flag inconsistent on %s: %s from %s, %s from us",
+ rai->ifname, on_off[!rai->managedflg],
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ on_off[rai->managedflg]);
inconsistent++;
}
/* O flag */
if ((ra->nd_ra_flags_reserved & ND_RA_FLAG_OTHER) !=
rai->otherflg) {
- syslog(LOG_INFO,
- "<%s> O flag inconsistent on %s:"
- " %s from %s, %s from us",
- __func__,
- rai->ifname,
- on_off[!rai->otherflg],
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- on_off[rai->otherflg]);
+ log_info("O flag inconsistent on %s: %s from %s, %s from us",
+ rai->ifname, on_off[!rai->otherflg],
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ on_off[rai->otherflg]);
inconsistent++;
}
/* Reachable Time */
reachabletime = ntohl(ra->nd_ra_reachable);
if (reachabletime && rai->reachabletime &&
reachabletime != rai->reachabletime) {
- syslog(LOG_INFO,
- "<%s> ReachableTime inconsistent on %s:"
- " %d from %s, %d from us",
- __func__,
- rai->ifname,
- reachabletime,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- rai->reachabletime);
+ log_info("ReachableTime inconsistent on %s:"
+ " %d from %s, %d from us",
+ rai->ifname, reachabletime,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ rai->reachabletime);
inconsistent++;
}
/* Retrans Timer */
retranstimer = ntohl(ra->nd_ra_retransmit);
if (retranstimer && rai->retranstimer &&
retranstimer != rai->retranstimer) {
- syslog(LOG_INFO,
- "<%s> RetranceTimer inconsistent on %s:"
- " %d from %s, %d from us",
- __func__,
- rai->ifname,
- retranstimer,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- rai->retranstimer);
+ log_info("RetranceTimer inconsistent on %s:"
+ " %d from %s, %d from us",
+ rai->ifname, retranstimer,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ rai->retranstimer);
inconsistent++;
}
/* Values in the MTU options */
if (ndopts.nd_opts_mtu) {
mtu = ntohl(ndopts.nd_opts_mtu->nd_opt_mtu_mtu);
if (mtu && rai->linkmtu && mtu != rai->linkmtu) {
- syslog(LOG_INFO,
- "<%s> MTU option value inconsistent on %s:"
- " %d from %s, %d from us",
- __func__,
- rai->ifname, mtu,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- rai->linkmtu);
+ log_info("MTU option value inconsistent on %s:"
+ " %d from %s, %d from us",
+ rai->ifname, mtu,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ rai->linkmtu);
inconsistent++;
}
}
@@ -977,10 +877,9 @@ ra_input(int len, struct nd_router_advert *ra,
{
struct nd_optlist *optp = ndopts.nd_opts_list;
- if (ndopts.nd_opts_pi) {
+ if (ndopts.nd_opts_pi)
if (prefix_check(ndopts.nd_opts_pi, rai, from))
inconsistent++;
- }
while (optp) {
if (prefix_check((struct nd_opt_prefix_info *)optp->opt,
rai, from))
@@ -1016,30 +915,25 @@ prefix_check(struct nd_opt_prefix_info *pinfo,
/*
* log if the adveritsed prefix has link-local scope(sanity check?)
*/
- if (IN6_IS_ADDR_LINKLOCAL(&pinfo->nd_opt_pi_prefix)) {
- syslog(LOG_INFO,
- "<%s> link-local prefix %s/%d is advertised "
- "from %s on %s",
- __func__,
- inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
- prefixbuf, INET6_ADDRSTRLEN),
- pinfo->nd_opt_pi_prefix_len,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- rai->ifname);
- }
+ if (IN6_IS_ADDR_LINKLOCAL(&pinfo->nd_opt_pi_prefix))
+ log_info("link-local prefix %s/%d is advertised "
+ "from %s on %s",
+ inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
+ prefixbuf, INET6_ADDRSTRLEN),
+ pinfo->nd_opt_pi_prefix_len,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ rai->ifname);
if ((pp = find_prefix(rai, &pinfo->nd_opt_pi_prefix,
pinfo->nd_opt_pi_prefix_len)) == NULL) {
- syslog(LOG_INFO,
- "<%s> prefix %s/%d from %s on %s is not in our list",
- __func__,
- inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
- prefixbuf, INET6_ADDRSTRLEN),
- pinfo->nd_opt_pi_prefix_len,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- rai->ifname);
+ log_info("prefix %s/%d from %s on %s is not in our list",
+ inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
+ prefixbuf, INET6_ADDRSTRLEN),
+ pinfo->nd_opt_pi_prefix_len,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ rai->ifname);
return(0);
}
@@ -1057,34 +951,29 @@ prefix_check(struct nd_opt_prefix_info *pinfo,
if (rai->clockskew &&
abs(preferred_time - pp->pltimeexpire) > rai->clockskew) {
- syslog(LOG_INFO,
- "<%s> prefeerred lifetime for %s/%d"
- " (decr. in real time) inconsistent on %s:"
- " %d from %s, %ld from us",
- __func__,
- inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
- prefixbuf, INET6_ADDRSTRLEN),
- pinfo->nd_opt_pi_prefix_len,
- rai->ifname, preferred_time,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- pp->pltimeexpire);
+ log_info("prefeerred lifetime for %s/%d"
+ " (decr. in real time) inconsistent on %s:"
+ " %d from %s, %ld from us",
+ inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
+ prefixbuf, INET6_ADDRSTRLEN),
+ pinfo->nd_opt_pi_prefix_len,
+ rai->ifname, preferred_time,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ pp->pltimeexpire);
inconsistent++;
}
- } else if (preferred_time != pp->preflifetime) {
- syslog(LOG_INFO,
- "<%s> prefeerred lifetime for %s/%d"
- " inconsistent on %s:"
- " %d from %s, %d from us",
- __func__,
- inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
- prefixbuf, INET6_ADDRSTRLEN),
- pinfo->nd_opt_pi_prefix_len,
- rai->ifname, preferred_time,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- pp->preflifetime);
- }
+ } else if (preferred_time != pp->preflifetime)
+ log_info("prefeerred lifetime for %s/%d"
+ " inconsistent on %s:"
+ " %d from %s, %d from us",
+ inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
+ prefixbuf, INET6_ADDRSTRLEN),
+ pinfo->nd_opt_pi_prefix_len,
+ rai->ifname, preferred_time,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ pp->preflifetime);
valid_time = ntohl(pinfo->nd_opt_pi_valid_time);
if (pp->vltimeexpire) {
@@ -1093,33 +982,29 @@ prefix_check(struct nd_opt_prefix_info *pinfo,
if (rai->clockskew &&
abs(valid_time - pp->vltimeexpire) > rai->clockskew) {
- syslog(LOG_INFO,
- "<%s> valid lifetime for %s/%d"
- " (decr. in real time) inconsistent on %s:"
- " %d from %s, %ld from us",
- __func__,
- inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
- prefixbuf, INET6_ADDRSTRLEN),
- pinfo->nd_opt_pi_prefix_len,
- rai->ifname, preferred_time,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- pp->vltimeexpire);
+ log_info("valid lifetime for %s/%d"
+ " (decr. in real time) inconsistent on %s:"
+ " %d from %s, %ld from us",
+ inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
+ prefixbuf, INET6_ADDRSTRLEN),
+ pinfo->nd_opt_pi_prefix_len,
+ rai->ifname, preferred_time,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ pp->vltimeexpire);
inconsistent++;
}
} else if (valid_time != pp->validlifetime) {
- syslog(LOG_INFO,
- "<%s> valid lifetime for %s/%d"
- " inconsistent on %s:"
- " %d from %s, %d from us",
- __func__,
- inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
- prefixbuf, INET6_ADDRSTRLEN),
- pinfo->nd_opt_pi_prefix_len,
- rai->ifname, valid_time,
- inet_ntop(AF_INET6, &from->sin6_addr,
- ntopbuf, INET6_ADDRSTRLEN),
- pp->validlifetime);
+ log_info("valid lifetime for %s/%d"
+ " inconsistent on %s:"
+ " %d from %s, %d from us",
+ inet_ntop(AF_INET6, &pinfo->nd_opt_pi_prefix,
+ prefixbuf, INET6_ADDRSTRLEN),
+ pinfo->nd_opt_pi_prefix_len,
+ rai->ifname, valid_time,
+ inet_ntop(AF_INET6, &from->sin6_addr,
+ ntopbuf, INET6_ADDRSTRLEN),
+ pp->validlifetime);
inconsistent++;
}
@@ -1183,33 +1068,32 @@ nd6_options(struct nd_opt_hdr *hdr, int limit,
for (; limit > 0; limit -= optlen) {
if (limit < sizeof(struct nd_opt_hdr)) {
- syslog(LOG_INFO, "<%s> short option header", __func__);
+ log_info("short option header");
goto bad;
}
hdr = (struct nd_opt_hdr *)((caddr_t)hdr + optlen);
if (hdr->nd_opt_len == 0) {
- syslog(LOG_ERR,
- "<%s> bad ND option length(0) (type = %d)",
- __func__, hdr->nd_opt_type);
+ log_warnx("bad ND option length(0) (type = %d)",
+ hdr->nd_opt_type);
goto bad;
}
optlen = hdr->nd_opt_len << 3;
if (optlen > limit) {
- syslog(LOG_INFO, "<%s> short option", __func__);
+ log_info("short option");
goto bad;
}
if (hdr->nd_opt_type > ND_OPT_MTU)
{
- syslog(LOG_INFO, "<%s> unknown ND option(type %d)",
- __func__, hdr->nd_opt_type);
+ log_info("unknown ND option(type %d)",
+ hdr->nd_opt_type);
continue;
}
if ((ndopt_flags[hdr->nd_opt_type] & optflags) == 0) {
- syslog(LOG_INFO, "<%s> unexpected ND option(type %d)",
- __func__, hdr->nd_opt_type);
+ log_info("unexpected ND option(type %d)",
+ hdr->nd_opt_type);
continue;
}
@@ -1221,8 +1105,7 @@ nd6_options(struct nd_opt_hdr *hdr, int limit,
(optlen != sizeof(struct nd_opt_mtu))) ||
((hdr->nd_opt_type == ND_OPT_PREFIX_INFORMATION &&
optlen != sizeof(struct nd_opt_prefix_info)))) {
- syslog(LOG_INFO, "<%s> invalid option length",
- __func__);
+ log_info("invalid option length");
continue;
}
@@ -1233,9 +1116,8 @@ nd6_options(struct nd_opt_hdr *hdr, int limit,
break; /* we don't care about these options */
case ND_OPT_MTU:
if (ndopts->nd_opt_array[hdr->nd_opt_type]) {
- syslog(LOG_INFO,
- "<%s> duplicated ND option (type = %d)",
- __func__, hdr->nd_opt_type);
+ log_info("duplicated ND option (type = %d)",
+ hdr->nd_opt_type);
}
ndopts->nd_opt_array[hdr->nd_opt_type] = hdr;
break;
@@ -1249,8 +1131,7 @@ nd6_options(struct nd_opt_hdr *hdr, int limit,
continue;
}
if ((pfxlist = malloc(sizeof(*pfxlist))) == NULL) {
- syslog(LOG_ERR, "<%s> can't allocate memory",
- __func__);
+ log_warn("malloc");
goto bad;
}
pfxlist->next = ndopts->nd_opts_list;
@@ -1297,42 +1178,29 @@ sock_open()
rcvcmsgbuflen = CMSG_SPACE(sizeof(struct in6_pktinfo)) +
CMSG_SPACE(sizeof(int));
rcvcmsgbuf = (u_char *)malloc(rcvcmsgbuflen);
- if (rcvcmsgbuf == NULL) {
- syslog(LOG_ERR, "<%s> not enough core", __func__);
- exit(1);
- }
+ if (rcvcmsgbuf == NULL)
+ fatal("malloc");
sndcmsgbuflen = CMSG_SPACE(sizeof(struct in6_pktinfo)) +
CMSG_SPACE(sizeof(int));
sndcmsgbuf = (u_char *)malloc(sndcmsgbuflen);
- if (sndcmsgbuf == NULL) {
- syslog(LOG_ERR, "<%s> not enough core", __func__);
- exit(1);
- }
+ if (sndcmsgbuf == NULL)
+ fatal("malloc");
- if ((sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0) {
- syslog(LOG_ERR, "<%s> socket: %s", __func__,
- strerror(errno));
- exit(1);
- }
+ if ((sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0)
+ fatal("socket");
/* specify to tell receiving interface */
on = 1;
if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on,
- sizeof(on)) < 0) {
- syslog(LOG_ERR, "<%s> IPV6_RECVPKTINFO: %s",
- __func__, strerror(errno));
- exit(1);
- }
+ sizeof(on)) < 0)
+ fatal("IPV6_RECVPKTINFO");
on = 1;
/* specify to tell value of hoplimit field of received IP6 hdr */
if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &on,
- sizeof(on)) < 0) {
- syslog(LOG_ERR, "<%s> IPV6_RECVHOPLIMIT: %s",
- __func__, strerror(errno));
- exit(1);
- }
+ sizeof(on)) < 0)
+ fatal("IPV6_RECVHOPLIMIT");
ICMP6_FILTER_SETBLOCKALL(&filt);
ICMP6_FILTER_SETPASS(ND_ROUTER_SOLICIT, &filt);
@@ -1340,28 +1208,21 @@ sock_open()
if (accept_rr)
ICMP6_FILTER_SETPASS(ICMP6_ROUTER_RENUMBERING, &filt);
if (setsockopt(sock, IPPROTO_ICMPV6, ICMP6_FILTER, &filt,
- sizeof(filt)) < 0) {
- syslog(LOG_ERR, "<%s> IICMP6_FILTER: %s",
- __func__, strerror(errno));
- exit(1);
- }
+ sizeof(filt)) < 0)
+ fatal("IICMP6_FILTER");
/*
* join all routers multicast address on each advertising interface.
*/
if (inet_pton(AF_INET6, ALLROUTERS_LINK,
&mreq.ipv6mr_multiaddr.s6_addr)
- != 1) {
- syslog(LOG_ERR, "<%s> inet_pton failed(library bug?)",
- __func__);
- exit(1);
- }
+ != 1)
+ fatal("inet_pton failed(library bug?)");
while (ra) {
mreq.ipv6mr_interface = ra->ifindex;
if (setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq,
sizeof(mreq)) < 0) {
- syslog(LOG_ERR, "<%s> IPV6_JOIN_GROUP(link) on %s: %s",
- __func__, ra->ifname, strerror(errno));
+ log_warn("IPV6_JOIN_GROUP(link) on %s", ra->ifname);
exit(1);
}
ra = ra->next;
@@ -1373,29 +1234,21 @@ sock_open()
*/
if (accept_rr) {
if (inet_pton(AF_INET6, ALLROUTERS_SITE,
- &in6a_site_allrouters) != 1) {
- syslog(LOG_ERR, "<%s> inet_pton failed(library bug?)",
- __func__);
- exit(1);
- }
+ &in6a_site_allrouters) != 1)
+ fatal("inet_pton failed(library bug?)");
mreq.ipv6mr_multiaddr = in6a_site_allrouters;
if (mcastif) {
if ((mreq.ipv6mr_interface = if_nametoindex(mcastif))
== 0) {
- syslog(LOG_ERR,
- "<%s> invalid interface: %s",
- __func__, mcastif);
+ log_warn("invalid interface: %s", mcastif);
exit(1);
}
} else
mreq.ipv6mr_interface = ralist->ifindex;
if (setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP,
&mreq, sizeof(mreq)) < 0) {
- syslog(LOG_ERR,
- "<%s> IPV6_JOIN_GROUP(site) on %s: %s",
- __func__,
- mcastif ? mcastif : ralist->ifname,
- strerror(errno));
+ log_warn("IPV6_JOIN_GROUP(site) on %s",
+ mcastif ? mcastif : ralist->ifname);
exit(1);
}
}
@@ -1424,11 +1277,8 @@ sock_open()
static void
rtsock_open()
{
- if ((rtsock = socket(PF_ROUTE, SOCK_RAW, 0)) < 0) {
- syslog(LOG_ERR,
- "<%s> socket: %s", __func__, strerror(errno));
- exit(1);
- }
+ if ((rtsock = socket(PF_ROUTE, SOCK_RAW, 0)) < 0)
+ fatal("socket");
}
struct rainfo *
@@ -1454,8 +1304,7 @@ struct rainfo *rainfo;
struct soliciter *sol, *nextsol;
if ((iflist[rainfo->ifindex]->ifm_flags & IFF_UP) == 0) {
- syslog(LOG_DEBUG, "<%s> %s is not up, skip sending RA",
- __func__, rainfo->ifname);
+ log_debug("%s is not up, skip sending RA", rainfo->ifname);
return;
}
@@ -1485,19 +1334,14 @@ struct rainfo *rainfo;
memcpy(CMSG_DATA(cm), &hoplimit, sizeof(int));
}
- syslog(LOG_DEBUG,
- "<%s> send RA on %s, # of waitings = %d",
- __func__, rainfo->ifname, rainfo->waiting);
+ log_debug("send RA on %s, # of waitings = %d",
+ rainfo->ifname, rainfo->waiting);
i = sendmsg(sock, &sndmhdr, 0);
- if (i < 0 || i != rainfo->ra_datalen) {
- if (i < 0) {
- syslog(LOG_ERR, "<%s> sendmsg on %s: %s",
- __func__, rainfo->ifname,
- strerror(errno));
- }
- }
+ if (i < 0 || i != rainfo->ra_datalen)
+ if (i < 0)
+ log_warn("sendmsg on %s", rainfo->ifname);
/*
* unicast advertisements
@@ -1510,14 +1354,10 @@ struct rainfo *rainfo;
#if 0
sndmhdr.msg_name = (caddr_t)&sol->addr;
i = sendmsg(sock, &sndmhdr, 0);
- if (i < 0 || i != rainfo->ra_datalen) {
- if (i < 0) {
- syslog(LOG_ERR,
- "<%s> unicast sendmsg on %s: %s",
- __func__, rainfo->ifname,
- strerror(errno));
- }
- }
+ if (i < 0 || i != rainfo->ra_datalen)
+ if (i < 0)
+ log_warn("unicast sendmsg on %s",
+ rainfo->ifname);
#endif
sol->next = NULL;
@@ -1547,9 +1387,7 @@ ra_timeout(void *data)
/* if necessary, reconstruct the packet. */
#endif
- syslog(LOG_DEBUG,
- "<%s> RA timer on %s is expired",
- __func__, rai->ifname);
+ log_debug("RA timer on %s is expired", rai->ifname);
ra_output(rai);
}
@@ -1584,10 +1422,8 @@ ra_timer_update(void *data, struct timeval *tm)
tm->tv_sec = interval;
tm->tv_usec = 0;
- syslog(LOG_DEBUG,
- "<%s> RA timer on %s is set to %ld:%ld",
- __func__, rai->ifname,
- (long int)tm->tv_sec, (long int)tm->tv_usec);
+ log_debug("RA timer on %s is set to %ld:%ld", rai->ifname,
+ (long int)tm->tv_sec, (long int)tm->tv_usec);
return;
}
diff --git a/usr.sbin/rtadvd/timer.c b/usr.sbin/rtadvd/timer.c
index 1f6249d6c0f..055b6e93d43 100644
--- a/usr.sbin/rtadvd/timer.c
+++ b/usr.sbin/rtadvd/timer.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: timer.c,v 1.8 2002/06/10 19:57:35 espie Exp $ */
+/* $OpenBSD: timer.c,v 1.9 2008/04/21 20:40:55 rainer Exp $ */
/* $KAME: timer.c,v 1.7 2002/05/21 14:26:55 itojun Exp $ */
/*
@@ -33,11 +33,11 @@
#include <sys/time.h>
#include <unistd.h>
-#include <syslog.h>
#include <stdlib.h>
#include <string.h>
#include <search.h>
#include "timer.h"
+#include "log.h"
static struct rtadvd_timer timer_head;
@@ -63,24 +63,15 @@ rtadvd_add_timer(void (*timeout)(void *),
{
struct rtadvd_timer *newtimer;
- if ((newtimer = malloc(sizeof(*newtimer))) == NULL) {
- syslog(LOG_ERR,
- "<%s> can't allocate memory", __func__);
- exit(1);
- }
+ if ((newtimer = malloc(sizeof(*newtimer))) == NULL)
+ fatal("malloc");
memset(newtimer, 0, sizeof(*newtimer));
- if (timeout == NULL) {
- syslog(LOG_ERR,
- "<%s> timeout function unspecified", __func__);
- exit(1);
- }
- if (update == NULL) {
- syslog(LOG_ERR,
- "<%s> update function unspecified", __func__);
- exit(1);
- }
+ if (timeout == NULL)
+ fatalx("timeout function unspecified");
+ if (update == NULL)
+ fatalx("update function unspecified");
newtimer->expire = timeout;
newtimer->update = update;
newtimer->expire_data = timeodata;
@@ -165,9 +156,7 @@ rtadvd_timer_rest(struct rtadvd_timer *timer)
gettimeofday(&now, NULL);
if (TIMEVAL_LEQ(timer->tm, now)) {
- syslog(LOG_DEBUG,
- "<%s> a timer must be expired, but not yet",
- __func__);
+ log_debug("a timer must be expired, but not yet");
returnval.tv_sec = returnval.tv_usec = 0;
}
else