Module Name: src
Committed By: ozaki-r
Date: Wed Nov 11 07:48:41 UTC 2015
Modified Files:
src/distrib/sets/lists/base: mi
src/distrib/sets/lists/debug: mi
src/usr.sbin/rtadvd: Makefile advcap.c config.c dump.c if.c rrenum.c
rtadvd.c timer.c
Log Message:
Introduce rump.rtadvd
It is used to write ATF tests for RA.
>From s-yamaguchi@IIJ.
To generate a diff of this commit:
cvs rdiff -u -r1.1116 -r1.1117 src/distrib/sets/lists/base/mi
cvs rdiff -u -r1.133 -r1.134 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.17 -r1.18 src/usr.sbin/rtadvd/Makefile
cvs rdiff -u -r1.15 -r1.16 src/usr.sbin/rtadvd/advcap.c
cvs rdiff -u -r1.34 -r1.35 src/usr.sbin/rtadvd/config.c
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/rtadvd/dump.c \
src/usr.sbin/rtadvd/timer.c
cvs rdiff -u -r1.23 -r1.24 src/usr.sbin/rtadvd/if.c
cvs rdiff -u -r1.18 -r1.19 src/usr.sbin/rtadvd/rrenum.c
cvs rdiff -u -r1.50 -r1.51 src/usr.sbin/rtadvd/rtadvd.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/sets/lists/base/mi
diff -u src/distrib/sets/lists/base/mi:1.1116 src/distrib/sets/lists/base/mi:1.1117
--- src/distrib/sets/lists/base/mi:1.1116 Sun Nov 8 20:00:22 2015
+++ src/distrib/sets/lists/base/mi Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1116 2015/11/08 20:00:22 christos Exp $
+# $NetBSD: mi,v 1.1117 2015/11/11 07:48:41 ozaki-r Exp $
#
# Note: Don't delete entries from here - mark them as "obsolete" instead,
# unless otherwise stated below.
@@ -1828,6 +1828,7 @@
./usr/sbin/rpc.yppasswdd base-nis-bin yp
./usr/sbin/rpcbind base-rpcbind-bin
./usr/sbin/rtadvd base-router-bin use_inet6
+./usr/sbin/rump.rtadvd base-router-bin use_inet6,rump
./usr/sbin/rtquery base-netutil-bin
./usr/sbin/rtsold base-obsolete obsolete
./usr/sbin/rump.arp base-netutil-bin rump
Index: src/distrib/sets/lists/debug/mi
diff -u src/distrib/sets/lists/debug/mi:1.133 src/distrib/sets/lists/debug/mi:1.134
--- src/distrib/sets/lists/debug/mi:1.133 Sun Nov 8 20:00:22 2015
+++ src/distrib/sets/lists/debug/mi Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.133 2015/11/08 20:00:22 christos Exp $
+# $NetBSD: mi,v 1.134 2015/11/11 07:48:41 ozaki-r Exp $
./etc/mtree/set.debug comp-sys-root
./usr/lib comp-sys-usr compatdir
./usr/lib/i18n/libBIG5_g.a comp-c-debuglib debuglib,compatfile
@@ -1199,6 +1199,7 @@
./usr/libdata/debug/usr/sbin/rpc.yppasswdd.debug comp-nis-debug yp,debug
./usr/libdata/debug/usr/sbin/rpcbind.debug comp-rpcbind-debug debug
./usr/libdata/debug/usr/sbin/rtadvd.debug comp-router-debug use_inet6,debug
+./usr/libdata/debug/usr/sbin/rump.rtadvd.debug comp-router-debug use_inet6,debug,rump
./usr/libdata/debug/usr/sbin/rtquery.debug comp-netutil-debug debug
./usr/libdata/debug/usr/sbin/rtsold.debug comp-obsolete obsolete
./usr/libdata/debug/usr/sbin/rump.arp.debug comp-netutil-debug debug,rump
Index: src/usr.sbin/rtadvd/Makefile
diff -u src/usr.sbin/rtadvd/Makefile:1.17 src/usr.sbin/rtadvd/Makefile:1.18
--- src/usr.sbin/rtadvd/Makefile:1.17 Fri Aug 10 12:10:30 2012
+++ src/usr.sbin/rtadvd/Makefile Wed Nov 11 07:48:41 2015
@@ -1,24 +1,31 @@
-# $NetBSD: Makefile,v 1.17 2012/08/10 12:10:30 joerg Exp $
+# $NetBSD: Makefile,v 1.18 2015/11/11 07:48:41 ozaki-r Exp $
WARNS?= 4
.include <bsd.own.mk>
-USE_FORT?= yes # network server
+USE_FORT?= yes # network server
-PROG= rtadvd
-SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c dump.c
-
-CPPFLAGS+=-DINET6
-MAN= rtadvd.8 rtadvd.conf.5
-LDADD+= -lutil
-DPADD+= ${LIBUTIL}
+RUMPPRG= rtadvd
+SRCS= rtadvd.c rrenum.c advcap.c if.c config.c timer.c dump.c
+MAN= rtadvd.8 rtadvd.conf.5
+
+CPPFLAGS+= -DINET6
+LDADD+= -lutil
+DPADD+= ${LIBUTIL}
.if ${MKSHARE} != "no"
FILESDIR= /usr/share/examples/rtadvd
FILES= rtadvd.conf
.endif
+.PATH: ${.CURDIR}/../../lib/libc/net
+RUMPSRCS= getifaddrs.c getnameinfo.c if_indextoname.c if_nametoindex.c
+.if (${MKRUMP} != "no")
+CPPFLAGS+= -DRUMP_ACTION
+.endif
+
+
.include <bsd.prog.mk>
.if defined(HAVE_GCC) || defined(HAVE_LLVM)
Index: src/usr.sbin/rtadvd/advcap.c
diff -u src/usr.sbin/rtadvd/advcap.c:1.15 src/usr.sbin/rtadvd/advcap.c:1.16
--- src/usr.sbin/rtadvd/advcap.c:1.15 Fri Jun 5 15:41:59 2015
+++ src/usr.sbin/rtadvd/advcap.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: advcap.c,v 1.15 2015/06/05 15:41:59 roy Exp $ */
+/* $NetBSD: advcap.c,v 1.16 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: advcap.c,v 1.11 2003/05/19 09:46:50 keiichi Exp $ */
/*
@@ -46,6 +46,7 @@
#include <errno.h>
#include <string.h>
#include "pathnames.h"
+#include "prog_ops.h"
#ifndef __UNCONST
#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
@@ -159,7 +160,7 @@ getent(char *bp, char *name, char *cp)
break;
}
if (cp >= bp + BUFSIZ) {
- write(2,"Remcap entry too long\n", 23);
+ prog_write(2,"Remcap entry too long\n", 23);
break;
} else
*cp++ = c;
@@ -195,7 +196,7 @@ tnchktc(void)
p = tbuf + strlen(tbuf) - 2; /* before the last colon */
while (*--p != ':')
if (p < tbuf) {
- write(2, "Bad remcap entry\n", 18);
+ prog_write(2, "Bad remcap entry\n", 18);
return (0);
}
p++;
@@ -208,7 +209,7 @@ tnchktc(void)
q++;
*q = 0;
if (++hopcount > MAXHOP) {
- write(2, "Infinite tc= loop\n", 18);
+ prog_write(2, "Infinite tc= loop\n", 18);
return (0);
}
if (getent(tcbuf, tcname, remotefile) != 1) {
@@ -218,7 +219,7 @@ tnchktc(void)
;
l = p - holdtbuf + strlen(q);
if (l > BUFSIZ) {
- write(2, "Remcap entry too long\n", 23);
+ prog_write(2, "Remcap entry too long\n", 23);
q[BUFSIZ - (p-holdtbuf)] = 0;
}
strcpy(p, q);
Index: src/usr.sbin/rtadvd/config.c
diff -u src/usr.sbin/rtadvd/config.c:1.34 src/usr.sbin/rtadvd/config.c:1.35
--- src/usr.sbin/rtadvd/config.c:1.34 Fri Jun 5 14:09:20 2015
+++ src/usr.sbin/rtadvd/config.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: config.c,v 1.34 2015/06/05 14:09:20 roy Exp $ */
+/* $NetBSD: config.c,v 1.35 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: config.c,v 1.93 2005/10/17 14:40:02 suz Exp $ */
/*
@@ -67,6 +67,7 @@
#include "timer.h"
#include "if.h"
#include "config.h"
+#include "prog_ops.h"
#ifndef __arraycount
#define __arraycount(__x) (sizeof(__x) / sizeof(__x[0]))
@@ -445,7 +446,7 @@ getconfig(const char *intface, int exith
makeentry(entbuf, sizeof(entbuf), i, "vltimedecr");
if (agetflag(entbuf)) {
struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
pfx->vltimeexpire =
now.tv_sec + pfx->validlifetime;
}
@@ -465,7 +466,7 @@ getconfig(const char *intface, int exith
makeentry(entbuf, sizeof(entbuf), i, "pltimedecr");
if (agetflag(entbuf)) {
struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
pfx->pltimeexpire =
now.tv_sec + pfx->preflifetime;
}
@@ -502,13 +503,13 @@ getconfig(const char *intface, int exith
struct in6_ndireq ndi;
int s;
- if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+ if ((s = prog_socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
syslog(LOG_ERR, "<%s> socket: %m", __func__);
goto errexit;
}
memset(&ndi, 0, sizeof(ndi));
strncpy(ndi.ifname, intface, IFNAMSIZ);
- if (ioctl(s, SIOCGIFINFO_IN6, &ndi) < 0) {
+ if (prog_ioctl(s, SIOCGIFINFO_IN6, &ndi) < 0) {
syslog(LOG_INFO, "<%s> ioctl:SIOCGIFINFO_IN6 at %s: %m",
__func__, intface);
}
@@ -517,11 +518,11 @@ getconfig(const char *intface, int exith
ndi.ndi.chlim = tmp->hoplimit;
ndi.ndi.retrans = tmp->retranstimer;
ndi.ndi.basereachable = tmp->reachabletime;
- if (ioctl(s, SIOCSIFINFO_IN6, &ndi) < 0) {
+ if (prog_ioctl(s, SIOCSIFINFO_IN6, &ndi) < 0) {
syslog(LOG_INFO, "<%s> ioctl:SIOCSIFINFO_IN6 at %s: %m",
__func__, intface);
}
- close(s);
+ prog_close(s);
}
#endif
@@ -1027,12 +1028,12 @@ init_prefix(struct in6_prefixreq *ipr)
#if 0
int s;
- if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+ if ((s = prog_socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
syslog(LOG_ERR, "<%s> socket: %m", __func__);
exit(1);
}
- if (ioctl(s, SIOCGIFPREFIX_IN6, ipr) < 0) {
+ if (prog_ioctl(s, SIOCGIFPREFIX_IN6, ipr) < 0) {
syslog(LOG_INFO, "<%s> ioctl:SIOCGIFPREFIX: %m", __func__);
ipr->ipr_vltime = DEF_ADVVALIDLIFETIME;
@@ -1049,11 +1050,11 @@ init_prefix(struct in6_prefixreq *ipr)
"This should not happen if I am router", __func__,
inet_ntop(AF_INET6, &ipr->ipr_prefix.sin6_addr, ntopbuf,
sizeof(ntopbuf)), ipr->ipr_origin);
- close(s);
+ prog_close(s);
return 1;
}
- close(s);
+ prog_close(s);
return 0;
#else
ipr->ipr_vltime = DEF_ADVVALIDLIFETIME;
@@ -1218,7 +1219,7 @@ make_packet(struct rainfo *rainfo)
vltime = 0;
else {
if (pfx->vltimeexpire || pfx->pltimeexpire)
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
if (pfx->vltimeexpire == 0)
vltime = pfx->validlifetime;
else
@@ -1313,7 +1314,7 @@ getinet6sysctl(int code)
size_t size;
size = sizeof(value);
- if (sysctl(mib, __arraycount(mib), &value, &size, NULL, 0)
+ if (prog_sysctl(mib, __arraycount(mib), &value, &size, NULL, 0)
< 0) {
syslog(LOG_ERR, "<%s>: failed to get ip6 sysctl(%d): %m",
__func__, code);
Index: src/usr.sbin/rtadvd/dump.c
diff -u src/usr.sbin/rtadvd/dump.c:1.12 src/usr.sbin/rtadvd/dump.c:1.13
--- src/usr.sbin/rtadvd/dump.c:1.12 Fri Jun 5 14:09:20 2015
+++ src/usr.sbin/rtadvd/dump.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: dump.c,v 1.12 2015/06/05 14:09:20 roy Exp $ */
+/* $NetBSD: dump.c,v 1.13 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: dump.c,v 1.34 2004/06/14 05:35:59 itojun Exp $ */
/*
@@ -59,6 +59,7 @@
#include "timer.h"
#include "if.h"
#include "dump.h"
+#include "prog_ops.h"
static FILE *fp;
@@ -101,7 +102,7 @@ if_dump(void)
char prefixbuf[INET6_ADDRSTRLEN];
struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now); /* XXX: unused in most cases */
+ prog_clock_gettime(CLOCK_MONOTONIC, &now); /* XXX: unused in most cases */
TAILQ_FOREACH(rai, &ralist, next) {
fprintf(fp, "%s:\n", rai->ifname);
Index: src/usr.sbin/rtadvd/timer.c
diff -u src/usr.sbin/rtadvd/timer.c:1.12 src/usr.sbin/rtadvd/timer.c:1.13
--- src/usr.sbin/rtadvd/timer.c:1.12 Fri Jun 5 14:09:20 2015
+++ src/usr.sbin/rtadvd/timer.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: timer.c,v 1.12 2015/06/05 14:09:20 roy Exp $ */
+/* $NetBSD: timer.c,v 1.13 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: timer.c,v 1.11 2005/04/14 06:22:35 suz Exp $ */
/*
@@ -40,6 +40,7 @@
#include <string.h>
#include <search.h>
#include "timer.h"
+#include "prog_ops.h"
struct rtadvd_timer_head_t ra_timer = TAILQ_HEAD_INITIALIZER(ra_timer);
static struct timespec tm_limit = { LONG_MAX, 1000000000L - 1 };
@@ -102,7 +103,7 @@ rtadvd_set_timer(struct timespec *tm, st
struct timespec now;
/* reset the timer */
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
timespecadd(&now, tm, &timer->tm);
/* upate the next expiration time */
@@ -122,7 +123,7 @@ rtadvd_check_timer(void)
struct timespec now;
struct rtadvd_timer *tm, *tmn;
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
tm_max = tm_limit;
TAILQ_FOREACH_SAFE(tm, &ra_timer, next, tmn) {
@@ -153,7 +154,7 @@ rtadvd_timer_rest(struct rtadvd_timer *t
static struct timespec returnval;
struct timespec now;
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
if (timespeccmp(&timer->tm, &now, <=)) {
syslog(LOG_DEBUG,
"<%s> a timer must be expired, but not yet",
Index: src/usr.sbin/rtadvd/if.c
diff -u src/usr.sbin/rtadvd/if.c:1.23 src/usr.sbin/rtadvd/if.c:1.24
--- src/usr.sbin/rtadvd/if.c:1.23 Fri Jun 5 15:41:59 2015
+++ src/usr.sbin/rtadvd/if.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: if.c,v 1.23 2015/06/05 15:41:59 roy Exp $ */
+/* $NetBSD: if.c,v 1.24 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: if.c,v 1.36 2004/11/30 22:32:01 suz Exp $ */
/*
@@ -55,6 +55,7 @@
#include "rtadvd.h"
#include "if.h"
+#include "prog_ops.h"
#ifndef RT_ROUNDUP
#define RT_ROUNDUP(a) \
@@ -111,17 +112,17 @@ if_getmtu(const char *name)
struct ifreq ifr;
int s, mtu;
- if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0)
+ if ((s = prog_socket(AF_INET6, SOCK_DGRAM, 0)) < 0)
return 0;
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_addr.sa_family = AF_INET6;
strncpy(ifr.ifr_name, name, sizeof(ifr.ifr_name));
- if (ioctl(s, SIOCGIFMTU, &ifr) != -1)
+ if (prog_ioctl(s, SIOCGIFMTU, &ifr) != -1)
mtu = ifr.ifr_mtu;
else
mtu = 0;
- close(s);
+ prog_close(s);
return mtu;
}
@@ -133,20 +134,20 @@ if_getflags(int ifindex, int oifflags)
struct ifreq ifr;
int s;
- if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+ if ((s = prog_socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
syslog(LOG_ERR, "<%s> socket: %m", __func__);
return (oifflags & ~IFF_UP);
}
memset(&ifr, 0, sizeof(ifr));
if_indextoname(ifindex, ifr.ifr_name);
- if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0) {
+ if (prog_ioctl(s, SIOCGIFFLAGS, &ifr) < 0) {
syslog(LOG_ERR, "<%s> ioctl:SIOCGIFFLAGS: failed for %s",
__func__, ifr.ifr_name);
- close(s);
+ prog_close(s);
return (oifflags & ~IFF_UP);
}
- close(s);
+ prog_close(s);
return (ifr.ifr_flags);
}
Index: src/usr.sbin/rtadvd/rrenum.c
diff -u src/usr.sbin/rtadvd/rrenum.c:1.18 src/usr.sbin/rtadvd/rrenum.c:1.19
--- src/usr.sbin/rtadvd/rrenum.c:1.18 Fri Jun 5 15:41:59 2015
+++ src/usr.sbin/rtadvd/rrenum.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: rrenum.c,v 1.18 2015/06/05 15:41:59 roy Exp $ */
+/* $NetBSD: rrenum.c,v 1.19 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: rrenum.c,v 1.14 2004/06/14 05:36:00 itojun Exp $ */
/*
@@ -53,6 +53,7 @@
#include "rtadvd.h"
#include "rrenum.h"
#include "if.h"
+#include "prog_ops.h"
#define RR_ISSET_SEGNUM(segnum_bits, segnum) \
((((segnum_bits)[(segnum) >> 5]) & (1 << ((segnum) & 31))) != 0)
@@ -163,7 +164,7 @@ do_use_prefix(int len, struct rr_pco_mat
irr->irr_useprefix.sin6_len = 0; /* let it mean, no addition */
irr->irr_useprefix.sin6_family = 0;
irr->irr_useprefix.sin6_addr = in6addr_any;
- if (ioctl(s, rrcmd2pco[rpm->rpm_code], irr) < 0 &&
+ if (prog_ioctl(s, rrcmd2pco[rpm->rpm_code], irr) < 0 &&
errno != EADDRNOTAVAIL)
syslog(LOG_ERR, "<%s> ioctl: %m", __func__);
return;
@@ -194,7 +195,7 @@ do_use_prefix(int len, struct rr_pco_mat
irr->irr_useprefix.sin6_family = AF_INET6;
irr->irr_useprefix.sin6_addr = rpu->rpu_prefix;
- if (ioctl(s, rrcmd2pco[rpm->rpm_code], irr) < 0 &&
+ if (prog_ioctl(s, rrcmd2pco[rpm->rpm_code], irr) < 0 &&
errno != EADDRNOTAVAIL)
syslog(LOG_ERR, "<%s> ioctl: %m", __func__);
@@ -216,14 +217,14 @@ do_use_prefix(int len, struct rr_pco_mat
pp->validlifetime = ntohl(rpu->rpu_vltime);
pp->preflifetime = ntohl(rpu->rpu_pltime);
if (irr->irr_rrf_decrvalid) {
- clock_gettime(CLOCK_MONOTONIC,
+ prog_clock_gettime(CLOCK_MONOTONIC,
&now);
pp->vltimeexpire =
now.tv_sec + pp->validlifetime;
} else
pp->vltimeexpire = 0;
if (irr->irr_rrf_decrprefd) {
- clock_gettime(CLOCK_MONOTONIC,
+ prog_clock_gettime(CLOCK_MONOTONIC,
&now);
pp->pltimeexpire =
now.tv_sec + pp->preflifetime;
@@ -249,7 +250,7 @@ do_pco(struct icmp6_router_renum *rr, in
if ((rr_pco_check(len, rpm) != 0))
return 1;
- if (s == -1 && (s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
+ if (s == -1 && (s = prog_socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
syslog(LOG_ERR, "<%s> socket: %m", __func__);
exit(1);
}
Index: src/usr.sbin/rtadvd/rtadvd.c
diff -u src/usr.sbin/rtadvd/rtadvd.c:1.50 src/usr.sbin/rtadvd/rtadvd.c:1.51
--- src/usr.sbin/rtadvd/rtadvd.c:1.50 Mon Jun 15 04:15:33 2015
+++ src/usr.sbin/rtadvd/rtadvd.c Wed Nov 11 07:48:41 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: rtadvd.c,v 1.50 2015/06/15 04:15:33 ozaki-r Exp $ */
+/* $NetBSD: rtadvd.c,v 1.51 2015/11/11 07:48:41 ozaki-r Exp $ */
/* $KAME: rtadvd.c,v 1.92 2005/10/17 14:40:02 suz Exp $ */
/*
@@ -67,6 +67,7 @@
#include "if.h"
#include "config.h"
#include "dump.h"
+#include "prog_ops.h"
struct msghdr rcvmhdr;
static unsigned char *rcvcmsgbuf;
@@ -220,6 +221,10 @@ main(int argc, char *argv[])
exit(1);
}
+ if (prog_init && prog_init() == -1) {
+ err(1, "init failed");
+ }
+
logopt = LOG_NDELAY | LOG_PID;
if (fflag)
logopt |= LOG_PERROR;
@@ -251,7 +256,7 @@ main(int argc, char *argv[])
getconfig(*argv++, 1);
if (!fflag)
- daemon(1, 0);
+ prog_daemon(1, 0);
sock_open();
@@ -274,17 +279,17 @@ main(int argc, char *argv[])
set[1].fd = -1;
syslog(LOG_INFO, "dropping privileges to %s", RTADVD_USER);
- if (chroot(pw->pw_dir) == -1) {
+ if (prog_chroot(pw->pw_dir) == -1) {
syslog(LOG_ERR, "chroot: %s: %m", pw->pw_dir);
exit(1);
}
- if (chdir("/") == -1) {
+ if (prog_chdir("/") == -1) {
syslog(LOG_ERR, "chdir: /: %m");
exit(1);
}
- if (setgroups(1, &pw->pw_gid) == -1 ||
- setgid(pw->pw_gid) == -1 ||
- setuid(pw->pw_uid) == -1)
+ if (prog_setgroups(1, &pw->pw_gid) == -1 ||
+ prog_setgid(pw->pw_gid) == -1 ||
+ prog_setuid(pw->pw_uid) == -1)
{
syslog(LOG_ERR, "failed to drop privileges: %m");
exit(1);
@@ -331,7 +336,7 @@ main(int argc, char *argv[])
__func__);
}
- if ((i = poll(set, 2, timeout ? (timeout->tv_sec * 1000 +
+ if ((i = prog_poll(set, 2, timeout ? (timeout->tv_sec * 1000 +
(timeout->tv_nsec + 999999) / 1000000) : INFTIM)) < 0)
{
/* EINTR would occur upon SIGUSR1 for status dump */
@@ -446,7 +451,7 @@ rtmsg_input(void)
int prefixchange = 0, argc;
memset(&buffer, 0, sizeof(buffer));
- n = read(rtsock, &buffer, sizeof(buffer));
+ n = prog_read(rtsock, &buffer, sizeof(buffer));
/* We read the buffer first to clear the FD */
if (do_die)
@@ -716,7 +721,7 @@ rtadvd_input(void)
* receive options.
*/
rcvmhdr.msg_controllen = rcvcmsgbuflen;
- if ((i = recvmsg(sock, &rcvmhdr, 0)) < 0)
+ if ((i = prog_recvmsg(sock, &rcvmhdr, 0)) < 0)
return;
/* We read the buffer first to clear the FD */
@@ -1017,7 +1022,7 @@ ra_timer_set_short_delay(struct rainfo *
* MIN_DELAY_BETWEEN_RAS plus the random value after the
* previous advertisement was sent.
*/
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
timespecsub(&now, &rai->lastsent, &tm_tmp);
min_delay.tv_sec = MIN_DELAY_BETWEEN_RAS;
min_delay.tv_nsec = 0;
@@ -1245,7 +1250,7 @@ prefix_check(struct nd_opt_prefix_info *
* XXX: can we really expect that all routers on the link
* have synchronized clocks?
*/
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
preferred_time += now.tv_sec;
if (!pp->timer && rai->clockskew &&
@@ -1281,7 +1286,7 @@ prefix_check(struct nd_opt_prefix_info *
valid_time = ntohl(pinfo->nd_opt_pi_valid_time);
if (pp->vltimeexpire) {
- clock_gettime(CLOCK_MONOTONIC, &now);
+ prog_clock_gettime(CLOCK_MONOTONIC, &now);
valid_time += now.tv_sec;
if (!pp->timer && rai->clockskew &&
@@ -1510,14 +1515,14 @@ sock_open(void)
exit(1);
}
- if ((sock = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0) {
+ if ((sock = prog_socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0) {
syslog(LOG_ERR, "<%s> socket: %m", __func__);
exit(1);
}
/* RFC 4861 Section 4.2 */
on = 255;
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &on,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &on,
sizeof(on)) == -1) {
syslog(LOG_ERR, "<%s> IPV6_MULTICAST_HOPS: %m", __func__);
exit(1);
@@ -1526,13 +1531,13 @@ sock_open(void)
/* specify to tell receiving interface */
on = 1;
#ifdef IPV6_RECVPKTINFO
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on,
sizeof(on)) < 0) {
syslog(LOG_ERR, "<%s> IPV6_RECVPKTINFO: %m", __func__);
exit(1);
}
#else /* old adv. API */
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_PKTINFO, &on,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_PKTINFO, &on,
sizeof(on)) < 0) {
syslog(LOG_ERR, "<%s> IPV6_PKTINFO: %m", __func__);
exit(1);
@@ -1542,13 +1547,13 @@ sock_open(void)
on = 1;
/* specify to tell value of hoplimit field of received IP6 hdr */
#ifdef IPV6_RECVHOPLIMIT
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &on,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &on,
sizeof(on)) < 0) {
syslog(LOG_ERR, "<%s> IPV6_RECVHOPLIMIT: %m", __func__);
exit(1);
}
#else /* old adv. API */
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_HOPLIMIT, &on,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_HOPLIMIT, &on,
sizeof(on)) < 0) {
syslog(LOG_ERR, "<%s> IPV6_HOPLIMIT: %m", __func__);
exit(1);
@@ -1560,7 +1565,7 @@ sock_open(void)
ICMP6_FILTER_SETPASS(ND_ROUTER_ADVERT, &filt);
if (accept_rr)
ICMP6_FILTER_SETPASS(ICMP6_ROUTER_RENUMBERING, &filt);
- if (setsockopt(sock, IPPROTO_ICMPV6, ICMP6_FILTER, &filt,
+ if (prog_setsockopt(sock, IPPROTO_ICMPV6, ICMP6_FILTER, &filt,
sizeof(filt)) < 0) {
syslog(LOG_ERR, "<%s> IICMP6_FILTER: %m", __func__);
exit(1);
@@ -1578,7 +1583,7 @@ sock_open(void)
}
TAILQ_FOREACH(ra, &ralist, next) {
mreq.ipv6mr_interface = ra->ifindex;
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq,
sizeof(mreq)) < 0) {
syslog(LOG_ERR, "<%s> IPV6_JOIN_GROUP(link) on %s: %m",
__func__, ra->ifname);
@@ -1609,7 +1614,7 @@ sock_open(void)
}
} else
mreq.ipv6mr_interface = ra->ifindex;
- if (setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP,
+ if (prog_setsockopt(sock, IPPROTO_IPV6, IPV6_JOIN_GROUP,
&mreq, sizeof(mreq)) < 0) {
syslog(LOG_ERR,
"<%s> IPV6_JOIN_GROUP(site) on %s: %m",
@@ -1643,7 +1648,7 @@ sock_open(void)
static void
rtsock_open(void)
{
- if ((rtsock = socket(PF_ROUTE, SOCK_RAW, 0)) < 0) {
+ if ((rtsock = prog_socket(PF_ROUTE, SOCK_RAW, 0)) < 0) {
syslog(LOG_ERR, "<%s> socket: %m", __func__);
exit(1);
}
@@ -1695,7 +1700,7 @@ ra_output(struct rainfo *rai)
"<%s> send RA on %s, # of waitings = %d",
__func__, rai->ifname, rai->waiting);
- i = sendmsg(sock, &sndmhdr, 0);
+ i = prog_sendmsg(sock, &sndmhdr, 0);
if (i < 0 || (size_t)i != rai->ra_datalen) {
if (i < 0) {
@@ -1753,7 +1758,7 @@ ra_output(struct rainfo *rai)
rai->raoutput++;
/* update timestamp */
- clock_gettime(CLOCK_MONOTONIC, &rai->lastsent);
+ prog_clock_gettime(CLOCK_MONOTONIC, &rai->lastsent);
/* reset waiting conter */
rai->waiting = 0;