From ec1e8dbf6b2e90b014ece01bc371baff602a0a6f Mon Sep 17 00:00:00 2001 From: Imen Bhiri Date: Thu, 4 Jun 2015 15:29:44 +0100 Subject: [PATCH] * * * Bugg #6034: Optimization of the build of the cache - Part2.2 --- scripts/functions/layer_2_bridging | 16 +++++---- scripts/functions/layer_3_forwarding | 52 +++++++++++----------------- 2 files changed, 31 insertions(+), 37 deletions(-) diff --git a/scripts/functions/layer_2_bridging b/scripts/functions/layer_2_bridging index 07f15cf..0f860e3 100644 --- a/scripts/functions/layer_2_bridging +++ b/scripts/functions/layer_2_bridging @@ -429,10 +429,13 @@ get_cache_object_bridge() { get_param_cache_generic "InternetGatewayDevice.Layer2Bridging.Bridge.$ib.X_INTENO_COM_AssociatedInterfaces" "1" "\$UCI_GET network.$iface.ifname" "set_associated_interfaces $iface \$val" get_object_cache_generic "InternetGatewayDevice.Layer2Bridging.Bridge.$ib.VLAN." "1" update_bridge_all_vlan_config_bybridge $iface $ib - local vb vbs=`$UCI_SHOW dmmap | grep "dmmap\.@vlan_bridge\[[0-9]\+\]\.bridgekey=$ib" | cut -f2 -d.` + local vb vbs=`$UCI_SHOW dmmap | grep "dmmap\.@vlan_bridge\[[0-9]\+\]\.bridgekey=$ib" | awk -F'[][]' '{print $2}'` for vb in $vbs; do - local iv=`$UCI_GET dmmap.$vb.instance` - get_cache_object_bridge_vlan "$ib" "$vb" "${iv#*.}" + local xvb=`$UCI_SHOW -X dmmap |grep "dmmap\.[^=.]\+=vlan_bridge" | sed "$((vb+1))""q;d" | awk -F'[=.]' '{print $2}'` + if [ "$xvb" != "" ]; then + local iv=`$UCI_GET dmmap.$xvb.instance` + get_cache_object_bridge_vlan "$ib" "$xvb" "${iv#*.}" + fi done } @@ -496,10 +499,11 @@ get_cache_InternetGatewayDevice_Layer2Bridging() { fi done get_object_cache_generic "InternetGatewayDevice.Layer2Bridging.Marking." "1" - local mb mbs=`$UCI_SHOW dmmap | grep "dmmap\.@marking-bridge\[[0-9]\+\]\.instance=" | cut -f2 -d'.'` + local mb mbs=`$UCI_SHOW dmmap | grep "dmmap\.@marking-bridge\[[0-9]\+\]\.instance=" | awk -F'[][]' '{print $2}'` for mb in $mbs; do - local im=`$UCI_GET dmmap.$mb.instance` - get_cache_object_marking "$im" "$mb" + local xmb=`$UCI_SHOW -X dmmap |grep "dmmap\.[^=.]\+=marking-bridge" | sed "$((mb+1))""q;d" | awk -F'[=.]' '{print $2}'` + local im=`$UCI_GET dmmap.$xmb.instance` + get_cache_object_marking "$im" "$xmb" done } diff --git a/scripts/functions/layer_3_forwarding b/scripts/functions/layer_3_forwarding index eef8134..0d5d5fb 100644 --- a/scripts/functions/layer_3_forwarding +++ b/scripts/functions/layer_3_forwarding @@ -66,11 +66,12 @@ get_layer3_nbr_entry() { get_layer3_enable() { local route="$1" case $route in - "@route_disabled["*) - echo 0 - ;; - "@route["*) - [ "`proc_get_route_var_by_conf $route 1`" = "" ] && echo 0 || echo 1 + cfg[0-9]*) + if [ "`$UCI_GET network.$route`" = "route_disabled" ]; then + echo 0 + else + [ "`proc_get_route_var_by_conf $route 1`" = "" ] && echo 0 || echo 1 + fi ;; *) echo 1 @@ -82,25 +83,12 @@ set_layer3_enable() { local route="$1" local val="$2" local droute sroute="$route" + local enable=`$UCI_GET network.$route` val=`echo $val|tr '[A-Z]' '[a-z]'` if [ "$val" = "true" -o "$val" = "1" ]; then - case $route in - "@route_disabled["*) - droute="route" - ;; - *) - return - ;; - esac + [ "`$enable" = "route_disabled" ] && droute="route" || return elif [ "$val" = "false" -o "$val" = "0" ]; then - case $route in - "@route["*) - droute="route_disabled" - ;; - *) - return - ;; - esac + [ "`$enable" = "route_disabled" ] && droute="route_disabled" || return else return fi @@ -114,7 +102,8 @@ set_layer3_enable() { } get_layer3_status() { - [ "`get_layer3_enable $1`" = "1" ] && echo "Enabled" || echo "Disabled" + local eb=`get_layer3_enable "$1"` + [ "$eb" = "1" ] && echo "Enabled" || echo "Disabled" } @@ -122,7 +111,7 @@ get_layer3_type() { local route="$1" local val case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.netmask` ;; *) @@ -137,7 +126,7 @@ get_layer3_destip() { local route="$1" local val case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.target` ;; *) @@ -159,7 +148,7 @@ get_layer3_destmask() { local route="$1" local val case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.netmask` ;; *) @@ -181,7 +170,7 @@ get_layer3_gatewayip() { local route="$1" local val case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.gateway` ;; *) @@ -203,7 +192,7 @@ get_layer3_interface() { local route="$1" local val="" case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.interface` ;; *) @@ -247,7 +236,7 @@ get_layer3_metric() { local route="$1" local val case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.metric` ;; *) @@ -269,7 +258,7 @@ get_layer3_mtu() { local route="$1" local val case "$route" in - *"@route"*) + cfg[0-9]*) val=`$UCI_GET network.$route.mtu` ;; *) @@ -327,8 +316,9 @@ get_cache_InternetGatewayDevice_Layer3Forwarding() { get_param_cache_generic "InternetGatewayDevice.Layer3Forwarding.ForwardNumberOfEntries" "0" "get_layer3_nbr_entry" "" "1" "" "xsd:unsignedInt" local route routes=`$UCI_SHOW network | grep "network\.@route[^=]\+=route" | cut -d. -f2 | cut -d= -f1` for route in $routes; do - il=`update_layer3_instance $route` - get_cache_object_layer3 "$route" "$il" "1" + local xroute=`common_get_cfg_section_ref "route" "route" "$route"` + il=`update_layer3_instance $xroute` + get_cache_object_layer3 "$xroute" "$il" "1" done }