From f7ffb388b17fd327e85f7e0c386a9d175b14e44e Mon Sep 17 00:00:00 2001 From: Stefan Sperling Date: Thu, 3 Mar 2016 21:06:38 +0100 Subject: [PATCH] Fix '/etc/init.d/olsrd6 restart' breaks IPv4 SmartGateway. Restarting olsrd for IPv6 clears SmartGateway firewall rules for both IPv4 and IPv6, and does not restore the IPv4 rules. As a result, IPv4 SmartGateway functionality is broken after /etc/init.d/olsrd6 restart. --- olsrd/files/olsrd.init | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/olsrd/files/olsrd.init b/olsrd/files/olsrd.init index 3ced911..87d6821 100644 --- a/olsrd/files/olsrd.init +++ b/olsrd/files/olsrd.init @@ -703,16 +703,24 @@ olsrd_setup_smartgw_rules() { IP6T=$(which ip6tables) # Delete smartgw firewall rules first - for IPT in $IP4T $IP6T; do - while $IPT -D forwarding_rule -o tnl_+ -j ACCEPT 2> /dev/null; do :;done + if [ "$UCI_CONF_NAME" == "olsrd6" ]; then + while $IP6T -D forwarding_rule -o tnl_+ -j ACCEPT 2> /dev/null; do :;done for IFACE in $wanifnames; do - while $IPT -D forwarding_rule -i tunl0 -o $IFACE -j ACCEPT 2> /dev/null; do :; done + while $IP6T -D forwarding_rule -i tunl0 -o $IFACE -j ACCEPT 2> /dev/null; do :; done done for IFACE in $ifsglobal; do - while $IPT -D input_rule -i $IFACE -p 4 -j ACCEPT 2> /dev/null; do :; done + while $IP6T -D input_rule -i $IFACE -p 4 -j ACCEPT 2> /dev/null; do :; done done - done - while $IP4T -t nat -D postrouting_rule -o tnl_+ -j MASQUERADE 2> /dev/null; do :;done + else + while $IP4T -D forwarding_rule -o tnl_+ -j ACCEPT 2> /dev/null; do :;done + for IFACE in $wanifnames; do + while $IP4T -D forwarding_rule -i tunl0 -o $IFACE -j ACCEPT 2> /dev/null; do :; done + done + for IFACE in $ifsglobal; do + while $IP4T -D input_rule -i $IFACE -p 4 -j ACCEPT 2> /dev/null; do :; done + done + while $IP4T -t nat -D postrouting_rule -o tnl_+ -j MASQUERADE 2> /dev/null; do :;done + fi if [ "$smartgateway" == "yes" ]; then log "$funcname() Notice: Inserting firewall rules for SmartGateway" -- 2.30.2