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