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