Compare commits

..

12 commits

Author SHA1 Message Date
Benjamin A. Beasley
61ab340e38 Generate ethercodes.dat from latest oui.csv 2023-11-10 13:21:43 -05:00
Benjamin A. Beasley
94144884f0 Generate ethercodes.dat from latest oui.csv 2023-10-04 10:40:56 -04:00
Benjamin A. Beasley
8cd55c3936 Update to 3.4 (close RHBZ#2237532) 2023-09-06 13:34:47 -04:00
Benjamin A. Beasley
e380b0639d Generate ethercodes.dat from latest oui.csv 2023-09-06 13:33:30 -04:00
Benjamin A. Beasley
e562742656 Generate ethercodes.dat from latest oui.csv 2023-08-21 13:35:52 -04:00
Benjamin A. Beasley
825050a0e2 Generate ethercodes.dat from latest oui.csv 2023-07-13 00:41:06 -04:00
Benjamin A. Beasley
ff0011a87f Generate ethercodes.dat from latest oui.csv 2023-05-24 17:54:57 -04:00
Benjamin A. Beasley
dd1a2ce856 Generate ethercodes.dat from latest oui.csv 2023-04-25 10:46:36 -04:00
Benjamin A. Beasley
e49f769124 Generate ethercodes.dat from latest oui.csv 2023-03-26 09:21:17 -04:00
Benjamin A. Beasley
10721bcfaa Generate ethercodes.dat from latest oui.csv 2023-02-15 17:18:21 -05:00
Benjamin A. Beasley
74dcfa54e4 Generate ethercodes.dat from latest oui.csv 2023-01-17 20:27:57 -05:00
Benjamin A. Beasley
00fd791ecc Generate ethercodes.dat from latest oui.csv 2022-12-19 09:51:12 -05:00
12 changed files with 11797 additions and 15660 deletions

5
.gitignore vendored
View file

@ -4,8 +4,3 @@
/arpwatch-3.2.tar.gz
/arpwatch-3.3.tar.gz
/arpwatch-3.4.tar.gz
/arpwatch-3.5.tar.gz
/arpwatch-3.6.tar.gz
/arpwatch-3.7.tar.gz
/arpwatch-3.8.tar.gz
/arpwatch-3.9.tar.gz

View file

@ -0,0 +1,40 @@
Do not add /usr/local/bin or /usr/local/sbin to the PATH in any scripts.
diff -Naur arpwatch-3.2-original/arpfetch arpwatch-3.2/arpfetch
--- arpwatch-3.2-original/arpfetch 2013-02-16 03:10:28.000000000 -0500
+++ arpwatch-3.2/arpfetch 2021-12-16 08:26:26.931846139 -0500
@@ -4,8 +4,6 @@
# arpfetch - collect arp data from a cisco using net-snmp
#
-export PATH="/usr/local/bin:${PATH}"
-
prog=`basename $0`
if [ $# -ne 2 ]; then
diff -Naur arpwatch-3.2-original/bihourly.sh arpwatch-3.2/bihourly.sh
--- arpwatch-3.2-original/bihourly.sh 2016-09-16 22:40:54.000000000 -0400
+++ arpwatch-3.2/bihourly.sh 2021-12-16 08:26:35.671910709 -0500
@@ -3,9 +3,6 @@
#
# bihourly arpwatch job
#
-PATH=${PATH}:/usr/local/sbin
-export PATH
-#
cd /usr/local/arpwatch
#
list="`cat list`"
diff -Naur arpwatch-3.2-original/update-ethercodes.sh.in arpwatch-3.2/update-ethercodes.sh.in
--- arpwatch-3.2-original/update-ethercodes.sh.in 2021-12-14 19:47:54.000000000 -0500
+++ arpwatch-3.2/update-ethercodes.sh.in 2021-12-16 08:26:16.309767665 -0500
@@ -6,9 +6,6 @@
prog="`basename $0`"
-PATH=/usr/local/bin:${PATH}
-export PATH
-
t1=/tmp/${prog}.1.$$
trap 'rm -f ${t1}; exit 1' 1 2 3 15 EXIT

View file

@ -1,17 +0,0 @@
diff --git a/dns.c b/dns.c
index 82106e1244f94aec..75cc27b6775649f7 100644
--- a/dns.c
+++ b/dns.c
@@ -115,10 +115,10 @@ gethinfo(char *hostname, char *cpu, int cpulen, char *os, int oslen)
(u_char *)cp, (char *)bp, buflen)) < 0)
break;
cp += n;
- type = _getshort(cp);
+ type = ns_get16(cp);
cp += sizeof(u_short); /* class */
cp += sizeof(u_short) + sizeof(u_int32_t);
- n = _getshort(cp);
+ n = ns_get16(cp);
cp += sizeof(u_short);
if (type == T_HINFO) {
/* Unpack */

View file

@ -1,8 +1,8 @@
diff -Naur arpwatch-3.5-original/arpwatch.c arpwatch-3.5/arpwatch.c
--- arpwatch-3.5-original/arpwatch.c 2023-12-03 13:10:05.000000000 -0500
+++ arpwatch-3.5/arpwatch.c 2023-12-03 20:06:32.694857659 -0500
@@ -163,6 +163,8 @@
void hup(int);
diff -Naur arpwatch-3.4-original/arpwatch.c arpwatch-3.4/arpwatch.c
--- arpwatch-3.4-original/arpwatch.c 2023-09-05 13:50:56.000000000 -0400
+++ arpwatch-3.4/arpwatch.c 2023-09-06 09:53:38.038275336 -0400
@@ -161,6 +161,8 @@
void die(int);
int isbogon(u_int32_t);
int main(int, char **);
+int try_open_live(pcap_t ** pd_ptr, char const * interface_name,
@ -10,7 +10,7 @@ diff -Naur arpwatch-3.5-original/arpwatch.c arpwatch-3.5/arpwatch.c
void process_ether(u_char *, const struct pcap_pkthdr *, const u_char *);
void process_fddi(u_char *, const struct pcap_pkthdr *, const u_char *);
int readsnmp(char *);
@@ -179,7 +181,7 @@
@@ -177,7 +179,7 @@
int op, snaplen, timeout, linktype, status;
pcap_t *pd;
FILE *fp;
@ -19,7 +19,7 @@ diff -Naur arpwatch-3.5-original/arpwatch.c arpwatch-3.5/arpwatch.c
char *interface, *rfilename;
struct bpf_program code;
char errbuf[PCAP_ERRBUF_SIZE];
@@ -311,13 +313,18 @@
@@ -309,13 +311,18 @@
"%s: pcap_findalldevs: %s\n", prog, errbuf);
exit(1);
}
@ -41,7 +41,7 @@ diff -Naur arpwatch-3.5-original/arpwatch.c arpwatch-3.5/arpwatch.c
#else
if (interface = pcap_lookupdev(errbuf)) == NULL) {
(void)fprintf(stderr,
@@ -356,15 +363,12 @@
@@ -354,15 +361,12 @@
}
swapped = pcap_is_swapped(pd);
} else {
@ -61,7 +61,7 @@ diff -Naur arpwatch-3.5-original/arpwatch.c arpwatch-3.5/arpwatch.c
#ifdef WORDS_BIGENDIAN
swapped = 1;
#endif
@@ -454,6 +458,74 @@
@@ -452,6 +456,74 @@
exit(0);
}

