bsbf-openwrt-resources: add

Designate bsbf-openwrt-resources as the package to contain the BSBF
packages without a remote source to fetch.

Move bsbf-bonding and bsbf-usb-netdev-autodhcp into bsbf-openwrt-resources.
Change bsbf-usb-netdev-autodhcp to bsbf-autoconf-dhcp along with the logic.

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
This commit is contained in:
Chester A. Unal
2026-03-02 12:35:25 +02:00
parent 7d0db39fc8
commit 6037422f53
6 changed files with 57 additions and 69 deletions

View File

@@ -3,7 +3,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=bsbf-bonding
PKG_NAME:=bsbf-openwrt-resources
PKG_VERSION:=1
PKG_LICENSE:=AGPL-3.0-or-later
@@ -11,6 +11,17 @@ PKG_MAINTAINER:=Chester A. Unal <chester.a.unal@arinc9.com>
include $(INCLUDE_DIR)/package.mk
define Package/bsbf-autoconf-dhcp
SECTION:=net
CATEGORY:=Network
TITLE:=bsbf-autoconf-dhcp
endef
define Package/bsbf-autoconf-dhcp/description
bsbf-autoconf-dhcp creates a network with a DHCP client using a newly created
network interface. It uses metric values from 1 to 8.
endef
define Package/bsbf-bonding
SECTION:=net
CATEGORY:=Network
@@ -26,6 +37,11 @@ endef
define Build/Compile
endef
define Package/bsbf-autoconf-dhcp/install
$(INSTALL_DIR) $(1)/etc/hotplug.d/net
$(INSTALL_BIN) ./files/etc/hotplug.d/net/99-bsbf-autoconf-dhcp $(1)/etc/hotplug.d/net
endef
define Package/bsbf-bonding/install
$(INSTALL_DIR) $(1)/etc/nftables.d
$(INSTALL_DATA) ./files/etc/nftables.d/99-bsbf-bonding.nft $(1)/etc/nftables.d
@@ -34,4 +50,5 @@ define Package/bsbf-bonding/install
$(INSTALL_BIN) ./files/etc/uci-defaults/99-bsbf-bonding $(1)/etc/uci-defaults
endef
$(eval $(call BuildPackage,bsbf-autoconf-dhcp))
$(eval $(call BuildPackage,bsbf-bonding))

View File

@@ -0,0 +1,39 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-or-later
# Copyright (C) 2025-2026 Chester A. Unal <chester.a.unal@arinc9.com>
# Only run if a non-virtual network interface is being added.
[ "$ACTION" = "add" ] && echo "$DEVPATH" | grep -qv virtual || exit
# Exclude MBIM and QMI network interfaces which a DHCP client wouldn't work on.
grep -E "(mbim|qmi)" /sys"${DEVPATH%/*/*}/uevent" && exit
# Exit if a network with the network interface already exists.
uci_network=$(uci show network)
echo "$uci_network" | grep -q ".device='$DEVICENAME'" && exit
# Decide on the metric value. Start from 1 and work up to 8.
metric=1
while [ $metric -le 8 ]; do
# Break if this metric isn't in use.
echo "$uci_network" | grep -q ".metric='$metric'" || break
# Add 1 to metric if another network uses this metric.
metric=$((metric + 1))
done
# If there are no available metrics, exit with code 1.
[ "$metric" -gt 8 ] && exit 1
# Decide on the network name. Start from wan1.
index=1
while echo "$uci_network" | grep -q "wan$index"; do
index=$((index + 1))
done
uci set network.wan$index=interface
uci set network.wan$index.device="$DEVICENAME"
uci set network.wan$index.proto='dhcp'
uci set network.wan$index.peerdns='0'
uci set network.wan$index.metric="$metric"
uci commit network
ifup wan$index

View File

@@ -1,33 +0,0 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
# Copyright (C) 2025-2026 Chester A. Unal <chester.a.unal@arinc9.com>
include $(TOPDIR)/rules.mk
PKG_NAME:=bsbf-usb-netdev-autodhcp
PKG_VERSION:=1
PKG_LICENSE:=AGPL-3.0-or-later
PKG_MAINTAINER:=Chester A. Unal <chester.a.unal@arinc9.com>
include $(INCLUDE_DIR)/package.mk
define Package/bsbf-usb-netdev-autodhcp
SECTION:=net
CATEGORY:=Network
TITLE:=bsbf-usb-netdev-autodhcp
endef
define Package/bsbf-usb-netdev-autodhcp/description
bsbf-usb-netdev-autodhcp creates a network with a DHCP client using a newly
created network interface. It uses metric values from 1 to 8.
endef
define Build/Compile
endef
define Package/bsbf-usb-netdev-autodhcp/install
$(INSTALL_DIR) $(1)/etc/hotplug.d/net
$(INSTALL_BIN) ./files/etc/hotplug.d/net/99-bsbf-usb-netdev-autodhcp $(1)/etc/hotplug.d/net
endef
$(eval $(call BuildPackage,bsbf-usb-netdev-autodhcp))

View File

@@ -1,35 +0,0 @@
#!/bin/sh
# SPDX-License-Identifier: AGPL-3.0-or-later
# Copyright (C) 2025-2026 Chester A. Unal <chester.a.unal@arinc9.com>
# Only run if a network interface from a USB device is being added.
[ "$ACTION" = "add" ] && echo "$DEVPATH" | grep -q usb || exit
# Exclude wwan and qmimux network interfaces which a DHCP client wouldn't work
# on.
case "$DEVICENAME" in
wwan*|qmimux*) exit ;;
esac
# Decide on the metric value. Start from 1 and work up to 8.
metric=1
while [ $metric -le 8 ]; do
# Break if this metric isn't in use.
uci show network | grep -q ".metric='$metric'" || break
# Exit if this metric is in use for the same network interface.
[ "$(uci get network.wan_"$DEVICENAME".metric)" = "$metric" ] && exit
# Add 1 to metric if another network uses this metric.
metric=$((metric + 1))
done
# If there are no available metrics, exit with code 1.
[ "$metric" -gt 8 ] && exit 1
uci set network.wan_"$DEVICENAME"=interface
uci set network.wan_"$DEVICENAME".device="$DEVICENAME"
uci set network.wan_"$DEVICENAME".proto='dhcp'
uci set network.wan_"$DEVICENAME".peerdns='0'
uci set network.wan_"$DEVICENAME".metric="$metric"
uci commit network
ifup wan_"$DEVICENAME"