From 03ea9f2c93d0aee4776f1d7b1fe5bcdf1f5fa0db Mon Sep 17 00:00:00 2001 From: Amin Ben Ramdhane Date: Wed, 7 Nov 2018 14:58:55 +0100 Subject: [PATCH] Ticket refs #14406: TR-069: Move TR related UCI options from original config to /etc/icwmpd/dmmap (Device.Bridging.Bridge.x.VLANPort.x) --- dm/dmtree/tr181/bridging.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/dm/dmtree/tr181/bridging.c b/dm/dmtree/tr181/bridging.c index 583e19a..51a13c3 100644 --- a/dm/dmtree/tr181/bridging.c +++ b/dm/dmtree/tr181/bridging.c @@ -1296,25 +1296,29 @@ end: int browseBridgeVlanPortInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance) { - struct uci_section *vlan_s; char *vlan = NULL, *vlan_last = NULL, *type, *is_lan= NULL; struct bridging_vlan_args curr_bridging_vlan_args = {0}; struct bridging_args *br_args = (struct bridging_args *)prev_data; + struct dmmap_dup *p; + LIST_HEAD(dup_list); dmuci_get_value_by_section_string(br_args->bridge_sec, "is_lan", &is_lan); if(is_lan==NULL || strcmp(is_lan, "1")!=0){ - uci_foreach_sections("network", "device", vlan_s) { - if(!vlan_s) + synchronize_specific_config_sections_with_dmmap("network", "device", "dmmap_network", &dup_list); + list_for_each_entry(p, &dup_list, list) { + if(!p->config_section) goto end; //Check if VLAN or NOT - dmuci_get_value_by_section_string(vlan_s, "type", &type); + dmuci_get_value_by_section_string(p->config_section, "type", &type); if (strcmp(type, "untagged")!=0) { - vlan = handle_update_instance(2, dmctx, &vlan_last, update_instance_alias, 3, vlan_s, "bridge_vlan_instance", "bridge_vlan_alias"); - init_bridging_vlan_args(&curr_bridging_vlan_args, vlan_s, br_args->bridge_sec, vlan_last, br_args->br_key); + dmuci_set_value_by_section(p->dmmap_section, "bridge_key", br_args->br_key); + vlan = handle_update_instance(2, dmctx, &vlan_last, update_instance_alias, 3, p->dmmap_section, "bridge_vlan_instance", "bridge_vlan_alias"); + init_bridging_vlan_args(&curr_bridging_vlan_args, p->config_section, br_args->bridge_sec, vlan_last, br_args->br_key); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)&curr_bridging_vlan_args, vlan) == DM_STOP) goto end; } } + free_dmmap_config_dup_list(&dup_list); } end: return 0;