View file

@ -0,0 +1,12 @@
diff -Naur arpwatch-3.4-original/arpwatch.c arpwatch-3.4/arpwatch.c
--- arpwatch-3.4-original/arpwatch.c 2023-09-05 13:50:56.000000000 -0400
+++ arpwatch-3.4/arpwatch.c 2023-09-06 09:52:14.851126556 -0400
@@ -892,7 +892,7 @@
lg(LOG_DEBUG, "exiting");
checkpoint(0);
- exit(1);
+ exit(0);
}
void

View file

@ -1,12 +0,0 @@
diff -Naur arpwatch-3.5-original/arpwatch.c arpwatch-3.5/arpwatch.c
--- arpwatch-3.5-original/arpwatch.c 2023-12-03 13:10:05.000000000 -0500
+++ arpwatch-3.5/arpwatch.c 2023-12-03 20:04:01.834691097 -0500
@@ -915,7 +915,7 @@
{
lg(LOG_DEBUG, "exiting");
checkpoint(0);
- exit(1);
+ exit(0);
}
void

View file

@ -1,40 +0,0 @@
Do not add /usr/local/bin or /usr/local/sbin to the PATH in any scripts.
diff -Naur arpwatch-3.9-original/arpfetch arpwatch-3.9/arpfetch
--- arpwatch-3.9-original/arpfetch 2013-02-16 08:10:28.000000000 +0000
+++ arpwatch-3.9/arpfetch 2025-10-23 23:27:24.285711332 +0100
@@ -4,8 +4,6 @@
# arpfetch - collect arp data from a cisco using net-snmp
#
-export PATH="/usr/local/bin:${PATH}"
-
prog=`basename $0`
if [ $# -ne 2 ]; then
diff -Naur arpwatch-3.9-original/bihourly.sh arpwatch-3.9/bihourly.sh
--- arpwatch-3.9-original/bihourly.sh 2016-09-17 03:40:54.000000000 +0100
+++ arpwatch-3.9/bihourly.sh 2025-10-23 23:27:24.285849999 +0100
@@ -3,9 +3,6 @@
#
# bihourly arpwatch job
#
-PATH=${PATH}:/usr/local/sbin
-export PATH
-#
cd /usr/local/arpwatch
#
list="`cat list`"
diff -Naur arpwatch-3.9-original/update-ethercodes.sh.in arpwatch-3.9/update-ethercodes.sh.in
--- arpwatch-3.9-original/update-ethercodes.sh.in 2025-10-23 20:32:08.000000000 +0100
+++ arpwatch-3.9/update-ethercodes.sh.in 2025-10-23 23:27:50.579194300 +0100
@@ -6,9 +6,6 @@
prog="`basename $0`"
-PATH=/usr/local/bin:${PATH}
-export PATH
-
t1=`mktemp /tmp/${prog}.1.XXXXXX`
trap 'rm -f ${t1}; exit 1' 1 2 3 15 EXIT

View file

@ -1,10 +1,9 @@
# These are not real spelling errors...
addFilter(r' spelling-error .* en_US (arpsnmp) ')
addFilter(r'spelling-error .* en_US (arpsnmp) ')
# The sticky bit on this directory protects root-owned files from unlinking or
# renaming by members of the arpwatch group.
addFilter(r' non-standard-dir-perm /var/lib/arpwatch 1775')
addFilter(r'non-standard-dir-perm /var/lib/arpwatch 1775')
# Known zero-length files
addFilter(r' zero-length /var/lib/arpwatch/arp.dat-?')
# This is beyond what we want to rewrite downstream, and is not necessarily a
# serious problem.
addFilter(r' binary-or-shlib-calls-gethostbyname ')
addFilter(r'zero-length /var/lib/arpwatch/arp.dat-?')
# Ghost file
addFilter(r'non-readable /var/lib/arpwatch/arp.dat.new 600')

View file

@ -1,41 +1,30 @@
%bcond autoreconf 1
Name: arpwatch
Epoch: 14
Version: 3.9
Version: 3.4
Release: %autorelease
Summary: Network monitoring tools for tracking IP addresses on a network
# SPDX matching with BSD-3-Clause confirmed at
# https://gitlab.com/fedora/legal/fedora-license-data/-/issues/49
License: BSD-3-Clause
#
# Any files under different licenses are part of the build system and do not
# contribute to the license of the binary RPM:
# - config.guess and config.sub are GPL-3.0-or-later
# - configure is FSFUL
# - configure is FSFULL
# - install-sh is X11
# - mkdep is BSD-4.3RENO
SourceLicense: %{shrink:
%{license} AND
BSD-4.3RENO AND
FSFUL AND
GPL-3.0-or-later AND
X11
}
# - mkdep is ??? (NTP-like)
License: BSD-3-Clause
URL: https://ee.lbl.gov/
Requires(pre): shadow-utils
Requires: /usr/sbin/sendmail
Requires: python3
BuildRequires: gcc
BuildRequires: make
%if %{with autoreconf}
BuildRequires: autoconf
%endif
BuildRequires: /usr/sbin/sendmail
BuildRequires: systemd-rpm-macros
%{?sysuser_requires_compat}
BuildRequires: python3-devel
BuildRequires: libpcap-devel
@ -48,56 +37,54 @@ Source0: https://ee.lbl.gov/downloads/arpwatch/arpwatch-%{version}.tar.gz
# updated), we store the file directly in the repository with the spec file;
# see the update-oui-csv script.
#
# File oui.csv last fetched 2025-12-11T07:07:44+00:00.
# File oui.csv last fetched 2023-11-10T18:21:43+00:00.
Source1: oui.csv
Source2: arpwatch.service
Source3: arpwatch.sysconfig
Source4: arp2ethers.8
Source5: massagevendor.8
Source6: arpwatch.sysusers
# The latest versions of all “arpwatch-3.1-*” patches were sent upstream by
# email 2021-04-24.
# Latest version of patches 19 sent upstream by email 2021-04-24.
# Fix section numbers in man page cross-references. With minor changes, this
# patch dates all the way back to arpwatch-2.1a4-man.patch, from RHBZ #15442.
Patch: arpwatch-3.1-man-references.patch
Patch1: arpwatch-3.1-man-references.patch
# Add, and document, a -u argument to change to a specified unprivileged user
# after establishing sockets. This combines and improves multiple previous
# patches; see patch header and changelog for notes.
Patch: arpwatch-3.2-change-user.patch
Patch2: arpwatch-3.2-change-user.patch
# Fix nonstandard sort flags in arp2ethers script.
Patch: arpwatch-3.1-arp2ethers-sort-invocation.patch
Patch3: arpwatch-3.1-arp2ethers-sort-invocation.patch
# Fix stray rm (of an undefined variable) in example arpfetch script.
Patch: arpwatch-3.1-arpfetch-stray-rm.patch
Patch4: arpwatch-3.1-arpfetch-stray-rm.patch
# Do not add /usr/local/bin or /usr/local/sbin to the PATH in any scripts
Patch: arpwatch-3.9-no-usr-local-path.patch
Patch5: arpwatch-3.2-no-usr-local-path.patch
# Do not attempt to search for local libpcap libraries lying around in the
# parent of the build directory, or anywhere else random. This is not expected
# to succeed anyway, but it is better to be sure.
Patch: arpwatch-3.1-configure-no-local-pcap.patch
Patch6: arpwatch-3.1-configure-no-local-pcap.patch
# RHBZ #244606: Correctly handle -n 0/32 to allow the user to disable reporting
# bogons from 0.0.0.0.
Patch: arpwatch-3.1-all-zero-bogon.patch
Patch7: arpwatch-3.1-all-zero-bogon.patch
# When arpwatch is terminated cleanly by a signal (INT/TERM/HUP) handler, the
# exit code should be zero for success instead of nonzero for failure.
Patch: arpwatch-3.5-exitcode.patch
Patch8: arpwatch-3.4-exitcode.patch
# When -i is not given, do not just try the first device found, but keep
# checking devices until a usable one is found, if any is available.
# Additionally, handle the case where a device provides both supported and
# unsupported datalink types.
Patch: arpwatch-3.5-devlookup.patch
# Replace _getshort(), “a glibc function that hasn't been declared in the
# installed headers for many, many years,” with ns_get16(). Fixes C99
# compatibility (https://bugzilla.redhat.com/show_bug.cgi?id=2166336). Sent
# upstream by email 2023-02-01.
Patch: arpwatch-3.3-c99.patch
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
Patch9: arpwatch-3.4-devlookup.patch
%global pkgstatedir %{_sharedstatedir}/arpwatch
%global service_user arpwatch
%global service_group arpwatch
# Soft static UID and GID; see
# https://fedoraproject.org/wiki/Packaging:UsersAndGroups#Soft_static_allocation
# for information, and the uidgid file in the setup package
# (https://pagure.io/setup/blob/master/f/uidgid) for the list of allocations,
# including the one for arpwatch.
%global service_uid 77
%global service_gid 77
%description
The arpwatch package contains arpwatch and arpsnmp. Arpwatch and arpsnmp are
@ -130,27 +117,19 @@ awk '/^ \* / { print substr($0, 4); } /^ \*\// { exit }' arpwatch.c |
tee LICENSE
%conf
%if %{with autoreconf}
autoreconf --force --install --verbose
%endif
%build
%set_build_flags
# Prior to version 3.4, this was handled by the configure script. If it is not
# defined, the build fails because time.h is not included in report.c. This
# defined, the build failes because time.h is not included in report.c. This
# regregression was reported upstream by email to arpwatch@ee.lbl.gov on
# 2023-09-06.
export CPPFLAGS="${CPPFLAGS-} -DTIME_WITH_SYS_TIME=1"
%configure --with-sendmail=/usr/sbin/sendmail PYTHON=%{python3}
%build
%make_build ARPDIR=%{pkgstatedir}
%install
install -p -D -m 0644 %{SOURCE6} '%{buildroot}%{_sysusersdir}/arpwatch.conf'
# The upstream Makefile does not create the directories it requires, so we must
# do it manually. Additionally, it attempts to comment out the installation of
# the init script on non-FreeBSD platforms, but this does not quite work as
@ -164,10 +143,6 @@ install -d %{buildroot}%{_mandir}/man8 \
%make_install
# Make install uses mode 0555, which is unconventional, and which can interfere
# with debuginfo generation since the file is not writable by its owner.
chmod -v 0755 %{buildroot}%{_sbindir}/arpwatch %{buildroot}%{_sbindir}/arpsnmp
install -p -t %{buildroot}%{_datadir}/arpwatch -m 0644 *.awk
install -p -t %{buildroot}%{_sbindir} arp2ethers
install -p massagevendor.py %{buildroot}%{_sbindir}/massagevendor
@ -214,6 +189,25 @@ fi
%systemd_post arpwatch.service
%pre
getent group %{service_group} >/dev/null ||
groupadd -f -g %{service_gid} -r %{service_group}
if ! getent passwd %{service_user} >/dev/null
then
if ! getent passwd %{service_uid} >/dev/null
then
useradd -r -u %{service_uid} -g %{service_group} \
-d %{pkgstatedir} -s /sbin/nologin \
-c "Service user for arpwatch" %{service_user}
else
useradd -r -g %{service_group} \
-d %{pkgstatedir} -s /sbin/nologin \
-c "Service user for arpwatch" %{service_user}
fi
fi
exit 0
%postun
%systemd_postun_with_restart arpwatch.service
@ -228,8 +222,9 @@ fi
%doc CHANGES
%doc arpfetch
%{_sbindir}/arpwatch
%{_sbindir}/arpsnmp
# make install uses mode 0555, which is unconventional
%attr(0755,-,-) %{_sbindir}/arpwatch
%attr(0755,-,-) %{_sbindir}/arpsnmp
# manually-installed scripts
%{_sbindir}/arp2ethers
%{_sbindir}/massagevendor
@ -241,14 +236,13 @@ fi
%attr(0644,-,-) %{_mandir}/man8/*.8*
%{_unitdir}/arpwatch.service
%{_sysusersdir}/arpwatch.conf
%config(noreplace) %{_sysconfdir}/sysconfig/arpwatch
%attr(1775,-,arpwatch) %dir %{pkgstatedir}
%attr(0644,arpwatch,arpwatch) %verify(not md5 size mtime) %config(noreplace) %{pkgstatedir}/arp.dat
%attr(0644,arpwatch,arpwatch) %verify(not md5 size mtime) %config(noreplace) %{pkgstatedir}/arp.dat-
%attr(0600,arpwatch,arpwatch) %verify(not md5 size mtime) %ghost %{pkgstatedir}/arp.dat.new
%attr(0644,-,arpwatch) %verify(not md5 size mtime) %config(noreplace) %{pkgstatedir}/ethercodes.dat
%attr(1775,-,%{service_group}) %dir %{pkgstatedir}
%attr(0644,%{service_user},%{service_group}) %verify(not md5 size mtime) %config(noreplace) %{pkgstatedir}/arp.dat
%attr(0644,%{service_user},%{service_group}) %verify(not md5 size mtime) %config(noreplace) %{pkgstatedir}/arp.dat-
%attr(0600,%{service_user},%{service_group}) %verify(not md5 size mtime) %ghost %{pkgstatedir}/arp.dat.new
%attr(0644,-,%{service_group}) %verify(not md5 size mtime) %config(noreplace) %{pkgstatedir}/ethercodes.dat
%changelog

View file

@ -1,2 +0,0 @@
#Type Name ID GECOS Home directory Shell
u arpwatch - "Service user for arpwatch" /var/lib/arpwatch /sbin/nologin

27178
oui.csv

File diff suppressed because it is too large Load diff

View file

@ -1 +1 @@
SHA512 (arpwatch-3.9.tar.gz) = b6fdda79caf6c79d78d629b28987d381981d8ac9150dd95c44ba0ed634d905446a8b64d73cdacca89d42a77965e0710d0a60184010440fed19168dae4e3dd4bd
SHA512 (arpwatch-3.4.tar.gz) = 0c984ec856e76df4475b367a2e5fb81d0bfdb00fd7730b303c0e1d422f2d2b4f8afef80082bf938d6a6a3b9855f4acfaea23b111430d5d13751271c5b4d70c36