Skip to content
Snippets Groups Projects
Commit 0953c9be authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

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

parent ee829e8c
No related branches found
No related tags found
No related merge requests found
Showing
with 55 additions and 56 deletions
chain MULTICAST_OUT DROP chain('MULTICAST_OUT', 'DROP')
rule MULTICAST_OUT -p ARP -j RETURN rule 'MULTICAST_OUT -p ARP -j RETURN'
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'
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'
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'
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'
rule MULTICAST_OUT -p IPv4 --ip-protocol icmp -j RETURN rule 'MULTICAST_OUT -p IPv4 --ip-protocol icmp -j RETURN'
rule MULTICAST_OUT -p IPv6 --ip6-protocol ipv6-icmp -j RETURN rule 'MULTICAST_OUT -p IPv6 --ip6-protocol ipv6-icmp -j RETURN'
rule MULTICAST_OUT -p IPv4 --ip-protocol igmp -j RETURN rule 'MULTICAST_OUT -p IPv4 --ip-protocol igmp -j RETURN'
rule MULTICAST_OUT -p IPv4 --ip-protocol ospf -j RETURN rule 'MULTICAST_OUT -p IPv4 --ip-protocol ospf -j RETURN'
rule MULTICAST_OUT -p IPv6 --ip6-protocol ospf -j RETURN rule 'MULTICAST_OUT -p IPv6 --ip6-protocol ospf -j RETURN'
rule FORWARD --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 rule 'OUTPUT --logical-out br-client -o bat0 -d Multicast -j MULTICAST_OUT'
rule FORWARD -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 '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 '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 'INPUT -p IPv4 --ip-protocol udp --ip-destination-port 68 -j IN_ONLY'
rule FORWARD -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 '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 '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 'INPUT -p IPv6 --ip6-protocol udp --ip6-destination-port 547 -j IN_ONLY'
rule FORWARD -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 '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 '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 'INPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -j IN_ONLY'
...@@ -23,15 +23,14 @@ STOP=91 ...@@ -23,15 +23,14 @@ STOP=91
exec_file() { exec_file() {
local file="$1" local file="$1"
sh -c " /usr/bin/lua -e "
eval 'rule() { function rule(command)
$EBTABLES_RULE os.execute($EBTABLES_RULE)
}' end
eval 'chain() { function chain(name, policy)
$EBTABLES_CHAIN os.execute($EBTABLES_CHAIN)
}' end
source \"$1\" " "$file"
" - "$file"
} }
exec_all() { exec_all() {
...@@ -49,8 +48,8 @@ exec_all() { ...@@ -49,8 +48,8 @@ exec_all() {
start() { start() {
( (
export EBTABLES_RULE='ebtables -A "$@"' export EBTABLES_RULE='"ebtables -A " .. command'
export EBTABLES_CHAIN='ebtables -N "$1" -P "$2"' export EBTABLES_CHAIN='"ebtables -N " .. name .. " -P " .. policy'
if [ -z "$1" ]; then if [ -z "$1" ]; then
exec_all '' exec_all ''
...@@ -62,8 +61,8 @@ start() { ...@@ -62,8 +61,8 @@ start() {
stop() { stop() {
( (
export EBTABLES_RULE='ebtables -D "$@"' export EBTABLES_RULE='"ebtables -D " .. command'
export EBTABLES_CHAIN='ebtables -X "$1"' export EBTABLES_CHAIN='"ebtables -X " .. name'
if [ -z "$1" ]; then if [ -z "$1" ]; then
exec_all '-r' exec_all '-r'
......
chain IN_ONLY RETURN chain('IN_ONLY', 'RETURN')
chain OUT_ONLY RETURN chain('OUT_ONLY', 'RETURN')
rule IN_ONLY --logical-in br-client -i ! 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 rule 'OUT_ONLY --logical-out br-client -o ! bat0 -j DROP'
rule FORWARD --logical-out br-client -o bat0 -d @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 '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 '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 '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 '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 '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 '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 '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 '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 '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 '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 'OUTPUT --logical-out br-client -o bat0 -p IPv6 --ip6-source @next_node.ip6@ -j DROP'
rule INPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-solicitation -i 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 rule 'OUTPUT -p IPv6 --ip6-protocol ipv6-icmp --ip6-icmp-type router-advertisement -o bat0 -j DROP'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment