diff --git a/dm/dmcommon.c b/dm/dmcommon.c index a0d0f73..2dcbcb7 100644 --- a/dm/dmcommon.c +++ b/dm/dmcommon.c @@ -312,7 +312,7 @@ struct uci_section *create_firewall_zone_config(char *fwl, char *iface, char *in struct uci_section *s; char *value, *name; - dmuci_add_section("firewall", "zone", &s, &value); + dmuci_add_section_and_rename("firewall", "zone", &s, &value); dmasprintf(&name, "%s_%s", fwl, iface); dmuci_set_value_by_section(s, "name", name); dmuci_set_value_by_section(s, "input", input); @@ -643,7 +643,7 @@ void update_section_option_list(char *config, char *section, char *option, char dmuci_delete_by_section(prev_s, NULL, NULL); } if (add_sec) { - dmuci_add_section(config, section, &s, &add_value); + dmuci_add_section_and_rename(config, section, &s, &add_value); dmuci_set_value_by_section(s, option, val); dmuci_set_value_by_section(s, option_2, val_2); } @@ -710,7 +710,7 @@ void update_section_list(char *config, char *section, char *option, int number, } } while (i < number) { - dmuci_add_section(config, section, &s, &add_value); + dmuci_add_section_and_rename(config, section, &s, &add_value); if (option)dmuci_set_value_by_section(s, option, filter); if (option1)dmuci_set_value_by_section(s, option1, val1); if (option2)dmuci_set_value_by_section(s, option2, val2); diff --git a/dm/dmtree/common/x_inteno_se_dropbear.c b/dm/dmtree/common/x_inteno_se_dropbear.c index cdd1db9..be3b056 100644 --- a/dm/dmtree/common/x_inteno_se_dropbear.c +++ b/dm/dmtree/common/x_inteno_se_dropbear.c @@ -401,7 +401,7 @@ int add_dropbear_instance(char *refparam, struct dmctx *ctx, void *data, char ** check_create_dmmap_package("dmmap_dropbear"); instance = get_last_instance_icwmpd("dmmap_dropbear", "dropbear", "dropbearinstance"); - dmuci_add_section("dropbear", "dropbear", &dropbear_sec, &value); + dmuci_add_section_and_rename("dropbear", "dropbear", &dropbear_sec, &value); dmuci_set_value_by_section(dropbear_sec, "verbose", "0"); dmuci_set_value_by_section(dropbear_sec, "Port", "22"); dmuci_set_value_by_section(dropbear_sec, "RootLogin", "1"); diff --git a/dm/dmtree/common/x_inteno_se_ipacccfg.c b/dm/dmtree/common/x_inteno_se_ipacccfg.c index 7697fc7..3d5dcac 100644 --- a/dm/dmtree/common/x_inteno_se_ipacccfg.c +++ b/dm/dmtree/common/x_inteno_se_ipacccfg.c @@ -630,7 +630,7 @@ int add_ipacccfg_rule(char *refparam, struct dmctx *ctx, void *data, char **inst check_create_dmmap_package("dmmap_firewall"); instance = get_last_instance_icwmpd("dmmap_firewall", "rule", "fruleinstance"); - dmuci_add_section("firewall", "rule", &rule, &value); + dmuci_add_section_and_rename("firewall", "rule", &rule, &value); dmuci_set_value_by_section(rule, "type", "generic"); dmuci_set_value_by_section(rule, "name", "new_rule"); dmuci_set_value_by_section(rule, "proto", "all"); @@ -692,7 +692,7 @@ int add_ipacccfg_port_forwarding(char *refparam, struct dmctx *ctx, void *data, check_create_dmmap_package("dmmap_firewall"); instance = get_last_instance_icwmpd("dmmap_firewall", "redirect", "forwardinstance"); - dmuci_add_section("firewall", "redirect", &redirect, &value); + dmuci_add_section_and_rename("firewall", "redirect", &redirect, &value); dmuci_set_value_by_section(redirect, "enabled", "0"); dmuci_set_value_by_section(redirect, "target", "DNAT"); dmuci_set_value_by_section(redirect, "proto", "tcp udp"); diff --git a/dm/dmtree/common/x_inteno_se_owsd.c b/dm/dmtree/common/x_inteno_se_owsd.c index 735f4b6..4373016 100644 --- a/dm/dmtree/common/x_inteno_se_owsd.c +++ b/dm/dmtree/common/x_inteno_se_owsd.c @@ -524,7 +524,7 @@ int add_owsd_listen(char *refparam, struct dmctx *ctx, void *data, char **instan check_create_dmmap_package("dmmap_owsd"); instance = get_last_instance_icwmpd("dmmap_owsd", "owsd-listen", "olisteninstance"); - dmuci_add_section("owsd", "owsd-listen", &listen_sec, &value); + dmuci_add_section_and_rename("owsd", "owsd-listen", &listen_sec, &value); dmuci_set_value_by_section(listen_sec, "ipv6", "on"); dmuci_set_value_by_section(listen_sec, "whitelist_interface_as_origin", "1"); dmuci_add_list_value_by_section(listen_sec, "origin", "*"); diff --git a/dm/dmtree/common/xmpp.c b/dm/dmtree/common/xmpp.c index 644f4be..3775b72 100644 --- a/dm/dmtree/common/xmpp.c +++ b/dm/dmtree/common/xmpp.c @@ -76,8 +76,8 @@ int add_xmpp_connection(char *refparam, struct dmctx *ctx, void *data, char **in char *value1, *value2, *last_inst; last_inst = get_last_instance("cwmp_xmpp", "xmpp_connection", "connection_instance"); - dmuci_add_section("cwmp_xmpp", "xmpp_connection", &xmpp_connection, &value1); - dmuci_add_section("cwmp_xmpp", "xmpp_connection_server", &xmpp_connection_server, &value2); + dmuci_add_section_and_rename("cwmp_xmpp", "xmpp_connection", &xmpp_connection, &value1); + dmuci_add_section_and_rename("cwmp_xmpp", "xmpp_connection_server", &xmpp_connection_server, &value2); dmasprintf(instancepara, "%d", atoi(last_inst)+1); dmuci_set_value_by_section(xmpp_connection, "connection_instance", *instancepara); dmuci_set_value_by_section(xmpp_connection, "enable", "0"); diff --git a/dm/dmtree/tr098/landevice.c b/dm/dmtree/tr098/landevice.c index f08bcc5..5de8f86 100644 --- a/dm/dmtree/tr098/landevice.c +++ b/dm/dmtree/tr098/landevice.c @@ -519,7 +519,7 @@ int add_dhcp_conditional_serving_pool(char *refparam, struct dmctx *ctx, void *d check_create_dmmap_package("dmmap_dhcp"); instance = get_last_instance_icwmpd("dmmap_dhcp", "vendorclass", "poulinstance"); - dmuci_add_section("dhcp", "vendorclass", &s, &value); + dmuci_add_section_and_rename("dhcp", "vendorclass", &s, &value); dmuci_set_value_by_section(s, "dhcp_option", ""); *instancepara = update_instance(s, instance, "poulinstance"); @@ -610,7 +610,7 @@ int add_landevice_dhcpstaticaddress(char *refparam, struct dmctx *ctx, void *dat check_create_dmmap_package("dmmap_dhcp"); instance = get_last_instance_lev2_icwmpd("dhcp", "host", "dmmap_dhcp", "ldhcpinstance", "dhcp", lan_name); - dmuci_add_section("dhcp", "host", &s, &value); + dmuci_add_section_and_rename("dhcp", "host", &s, &value); dmuci_set_value_by_section(s, "dhcp", lan_name); dmuci_add_section_icwmpd("dmmap_dhcp", "host", &dmmap_dhcpstcaddress, &v); dmuci_set_value_by_section(dmmap_dhcpstcaddress, "section_name", section_name(s)); @@ -681,7 +681,7 @@ int add_landevice_wlanconfiguration(char *refparam, struct dmctx *ctx, void *dat instance = get_last_instance_lev2_icwmpd("wireless", "wifi-iface", "dmmap_wireless", "lwlaninstance", "network", lan_name); sprintf(ssid, "Inteno_%s_%d", lan_name, instance ? (atoi(instance)+1) : 1); - dmuci_add_section("wireless", "wifi-iface", &s, &value); + dmuci_add_section_and_rename("wireless", "wifi-iface", &s, &value); get_wifi_device_name(&wifi_dev_name); dmuci_set_value_by_section(s, "device", wifi_dev_name); dmuci_set_value_by_section(s, "encryption", "none"); @@ -1122,7 +1122,7 @@ int set_lan_dhcp_reserved_addresses(char *refparam, struct dmctx *ctx, void *dat if (n_ip < n_min && n_ip > n_max) continue; else { - dmuci_add_section("dhcp", "host", &dhcp_section, &val); + dmuci_add_section_and_rename("dhcp", "host", &dhcp_section, &val); dmuci_set_value_by_section(dhcp_section, "dhcp", lan_name); dmuci_set_value_by_section(dhcp_section, "ip", pch); } diff --git a/dm/dmtree/tr098/wandevice.c b/dm/dmtree/tr098/wandevice.c index a315c92..563de32 100644 --- a/dm/dmtree/tr098/wandevice.c +++ b/dm/dmtree/tr098/wandevice.c @@ -261,7 +261,7 @@ inline int add_wvlan(char *baseifname, char *ifname, char *vid, char *prioprity, dmuci_set_value_by_section(ss, "priority", prioprity); return 0; } - dmuci_add_section("network", "device", &vlan_interface_s, &add_value); + dmuci_add_section_and_rename("network", "device", &vlan_interface_s, &add_value); dmuci_set_value_by_section(ss, "type", "8021q"); dmuci_set_value_by_section(ss, "ifname", baseifname); dmuci_set_value_by_section(ss, "name", ifname); @@ -1668,7 +1668,7 @@ int set_wan_ip_link_connection_igmp_enabled(char *refparam, struct dmctx *ctx, v dmuci_get_value_by_section_string(zone, "name", &zname); } if(rule == NULL) { - dmuci_add_section("firewall", "rule", &rule, &val); + dmuci_add_section_and_rename("firewall", "rule", &rule, &val); dmuci_set_value_by_section(rule, "src", zname); dmuci_set_value_by_section(rule, "proto", "igmp"); } diff --git a/dm/dmtree/tr181/bridging.c b/dm/dmtree/tr181/bridging.c index fe72d6f..daa8cb0 100644 --- a/dm/dmtree/tr181/bridging.c +++ b/dm/dmtree/tr181/bridging.c @@ -859,7 +859,7 @@ int add_br_vlan(char *refparam, struct dmctx *ctx, void *data, char **instance) last_vid = get_last_vid(); dmasprintf(&name, "%s.%d", wan_baseifname, last_vid ? atoi(last_vid)+ 1 : 1001); dmasprintf(&vid, "%d", last_vid ? atoi(last_vid)+ 1 : 1001); - dmuci_add_section("network", "device", &vlan_s, &value); + dmuci_add_section_and_rename("network", "device", &vlan_s, &value); dmuci_rename_section_by_section(vlan_s, vlan_name); dmuci_set_value_by_section(vlan_s, "priority", "0"); dmuci_set_value_by_section(vlan_s, "type", "8021q"); diff --git a/dm/dmtree/tr181/dhcp.c b/dm/dmtree/tr181/dhcp.c index c428a6a..d27b4b5 100644 --- a/dm/dmtree/tr181/dhcp.c +++ b/dm/dmtree/tr181/dhcp.c @@ -134,7 +134,7 @@ int add_dhcp_server(char *refparam, struct dmctx *ctx, void *data, char **instan check_create_dmmap_package("dmmap_dhcp"); instance = get_last_instance_icwmpd("dmmap_dhcp", "dhcp", "dhcp_instance"); - dmuci_add_section("dhcp", "dhcp", &s, &value); + dmuci_add_section_and_rename("dhcp", "dhcp", &s, &value); dmuci_set_value_by_section(s, "start", "100"); dmuci_set_value_by_section(s, "leasetime", "12h"); dmuci_set_value_by_section(s, "limit", "150"); @@ -189,7 +189,7 @@ int add_dhcp_staticaddress(char *refparam, struct dmctx *ctx, void *data, char * check_create_dmmap_package("dmmap_dhcp"); instance = get_last_instance_lev2_icwmpd("dhcp", "host", "dmmap_dhcp", "ldhcpinstance", "dhcp", ((struct dhcp_args *)data)->interface); - dmuci_add_section("dhcp", "host", &s, &value); + dmuci_add_section_and_rename("dhcp", "host", &s, &value); dmuci_set_value_by_section(s, "dhcp", ((struct dhcp_args *)data)->interface); @@ -607,7 +607,7 @@ int set_dhcp_reserved_addresses(char *refparam, struct dmctx *ctx, void *data, c if (n_ip < n_min && n_ip > n_max) continue; else { - dmuci_add_section("dhcp", "host", &dhcp_section, &val); + dmuci_add_section_and_rename("dhcp", "host", &dhcp_section, &val); dmuci_set_value_by_section(dhcp_section, "dhcp", ((struct dhcp_args *)data)->interface); dmuci_set_value_by_section(dhcp_section, "ip", pch); } diff --git a/dm/dmtree/tr181/nat.c b/dm/dmtree/tr181/nat.c index a4441c6..bf8f74e 100644 --- a/dm/dmtree/tr181/nat.c +++ b/dm/dmtree/tr181/nat.c @@ -48,7 +48,7 @@ int add_NAT_InterfaceSetting(char *refparam, struct dmctx *ctx, void *data, char check_create_dmmap_package("dmmap_firewall"); inst = get_last_instance_icwmpd("dmmap_firewall", "zone", "natinstance"); sprintf(name, "NAT_%d", inst ? (atoi(inst)+1) : 1); - dmuci_add_section("firewall", "zone", &s, &value); + dmuci_add_section_and_rename("firewall", "zone", &s, &value); dmuci_set_value_by_section(s, "input", "REJECT"); dmuci_set_value_by_section(s, "output", "ACCEPT"); dmuci_set_value_by_section(s, "forward", "REJECT"); diff --git a/dm/dmtree/tr181/userinterface.c b/dm/dmtree/tr181/userinterface.c index 489208e..8ea94c4 100644 --- a/dm/dmtree/tr181/userinterface.c +++ b/dm/dmtree/tr181/userinterface.c @@ -45,7 +45,7 @@ static void add_default_rule(char *port, char *enable, char *owsd) struct uci_section *ss; char *ret; - dmuci_add_section("firewall", "rule", &ss, &ret); + dmuci_add_section_and_rename("firewall", "rule", &ss, &ret); dmuci_set_value_by_section(ss, "name", "juci-remote-access"); dmuci_set_value_by_section(ss, "src", "wan"); dmuci_set_value_by_section(ss, "proto", "tcp"); diff --git a/dm/dmtree/tr181/wifi.c b/dm/dmtree/tr181/wifi.c index de216f2..905b6cd 100644 --- a/dm/dmtree/tr181/wifi.c +++ b/dm/dmtree/tr181/wifi.c @@ -1575,7 +1575,7 @@ int add_wifi_ssid(char *refparam, struct dmctx *ctx, void *data, char **instance check_create_dmmap_package("dmmap_wireless"); inst = get_last_instance_icwmpd("dmmap_wireless", "wifi-iface", "ssidinstance"); sprintf(ssid, "Inteno_%d", inst ? (atoi(inst)+1) : 1); - dmuci_add_section("wireless", "wifi-iface", &s, &value); + dmuci_add_section_and_rename("wireless", "wifi-iface", &s, &value); dmuci_set_value_by_section(s, "device", "wl0"); dmuci_set_value_by_section(s, "encryption", "none"); dmuci_set_value_by_section(s, "macfilter", "0"); diff --git a/dm/dmtree/upnp/upnp_configuration.c b/dm/dmtree/upnp/upnp_configuration.c index 53dbae7..369a8db 100755 --- a/dm/dmtree/upnp/upnp_configuration.c +++ b/dm/dmtree/upnp/upnp_configuration.c @@ -265,7 +265,7 @@ int upnp_configuration_ipinterface_createinstance(char *refparam, struct dmctx * dmstrappendstr(p, "ip_interface_"); dmstrappendstr(p, ib); dmstrappendend(p); - dmuci_add_section("network", "interface", &iface_sec, &value); + dmuci_add_section_and_rename("network", "interface", &iface_sec, &value); dmuci_set_value("network", ip_name, "", "interface"); dmuci_set_value("network", ip_name, "proto", "dhcp"); *instance = update_instance(iface_sec, iface_instance, "upnp_ip_iface_instance"); diff --git a/dm/dmtree/upnp/upnp_deviceinfo.c b/dm/dmtree/upnp/upnp_deviceinfo.c index 3e4082b..df8d906 100755 --- a/dm/dmtree/upnp/upnp_deviceinfo.c +++ b/dm/dmtree/upnp/upnp_deviceinfo.c @@ -223,7 +223,7 @@ int upnp_deviceinfo_networkinterface_createinstance(char *refparam, struct dmctx dmstrappendstr(p, ib); dmstrappendend(p); sprintf(ib, "%d", iface_instance ? atoi(iface_instance)+1 : 1); - dmuci_add_section("network", "interface", &iface_sec, &value); + dmuci_add_section_and_rename("network", "interface", &iface_sec, &value); dmuci_set_value("network", ip_name, "", "interface"); dmuci_set_value("network", ip_name, "proto", "dhcp"); *instance = update_instance(iface_sec, iface_instance, "upnp_iface_int_instance"); diff --git a/dm/dmuci.c b/dm/dmuci.c index 60de703..ee9fe69 100644 --- a/dm/dmuci.c +++ b/dm/dmuci.c @@ -502,6 +502,14 @@ int dmuci_add_section(char *package, char *stype, struct uci_section **s, char * return 0; } +int dmuci_add_section_and_rename(char *package, char *stype, struct uci_section **s, char **value) +{ + int r; + r = dmuci_add_section(package, stype, s, value); + dmuci_rename_section_by_section(*s, *value); + return r; +} + int dmuci_add_state_section(char *package, char *stype, struct uci_section **s, char **value) { struct uci_ptr ptr = {0}; diff --git a/dm/dmuci.h b/dm/dmuci.h index 602476f..643fb39 100644 --- a/dm/dmuci.h +++ b/dm/dmuci.h @@ -147,6 +147,7 @@ char *dmuci_set_value(char *package, char *section, char *option, char *value); int dmuci_add_list_value(char *package, char *section, char *option, char *value); int dmuci_del_list_value(char *package, char *section, char *option, char *value); int dmuci_add_section(char *package, char *stype, struct uci_section **s, char **value); +int dmuci_add_section_and_rename(char *package, char *stype, struct uci_section **s, char **value); int dmuci_delete(char *package, char *section, char *option, char *value); int dmuci_lookup_ptr_by_section(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_section *s, char *option, char *value); int dmuci_get_value_by_section_string(struct uci_section *s, char *option, char **value);