X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/667c11ec829a7484032012fd6098b9fcb4bf02d6..ab55d005acedb3022ccacbcd0ca65f053b91731e:/package/firewall/files/lib/core_interface.sh diff --git a/package/firewall/files/lib/core_interface.sh b/package/firewall/files/lib/core_interface.sh index 5386292a4..84e07e0e2 100644 --- a/package/firewall/files/lib/core_interface.sh +++ b/package/firewall/files/lib/core_interface.sh @@ -4,52 +4,31 @@ fw__uci_state_add() { local var="$1" local item="$2" - local list="$(uci_get_state firewall core $var)" - list=" ${list:+$list }" - - for item in $item; do - case "$list" in - "* $item *") continue;; - *) list="$list$item ";; - esac + local val="$(uci_get_state firewall core $var)" + local e1; for e1 in $item; do + local e2; for e2 in $val; do + [ "$e1" = "$e2" ] && e1="" + done + val="${val:+$val${e1:+ }}$e1" done - list="${list% }" - list="${list# }" - - uci_revert_state firewall core $var - uci_set_state firewall core $var "$list" + uci_toggle_state firewall core $var "$val" } fw__uci_state_del() { local var="$1" local item="$2" - echo "del[$item]" - - local list val - for val in $(uci_get_state firewall core "$var" | sort -u); do - list="${list:+$list }$val" - done - - echo "list[$list]" - - uci_revert_state firewall core $var - - [ -n "$list" ] && { - list=" $list " - - for item in $item; do - list="${list// $item / }" + local rest="" + local val="$(uci_get_state firewall core $var)" + local e1; for e1 in $val; do + local e2; for e2 in $item; do + [ "$e1" = "$e2" ] && e1="" done + rest="${rest:+$rest${e1:+ }}$e1" + done - list="${list# }" - list="${list% }" - - echo "list2[$list]" - - uci_set_state firewall core $var "$list" - } + uci_toggle_state firewall core $var "$val" } fw_configure_interface() { @@ -182,14 +161,14 @@ fw_configure_interface() { fw_sysctl_interface $ifname fw_callback post interface - uci_set_state firewall core "${iface}_aliases" "$aliases" + uci_toggle_state firewall core "${iface}_aliases" "$aliases" } || { local subnets= config_get subnets core "${iface}_subnets" append subnets "$aliasnet" config_set core "${iface}_subnets" "$subnets" - uci_set_state firewall core "${iface}_subnets" "$subnets" + uci_toggle_state firewall core "${iface}_subnets" "$subnets" } local new_zones= @@ -208,8 +187,8 @@ fw_configure_interface() { } config_foreach load_zone zone - uci_set_state firewall core "${iface}_zone" "$new_zones" - uci_set_state firewall core "${iface}_ifname" "$ifname" + uci_toggle_state firewall core "${iface}_zone" "$new_zones" + uci_toggle_state firewall core "${iface}_ifname" "$ifname" } fw_sysctl_interface() {