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.
43 lines
851 B
43 lines
851 B
#!/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
|
|
|