@ -1,27 +1,34 @@
# Copyright (C) 2009-2010 OpenWrt.org
# Copyright (C) 2009-2011 OpenWrt.org
fw__uci_state_add( ) {
local var = " $1 "
local item = " $2 "
local val = " $( uci_get_state firewall core $var ) "
val = " ${ val // $item / } "
val = " ${ val # } "
val = " ${ val % } "
uci_revert_state firewall core $var
uci_set_state firewall core $var " ${ val : + $val } $item "
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
uci_toggle_state $var " $val "
}
fw__uci_state_del( ) {
local var = " $1 "
local item = " $2 "
local val = " $( uci_get_state firewall core $var ) "
val = " ${ val // $item / } "
val = " ${ val # } "
val = " ${ val % } "
uci_revert_state firewall core $var
uci_set_state firewall core $var " $val "
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
uci_toggle_state $var " $val "
}
fw_configure_interface( ) {
@ -154,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 =
@ -180,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( ) {