1*4882a593SmuzhiyunFrom 73536d15c80be96049289d96fc32122467c56b1d Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Matt Weber <matthew.weber@rockwellcollins.com> 3*4882a593SmuzhiyunDate: Mon, 16 Dec 2019 13:27:30 -0600 4*4882a593SmuzhiyunSubject: [PATCH] ebtables: replace ebtables-save perl script with bash rewrite 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunFedora provides a bash replacement for the default ebtables-save perl 7*4882a593Smuzhiyunscript. Using it allows the ebtables run-time dependency on perl to 8*4882a593Smuzhiyunbe replaced with a runtime dependency on bash - which is lower 9*4882a593Smuzhiyunoverhead and more likely to be present on typical embedded systems 10*4882a593Smuzhiyunalready. 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun https://bugzilla.redhat.com/show_bug.cgi?id=746040 13*4882a593Smuzhiyun http://pkgs.fedoraproject.org/cgit/rpms/ebtables.git/tree/ebtables-save 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunUpstream: 16*4882a593Smuzhiyunhttps://github.com/openembedded/meta-openembedded/commit/7f723007364ba79de05447671e83d4eefb3097dc 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> 19*4882a593Smuzhiyun[ryanbarnett3@gmail.com: 20*4882a593Smuzhiyun - changed EBTABLES executable to /usr/sbin/ebtables-legacy 21*4882a593Smuzhiyun] 22*4882a593SmuzhiyunSigned-off-by: Ryan Barnett <ryanbarnett3@gmail.com> 23*4882a593Smuzhiyun--- 24*4882a593Smuzhiyun ebtables-save.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ 25*4882a593Smuzhiyun 1 file changed, 43 insertions(+) 26*4882a593Smuzhiyun create mode 100644 ebtables-save.sh 27*4882a593Smuzhiyun 28*4882a593Smuzhiyundiff --git a/ebtables-save.sh b/ebtables-save.sh 29*4882a593Smuzhiyunnew file mode 100644 30*4882a593Smuzhiyunindex 0000000..2d7fc4e 31*4882a593Smuzhiyun--- /dev/null 32*4882a593Smuzhiyun+++ b/ebtables-save.sh 33*4882a593Smuzhiyun@@ -0,0 +1,43 @@ 34*4882a593Smuzhiyun+#!/bin/bash 35*4882a593Smuzhiyun+ 36*4882a593Smuzhiyun+EBTABLES="/usr/sbin/ebtables-legacy" 37*4882a593Smuzhiyun+ 38*4882a593Smuzhiyun+[ -x "$EBTABLES" ] || exit 1 39*4882a593Smuzhiyun+ 40*4882a593Smuzhiyun+echo "# Generated by ebtables-save v1.0 on $(date)" 41*4882a593Smuzhiyun+ 42*4882a593Smuzhiyun+cnt="" 43*4882a593Smuzhiyun+[ "x$EBTABLES_SAVE_COUNTER" = "xyes" ] && cnt="--Lc" 44*4882a593Smuzhiyun+ 45*4882a593Smuzhiyun+for table_name in $(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//); do 46*4882a593Smuzhiyun+ table=$($EBTABLES -t $table_name -L $cnt) 47*4882a593Smuzhiyun+ [ $? -eq 0 ] || { echo "$table"; exit -1; } 48*4882a593Smuzhiyun+ 49*4882a593Smuzhiyun+ chain="" 50*4882a593Smuzhiyun+ rules="" 51*4882a593Smuzhiyun+ while read line; do 52*4882a593Smuzhiyun+ [ -z "$line" ] && continue 53*4882a593Smuzhiyun+ 54*4882a593Smuzhiyun+ case "$line" in 55*4882a593Smuzhiyun+ Bridge\ table:\ *) 56*4882a593Smuzhiyun+ echo "*${line:14}" 57*4882a593Smuzhiyun+ ;; 58*4882a593Smuzhiyun+ Bridge\ chain:\ *) 59*4882a593Smuzhiyun+ chain="${line:14}" 60*4882a593Smuzhiyun+ chain="${chain%%,*}" 61*4882a593Smuzhiyun+ policy="${line##*policy: }" 62*4882a593Smuzhiyun+ echo ":$chain $policy" 63*4882a593Smuzhiyun+ ;; 64*4882a593Smuzhiyun+ *) 65*4882a593Smuzhiyun+ if [ "$cnt" = "--Lc" ]; then 66*4882a593Smuzhiyun+ line=${line/, pcnt \=/ -c} 67*4882a593Smuzhiyun+ line=${line/-- bcnt \=/} 68*4882a593Smuzhiyun+ fi 69*4882a593Smuzhiyun+ rules="$rules-A $chain $line\n" 70*4882a593Smuzhiyun+ ;; 71*4882a593Smuzhiyun+ esac 72*4882a593Smuzhiyun+ done <<EOF 73*4882a593Smuzhiyun+$table 74*4882a593Smuzhiyun+EOF 75*4882a593Smuzhiyun+ echo -e $rules 76*4882a593Smuzhiyun+done 77*4882a593Smuzhiyun-- 78*4882a593Smuzhiyun2.17.1 79*4882a593Smuzhiyun 80