aboutsummaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorFacundo Acevedo <facevedo@disroot.org>2023-06-09 20:47:59 -0300
committerJosef Schlehofer <pepe.schlehofer@gmail.com>2023-06-18 07:44:06 +0200
commitce0749a477d64b23fc77e6bd24d18903263ac4c6 (patch)
tree621b735936b175498e17361837782083db3d7453 /utils
parentb0f8ca045da65147731c56dfa3e5eb1f70e70f7f (diff)
arp-whisper: Add new package
arp-whisper listens to ARP requests on a network interface and responds to them based on a list of IP-MAC address mappings defined in a configuration file Signed-off-by: Facundo Acevedo <facevedo@disroot.org>
Diffstat (limited to 'utils')
-rw-r--r--utils/arp-whisper/Makefile53
-rw-r--r--utils/arp-whisper/files/arp-whisper.init14
-rw-r--r--utils/arp-whisper/files/etc/arp-whisper/arp-whisper8
3 files changed, 75 insertions, 0 deletions
diff --git a/utils/arp-whisper/Makefile b/utils/arp-whisper/Makefile
new file mode 100644
index 000000000..23461f998
--- /dev/null
+++ b/utils/arp-whisper/Makefile
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: GPL-3.0-only
+#
+# Copyright (C) 2023 Facundo Acevedo
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=arp-whisper
+PKG_VERSION:=0.1.2
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/FacundoAcevedo/arp-whisper/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=13b393c64505d62b5abf7ace244eed0ce62f4b1562a688ddb5651bd42cc7c305
+
+PKG_MAINTAINER:=Facundo Acevedo <facevedo@disroot.org>
+PKG_LICENSE:=GPL-3.0-or-later
+PKG_LICENSE_FILES:=LICENCE
+
+PKG_BUILD_DEPENDS:=rust/host
+
+include $(INCLUDE_DIR)/package.mk
+include ../../lang/rust/rust-package.mk
+
+define Package/arp-whisper
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=ARP responses based on MAC-IP pairs
+ DEPENDS:=$(RUST_ARCH_DEPENDS)
+ URL:=https://github.com/FacundoAcevedo/arp-whisper
+endef
+
+define Package/arp-whisper/description
+ arp-whisper listens to ARP requests on a network interface and responds
+ to them based on a list of IP-MAC address mappings defined in a
+ configuration file.
+endef
+
+define Package/arp-whisper/conffiles
+/etc/arp-whisper/arp-whisper
+endef
+
+define Package/arp-whisper/install
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/bin/arp-whisper $(1)/usr/sbin/
+ $(INSTALL_DIR) $(1)/etc
+ $(INSTALL_DIR) $(1)/etc/arp-whisper
+ $(INSTALL_CONF) ./files/etc/arp-whisper/arp-whisper $(1)/etc/arp-whisper
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/arp-whisper.init $(1)/etc/init.d/arp-whisper
+endef
+
+$(eval $(call RustBinPackage,arp-whisper))
+$(eval $(call BuildPackage,arp-whisper))
diff --git a/utils/arp-whisper/files/arp-whisper.init b/utils/arp-whisper/files/arp-whisper.init
new file mode 100644
index 000000000..f5a29773d
--- /dev/null
+++ b/utils/arp-whisper/files/arp-whisper.init
@@ -0,0 +1,14 @@
+#!/bin/sh /etc/rc.common
+
+START=60
+USE_PROCD=1
+PROG=/usr/sbin/arp-whisper
+CONF_FILE=/etc/arp-whisper/arp-whisper
+
+start_service() {
+ procd_open_instance
+ procd_set_param command "$PROG" "$CONF_FILE"
+ procd_set_param stdout 1
+ procd_set_param stderr 1
+ procd_close_instance
+}
diff --git a/utils/arp-whisper/files/etc/arp-whisper/arp-whisper b/utils/arp-whisper/files/etc/arp-whisper/arp-whisper
new file mode 100644
index 000000000..d2d8de71f
--- /dev/null
+++ b/utils/arp-whisper/files/etc/arp-whisper/arp-whisper
@@ -0,0 +1,8 @@
+logging_level = "info"
+[Network]
+interface = br-lan
+
+[Hosts]
+; ip = mac_address
+; 192.168.1.2 = aa:bb:cc:dd:ee:ff
+; 192.168.1.3 = 00:11:22:33:44:55