From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=209.85.216.44 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794170061; b=3HBY67fX7ETHWheb3HGHarpT+zTHhU3qocscFEQnxkCe4ODdjh8BODee1oLTW7Van67t AHLGg2bog4mIo38XPWncxWXiG/2DQqSPI/8oU80CghfvuQGJ1vgGP6TPKEGH7i3QAtl4Y eerpl+oIGFQngnanX/PN3EArMwALwXDCNbHLtt1lxdLIJdWeFKRoYmxXpHvg0sEStGnWY Sq8eO6dNkGNT+VeYhharaTC7zlBH20BHOR7IbvxSQrU+dtyTFT3rYDv6AbDY1G1R1DBJD 5H3kalNl6I3GJMRVvo+2VV7684r7/wudY024AARXN10HxE+iQjBb9zVnlrt58y2Mteg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794170061; h=DMARC-Filter:Received:DKIM-Signature:X-Google-DKIM-Signature: X-Gm-Message-State:X-Gm-Gg:X-Received:Received:From:To:Cc:Subject: Date:Message-ID:X-Mailer:MIME-Version:Content-Transfer-Encoding; bh=OfyPxkhPGNPMGFvLBwZAx3jv4eqYnhKxNevbPUnouxY=; b=08qfzG+QCQ+pC7E0XQPK184bczVblqESYKpaBOjjnMSm1LI24nZC+S40iHDajbG8lqw2 EXHBcgzrBZ+EAueM3JjIBE7erHThJsKsRw/LlHDmt1rOjD78eyC0fwpTcv5LgsXfARYuw ftj5ZRQdZyWsfcp0G/xqjNUnkLLuc02YZwhAtwXCFFfjRo64A/yrYsic4EnU2ENSfgHiy kHTXPDR/2cruQnp/yRAylXlV8TBZB2odetE08mbnXAxR7hdIONTOUnpCSo0lcuQwO/VbV 9sWc2HdHMKX1s2vBTkW7q0I/kKr73sLkdZJUP16fEdLXBSampMhnOwbw5KXzicKaliQ== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass header.from=networkplumber.org; spf=pass smtp.mailfrom=networkplumber.org; dkim=pass header.d=networkplumber-org.20260707.gappssmtp.com header.i=@networkplumber-org.20260707.gappssmtp.com header.a=rsa-sha256 header.s=20260707 header.b=AXG3lgYb; arc=none smtp.remote-ip=209.85.216.44 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9353B606D805 for ; Sun, 8 Nov 2026 20:34:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.2 smtp.subspace.kernel.org 9353B606D805 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=networkplumber.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=networkplumber.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=networkplumber-org.20260707.gappssmtp.com header.i=@networkplumber-org.20260707.gappssmtp.com header.a=rsa-sha256 header.s=20260707 header.b=AXG3lgYb Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-3b09a83d12aso167269a91.2 for ; Sun, 08 Nov 2026 12:34:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20260707.gappssmtp.com; s=20260707; t=1794170060; x=1794774860; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=OfyPxkhPGNPMGFvLBwZAx3jv4eqYnhKxNevbPUnouxY=; b=AXG3lgYbwMVDVI91jSPEwIr8a0yrDt9yDM8OUdX1lIzae13I4lqxZVW3R9sB7a32K2 SynRLM10E6ewQ9cfnUfdsEHuiZqXfqbnVPTk9J4n24BML12olyLlWr0Cf4iZYb3Go89r fAnewjSSHRI9K5vyeb0WgRRoh4+jcl47h0CX/WwWKN1/UcCU66EjEkh539uOu+ABpiPY K+aSMICvKw3tc50d73WR1uvXwc2lb+wbokVra2EJAT9fFpx0gHRXEJaYSBOM6LlacRTs YH5LG2JbrxKV9f95Hn7au6OLK/K4qVeNrAUY6U8kcE1xClZ4BDvuJY+/7tYZNvblPkw1 Pzcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1794170060; x=1794774860; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OfyPxkhPGNPMGFvLBwZAx3jv4eqYnhKxNevbPUnouxY=; b=Cvaxz38DF73LJioOKRv/8ivoplvKLiJ9V6BqdwNlCYqsCDPw2IrYmYUKx1j0d95Uos hz/STHIk6fNX6bs7aNwKPFLOce2wGGA+ZIEHspCINt/bHPNjus7ESV1YwtPpL777rXGq 4GQRC5BzNsGiyWdkrNEf2m89BfnV2iHvEyacQHlv926D1d5gddxyYK7tddQiIvnO+MUS XEdxKAzX5NunF/ZV+VeVstEIM9MfxsaJp73WtrjUBcnAOlnN8qr+v1Fz1YEqxbpci+WQ eXFbj+MOPpc2MNnBblZ7zb79FQH+hBr+ndomiZ0GWnuLUG0Cl104GieWI3Gvj7Rh/8ko 1IiA== X-Gm-Message-State: APuU4Z/dJAJuZxhIQ+W55NevnE3YvAIFX1mgCU/CaIuQk/oYTO6VXVGe tWdFUTpjws+yqnbX/3d+S/CSJjaAtYl1V1PTgRS532Ty/De2MiCcBsNOXcnjpKESzjq3vDDGnNl 2K1YT X-Gm-Gg: AYBFou2VIWYJ67QJUFszx4ati0Uq3hK3ReYj5MLAhn9f3OZe4K15sW4iVqFtaapVWZw +EoRxefuGA6O6h7JrKMnlvnmJcbkdv/fIpiAH6pjzGqWUfA2XQ0gZv+5OLqBEzAoCN4w38K4Gj+ bmoZcMujip2WOU+pjpx6TVQnv8Te3Ip7VSrZoWGE66GdMhlqp4yyXkAFng12OKp0Ezi8oFnd62t X7t+zHCJyghrd1c02kygO30TsneLv6vigVlF7bj+5uCtT96w95qk6ysdxCAZnldr9HqdY0XZC8b LqFjj4Fk0amFYjXhdsFVAGC8s3Ae7gb+5yEwLmEa1eEKZicVnEDRYrxTWT5pFTwn4xPhdOyVJ5+ hEFU1ra49fZlxqwxSIO/n3HjdDkwN/EDAGmvgX/a4Re8z0nEOg16/l+tphIFIRwC0fVpr1NtA4A UAFKRNIGiKz7Yb3FtEhFKSULDAP4r3UIpzqUb6GfLCXJSfQ60+Zv7QdJ+73kxhc6X1ptMZW2ta0 mnfKnOJZQStR0cQsedqgcz7vm7Su29lPEci2YI/xiR5Iqc34EGSy+MnclyI8p8RmMhgQtnTflIh xYhIaAZHDwJZTqfQWXaswu+26aNDlt25nYaULaCY8cDBjgt7wkKnZQ6b8DVX8fohsKu9o1qE3Bt 6Nhf/qNVCC31GIA== X-Received: by 2002:a17:90b:39ab:b0:3ac:bc3d:6fe5 with SMTP id 98e67ed59e1d1-3b12d108a23mr2225732a91.7.1794170059491; Sun, 08 Nov 2026 12:34:19 -0800 (PST) Received: from phoenix.lan (204-195-112-43.wavecable.com. [204.195.112.43]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3b127fad1d3sm4058812a91.11.2026.11.08.12.34.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 Nov 2026 12:34:19 -0800 (PST) From: Stephen Hemminger To: netdev@vger.kernel.org Cc: dsahern@kernel.org, Stephen Hemminger Subject: [PATCH iproute2-next v2] arpd: remove Date: Sun, 8 Nov 2026 12:33:34 -0800 Message-ID: <20261108203417.1207407-1-stephen@networkplumber.org> X-Mailer: git-send-email 2.53.0 X-Mailing-List: netdev@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit arpd, the userspace ARP daemon, passed away quietly in misc/. Born last century to Alexey Kuznetsov, it spent its youth answering kernel neighbour solicitations for networks too large for the in-kernel table, keeping its memories in a Berkeley DB file. In its final years its only visitors were tree-wide cleanups, who stopped by to add an SPDX tag and fix its whitespace. It outlived the problem it was built to solve, as neighbour tables grew up and learned to take care of themselves. arpd was predeceased by its lifelong companion libdb, which Fedora has already laid to rest; Debian is making arrangements. Unable to build without it, arpd chose to go with dignity rather than be kept alive on a bundled copy. It is survived by ip neigh, which does the job without a database. In lieu of flowers, please drop libdb from your build dependencies. Signed-off-by: Stephen Hemminger --- v2 - claude review found some more dead bits to remove Makefile | 5 - README | 11 +- configure | 23 -- man/man8/arpd.8 | 69 ---- misc/.gitignore | 1 - misc/Makefile | 7 - misc/arpd.c | 841 ------------------------------------------------ 7 files changed, 2 insertions(+), 955 deletions(-) delete mode 100644 man/man8/arpd.8 delete mode 100644 misc/arpd.c diff --git a/Makefile b/Makefile index 6f5d4765..6e4e6a85 100644 --- a/Makefile +++ b/Makefile @@ -24,13 +24,9 @@ CONF_ETC_DIR?=/etc/iproute2 CONF_USR_DIR?=$(DATADIR)/iproute2 DOCDIR?=$(DATADIR)/doc/iproute2 MANDIR?=$(DATADIR)/man -ARPDDIR?=/var/lib/arpd KERNEL_INCLUDE?=/usr/include BASH_COMPDIR?=$(DATADIR)/bash-completion/completions -# Path to db_185.h include -DBM_INCLUDE:=$(DESTDIR)/usr/include - SHARED_LIBS = y DEFINES= -DRESOLVE_HOSTNAMES -DLIBDIR=\"$(LIBDIR)\" @@ -42,7 +38,6 @@ DEFINES+=-DCONF_USR_DIR=\"$(CONF_USR_DIR)\" \ -DCONF_ETC_DIR=\"$(CONF_ETC_DIR)\" \ -DNETNS_RUN_DIR=\"$(NETNS_RUN_DIR)\" \ -DNETNS_ETC_DIR=\"$(NETNS_ETC_DIR)\" \ - -DARPDDIR=\"$(ARPDDIR)\" \ -DCONF_COLOR=$(CONF_COLOR) #options for mpls diff --git a/README b/README index 6ddf6015..7b612870 100644 --- a/README +++ b/README @@ -27,21 +27,14 @@ Support (LTS) kernel version. How to compile this. -------------------- -1. libdbm -arpd needs to have the berkeleydb development libraries. For Debian -users this is the package with a name like libdbX.X-dev. -DBM_INCLUDE points to the directory with db_185.h which -is the include file used by arpd to get to the old format Berkeley -database routines. Often this is in the db-devel package. - -2. make +1. make The makefile will automatically build a config.mk file which contains definitions of libraries that may or may not be available on the system such as: ATM, ELF, MNL, and SELINUX. -3. include/uapi +2. include/uapi This package includes matching sanitized kernel headers because the build environment may not have up to date versions. See Makefile diff --git a/configure b/configure index ebc0d97a..e0820857 100755 --- a/configure +++ b/configure @@ -401,26 +401,6 @@ check_mnl() fi } -check_berkeley_db() -{ - cat >$TMPDIR/dbtest.c < -#include -#include -int main(int argc, char **argv) { - dbopen("/tmp/xxx_test_db.db", O_CREAT|O_RDWR, 0644, DB_HASH, NULL); - return 0; -} -EOF - if $CC -I$INCLUDE -o $TMPDIR/dbtest $TMPDIR/dbtest.c -ldb >/dev/null 2>&1; then - echo "HAVE_BERKELEY_DB:=y" >>$CONFIG - echo "yes" - else - echo "no" - fi - rm -f $TMPDIR/dbtest.c $TMPDIR/dbtest -} - check_strlcpy() { cat >$TMPDIR/strtest.c < ] - -.SH DESCRIPTION -The -.B arpd -daemon collects gratuitous ARP information, saving it on local disk and feeding it to the kernel on demand to avoid redundant broadcasting due to limited size of the kernel ARP cache. - -.SH OPTIONS -.TP --h -? -Print help -.TP --l -Dump the arpd database to stdout and exit. The output consists of three columns: the interface index, the IP address of the interface, and the MAC address of the interface. Negative entries for dead hosts are also shown, in this case the MAC address is replaced by the word FAILED followed by a colon and the most recent time when the fact that the host is dead was proven. -.TP --f -Read and load an arpd database from FILE in a text format similar to that dumped by option -l. Exit after load, possibly listing resulting database, if option -l is also given. If FILE is -, stdin is read to get the ARP table. -.TP --b -the location of the database file. The default location is /var/lib/arpd/arpd.db -.TP --a -With this option, arpd not only passively listens for ARP packets on the interface, but also sends broadcast queries itself. NUMBER is the number of such queries to make before a destination is considered dead. When arpd is started as kernel helper (i.e. with app_solicit enabled in sysctl or even with option -k) without this option and still did not learn enough information, you can observe 1 second gaps in service. Not fatal, but not good. -.TP --k -Suppress sending broadcast queries by the kernel. This option only makes sense together with option -a. -.TP --n