Just a double-check to see if there's any interest in this port update.

On Fri, Jun 26, 2026 at 09:43:54AM -0700, James J. Lippard wrote:
> Here's a diff that updates to the latest version (3.9, released
> October 2025) which removes the need for some of the patches that have
> made their way upstream; also completes the partial removal of DECnet
> code in the prior patches (and in the man pages), and adds use of
> pledge and unveil.
> 
> -- 
> Jim Lippard        [email protected]       http://www.discord.org/
> GPG Key ID: 0x99FD5CD6
> 
> 

> Only in /usr/ports/net/arpwatch: CVS
> diff -urp /usr/ports/net/arpwatch/Makefile 
> /usr/ports/mystuff/net/arpwatch/Makefile
> --- /usr/ports/net/arpwatch/Makefile  Sun Dec 17 08:27:32 2023
> +++ /usr/ports/mystuff/net/arpwatch/Makefile  Thu Jun 25 18:23:52 2026
> @@ -1,10 +1,10 @@
>  COMMENT=     monitor arp & rarp requests
>  
> -DISTNAME=    arpwatch-2.1a15
> -REVISION=    21
> +DISTNAME=    arpwatch-3.9
> +#REVISION=   0
>  CATEGORIES=  net
>  
> -SITES=               ftp://ftp.ee.lbl.gov/
> +SITES=               https://ee.lbl.gov/downloads/arpwatch/
>  
>  MAINTAINER=  Jasper Lievisse Adriaanse <[email protected]>
>  
> @@ -16,6 +16,8 @@ WANTLIB=            c pcap
>  CONFIGURE_STYLE=     gnu
>  MAKE_FLAGS+=         ARPDIR=${LOCALSTATEDIR}/arpwatch
>  
> +CONFIGURE_ARGS+= --enable-zeropad
> +
>  # this provides an up-to-date pregenerated ethercodes.dat file
>  RUN_DEPENDS= net/arp-scan,-mac
>  
> @@ -27,7 +29,8 @@ pre-build:
>       ${SUBST_CMD} ${WRKSRC}/arpsnmp.8 ${WRKSRC}/arpwatch.8
>  
>  do-install:
> -     @sed -i 's,awk -f ,awk -f ${EXAMPLESDIR}/', ${WRKSRC}/massagevendor
> +     @sed -i 's,awk -f ,awk -f ${EXAMPLESDIR}/', ${WRKSRC}/massagevendor-old
> +     @sed -i 's,awk -f ,awk -f ${EXAMPLESDIR}/', ${WRKSRC}/massagevendor.py
>       ${INSTALL_PROGRAM} ${WRKSRC}/arpwatch ${PREFIX}/sbin
>       ${INSTALL_PROGRAM} ${WRKSRC}/arpsnmp ${PREFIX}/sbin
>       ${INSTALL_MAN} ${WRKSRC}/arpwatch.8 ${PREFIX}/man/man8
> @@ -36,6 +39,7 @@ do-install:
>       ${INSTALL_DATA} ${WRKSRC}/*.awk ${EXAMPLESDIR}
>       @${INSTALL_DATA} /dev/null ${EXAMPLESDIR}/arp.dat
>       @${INSTALL_SCRIPT} ${WRKSRC}/arp2ethers ${EXAMPLESDIR}
> -     @${INSTALL_SCRIPT} ${WRKSRC}/massagevendor ${EXAMPLESDIR}
> +     @${INSTALL_SCRIPT} ${WRKSRC}/massagevendor-old ${EXAMPLESDIR}
> +     @${INSTALL_SCRIPT} ${WRKSRC}/massagevendor.py ${EXAMPLESDIR}
>  
>  .include <bsd.port.mk>
> diff -urp /usr/ports/net/arpwatch/distinfo 
> /usr/ports/mystuff/net/arpwatch/distinfo
> --- /usr/ports/net/arpwatch/distinfo  Tue Nov  3 08:51:24 2015
> +++ /usr/ports/mystuff/net/arpwatch/distinfo  Thu Jun 25 18:23:27 2026
> @@ -1,2 +1,3 @@
> -SHA256 (arpwatch-2.1a15.tar.gz) = 
> wd+XN+IIqWph+pLdrYP0tNm+ZviZLzyRfp7fSwX/WJg=
> -SIZE (arpwatch-2.1a15.tar.gz) = 202729
> +SHA256 (arpwatch-3.9.tar.gz) = 
> 832d20a5a508d9694a84a17e2627de3b3aa8b42b19ebdd97e264c511168f6eb4
> +SIZE (arpwatch-3.9.tar.gz) = 117466
> +
> Only in /usr/ports/net/arpwatch/patches: CVS
> diff -urp /usr/ports/net/arpwatch/patches/patch-arpsnmp.8 
> /usr/ports/mystuff/net/arpwatch/patches/patch-arpsnmp.8
> --- /usr/ports/net/arpwatch/patches/patch-arpsnmp.8   Sun Dec 17 08:27:32 2023
> +++ /usr/ports/mystuff/net/arpwatch/patches/patch-arpsnmp.8   Fri Jun 26 
> 09:31:13 2026
> @@ -1,12 +1,19 @@
>  Index: arpsnmp.8
> ---- arpsnmp.8.orig
> -+++ arpsnmp.8
> -@@ -69,7 +69,7 @@ man page for details on the report messages generated 
> - .na
> - .nh
> - .nf
> --/usr/operator/arpwatch - default directory
> -+${LOCALSTATEDIR}/arpwatch - default directory
> - arp.dat - ethernet/ip address database
> - ethercodes.dat - vendor ethernet block list
> - .ad
> +--- arpsnmp.8.in.orig        Sun Dec  1 12:01:07 2019
> ++++ arpsnmp.8.in     Fri Jun 26 09:27:53 2026
> +@@ -77,7 +77,7 @@
> + flag is used to specify the
> + .B arpwatch
> + working directory. This defaults to
> +-.Ar /usr/local/arpwatch .
> ++.Ar ${LOCALSTATEDIR}/arpwatch .
> + .Pp
> + The
> + .Fl f
> +@@ -152,6 +152,3 @@
> + the
> + .Ar arp.dat
> + file.
> +-.Pp
> +-Attempts are made to suppress DECnet flip flops but they
> +-aren't always successful.
> diff -urp /usr/ports/net/arpwatch/patches/patch-arpwatch.8 
> /usr/ports/mystuff/net/arpwatch/patches/patch-arpwatch.8
> --- /usr/ports/net/arpwatch/patches/patch-arpwatch.8  Sun Dec 17 08:27:32 2023
> +++ /usr/ports/mystuff/net/arpwatch/patches/patch-arpwatch.8  Fri Jun 26 
> 09:30:28 2026
> @@ -1,43 +1,80 @@
>  Add -u flag, to drop privileges to that user given
>  
>  Index: arpwatch.8
> ---- arpwatch.8.orig
> -+++ arpwatch.8
> -@@ -43,6 +43,9 @@ arpwatch - keep track of ethernet/ip address pairings
> - ]] [
> - .B -r
> - .I file
> -+] [
> -+.B -u
> -+.I username
> - ]
> - .ad
> - .SH DESCRIPTION
> -@@ -94,6 +97,18 @@ of reading from the network. In this case,
> - .B arpwatch
> +--- arpwatch.8.in.orig       Sat Dec  2 17:48:53 2023
> ++++ arpwatch.8.in    Fri Jun 26 09:27:35 2026
> +@@ -43,6 +43,7 @@
> + .Op Fl n Ar net[/width]
> + .Op Fl x Ar net[/width]
> + .Op Fl r Ar file
> ++.Op Fl u Ar username
> + .Sh DESCRIPTION
> + .Nm
> + keeps track of ethernet/ip address pairings. It syslogs activity
> +@@ -78,7 +79,7 @@
> + flag is used to specify the
> + .Nm
> + working directory. This defaults to
> +-.Ar /usr/local/arpwatch .
> ++.Ar ${LOCALSTATEDIR}/arpwatch .
> + .Pp
> + The
> + .Fl f
> +@@ -134,6 +135,18 @@
> + .Nm
>   does not fork.
> - .LP
> + .Pp
>  +The
> -+.B -u
> ++.Fl u
>  +flag instructs
> -+.B arpwatch
> ++.Xr arpwatch
>  +to drop root privileges and change the UID to
> -+.I username
> ++.It Pa username
>  +and GID to the primary group of
> -+.I username .
> ++.It Pa username .
>  +This is recommended for security reasons, but
> -+.I username
> ++.It Pa username
>  +has to have write access to the default directory.
> -+.LP
> ++.Pp
>   Note that an empty
> - .I arp.dat
> + .Ar arp.dat
>   file must be created before the first time you run
> -@@ -152,7 +167,7 @@ addresses was a DECnet address.
> - .na
> - .nh
> - .nf
> --/usr/operator/arpwatch - default directory
> -+${LOCALSTATEDIR}/arpwatch - default directory
> - arp.dat - ethernet/ip address database
> - ethercodes.dat - vendor ethernet block list
> - .ad
> +@@ -187,8 +200,6 @@
> + .It Ic "flip flop"
> + The ethernet address has changed from the most recently seen address to
> + the second most recently seen address.
> +-(If either the old or new ethernet address is a DECnet address and it
> +-is less than 24 hours, the email version of the report is suppressed.)
> + .TP
> + .It Ic "changed ethernet address"
> + The host switched to a new ethernet address.
> +@@ -211,9 +222,6 @@
> + The ethernet address has changed from the most recently seen address to
> + the third (or greater) least recently seen address.
> + (This is similar to a flip flop.)
> +-.It Ic "suppressed DECnet flip flop"
> +-A "flip flop" report was suppressed because one of the two
> +-addresses was a DECnet address.
> + .Sh SIGNALS
> + Normally
> + .Nm
> +@@ -222,8 +230,8 @@
> + once every 15 minutes.
> + The SIGHUP signal causes it to update immediately.
> + .Sh FILES
> +-.Bl -tag -width ".Pa /usr/local/arpwatch" -compact
> +-.It Pa /usr/local/arpwatch
> ++.Bl -tag -width ".Pa ${LOCALSTATEDIR}/arpwatch" -compact
> ++.It Pa ${LOCALSTATEDIR}/arpwatch
> + default directory
> + .It Pa arp.dat
> + default ethernet/ip address database
> +@@ -247,8 +255,5 @@
> + .Sh BUGS
> + Please send bug reports to
> + .Aq [email protected] .
> +-.Pp
> +-Attempts are made to suppress DECnet flip flops but they
> +-aren't always successful.
> + .Pp
> + Most error messages are posted using syslog.
> diff -urp /usr/ports/net/arpwatch/patches/patch-arpwatch_c 
> /usr/ports/mystuff/net/arpwatch/patches/patch-arpwatch_c
> --- /usr/ports/net/arpwatch/patches/patch-arpwatch_c  Fri Mar 11 12:45:45 2022
> +++ /usr/ports/mystuff/net/arpwatch/patches/patch-arpwatch_c  Fri Jun 26 
> 09:34:36 2026
> @@ -1,11 +1,12 @@
>  - Do not bail if the interface does not have an IP assigned.
>  - time_t format string fixes
>  - add -u flag, to drop privileges to that user
> +- pledge and unveil
>  
>  Index: arpwatch.c
> ---- arpwatch.c.orig
> -+++ arpwatch.c
> -@@ -63,6 +63,9 @@ struct rtentry;
> +--- arpwatch.c.orig  Sun Dec  3 11:10:05 2023
> ++++ arpwatch.c       Thu Jun 25 07:29:02 2026
> +@@ -72,6 +72,9 @@
>   #include <syslog.h>
>   #include <unistd.h>
>   
> @@ -15,9 +16,9 @@ Index: arpwatch.c
>   #include <pcap.h>
>   
>   #include "gnuc.h"
> -@@ -141,6 +144,24 @@ int     sanity_ether(struct ether_header *, struct 
> ether_a
> - int sanity_fddi(struct fddi_header *, struct ether_arp *, int);
> - __dead      void usage(void) __attribute__((volatile));
> +@@ -172,6 +175,24 @@
> + int toskip(u_int32_t);
> + void        usage(void) __attribute__((noreturn));
>   
>  +void dropprivileges(const char* user)
>  +{
> @@ -40,25 +41,25 @@ Index: arpwatch.c
>   int
>   main(int argc, char **argv)
>   {
> -@@ -153,6 +174,7 @@ main(int argc, char **argv)
> -     register char *interface, *rfilename;
> +@@ -183,6 +204,7 @@
> +     char *interface, *rfilename;
>       struct bpf_program code;
>       char errbuf[PCAP_ERRBUF_SIZE];
>  +    char* username = NULL;
>   
>       if (argv[0] == NULL)
>               prog = "arpwatch";
> -@@ -170,7 +192,7 @@ main(int argc, char **argv)
> +@@ -200,7 +222,7 @@
>       interface = NULL;
>       rfilename = NULL;
>       pd = NULL;
> --    while ((op = getopt(argc, argv, "df:i:n:Nr:")) != EOF)
> -+    while ((op = getopt(argc, argv, "df:i:n:Nr:u:")) != EOF)
> +-    while ((op = getopt(argc, argv, "CdD:Ff:i:n:NpP:qr:svw:W:x:zZ")) != EOF)
> ++    while ((op = getopt(argc, argv, "CdD:Ff:i:n:NpP:qr:u:svw:W:x:zZ")) != 
> EOF)
>               switch (op) {
>   
> -             case 'd':
> -@@ -202,6 +224,19 @@ main(int argc, char **argv)
> -                     rfilename = optarg;
> +             case 'C':
> +@@ -285,6 +307,19 @@
> +                     zeropad = 1;
>                       break;
>   
>  +            case 'u':
> @@ -77,23 +78,8 @@ Index: arpwatch.c
>               default:
>                       usage();
>               }
> -@@ -223,9 +258,11 @@ main(int argc, char **argv)
> - 
> -             /* Determine network and netmask */
> -             if (pcap_lookupnet(interface, &net, &netmask, errbuf) < 0) {
> --                    (void)fprintf(stderr, "%s: bad interface %s: %s\n",
> --                        prog, interface, errbuf);
> --                    exit(1);
> -+                    (void)fprintf(stderr,
> -+                        "%s: WARNING: cannot determine net/mask: %s\n",
> -+                        prog, errbuf);
> -+                    net = 0;
> -+                    netmask = 0;
> +@@ -381,13 +416,32 @@
>               }
> - 
> -             /* Drop into the background if not debugging */
> -@@ -279,12 +316,16 @@ main(int argc, char **argv)
> - #endif
>       }
>   
>  +    if ( username ) {
> @@ -109,32 +95,65 @@ Index: arpwatch.c
>  +            setuid(getuid());
>  +    }
>   
> ++       /* unveil */
> ++       /* r for /, x for sendmail, rwc for /tmp and arpdir, rw for 
> /dev/null */
> ++        if (unveil ("/", "r") == -1)
> ++               lg(LOG_ERR, "unveil /");
> ++        if (unveil ("/tmp", "rwc") == -1)
> ++               lg(LOG_ERR, "unveil /tmp");
> ++        if (unveil ("/dev/null", "rw") == -1)
> ++               lg(LOG_ERR, "unveil /dev/null");
> ++        if (unveil ("/usr/sbin/sendmail", "x") == -1)
> ++               lg(LOG_ERR, "unveil /usr/sbin/sendmail");
> ++        if (unveil (arpdir, "rwc") == -1)
> ++               lg(LOG_ERR, "unveil %s", arpdir);
> ++        if (unveil(NULL, NULL) == -1)
> ++               lg(LOG_ERR, "unveil");
> ++
>       /* Must be ethernet or fddi */
>       linktype = pcap_datalink(pd);
> -@@ -401,7 +442,7 @@ process_ether(register u_char *u, register const struc
> +     if (linktype != DLT_EN10MB && linktype != DLT_FDDI) {
> +@@ -405,6 +459,13 @@
> +             lg(LOG_ERR, "pcap_setfilter: %s", pcap_geterr(pd));
> +             exit(1);
> +     }
> ++
> ++       /* pledge not used earlier because prior need of pcap_filter 
> BIOCSETF, not in bpf promise */
> ++       if (pledge ("stdio rpath wpath cpath inet dns proc exec tty bpf", 
> NULL) == -1) {
> ++            lg(LOG_ERR, "pledge: %s", strerror(errno));
> ++                exit(1);
> ++       }
> ++
> +     if (rfilename == NULL)
> +             lg(LOG_INFO, "listening on %s", interface);
> + 
> +@@ -513,8 +574,8 @@
>       t = h->ts.tv_sec;
>       can_checkpoint = 0;
>       if (!ent_add(sia, sea, t, NULL))
> --            syslog(LOG_ERR, "ent_add(%s, %s, %ld) failed",
> -+            syslog(LOG_ERR, "ent_add(%s, %s, %lld) failed",
> -                 intoa(sia), e2str(sea), t);
> +-            lg(LOG_ERR, "ent_add(%s, %s, %ld) failed",
> +-                intoa(sia), e2str(sea), (u_long)t);
> ++            lg(LOG_ERR, "ent_add(%s, %s, %lld) failed",
> ++                intoa(sia), e2str(sea), t);
>       can_checkpoint = 1;
> - }
> -@@ -550,7 +591,7 @@ process_fddi(register u_char *u, register const struct
> + 
> +     if (docheckpoint) {
> +@@ -673,8 +734,8 @@
>       t = h->ts.tv_sec;
>       can_checkpoint = 0;
>       if (!ent_add(sia, sea, t, NULL))
> --            syslog(LOG_ERR, "ent_add(%s, %s, %ld) failed",
> -+            syslog(LOG_ERR, "ent_add(%s, %s, %lld) failed",
> -                 intoa(sia), e2str(sea), t);
> +-            lg(LOG_ERR, "ent_add(%s, %s, %ld) failed",
> +-                intoa(sia), e2str(sea), (u_long)t);
> ++            lg(LOG_ERR, "ent_add(%s, %s, %lld) failed",
> ++                intoa(sia), e2str(sea), t);
>       can_checkpoint = 1;
> - }
> -@@ -750,7 +791,7 @@ usage(void)
> -     extern char version[];
>   
> -     (void)fprintf(stderr, "Version %s\n", version);
> --    (void)fprintf(stderr, "usage: %s [-dN] [-f datafile] [-i interface]"
> -+    (void)fprintf(stderr, "usage: %s [-dN] [-f datafile] [-i interface] [-u 
> username]"
> -         " [-n net[/width]] [-r file]\n", prog);
> +     if (docheckpoint) {
> +@@ -944,6 +1005,6 @@
> +         "usage: %s [-CdFNpqsvzZ] [-D arpdir] [-f datafile]"
> +         " [-i interface]\n\t"
> +         " [-P pidfile] [-w watcher@email] [-W watchee@email]\n\t"
> +-        " [-n net[/width]] [-x net[/width]] [-r file]\n", prog);
> ++        " [-n net[/width]] [-x net[/width]] [-r file] [-u username]\n", 
> prog);
>       exit(1);
>   }
> diff -urp /usr/ports/net/arpwatch/patches/patch-db_c 
> /usr/ports/mystuff/net/arpwatch/patches/patch-db_c
> --- /usr/ports/net/arpwatch/patches/patch-db_c        Fri Mar 11 12:45:45 2022
> +++ /usr/ports/mystuff/net/arpwatch/patches/patch-db_c        Thu Jun 25 
> 18:23:27 2026
> @@ -4,34 +4,35 @@ https://sources.debian.org/patches/arpwatch/2.1a15-6/2
>  remove DECnet remnants
>  
>  Index: db.c
> ---- db.c.orig
> -+++ db.c
> -@@ -95,6 +95,11 @@ ent_add(register u_int32_t a, register u_char *e, time
> -     u_char *e2;
> +--- db.c.orig        2026-04-12 15:35:26
> ++++ db.c     2026-04-12 15:40:46
> +@@ -108,6 +108,11 @@
>       time_t t2;
> +     char *host;
>   
>  +    /* Ignore 0.0.0.0 */
>  +    if (a == 0) {
> -+            return(1);
> ++            return(1);
>  +    }
>  +
>       /* Lookup ip address */
>       ap = ainfo_find(a);
>   
> -@@ -124,14 +129,11 @@ ent_add(register u_int32_t a, register u_char *e, time
> -             ep = ap->elist[1];
> -             if (MEMCMP(e, ep->e, 6) == 0) {
> -                     /*
> --                     * Suppress report when less than
> --                     * FLIPFLOP_DELTA and one of the two ethernet
> --                     * addresses is a DECnet logical.
> -+                     * Suppress report when less than FLIPFLOP_DELTA.
> +@@ -193,12 +198,11 @@
>                        */
>                       t2 = ap->elist[0]->t;
>                       e2 = ap->elist[0]->e;
>  -                    if (t - t2 < FLIPFLIP_DELTA &&
> --                        (isdecnet(e) || isdecnet(e2)))
> -+                    if (t - t2 < FLIPFLIP_DELTA)
> -                             dosyslog(LOG_INFO,
> -                                 "suppressed DECnet flip flop", a, e, e2);
> -                     else
> +-                        (isdecnet(e) || isdecnet(e2))) {
> +-                            if (!quiet)
> +-                                dosyslog(LOG_INFO,
> +-                                    "suppressed DECnet flip flop",
> +-                                    a, e, e2);
> ++                    if (t - t2 < FLIPFLIP_DELTA) {
> ++                      if (!quiet)
> ++                        dosyslog(LOG_INFO,
> ++                                 "suppressed flip flop",
> ++                                 a, e, e2);
> +                     } else if (!suppress)
> +                             report("flip flop", a, e, e2, &t, &t2);
> +                     ap->elist[1] = ap->elist[0];
> diff -urp /usr/ports/net/arpwatch/patches/patch-ec_c 
> /usr/ports/mystuff/net/arpwatch/patches/patch-ec_c
> --- /usr/ports/net/arpwatch/patches/patch-ec_c        Fri Mar 11 12:45:45 2022
> +++ /usr/ports/mystuff/net/arpwatch/patches/patch-ec_c        Thu Jun 25 
> 18:23:27 2026
> @@ -1,14 +1,14 @@
> -zero-pad MAC address to match ifconfig(8) output
> -https://sources.debian.org/patches/arpwatch/2.1a15-6/33_bug315215_zero-pad-MAC/
> +[no longer needed: zero-pad MAC address to match ifconfig(8) output
> +https://sources.debian.org/patches/arpwatch/2.1a15-6/33_bug315215_zero-pad-MAC/]
>  
>  remove DECnet remnants
>  
>  use a red-black tree instead of linked list for searching vendor IDs
>  
>  Index: ec.c
> ---- ec.c.orig
> -+++ ec.c
> -@@ -58,20 +58,28 @@ struct rtentry;
> +--- ec.c.orig        Mon May 27 10:59:50 2024
> ++++ ec.c     Mon May 27 13:41:10 2024
> +@@ -66,20 +66,28 @@
>   #include "arpwatch.h"
>   #include "ec.h"
>   #include "util.h"
> @@ -17,14 +17,14 @@ Index: ec.c
>   /* Basic data structure */
>  -struct ecent {
>  +struct ecnode {
> -+    RB_ENTRY(ecnode) entry;
> ++        RB_ENTRY(ecnode) entry;
>       u_int32_t o;            /* first 3 octets */
>       char *text;             /* associated text */
>   };
>   
>  -static struct ecent *list;
> --static u_int ec_last = 0;
> --static u_int ec_len = 0;
> +-static u_int ec_last;
> +-static u_int ec_len;
>  -
>   /* Forwards */
>  -static int ec_a2o(char *, u_int32_t *);
> @@ -34,7 +34,7 @@ Index: ec.c
>  +int
>  +ocmp(struct ecnode *e1, struct ecnode *e2)
>  +{
> -+    return (e1->o < e2->o ? -1 : e1->o > e2->o);
> ++  return (e1->o < e2->o ? -1 : e1->o > e2->o ? 1 : 0);
>  +}
>  +
>  +RB_HEAD(ectree, ecnode) head = RB_INITIALIZER(&head);
> @@ -42,27 +42,32 @@ Index: ec.c
>  +
>   /* Convert an 3 octets from an ethernet address to a u_int32_t */
>   static int
> - ec_a2o(register char *cp, register u_int32_t *op)
> -@@ -91,23 +99,18 @@ ec_a2o(register char *cp, register u_int32_t *op)
> + ec_a2o(char *cp, u_int32_t *op)
> +@@ -99,28 +107,18 @@
>   int
> - ec_add(register u_int32_t o, register char *text)
> + ec_add(u_int32_t o, const char *text)
>   {
> -+    struct ecnode *n;
> +-    struct ecent *olist;
> ++        struct ecnode *n;
>   
>  -    if (ec_last >= ec_len) {
>  -            if (list == NULL) {
>  -                    ec_len = 512;
> +-                    olist = NULL;
>  -                    list = malloc(ec_len * sizeof(*list));
>  -            } else {
>  -                    ec_len *= 2;
> --                    list = realloc(list, ec_len * sizeof(*list));
> +-                    olist = list;
> +-                    list = realloc(olist, ec_len * sizeof(*list));
>  -            }
>  -            if (list == NULL) {
> --                    syslog(LOG_ERR, "ec_add(): malloc: %m");
> +-                    if (olist != NULL)
> +-                            free(olist);
> +-                    lg(LOG_ERR, "ec_add(): malloc: %s", strerror(errno));
>  -                    exit(1);
>  -            }
>  +    if ((n = malloc(sizeof(struct ecnode))) == NULL) {
> -+            syslog(LOG_ERR, "%s: malloc\n", __func__);
> ++            syslog(LOG_ERR, "%s: malloc\n", __func__);
>  +            return (0);
>       }
>  -    list[ec_last].o = o;
> @@ -73,21 +78,21 @@ Index: ec.c
>  +    n->text = savestr(text);
>  +
>  +    RB_INSERT(ectree, &head, n);
> -+
> ++    
>       return (1);
>   }
>   
> -@@ -115,16 +118,16 @@ ec_add(register u_int32_t o, register char *text)
> +@@ -128,16 +126,16 @@
>   char *
> - ec_find(register u_char *e)
> + ec_find(const u_char *e)
>   {
>  -    u_int32_t o;
> --    register int i;
> -+    struct ecnode find, *res;
> +-    int i;
> ++        struct ecnode find, *res;
>  +    u_int32_t o = 0;
>   
>  -    o = 0;
> -     BCOPY(e, &o, 3);
> +     memmove(&o, e, 3);
>  -    for (i = 0; i < ec_last; ++i)
>  -            if (list[i].o == o)
>  -                    return (list[i].text);
> @@ -96,36 +101,26 @@ Index: ec.c
>  +    find.o = o;
>  +    res = RB_FIND(ectree, &head, &find);
>  +    if (res == NULL)
> -+            return (NULL);
> ++            return (NULL);
>  +    else
> -+            return res->text;
> ++            return res->text;
>   }
>   
>   /* Loop through the ethernet code database */
> -@@ -182,17 +185,6 @@ ec_loop(register FILE *f, ec_process fn, register cons
> -     return (1);
> - }
> +@@ -193,16 +191,6 @@
> +     }
>   
> +     return (1);
> +-}
> +-
>  -/* DECnet local logical address prefix */
>  -static u_char decnet[3] = { 0xaa, 0x0, 0x4 };
>  -
>  -/* Returns true if an ethernet address is decnet, else false */
>  -int
> --isdecnet(register u_char *e)
> +-isdecnet(const u_char *e)
>  -{
> --
> --    return (MEMCMP(e, decnet, sizeof(decnet)) == 0);
> --}
> --
> - /* Convert an ascii ethernet string to ethernet address */
> - int
> - str2e(register char *str, register u_char *e)
> -@@ -218,7 +210,7 @@ e2str(register u_char *e)
> - {
> -     static char str[32];
> - 
> --    (void)sprintf(str, "%x:%x:%x:%x:%x:%x",
> -+    (void)sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x",
> -         e[0], e[1], e[2], e[3], e[4], e[5]);
> -     return (str);
> +-    return (memcmp(e, decnet, sizeof(decnet)) == 0);
>   }
> + 
> + /* Convert an ascii ethernet string to ethernet address */
> Only in /usr/ports/mystuff/net/arpwatch/patches: patch-ec_h
> Only in /usr/ports/net/arpwatch/patches: patch-report_c
> Only in /usr/ports/net/arpwatch/pkg: CVS
> diff -urp /usr/ports/net/arpwatch/pkg/PLIST 
> /usr/ports/mystuff/net/arpwatch/pkg/PLIST
> --- /usr/ports/net/arpwatch/pkg/PLIST Mon Nov 27 23:29:22 2023
> +++ /usr/ports/mystuff/net/arpwatch/pkg/PLIST Thu Jun 25 18:23:27 2026
> @@ -19,6 +19,7 @@ share/examples/arpwatch/d.awk
>  share/examples/arpwatch/duplicates.awk
>  share/examples/arpwatch/e.awk
>  share/examples/arpwatch/euppertolower.awk
> -share/examples/arpwatch/massagevendor
> +share/examples/arpwatch/massagevendor-old
> +share/examples/arpwatch/massagevendor.py
>  share/examples/arpwatch/p.awk
>  @rcscript ${RCDIR}/arpwatch

Reply via email to