diff --git a/ffho/ffho-wifi-mesh-macfilter/Makefile b/ffho/ffho-wifi-mesh-macfilter/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..65b1b7ebc6010f057a474ee4d1e5988699cde96e --- /dev/null +++ b/ffho/ffho-wifi-mesh-macfilter/Makefile @@ -0,0 +1,40 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=ffho-wifi-mesh-macfilter +PKG_VERSION:=1 +PKG_RELEASE:=1 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/ffho-wifi-mesh-macfilter + SECTION:=ffho + CATEGORY:=workarounds + TITLE:=WiFi - block/open 802.11s-mesh stations + DEPENDS:=+iw +uci +endef + +define Package/ffho-wifi-mesh-macfilter/description + Setting plink_action [block|open], when 802.11s mesh-interface comes up. + Define filterpolicy in uci wireless.<wifi-iface>.macfilter=[disable|deny|allow]. + Deny sets iw dev <device> station set <mac> plink_action block, and + allow sets iw dev <device> mesh_param mesh_auto_open_plink=0 and iw dev <device> station set <mac> plink_action open. + List MAC adresses (divided by spaces) in uci wireless.<wifi-iface>.maclist. +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/ffho-wifi-mesh-macfilter/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,ffho-wifi-mesh-macfilter)) diff --git a/ffho/ffho-wifi-mesh-macfilter/files/etc/hotplug.d/iface/80-wifi-mesh-macfilter b/ffho/ffho-wifi-mesh-macfilter/files/etc/hotplug.d/iface/80-wifi-mesh-macfilter new file mode 100644 index 0000000000000000000000000000000000000000..39b9072c09942ce19ba5fa3edf5b998245536bcd --- /dev/null +++ b/ffho/ffho-wifi-mesh-macfilter/files/etc/hotplug.d/iface/80-wifi-mesh-macfilter @@ -0,0 +1,27 @@ +#!/bin/sh + +local MODE +local POLICY +local IW_POLICY +local MAC +local MACLIST + +[[ "$ACTION" != ifup ]] && exit 0; + +. /lib/functions.sh +config_load "wireless" + +config_get MODE $INTERFACE mode +[[ $MODE != mesh ]] && exit 0; + +config_get POLICY $INTERFACE macfilter +case $POLICY in + deny) IW_POLICY="block";; + allow) IW_POLICY="open"; iw dev $DEVICE set mesh_param mesh_auto_open_plinks=0;; + *) exit 0;; +esac + +config_get MACLIST $INTERFACE maclist +for MAC in $MACLIST; do + iw dev $DEVICE station set $MAC plink_action $IW_POLICY +done