gluon-ebtables: use Lua instead of sh for the rule DSL to increase flexibility

This commit is contained in:
Matthias Schiffer 2014-05-14 15:02:57 +02:00
parent f3dcb8c86c
commit 7e6c2d563f
19 changed files with 55 additions and 56 deletions

View File

@ -1 +1 @@
chain MULTICAST_OUT DROP
chain('MULTICAST_OUT', 'DROP')

View File

@ -1 +1 @@
rule MULTICAST_OUT -p ARP -j RETURN
rule 'MULTICAST_OUT -p ARP -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv6 --ip6-protocol udp --ip6-destination-port 6696 -j RETURN
rule 'MULTICAST_OUT -p IPv6 --ip6-protocol udp --ip6-destination-port 6696 -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv4 --ip-destination 239.192.152.143 --ip-protocol udp --ip-destination-port 6771 -j RETURN
rule 'MULTICAST_OUT -p IPv4 --ip-destination 239.192.152.143 --ip-protocol udp --ip-destination-port 6771 -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv4 --ip-protocol udp --ip-destination-port 67 -j RETURN
rule 'MULTICAST_OUT -p IPv4 --ip-protocol udp --ip-destination-port 67 -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv6 --ip6-protocol udp --ip6-destination-port 546 -j RETURN
rule 'MULTICAST_OUT -p IPv6 --ip6-protocol udp --ip6-destination-port 546 -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv4 --ip-protocol icmp -j RETURN
rule 'MULTICAST_OUT -p IPv4 --ip-protocol icmp -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv6 --ip6-protocol ipv6-icmp -j RETURN
rule 'MULTICAST_OUT -p IPv6 --ip6-protocol ipv6-icmp -j RETURN'

View File

@ -1 +1 @@
rule MULTICAST_OUT -p IPv4 --ip-protocol igmp -j RETURN
rule 'MULTICAST_OUT -p IPv4 --ip-protocol igmp -j RETURN'

View File

@ -1,2 +1,2 @@
rule MULTICAST_OUT -p IPv4 --ip-protocol ospf -j RETURN
rule MULTICAST_OUT -p IPv6 --ip6-protocol ospf -j RETURN
rule 'MULTICAST_OUT -p IPv4 --ip-protocol ospf -j RETURN'
rule 'MULTICAST_OUT -p IPv6 --ip6-protocol ospf -j RETURN'

View File

@ -1,2 +1,2 @@
rule FORWARD --logical-out br-client -o bat0 -d Multicast -j MULTICAST_OUT
rule OUTPUT --logical-out br-client -o bat0 -d Multicast -j MULTICAST_OUT
rule 'FORWARD --logical-out br-client -o bat0 -d Multicast -j MULTICAST_OUT'
rule 'OUTPUT --logical-out br-client -o bat0 -d Multicast -j MULTICAST_OUT'

View File

@ -1,5 +1,5 @@
rule FORWARD -p IPv4 --ip-protocol udp --ip-destination-port 67 -j OUT_ONLY
rule OUTPUT -p IPv4 --ip-protocol udp --ip-destination-port 67 -j OUT_ONLY
rule 'FORWARD -p IPv4 --ip-protocol udp --ip-destination-port 67 -j OUT_ONLY'
rule 'OUTPUT -p IPv4 --ip-protocol udp --ip-destination-port 67 -j OUT_ONLY'
rule FORWARD -p IPv4 --ip-protocol udp --ip-destination-port 68 -j IN_ONLY
rule INPUT -p IPv4 --ip-protocol udp --ip-destination-port 68 -j IN_ONLY
rule 'FORWARD -p IPv4 --ip-protocol udp --ip-destination-port 68 -j IN_ONLY'
rule 'INPUT -p IPv4 --ip-protocol udp --ip-destination-port 68 -j IN_ONLY'

View File

@ -1,5 +1,5 @@
rule FORWARD -p IPv6 --ip6-protocol udp --ip6-destination-port 546 -j OUT_ONLY
rule OUTPUT -p IPv6 --ip6-protocol udp --ip6-destination-port 546 -j OUT_ONLY
rule 'FORWARD -p IPv6 --ip6-protocol udp --ip6-destination-port 546 -j OUT_ONLY'
rule 'OUTPUT -p IPv6 --ip6-protocol udp --ip6-destination-port 546 -j OUT_ONLY'
rule FORWARD -p IPv6 --ip6-protocol udp --ip6-destination-port 547 -j IN_ONLY
rule INPUT -p IPv6 --ip6-protocol udp --ip6-destination-port 547 -j IN_ONLY
rule 'FORWARD -p IPv6 --ip6-protocol udp --ip6-destination-port 547 -j IN_ONLY'
rule 'INPUT -p IPv6 --ip6-protocol udp --ip6-destination-port 547 -j IN_ONLY'

View File

@ -1,5 +1,5 @@
rule FORWARD -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -j OUT_ONLY
rule OUTPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -j OUT_ONLY
rule 'FORWARD -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -j OUT_ONLY'
rule 'OUTPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -j OUT_ONLY'
rule FORWARD -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -j IN_ONLY
rule INPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -j IN_ONLY
rule 'FORWARD -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -j IN_ONLY'
rule 'INPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -j IN_ONLY'

