diff --git a/iptables.init b/iptables.init index 5cef28a..cc34783 100755 --- a/iptables.init +++ b/iptables.init @@ -147,7 +147,6 @@ flush_delete() printf %s "$i " $IPTABLES -t $i -F || RETVAL=1 done - $IPTABLES -F || RETVAL=1 [ "$RETVAL" -eq 0 ] && success "Flushing firewall rules" || failure "Flushing firewall rules" @@ -159,7 +158,6 @@ flush_delete() printf %s "$i " $IPTABLES -t $i -X || RETVAL=1 done - $IPTABLES -X || RETVAL=1 [ "$RETVAL" -eq 0 ] && success "Removing user defined chains" || failure "Removing user defined chains" @@ -171,7 +169,6 @@ flush_delete() printf %s "$i " $IPTABLES -t $i -Z || RETVAL=1 done - $IPTABLES -Z || RETVAL=1 [ "$RETVAL" -eq 0 ] && success "Zeroing packet and byte counters" || failure "Zeroing packet and byte counters" @@ -179,6 +176,17 @@ flush_delete() return $RETVAL } +unload_modules() +{ + local t + + for t in $tables; do + local m="${IPV}table_${t}" + action "Unloading module $m:" modprobe -r "$m" + done + return 0 +} + fwstatus() { local i @@ -233,7 +241,8 @@ stop() { if read_tables; then set_policy ACCEPT && - flush_delete + flush_delete && + unload_modules RETVAL=$? else printf %s $"$IPTABLES firewall is not started"