accea79
#!/bin/bash
accea79
accea79
EBTABLES="/sbin/ebtables"
accea79
accea79
[ -x "$EBTABLES" ] || exit 1
accea79
accea79
echo "# Generated by ebtables-save v1.0 on $(date)"
accea79
accea79
cnt=""
accea79
[ "x$EBTABLES_SAVE_COUNTER" = "xyes" ] && cnt="--Lc"
accea79
accea79
for table_name in $(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//); do
accea79
    table=$($EBTABLES -t $table_name -L $cnt)
accea79
    [ $? -eq 0 ] || { echo "$table"; exit -1; }
accea79
accea79
    chain=""
accea79
    rules=""
accea79
    while read line; do
accea79
	[ -z "$line" ] && continue
accea79
accea79
	case "$line" in 
accea79
	    Bridge\ table:\ *)
accea79
		echo "*${line:14}"
accea79
		;;
accea79
	    Bridge\ chain:\ *)
accea79
		chain="${line:14}"
accea79
		chain="${chain%%,*}"
accea79
		policy="${line##*policy: }"
accea79
		echo ":$chain $policy"
accea79
		;;
accea79
	    *)
accea79
		if [ "$cnt" = "--Lc" ]; then
accea79
		    line=${line/, pcnt \=/ -c}
accea79
		    line=${line/-- bcnt \=/}
accea79
		fi
accea79
		rules="$rules-A $chain $line\n"
accea79
		;;
accea79
	esac
accea79
    done <
accea79
$table
accea79
EOF
accea79
    echo -e $rules
accea79
done