Module Name: src
Committed By: tnn
Date: Fri Aug 18 13:07:38 UTC 2023
Modified Files:
src/usr.sbin/ndp: Makefile ndp.c
Log Message:
ndp: add gmt2local() from external/bsd/tcpdump instead of reachover
It is no longer shipped with the tcpdump distribution.
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/ndp/Makefile
cvs rdiff -u -r1.59 -r1.60 src/usr.sbin/ndp/ndp.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/ndp/Makefile
diff -u src/usr.sbin/ndp/Makefile:1.13 src/usr.sbin/ndp/Makefile:1.14
--- src/usr.sbin/ndp/Makefile:1.13 Tue Oct 10 19:30:41 2017
+++ src/usr.sbin/ndp/Makefile Fri Aug 18 13:07:38 2023
@@ -1,18 +1,15 @@
-# $NetBSD: Makefile,v 1.13 2017/10/10 19:30:41 christos Exp $
+# $NetBSD: Makefile,v 1.14 2023/08/18 13:07:38 tnn Exp $
.include <bsd.own.mk>
USE_FORT?= yes # network client
-TCPDUMP= ${NETBSDSRCDIR}/external/bsd/tcpdump/dist
-.PATH: ${TCPDUMP}
-
RUMPPRG= ndp
-SRCS= ndp.c gmt2local.c
+SRCS= ndp.c
MAN= ndp.8
CPPFLAGS+= -DINET6
-CPPFLAGS+= -I. -I${TCPDUMP}
+CPPFLAGS+= -I.
.if (${MKRUMP} != "no")
CPPFLAGS+= -DRUMP_ACTION
Index: src/usr.sbin/ndp/ndp.c
diff -u src/usr.sbin/ndp/ndp.c:1.59 src/usr.sbin/ndp/ndp.c:1.60
--- src/usr.sbin/ndp/ndp.c:1.59 Sat Nov 27 22:30:25 2021
+++ src/usr.sbin/ndp/ndp.c Fri Aug 18 13:07:38 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: ndp.c,v 1.59 2021/11/27 22:30:25 rillig Exp $ */
+/* $NetBSD: ndp.c,v 1.60 2023/08/18 13:07:38 tnn Exp $ */
/* $KAME: ndp.c,v 1.121 2005/07/13 11:30:13 keiichi Exp $ */
/*
@@ -62,6 +62,27 @@
*/
/*
+ * Copyright (c) 1997
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that: (1) source code distributions
+ * retain the above copyright notice and this paragraph in its entirety, (2)
+ * distributions including binary code include the above copyright notice and
+ * this paragraph in its entirety in the documentation or other materials
+ * provided with the distribution, and (3) all advertising materials mentioning
+ * features or use of this software display the following acknowledgement:
+ * ``This product includes software developed by the University of California,
+ * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
+ * the University nor the names of its contributors may be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+/*
* Based on:
* "@(#) Copyright (c) 1984, 1993\n\
* The Regents of the University of California. All rights reserved.\n";
@@ -105,7 +126,6 @@
#include <fcntl.h>
#include <unistd.h>
-#include "gmt2local.h"
#include "prog_ops.h"
static pid_t pid;
@@ -134,6 +154,7 @@ static void ifinfo(char *, int, char **)
static const char *sec2str(time_t);
static char *ether_str(struct sockaddr_dl *);
static void ts_print(const struct timeval *);
+static int32_t gmt2local(time_t t);
#define NDP_F_CLEAR 1
#define NDP_F_DELETE 2
@@ -953,3 +974,35 @@ ts_print(const struct timeval *tvp)
(void)printf("%02d:%02d:%02d.%06u ",
s / 3600, (s % 3600) / 60, s % 60, (u_int32_t)tvp->tv_usec);
}
+
+/*
+ * Returns the difference between gmt and local time in seconds.
+ * Use gmtime() and localtime() to keep things simple.
+ */
+static int32_t
+gmt2local(time_t t)
+{
+ int dt, dir;
+ struct tm *gmt, *loc;
+ struct tm sgmt;
+
+ if (t == 0)
+ t = time(NULL);
+ gmt = &sgmt;
+ *gmt = *gmtime(&t);
+ loc = localtime(&t);
+ dt = (loc->tm_hour - gmt->tm_hour) * 60 * 60 +
+ (loc->tm_min - gmt->tm_min) * 60;
+
+ /*
+ * If the year or julian day is different, we span 00:00 GMT
+ * and must add or subtract a day. Check the year first to
+ * avoid problems when the julian day wraps.
+ */
+ dir = loc->tm_year - gmt->tm_year;
+ if (dir == 0)
+ dir = loc->tm_yday - gmt->tm_yday;
+ dt += dir * 24 * 60 * 60;
+
+ return (dt);
+}