5 savedynamic_print_table_chain
() {
9 local fsavetmp
="$fsave"".tmp"
13 table_line
="$(($(grep -n "^
*$table" "$fsave" | cut -f1 -d: ) + 1))"
14 tail -n+$table_line $fsave >"$fsavetmp"
15 for cur_table_line
in $
(grep -n "^*" "$fsavetmp"); do
16 [ -z "$next_table_line" ] && {
17 local lineno
="$(echo $cur_table_line | cut -f1 -d:)"
18 [ -n "$lineno" ] && [ "$lineno" -gt $
(($table_line - 1)) ] && {
19 next_table_line
=$lineno
23 [ -z "$next_table_line" ] && {
24 next_table_line
="$(cat $fsavetmp|wc -l)"
26 next_table_line
=$
(($next_table_line - 1))
27 head -n $next_table_line "$fsave.tmp" |
grep $chain |
grep -Ev "^:$chain"
31 savedynamic_save_fw_chain
() {
34 local fsave
="/tmp/.firewall/save"
36 config_get chain
$1 chain
37 config_get table
$1 table filter
38 [ -z "$chain" ] && return 0
39 mkdir
-p /tmp
/.firewall
40 iptables-save
>"$fsave"
41 savedynamic_print_table_chain
$table $chain "$fsave" > /tmp
/.firewall
/save-
$table-$chain
45 savedynamic_load_fw_chain
() {
49 config_get chain
$1 chain
50 config_get table
$1 table filter
51 [ -e /tmp
/.firewall
/save-
$table-$chain ] && [ "$(cat /tmp/.firewall/save-$table-$chain | wc -l)" -ge 1 ] && {
52 iptables
-t $table -N $chain
54 sh
-c "iptables -t $table $line"
55 done < /tmp
/.firewall
/save-
$table-$chain
56 rm /tmp
/.firewall
/save-
$table-$chain
60 savedynamic_pre_stop_cb
() {
61 echo "Saving dynamic firewall chains"
64 config_foreach savedynamic_save_fw_chain save
67 savedynamic_post_core_cb
() {
68 echo "Loading dynamic firewall chains"
71 config_foreach savedynamic_load_fw_chain save