Dear all,

I have attached a simple ebtables plugin for
netfilter-persistent. Just put it in
/usr/share/netfilter-persistent/plugins.d
and create /etc/ebtables/

Greetings,

Rik.

-- 
Nothing is ever a total loss; it can always serve as a bad example.
#!/bin/sh

# This file is part of netfilter-persistent
# (was iptables-persistent)
# Copyright (C) 2009, Simon Richter <[email protected]>
# Copyright (C) 2010, 2014 Jonathan Wiltshire <[email protected]>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, either version 3
# of the License, or (at your option) any later version.

set -e

rc=0
done=0

TABLES="filter nat broute"

for i in $TABLES; do
        modprobe -q ebtable_$i
done

RULES=/etc/ebtables/rules

if [ -x ebtables ]; then
        echo "Warning: ebtables binary not available"
        exit
fi

load_rules()
{
        #load ebtables rules
        for i in $TABLES; do
                done=1
                if [ -f $RULES.$i ]; then
                        ebtables -t $i --atomic-file $RULES.$i --atomic-commit
                        if [ $? -ne 0 ]; then
                                rc=1
                        fi
                fi
        done
        if [ "x$done" = "x0" ]; then
                echo "Warning: skipping ebtables (no rules to load)"
        fi
}

save_rules()
{
        #save ebtables rules
        for i in $TABLES; do
                ebtables -t $i --atomic-file $RULES.$i --atomic-save
                # zero the counters
                ebtables -t $i --atomic-file $RULES.$i -Z
        done
}

flush_rules()
{
        for i in $TABLES; do
                ebtable -t $i --init-table
        done
}

case "$1" in
start|restart|reload|force-reload)
        load_rules
        ;;
save)
        save_rules
        ;;
stop)
        # Why? because if stop is used, the firewall gets flushed for a variable
        # amount of time during package upgrades, leaving the machine vulnerable
        # It's also not always desirable to flush during purge
        echo "Automatic flushing disabled, use \"flush\" instead of \"stop\""
        ;;
flush)
        flush_rules
        ;;
*)
    echo "Usage: $0 {start|restart|reload|force-reload|save|flush}" >&2
    exit 1
    ;;
esac

exit $rc

Reply via email to