summaryrefslogtreecommitdiffstats
path: root/usr.sbin/rtsold/rtsold.h
diff options
context:
space:
mode:
authorhrs <hrs@FreeBSD.org>2013-08-05 20:13:02 +0000
committerhrs <hrs@FreeBSD.org>2013-08-05 20:13:02 +0000
commit13c1bcf2c1d5fbdca99cdddec726f822b68dddbc (patch)
treec3af796aa3d9d6e1a9fa48bdec823e34beac7892 /usr.sbin/rtsold/rtsold.h
parent103825c951713677489b0556d7cd86852ec2969c (diff)
downloadFreeBSD-src-13c1bcf2c1d5fbdca99cdddec726f822b68dddbc.zip
FreeBSD-src-13c1bcf2c1d5fbdca99cdddec726f822b68dddbc.tar.gz
- Use time_uptime instead of time_second in data structures for
PF_INET6 in kernel. This fixes various malfunction when the wall time clock is changed. Bump __FreeBSD_version to 1000041. - Use clock_gettime(CLOCK_MONOTONIC_FAST) in userland utilities. MFC after: 1 month
Diffstat (limited to 'usr.sbin/rtsold/rtsold.h')
-rw-r--r--usr.sbin/rtsold/rtsold.h33
1 files changed, 28 insertions, 5 deletions
diff --git a/usr.sbin/rtsold/rtsold.h b/usr.sbin/rtsold/rtsold.h
index 3ab010f..69f9c35 100644
--- a/usr.sbin/rtsold/rtsold.h
+++ b/usr.sbin/rtsold/rtsold.h
@@ -43,7 +43,7 @@ struct ra_opt {
TAILQ_ENTRY(ra_opt) rao_next;
u_int8_t rao_type;
- struct timeval rao_expire;
+ struct timespec rao_expire;
size_t rao_len;
void *rao_msg;
};
@@ -73,8 +73,8 @@ struct ifinfo {
int state;
int probes;
int dadcount;
- struct timeval timer;
- struct timeval expire;
+ struct timespec timer;
+ struct timespec expire;
int errors; /* # of errors we've got - detect wedge */
#define IFI_DNSOPT_STATE_NOINFO 0
#define IFI_DNSOPT_STATE_RECEIVED 1
@@ -124,8 +124,31 @@ extern TAILQ_HEAD(ifinfo_head_t, ifinfo) ifinfo_head;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}}
#endif
+#define TS_CMP(tsp, usp, cmp) \
+ (((tsp)->tv_sec == (usp)->tv_sec) ? \
+ ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
+ ((tsp)->tv_sec cmp (usp)->tv_sec))
+#define TS_ADD(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec >= 1000000000L) { \
+ (vsp)->tv_sec++; \
+ (vsp)->tv_nsec -= 1000000000L; \
+ } \
+ } while (0)
+#define TS_SUB(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec < 0) { \
+ (vsp)->tv_sec--; \
+ (vsp)->tv_nsec += 1000000000L; \
+ } \
+ } while (0)
+
/* rtsold.c */
-extern struct timeval tm_max;
+extern struct timespec tm_max;
extern int dflag;
extern int aflag;
extern int Fflag;
@@ -163,7 +186,7 @@ extern void defrouter_probe(struct ifinfo *);
/* dump.c */
extern void rtsold_dump_file(const char *);
-extern const char *sec2str(const struct timeval *);
+extern const char *sec2str(const struct timespec *);
/* rtsock.c */
extern int rtsock_open(void);
OpenPOWER on IntegriCloud