Add ebtables package
This commit is contained in:
parent
6543ef9725
commit
8f20b25632
36
package/gluon-ebtables/Makefile
Normal file
36
package/gluon-ebtables/Makefile
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=gluon-ebtables
|
||||||
|
PKG_VERSION:=0.3.2.99
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/gluon-ebtables
|
||||||
|
SECTION:=gluon
|
||||||
|
CATEGORY:=Gluon
|
||||||
|
TITLE:=Ebtables support
|
||||||
|
DEPENDS:=+gluon-core +ebtables +kmod-ebtables-ipv4 +kmod-ebtables-ipv6
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/gluon-ebtables/description
|
||||||
|
Gluon community wifi mesh firmware framework: ebtables support
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Prepare
|
||||||
|
mkdir -p $(PKG_BUILD_DIR)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Configure
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/gluon-ebtables/install
|
||||||
|
$(CP) ./files/* $(1)/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,gluon-ebtables))
|
74
package/gluon-ebtables/files/etc/init.d/gluon-ebtables
Executable file
74
package/gluon-ebtables/files/etc/init.d/gluon-ebtables
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (C) 2013 Project Gluon
|
||||||
|
#
|
||||||
|
# Firewall script for inserting and removing ebtables rules.
|
||||||
|
#
|
||||||
|
# Example format, for filtering any IPv4 multicast packets to the SSDP UDP port:
|
||||||
|
# rule FORWARD --logical-out br-client -d Multicast -p IPv4 --ip-protocol udp --ip-destination-port 5355 -j DROP
|
||||||
|
#
|
||||||
|
# Removing all rules:
|
||||||
|
# $ ./firewall-ebtables stop
|
||||||
|
# Inserting all rules:
|
||||||
|
# $ ./firewall-ebtables start
|
||||||
|
# Inserting a specific rule file:
|
||||||
|
# $ ./firewall-ebtables start /lib/gluon/ebtables/100-mcast-chain
|
||||||
|
# Removing a specific rule file:
|
||||||
|
# $ ./firewall-ebtables stop /lib/gluon/ebtables/100-mcast-chain
|
||||||
|
|
||||||
|
|
||||||
|
START=19
|
||||||
|
STOP=91
|
||||||
|
|
||||||
|
|
||||||
|
exec_file() {
|
||||||
|
local file="$1"
|
||||||
|
|
||||||
|
sh -c "
|
||||||
|
eval 'rule() {
|
||||||
|
$EBTABLES_RULE
|
||||||
|
}'
|
||||||
|
eval 'chain() {
|
||||||
|
$EBTABLES_CHAIN
|
||||||
|
}'
|
||||||
|
source \"$1\"
|
||||||
|
" - "$file"
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_all() {
|
||||||
|
local sort_arg="$1"
|
||||||
|
|
||||||
|
local old_ifs="$IFS"
|
||||||
|
IFS='
|
||||||
|
'
|
||||||
|
for file in `find /lib/gluon/ebtables -type f | sort $sort_arg`; do
|
||||||
|
exec_file "$file"
|
||||||
|
done
|
||||||
|
IFS="$old_ifs"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
start() {
|
||||||
|
(
|
||||||
|
export EBTABLES_RULE='ebtables -A "$@"'
|
||||||
|
export EBTABLES_CHAIN='ebtables -N "$1" -P "$2"'
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
exec_all ''
|
||||||
|
else
|
||||||
|
exec_file "$1"
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
(
|
||||||
|
export EBTABLES_RULE='ebtables -D "$@"'
|
||||||
|
export EBTABLES_CHAIN='ebtables -X "$1"'
|
||||||
|
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
exec_all '-r'
|
||||||
|
else
|
||||||
|
exec_file "$1"
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user