Blame | Last modification | View Log | RSS feed
#!/bin/bash## init script for the Ethernet Bridge filter tables## Written by Dag Wieers <dag@wieers.com># Modified by Rok Papez <rok.papez@arnes.si># Bart De Schuymer <bdschuym@pandora.be>## chkconfig: - 15 85# description: Ethernet Bridge filtering tables## config: /etc/sysconfig/ebtables (text)# /etc/sysconfig/ebtables.<table> (binary)source /etc/init.d/functionssource /etc/sysconfig/network# Check that networking is up.[ ${NETWORKING} = "no" ] && exit 0[ -x /sbin/ebtables ] || exit 5[ -x /sbin/ebtables-save ] || exit 5[ -x /sbin/ebtables-restore ] || exit 5RETVAL=0prog="ebtables"desc="Ethernet bridge filtering"umask 0077#default configurationEBTABLES_TEXT_FORMAT="yes"EBTABLES_BINARY_FORMAT="yes"EBTABLES_MODULES_UNLOAD="yes"EBTABLES_SAVE_ON_STOP="no"EBTABLES_SAVE_ON_RESTART="no"EBTABLES_SAVE_COUNTER="no"config=/etc/sysconfig/$prog-config[ -f "$config" ] && . "$config"start() {[ "$EUID" != "0" ] && exit 4echo -n $"Starting $desc ($prog): "if [ "$EBTABLES_BINARY_FORMAT" = "yes" ]; thenfor table in $(ls /etc/sysconfig/ebtables.* 2>/dev/null | sed -e 's/.*ebtables\.//' -e '/save/d' ); do/sbin/ebtables -t $table --atomic-file /etc/sysconfig/ebtables.$table --atomic-commit || RETVAL=1doneelse/sbin/ebtables-restore < /etc/sysconfig/ebtables || RETVAL=1fiif [ $RETVAL -eq 0 ]; thensuccess "$prog startup"touch "/var/lock/subsys/$prog"elsefailure "$prog startup"fiecho}stop() {[ "$EUID" != "0" ] && exit 4echo -n $"Stopping $desc ($prog): "for table in $(grep '^ebtable_' /proc/modules | sed -e 's/ebtable_\([^ ]*\).*/\1/'); do/sbin/ebtables -t $table --init-table || RETVAL=1doneif [ "$EBTABLES_MODULES_UNLOAD" = "yes" ]; thenfor mod in $(grep -E '^(ebt|ebtable)_' /proc/modules | cut -f1 -d' ') ebtables; dormmod $mod 2> /dev/nulldonefiif [ $RETVAL -eq 0 ]; thensuccess "$prog shutdown"rm -f "/var/lock/subsys/$prog"elsefailure "$prog shutdown"fiecho}restart() {[ "$EBTABLES_SAVE_ON_RESTART" = "yes" ] && savestopstart}save() {[ "$EUID" != "0" ] && exit 4echo -n $"Saving $desc ($prog): "if [ "$EBTABLES_TEXT_FORMAT" = "yes" ]; thenif [ -e /etc/sysconfig/ebtables ]; thenchmod 0600 /etc/sysconfig/ebtablesmv -f /etc/sysconfig/ebtables /etc/sysconfig/ebtables.savefi/sbin/ebtables-save > /etc/sysconfig/ebtables || RETVAL=1fiif [ "$EBTABLES_BINARY_FORMAT" = "yes" ]; thenrm -f /etc/sysconfig/ebtables.*.savefor oldtable in $(ls /etc/sysconfig/ebtables.* 2>/dev/null | grep -vF 'ebtables.save'); dochmod 0600 $oldtablemv -f $oldtable $oldtable.savedonefor table in $(grep '^ebtable_' /proc/modules | sed -e 's/ebtable_\([^ ]*\).*/\1/'); do/sbin/ebtables -t $table --atomic-file /etc/sysconfig/ebtables.$table --atomic-save || RETVAL=1if [ "$EBTABLES_SAVE_COUNTER" = "no" ]; then/sbin/ebtables -t $table --atomic-file /etc/sysconfig/ebtables.$table -Z || RETVAL=1fidonefiif [ $RETVAL -eq 0 ]; thensuccess "$prog saved"elsefailure "$prog saved"fiecho}case "$1" instart)[ -f "/var/lock/subsys/$prog" ] && exit 0start;;stop)[ "$EBTABLES_SAVE_ON_STOP" = "yes" ] && savestop;;restart|force-reload)restart;;reload)[ ! -f "/var/lock/subsys/$prog" ] && exit 7restart;;condrestart|try-restart)[ ! -e "/var/lock/subsys/$prog" ] && exit 0restart;;save)save;;status)[ -f "/var/lock/subsys/$prog" ] && RETVAL=0 || RETVAL=3/sbin/ebtables-save;;*)echo $"Usage $0 {start|stop|restart|condrestart|save|status}"RETVAL=2esacexit $RETVAL