From ca9e778c6daf479b28b0502df7f0ded649626c4d Mon Sep 17 00:00:00 2001 From: Amin Ben Ramdhane Date: Sat, 26 Sep 2020 17:20:28 +0100 Subject: [PATCH] Ticket refs #3228: QEMU - ICWMP is segfaulting Fix missing objects --- dmtree/tr104/servicesvoiceservice.c | 8 ++++-- .../tr104/servicesvoiceservicecallcontrol.c | 26 ++++++++++++------- dmtree/tr104/servicesvoiceservicepots.c | 2 +- dmtree/tr104/servicesvoiceservicesip.c | 8 ++++-- dmtree/tr181/ieee1905.c | 18 ++++++------- 5 files changed, 39 insertions(+), 23 deletions(-) diff --git a/dmtree/tr104/servicesvoiceservice.c b/dmtree/tr104/servicesvoiceservice.c index b1c8520d..0ee82839 100644 --- a/dmtree/tr104/servicesvoiceservice.c +++ b/dmtree/tr104/servicesvoiceservice.c @@ -46,8 +46,10 @@ static int browseServicesVoiceServiceVoIPProfileInst(struct dmctx *dmctx, DMNODE synchronize_specific_config_sections_with_dmmap("asterisk", "sip_service_provider", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "clientinstance", "clientalias", "dmmap_asterisk", "sip_service_provider"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } @@ -102,8 +104,10 @@ static int browseServicesVoiceServiceCodecProfileInst(struct dmctx *dmctx, DMNOD synchronize_specific_config_sections_with_dmmap("asterisk", "codec_profile", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "codecprofileinstance", "codecprofilealias", "dmmap_asterisk", "codec_profile"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } diff --git a/dmtree/tr104/servicesvoiceservicecallcontrol.c b/dmtree/tr104/servicesvoiceservicecallcontrol.c index bf72777c..70932991 100644 --- a/dmtree/tr104/servicesvoiceservicecallcontrol.c +++ b/dmtree/tr104/servicesvoiceservicecallcontrol.c @@ -33,8 +33,10 @@ static int browseServicesVoiceServiceCallControlLineInst(struct dmctx *dmctx, DM synchronize_specific_config_sections_with_dmmap("asterisk", "tel_line", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "lineinstance", "linealias", "dmmap_asterisk", "tel_line"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } @@ -51,8 +53,10 @@ static int browseServicesVoiceServiceCallControlIncomingMapInst(struct dmctx *dm synchronize_specific_config_sections_with_dmmap("asterisk", "sip_service_provider", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "clientinstance", "clientalias", "dmmap_asterisk", "sip_service_provider"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } @@ -69,8 +73,10 @@ static int browseServicesVoiceServiceCallControlOutgoingMapInst(struct dmctx *dm synchronize_specific_config_sections_with_dmmap("asterisk", "sip_service_provider", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "clientinstance", "clientalias", "dmmap_asterisk", "sip_service_provider"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } @@ -88,7 +94,7 @@ static int browseServicesVoiceServiceCallControlNumberingPlanInst(struct dmctx * synchronize_specific_config_sections_with_dmmap("asterisk", "tel_advanced", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_alias, 5, + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_alias, 5, p->dmmap_section, "numberingplaninstance", "numberingplanalias", "dmmap_asterisk", "tel_advanced"); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) @@ -108,7 +114,7 @@ static int browseServicesVoiceServiceCallControlCallingFeaturesSetInst(struct dm synchronize_specific_config_sections_with_dmmap("asterisk", "advanced_features", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_alias, 5, + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_alias, 5, p->dmmap_section, "setinstance", "setalias", "dmmap_asterisk", "advanced_features"); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) @@ -118,7 +124,7 @@ static int browseServicesVoiceServiceCallControlCallingFeaturesSetInst(struct dm return 0; } -/*#Device.Services.VoiceService.{i}.CallControl.CallingFeatures.Set.SCREJ.{i}.!UCI:asterisk/call_filter_rule_incoming/dmmap_asterisk*/ +/*#Device.Services.VoiceService.{i}.CallControl.CallingFeatures.Set.{i}.SCREJ.{i}.!UCI:asterisk/call_filter_rule_incoming/dmmap_asterisk*/ static int browseServicesVoiceServiceCallControlCallingFeaturesSetSCREJInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev_data, char *prev_instance) { char *inst = NULL, *inst_last = NULL; @@ -127,8 +133,10 @@ static int browseServicesVoiceServiceCallControlCallingFeaturesSetSCREJInst(stru synchronize_specific_config_sections_with_dmmap("asterisk", "call_filter_rule_incoming", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(3, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "screjinstance", "screjalias", "dmmap_asterisk", "call_filter_rule_incoming"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } @@ -583,7 +591,7 @@ DMOBJ tServicesVoiceServiceCallControlCallingFeaturesObj[] = { {0} }; -/* *** Device.Services.VoiceService.{i}.CallControl.CallingFeatures.Set. *** */ +/* *** Device.Services.VoiceService.{i}.CallControl.CallingFeatures.Set.{i}. *** */ DMOBJ tServicesVoiceServiceCallControlCallingFeaturesSetObj[] = { /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextdynamicobj, nextobj, leaf, linker, bbfdm_type*/ {"SCREJ", &DMWRITE, addObjServicesVoiceServiceCallControlCallingFeaturesSetSCREJ, delObjServicesVoiceServiceCallControlCallingFeaturesSetSCREJ, NULL, browseServicesVoiceServiceCallControlCallingFeaturesSetSCREJInst, NULL, NULL, NULL, NULL, tServicesVoiceServiceCallControlCallingFeaturesSetSCREJParams, NULL, BBFDM_BOTH}, @@ -597,7 +605,7 @@ DMLEAF tServicesVoiceServiceCallControlCallingFeaturesSetParams[] = { {0} }; -/* *** Device.Services.VoiceService.{i}.CallControl.CallingFeatures.Set.SCREJ.{i}. *** */ +/* *** Device.Services.VoiceService.{i}.CallControl.CallingFeatures.Set.{i}.SCREJ.{i}. *** */ DMLEAF tServicesVoiceServiceCallControlCallingFeaturesSetSCREJParams[] = { /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/ {"CallingNumber", &DMWRITE, DMT_STRING, get_ServicesVoiceServiceCallControlCallingFeaturesSetSCREJ_CallingNumber, set_ServicesVoiceServiceCallControlCallingFeaturesSetSCREJ_CallingNumber, NULL, NULL, BBFDM_BOTH}, diff --git a/dmtree/tr104/servicesvoiceservicepots.c b/dmtree/tr104/servicesvoiceservicepots.c index 9f3d678d..3276b194 100644 --- a/dmtree/tr104/servicesvoiceservicepots.c +++ b/dmtree/tr104/servicesvoiceservicepots.c @@ -28,7 +28,7 @@ static int browseServicesVoiceServicePOTSFXSInst(struct dmctx *dmctx, DMNODE *pa dmuci_get_value_by_section_string(p->config_section, "name", &line_name); if (*line_name == '\0' || strcasestr(line_name, "DECT") == NULL) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "fxsinstance", "fxsalias", "dmmap_asterisk", "tel_line"); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) diff --git a/dmtree/tr104/servicesvoiceservicesip.c b/dmtree/tr104/servicesvoiceservicesip.c index c1da504c..2b5d9e8e 100644 --- a/dmtree/tr104/servicesvoiceservicesip.c +++ b/dmtree/tr104/servicesvoiceservicesip.c @@ -33,8 +33,10 @@ static int browseServicesVoiceServiceSIPClientInst(struct dmctx *dmctx, DMNODE * synchronize_specific_config_sections_with_dmmap("asterisk", "sip_service_provider", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "clientinstance", "clientalias", "dmmap_asterisk", "sip_service_provider"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } @@ -60,8 +62,10 @@ static int browseServicesVoiceServiceSIPNetworkInst(struct dmctx *dmctx, DMNODE synchronize_specific_config_sections_with_dmmap("asterisk", "sip_service_provider", "dmmap_asterisk", &dup_list); list_for_each_entry(p, &dup_list, list) { - inst = handle_update_instance(1, dmctx, &inst_last, update_instance_alias, 5, + + inst = handle_update_instance(2, dmctx, &inst_last, update_instance_alias, 5, p->dmmap_section, "networkinstance", "networkalias", "dmmap_asterisk", "sip_service_provider"); + if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)p->config_section, inst) == DM_STOP) break; } diff --git a/dmtree/tr181/ieee1905.c b/dmtree/tr181/ieee1905.c index 8b4f0b71..da984762 100644 --- a/dmtree/tr181/ieee1905.c +++ b/dmtree/tr181/ieee1905.c @@ -66,7 +66,7 @@ static int browseIEEE1905ALInterfaceLinkInst(struct dmctx *dmctx, DMNODE *parent dmubus_call((char *)prev_data, "link_info", UBUS_ARGS{}, 0, &res); if (res) { dmjson_foreach_obj_in_array(res, arrobj, link_obj, i, 1, "links") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)link_obj, inst) == DM_STOP) break; } @@ -140,7 +140,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceIPv4AddressInst(struct d dmjson_foreach_obj_in_array(node, arrobj, ipv4_param, i, 1, "ipv4_params") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)ipv4_param, inst) == DM_STOP) break; } @@ -155,7 +155,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceIPv6AddressInst(struct d dmjson_foreach_obj_in_array(node, arrobj, ipv6_param, i, 1, "ipv6_params") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)ipv6_param, inst) == DM_STOP) break; } @@ -178,7 +178,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceInterfaceInst(struct dmc dmjson_foreach_obj_in_array(node, arrobj, interface, i, 1, "interfaces") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)interface, inst) == DM_STOP) break; } @@ -196,7 +196,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceNonIEEE1905NeighborInst( param_st.data = non1905_neighbor; - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)¶m_st, inst) == DM_STOP) break; } @@ -211,7 +211,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceL2NeighborInst(struct dm dmjson_foreach_obj_in_array(node, arrobj, l2_neighbor, i, 1, "l2_neighbor") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)l2_neighbor, inst) == DM_STOP) break; } @@ -229,7 +229,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceIEEE1905NeighborInst(str param_st.data = neighbor; - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)¶m_st, inst) == DM_STOP) break; } @@ -244,7 +244,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceBridgingTupleInst(struct dmjson_foreach_obj_in_array(node, arrobj, bridge_tuple, i, 1, "bridge_tuple") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(2, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)bridge_tuple, inst) == DM_STOP) break; } @@ -260,7 +260,7 @@ static int browseIEEE1905ALNetworkTopologyIEEE1905DeviceIEEE1905NeighborMetricIn dmjson_foreach_obj_in_array(param_st->data, arrobj, link_metric, i, 1, "link_metrics") { - inst = handle_update_instance(1, dmctx, &max_inst, update_instance_without_section, 1, ++id); + inst = handle_update_instance(3, dmctx, &max_inst, update_instance_without_section, 1, ++id); if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)link_metric, inst) == DM_STOP) break; }