Ticket refs #16134: TR181: Wrong Behavior for Object Device.NAT.InterfaceSetting

This commit is contained in:
Amin Ben Ramdhane 2018-12-02 19:12:30 +01:00
parent ae2d5388b8
commit 02c09ba435
16 changed files with 33 additions and 24 deletions

View file

@ -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);

View file

@ -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");

View file

@ -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");

View file

@ -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", "*");

View file

@ -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");

View file

@ -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);
}

View file

@ -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");
}

View file

@ -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");

View file

@ -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);
}

View file

@ -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");

View file

@ -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");

View file

@ -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");

View file

@ -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");

View file

@ -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");

View file

@ -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};

View file

@ -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);