git: 1cdec2832d05 - main - ndp: Prepare for pending tcpdump update

From: Joseph Mingrone <jrm_at_FreeBSD.org>
Date: Thu, 08 Jun 2023 01:59:22 UTC
The branch main has been updated by jrm:

URL: https://cgit.FreeBSD.org/src/commit/?id=1cdec2832d051ddcb1417f3f2601e6212aff2613

commit 1cdec2832d051ddcb1417f3f2601e6212aff2613
Author:     Joseph Mingrone <jrm@FreeBSD.org>
AuthorDate: 2023-06-07 02:21:27 +0000
Commit:     Joseph Mingrone <jrm@FreeBSD.org>
CommitDate: 2023-06-08 01:57:20 +0000

    ndp: Prepare for pending tcpdump update
    
    ndp makes use of gmt2local, however that library has been removed from
    tcpdump.  Add utc_offset() as a substitute.
    
    Reviewed by:    emaste, jhb, melifaro
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D40445
---
 usr.sbin/ndp/Makefile      |  6 ++----
 usr.sbin/ndp/ndp.c         | 20 ++++++++++++++++++--
 usr.sbin/ndp/ndp_netlink.c |  1 -
 3 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/usr.sbin/ndp/Makefile b/usr.sbin/ndp/Makefile
index 1722f4a5a2ef..f66c4ec846a8 100644
--- a/usr.sbin/ndp/Makefile
+++ b/usr.sbin/ndp/Makefile
@@ -15,15 +15,13 @@
 
 .include <src.opts.mk>
 
-.PATH: ${SRCTOP}/contrib/tcpdump
-
 PROG=	ndp
 MAN=	ndp.8
-SRCS=	ndp.c gmt2local.c
+SRCS=	ndp.c
 
 LIBADD=	xo
 
-CFLAGS+= -I. -I${.CURDIR} -I${SRCTOP}/contrib/tcpdump
+CFLAGS+= -I. -I${.CURDIR}
 CFLAGS+= -D_U_=""
 
 .if ${MK_EXPERIMENTAL} != "no"
diff --git a/usr.sbin/ndp/ndp.c b/usr.sbin/ndp/ndp.c
index 23e186466c22..112fd099e3e0 100644
--- a/usr.sbin/ndp/ndp.c
+++ b/usr.sbin/ndp/ndp.c
@@ -98,6 +98,7 @@
 
 #include <arpa/inet.h>
 
+#include <assert.h>
 #include <ctype.h>
 #include <netdb.h>
 #include <errno.h>
@@ -107,11 +108,12 @@
 #include <string.h>
 #include <paths.h>
 #include <err.h>
+#include <stdint.h>
 #include <stdlib.h>
 #include <fcntl.h>
 #include <unistd.h>
 #include <libxo/xo.h>
-#include "gmt2local.h"
+#include <time.h>
 
 #include "ndp.h"
 
@@ -181,6 +183,20 @@ valid_type(int if_type)
 	return (false);
 }
 
+static int32_t
+utc_offset(void)
+{
+	time_t t;
+	struct tm *tm;
+
+	t = time(NULL);
+	tm = localtime(&t);
+
+	assert(tm->tm_gmtoff > INT32_MIN && tm->tm_gmtoff < INT32_MAX);
+
+	return (tm->tm_gmtoff);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -188,7 +204,7 @@ main(int argc, char **argv)
 	char *arg = NULL;
 
 	pid = getpid();
-	thiszone = gmt2local(0);
+	thiszone = utc_offset();
 
 	argc = xo_parse_args(argc, argv);
 	if (argc < 0)
diff --git a/usr.sbin/ndp/ndp_netlink.c b/usr.sbin/ndp/ndp_netlink.c
index a34359a4343f..ace3e5e5fa11 100644
--- a/usr.sbin/ndp/ndp_netlink.c
+++ b/usr.sbin/ndp/ndp_netlink.c
@@ -33,7 +33,6 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <libxo/xo.h>
-#include "gmt2local.h"
 
 
 #include <netlink/netlink.h>