diff options
author | Bart De Schuymer <bdschuym@pandora.be> | 2005-06-14 19:17:48 +0000 |
---|---|---|
committer | Bart De Schuymer <bdschuym@pandora.be> | 2005-06-14 19:17:48 +0000 |
commit | 865444dd154e06ae67a79bf5c33a00d122296995 (patch) | |
tree | bbafa72eb013a767d17ee6533d7b051f42a4bd74 /ebtables-save | |
parent | 9d14e84a8f4104afe75dd732e058819de862c526 (diff) |
Rok Papez <rok.papez_at_ames.si>
Diffstat (limited to 'ebtables-save')
-rw-r--r-- | ebtables-save | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/ebtables-save b/ebtables-save new file mode 100644 index 0000000..df30790 --- /dev/null +++ b/ebtables-save @@ -0,0 +1,53 @@ +#!/usr/bin/perl -w +# +# +# A script that generates text output of the ebtables rules. +# Similar to iptables-save. +# +# It can be used to store active configuration to /etc/sysconfig/ebtables + +use strict; +my $table; + +# ======================================================== +# Process filter table +# ======================================================== +sub process_table { + my $chain = ""; + my $rules = ""; + my $chains = ""; + my $line = ""; + + foreach $line (split("\n",$_[0])) { + if ($line =~ m/Bridge table: (.*)/) { + print "*$1\n"; + next; + } + if ($line =~ m/Bridge chain: (.*?), entries:.* policy: (.*)/) { + $chains = $chains . ":$1 $2\n"; + $chain = $1; + next; + } + if ($line =~ m/^$/) { + next; + } + $rules = $rules . "-A $chain $line\n"; + } + + print $chains; + print $rules; + print "\n"; +} +# ======================================================== + +unless (-x "/sbin/ebtables") { exit -1 }; +$table =`/sbin/ebtables -t filter -L`; +unless ($? == 0) { print $table; exit -1 }; +&process_table($table); +$table =`/sbin/ebtables -t nat -L`; +unless ($? == 0) { print $table; exit -1 }; +&process_table($table); +$table =`/sbin/ebtables -t broute -L`; +unless ($? == 0) { print $table; exit -1 }; +&process_table($table); + |