#!/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;
my $ebtables = "__EXEC_PATH__/ebtables";
my $cnt = "";
my $version = "1.0";
my $table_name;

# ========================================================
# 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;
        }
        if ($cnt eq "--Lc") {
            $line =~ s/, pcnt = (.*) -- bcnt = (.*)/-c $1 $2/;
        } else {
            $line =~ s/ $//;
        }
        $rules = $rules . "-A $chain $line\n";
    }

    print $chains;
    print $rules;
    print "\n";
}
# ========================================================

unless (-x $ebtables) { exit -1 };
print "# Generated by ebtables-save v$version on " . `date`;
if (defined($ENV{'EBTABLES_SAVE_COUNTER'}) && $ENV{'EBTABLES_SAVE_COUNTER'} eq "yes") {
    $cnt = "--Lc";
}
foreach $table_name (split("\n", `grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//`)) {
    $table =`$ebtables -t $table_name -L $cnt`;
    unless ($? == 0) { print $table; exit -1 };
    &process_table($table);
}
