Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wifi-mesh-macfilter: Setting plink_action, when 802.11s mesh-interface comes up #118

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions net/wifi-mesh-macfilter/Makefile
Original file line number Diff line number Diff line change
@@ -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.<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/wifi-mesh-macfilter/install
$(CP) ./files/* $(1)/
endef

$(eval $(call BuildPackage,wifi-mesh-macfilter))
Original file line number Diff line number Diff line change
@@ -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