View File

@ -23,15 +23,14 @@ STOP=91
exec_file() {
local file="$1"
sh -c "
eval 'rule() {
$EBTABLES_RULE
}'
eval 'chain() {
$EBTABLES_CHAIN
}'
source \"$1\"
" - "$file"
/usr/bin/lua -e "
function rule(command)
os.execute($EBTABLES_RULE)
end
function chain(name, policy)
os.execute($EBTABLES_CHAIN)
end
" "$file"
}
exec_all() {
@ -49,8 +48,8 @@ exec_all() {
start() {
(
export EBTABLES_RULE='ebtables -A "$@"'
export EBTABLES_CHAIN='ebtables -N "$1" -P "$2"'
export EBTABLES_RULE='"ebtables -A " .. command'
export EBTABLES_CHAIN='"ebtables -N " .. name .. " -P " .. policy'
if [ -z "$1" ]; then
exec_all ''
@ -62,8 +61,8 @@ start() {
stop() {
(
export EBTABLES_RULE='ebtables -D "$@"'
export EBTABLES_CHAIN='ebtables -X "$1"'
export EBTABLES_RULE='"ebtables -D " .. command'
export EBTABLES_CHAIN='"ebtables -X " .. name'
if [ -z "$1" ]; then
exec_all '-r'

View File

@ -1,2 +1,2 @@
chain IN_ONLY RETURN
chain OUT_ONLY RETURN
chain('IN_ONLY', 'RETURN')
chain('OUT_ONLY', 'RETURN')

View File

@ -1,2 +1,2 @@
rule IN_ONLY --logical-in br-client -i ! bat0 -j DROP
rule OUT_ONLY --logical-out br-client -o ! bat0 -j DROP
rule 'IN_ONLY --logical-in br-client -i ! bat0 -j DROP'
rule 'OUT_ONLY --logical-out br-client -o ! bat0 -j DROP'

View File

@ -1,14 +1,14 @@
rule FORWARD --logical-out br-client -o bat0 -d @next_node.mac@ -j DROP
rule OUTPUT --logical-out br-client -o bat0 -d @next_node.mac@ -j DROP
rule FORWARD --logical-out br-client -o bat0 -s @next_node.mac@ -j DROP
rule OUTPUT --logical-out br-client -o bat0 -s @next_node.mac@ -j DROP
rule 'FORWARD --logical-out br-client -o bat0 -d @next_node.mac@ -j DROP'
rule 'OUTPUT --logical-out br-client -o bat0 -d @next_node.mac@ -j DROP'
rule 'FORWARD --logical-out br-client -o bat0 -s @next_node.mac@ -j DROP'
rule 'OUTPUT --logical-out br-client -o bat0 -s @next_node.mac@ -j DROP'
rule FORWARD --logical-out br-client -o bat0 -p IPv4 --ip-destination @next_node.ip4@ -j DROP
rule OUTPUT --logical-out br-client -o bat0 -p IPv4 --ip-destination @next_node.ip4@ -j DROP
rule FORWARD --logical-out br-client -o bat0 -p IPv4 --ip-source @next_node.ip4@ -j DROP
rule OUTPUT --logical-out br-client -o bat0 -p IPv4 --ip-source @next_node.ip4@ -j DROP
rule 'FORWARD --logical-out br-client -o bat0 -p IPv4 --ip-destination @next_node.ip4@ -j DROP'
rule 'OUTPUT --logical-out br-client -o bat0 -p IPv4 --ip-destination @next_node.ip4@ -j DROP'
rule 'FORWARD --logical-out br-client -o bat0 -p IPv4 --ip-source @next_node.ip4@ -j DROP'
rule 'OUTPUT --logical-out br-client -o bat0 -p IPv4 --ip-source @next_node.ip4@ -j DROP'
rule FORWARD --logical-out br-client -o bat0 -p IPv6 --ip6-destination @next_node.ip6@ -j DROP
rule OUTPUT --logical-out br-client -o bat0 -p IPv6 --ip6-destination @next_node.ip6@ -j DROP
rule FORWARD --logical-out br-client -o bat0 -p IPv6 --ip6-source @next_node.ip6@ -j DROP
rule OUTPUT --logical-out br-client -o bat0 -p IPv6 --ip6-source @next_node.ip6@ -j DROP
rule 'FORWARD --logical-out br-client -o bat0 -p IPv6 --ip6-destination @next_node.ip6@ -j DROP'
rule 'OUTPUT --logical-out br-client -o bat0 -p IPv6 --ip6-destination @next_node.ip6@ -j DROP'
rule 'FORWARD --logical-out br-client -o bat0 -p IPv6 --ip6-source @next_node.ip6@ -j DROP'
rule 'OUTPUT --logical-out br-client -o bat0 -p IPv6 --ip6-source @next_node.ip6@ -j DROP'

View File

@ -1,2 +1,2 @@
rule INPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -i bat0 -j DROP
rule OUTPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -o bat0 -j DROP
rule 'INPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -i bat0 -j DROP'
rule 'OUTPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -o bat0 -j DROP'