From c25b8459175a22c5ba7a5eb20806601815fe631c Mon Sep 17 00:00:00 2001 From: kb-light Date: Mon, 31 Aug 2015 22:04:12 +0200 Subject: [PATCH] wifi-mesh-macfilter: Setting plink_action [block|open], when 802.11s mesh-interface comes up --- net/wifi-mesh-macfilter/Makefile | 40 +++++++++++++++++++ .../hotplug.d/iface/80-wifi-mesh-macfilter | 27 +++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 net/wifi-mesh-macfilter/Makefile create mode 100644 net/wifi-mesh-macfilter/files/etc/hotplug.d/iface/80-wifi-mesh-macfilter diff --git a/net/wifi-mesh-macfilter/Makefile b/net/wifi-mesh-macfilter/Makefile new file mode 100644 index 0000000..cd71154 --- /dev/null +++ b/net/wifi-mesh-macfilter/Makefile @@ -0,0 +1,40 @@ +include $(TOPDIR)/rules.mk + +PKG_NAME:=wifi-mesh-macfilter +PKG_VERSION:=1 +PKG_RELEASE:=1 + +PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) + +include $(INCLUDE_DIR)/package.mk + +define Package/wifi-mesh-macfilter + SECTION:=net + CATEGORY:=NETWORK + TITLE:=WiFi - block/open 802.11s-mesh stations + DEPENDS:=+iw +uci +endef + +define Package/wifi-mesh-macfilter/description + Setting plink_action [block|open], when 802.11s mesh-interface comes up. + Define filterpolicy in uci wireless..macfilter=[disable|deny|allow]. + Deny sets iw dev station set plink_action block, and + allow sets iw dev mesh_param mesh_auto_open_plink=0 and iw dev station set plink_action open. + List MAC adresses (divided by spaces) in uci wireless..maclist. +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) +endef + +define Build/Configure +endef + +define Build/Compile +endef + +define Package/wifi-mesh-macfilter/install + $(CP) ./files/* $(1)/ +endef + +$(eval $(call BuildPackage,wifi-mesh-macfilter)) diff --git a/net/wifi-mesh-macfilter/files/etc/hotplug.d/iface/80-wifi-mesh-macfilter b/net/wifi-mesh-macfilter/files/etc/hotplug.d/iface/80-wifi-mesh-macfilter new file mode 100644 index 0000000..39b9072 --- /dev/null +++ b/net/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