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