You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
851 B
44 lines
851 B
6 years ago
|
#!/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
|