mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2026-02-15 12:29:23 +01:00
Set method: Don't return error if one of the entries is dynamically created
This commit is contained in:
parent
d0deece9ff
commit
14b106dfd8
3 changed files with 137 additions and 83 deletions
|
|
@ -46,15 +46,6 @@ static void create_portmapping_section(bool b)
|
|||
dmuci_set_value_by_section(s, "reload", "1");
|
||||
}
|
||||
|
||||
static char *get_rule_perm(char *refparam, struct dmctx *dmctx, void *data, char *instance)
|
||||
{
|
||||
struct rule_sec *rule_args = (struct rule_sec *)data;
|
||||
|
||||
return (!rule_args || rule_args->is_dynamic_rule) ? "0" : "1";
|
||||
}
|
||||
|
||||
struct dm_permession_s DMRule = {"1", &get_rule_perm};
|
||||
|
||||
static void add_firewall_config_dup_list(struct list_head *dup_list, struct uci_section *config_section, struct uci_section *dmmap_section, bool is_dynamic_rule)
|
||||
{
|
||||
struct rule_sec *rule_args;
|
||||
|
|
@ -468,7 +459,7 @@ static int add_firewall_rule(char *refparam, struct dmctx *ctx, void *data, char
|
|||
|
||||
static int delete_firewall_rule(char *refparam, struct dmctx *ctx, void *data, char *instance, unsigned char del_action)
|
||||
{
|
||||
struct uci_section *s = NULL, *stmp = NULL;
|
||||
struct uci_section *s = NULL;
|
||||
char *order = NULL, *rules_num = NULL;
|
||||
char buf[8] = {0};
|
||||
|
||||
|
|
@ -493,14 +484,6 @@ static int delete_firewall_rule(char *refparam, struct dmctx *ctx, void *data, c
|
|||
dmuci_delete_by_section(((struct rule_sec *)data)->dmmap_section, NULL, NULL);
|
||||
break;
|
||||
case DEL_ALL:
|
||||
uci_foreach_sections_safe("firewall", "rule", stmp, s) {
|
||||
struct uci_section *dmmap_section = NULL;
|
||||
|
||||
get_dmmap_section_of_config_section("dmmap_firewall", "rule", section_name(s), &dmmap_section);
|
||||
dmuci_delete_by_section(dmmap_section, NULL, NULL);
|
||||
|
||||
dmuci_delete_by_section(s, NULL, NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
|
@ -865,6 +848,9 @@ static int set_FirewallChainRule_ExpiryDate(char *refparam, struct dmctx *ctx, v
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
strptime(value, "%Y-%m-%dT%H:%M:%SZ", &tm);
|
||||
snprintf(expiry_date, sizeof(expiry_date), "%lld", (long long)timegm(&tm));
|
||||
dmuci_set_value_by_section(rule_args->config_section, "expiry", expiry_date);
|
||||
|
|
@ -1469,11 +1455,14 @@ static int set_rule_enable(char *refparam, struct dmctx *ctx, void *data, char *
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
string_to_bool(value, &b);
|
||||
dmuci_set_value_by_section(((struct rule_sec *)data)->config_section, "enabled", b ? "1" : "0");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_rule_order(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||
|
|
@ -1499,6 +1488,9 @@ static int set_rule_order(char *refparam, struct dmctx *ctx, void *data, char *i
|
|||
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->dmmap_section, "order", &curr_order);
|
||||
if (DM_STRTOUL(curr_order) > DM_STRTOUL(value))
|
||||
update_rule_order(value, curr_order, true);
|
||||
|
|
@ -1512,7 +1504,7 @@ static int set_rule_order(char *refparam, struct dmctx *ctx, void *data, char *i
|
|||
dmuci_set_value_by_section(((struct rule_sec *)data)->dmmap_section, "order", value);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_rule_alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||
|
|
@ -1528,10 +1520,13 @@ static int set_rule_description(char *refparam, struct dmctx *ctx, void *data, c
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_set_value_by_section(((struct rule_sec *)data)->config_section, "name", value);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_rule_target(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
|
||||
|
|
@ -1542,6 +1537,9 @@ static int set_rule_target(char *refparam, struct dmctx *ctx, void *data, char *
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
if (strcasecmp(value, "Accept") == 0)
|
||||
dmuci_set_value_by_section(((struct rule_sec *)data)->config_section, "target", "ACCEPT");
|
||||
else if (strcasecmp(value, "Reject") == 0)
|
||||
|
|
@ -1565,6 +1563,9 @@ static int set_rule_log(char *refparam, struct dmctx *ctx, void *data, char *ins
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
string_to_bool(value, &b);
|
||||
dmuci_set_value_by_section(((struct rule_sec *)data)->config_section, "log", b ? "1" : "");
|
||||
break;
|
||||
|
|
@ -1590,6 +1591,9 @@ static int set_rule_interface(struct dmctx *ctx, void *data, char *type, char *v
|
|||
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, type, &option);
|
||||
|
||||
if (DM_STRLEN(reference.path) == 0) {
|
||||
|
|
@ -1625,6 +1629,9 @@ static int set_rule_source_all_interfaces(char *refparam, struct dmctx *ctx, voi
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
string_to_bool(value, &b);
|
||||
if (b) {
|
||||
// Get the current 'src' option
|
||||
|
|
@ -1663,6 +1670,9 @@ static int set_rule_dest_all_interfaces(char *refparam, struct dmctx *ctx, void
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
string_to_bool(value, &b);
|
||||
if (b) {
|
||||
// Get the current 'dest' option
|
||||
|
|
@ -1693,6 +1703,9 @@ static int set_rule_i_p_version(char *refparam, struct dmctx *ctx, void *data, c
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
if (DM_LSTRCMP(value, "4") == 0)
|
||||
dmuci_set_value_by_section(((struct rule_sec *)data)->config_section, "family", "ipv4");
|
||||
else if (DM_LSTRCMP(value, "6") == 0)
|
||||
|
|
@ -1714,6 +1727,9 @@ static int set_rule_dest_ip(char *refparam, struct dmctx *ctx, void *data, char
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "dest_ip", &destip);
|
||||
DM_STRNCPY(buf, destip, sizeof(buf));
|
||||
pch = DM_STRCHR(buf, '/');
|
||||
|
|
@ -1737,6 +1753,9 @@ static int set_rule_dest_mask(char *refparam, struct dmctx *ctx, void *data, cha
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "dest_ip", &destip);
|
||||
pch = DM_STRCHR(destip, '/');
|
||||
if (pch)
|
||||
|
|
@ -1763,6 +1782,9 @@ static int set_rule_source_ip(char *refparam, struct dmctx *ctx, void *data, cha
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "src_ip", &srcip);
|
||||
DM_STRNCPY(buf, srcip, sizeof(buf));
|
||||
pch = DM_STRCHR(buf, '/');
|
||||
|
|
@ -1786,6 +1808,9 @@ static int set_rule_source_mask(char *refparam, struct dmctx *ctx, void *data, c
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "src_ip", &srcip);
|
||||
pch = DM_STRCHR(srcip, '/');
|
||||
if (pch)
|
||||
|
|
@ -1810,6 +1835,9 @@ static int set_rule_protocol(char *refparam, struct dmctx *ctx, void *data, char
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_set_value_by_section(((struct rule_sec *)data)->config_section, "proto", (*value == '-') ? "0" : value);
|
||||
break;
|
||||
}
|
||||
|
|
@ -1826,6 +1854,9 @@ static int set_rule_dest_port(char *refparam, struct dmctx *ctx, void *data, cha
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
if (*value == '-')
|
||||
value = "";
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "dest_port", &v);
|
||||
|
|
@ -1852,6 +1883,9 @@ static int set_rule_dest_port_range_max(char *refparam, struct dmctx *ctx, void
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "dest_port", &v);
|
||||
buf = dmstrdup(v);
|
||||
v = buf;
|
||||
|
|
@ -1881,6 +1915,9 @@ static int set_rule_source_port(char *refparam, struct dmctx *ctx, void *data, c
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
if (*value == '-')
|
||||
value = "";
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "src_port", &v);
|
||||
|
|
@ -1907,6 +1944,9 @@ static int set_rule_source_port_range_max(char *refparam, struct dmctx *ctx, voi
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct rule_sec *)data)->is_dynamic_rule)
|
||||
break;
|
||||
|
||||
dmuci_get_value_by_section_string(((struct rule_sec *)data)->config_section, "src_port", &v);
|
||||
buf = dmstrdup(v);
|
||||
v = buf;
|
||||
|
|
@ -2430,30 +2470,30 @@ DMLEAF tFirewallChainParams[] = {
|
|||
/* *** Device.Firewall.Chain.{i}.Rule.{i}. *** */
|
||||
DMLEAF tFirewallChainRuleParams[] = {
|
||||
/* PARAM, permission, type, getvalue, setvalue, bbfdm_type, version*/
|
||||
{"Enable", &DMRule, DMT_BOOL, get_rule_enable, set_rule_enable, BBFDM_BOTH},
|
||||
{"Enable", &DMWRITE, DMT_BOOL, get_rule_enable, set_rule_enable, BBFDM_BOTH},
|
||||
{"Status", &DMREAD, DMT_STRING, get_rule_status, NULL, BBFDM_BOTH},
|
||||
{"Order", &DMRule, DMT_UNINT, get_rule_order, set_rule_order, BBFDM_BOTH},
|
||||
{"Alias", &DMRule, DMT_STRING, get_rule_alias, set_rule_alias, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"Description", &DMRule, DMT_STRING, get_rule_description, set_rule_description, BBFDM_BOTH},
|
||||
{"Target", &DMRule, DMT_STRING, get_rule_target, set_rule_target, BBFDM_BOTH},
|
||||
//{"TargetChain", &DMRule, DMT_STRING, get_rule_target_chain, set_rule_target_chain, BBFDM_BOTH},
|
||||
{"Log", &DMRule, DMT_BOOL, get_rule_log, set_rule_log, BBFDM_BOTH},
|
||||
{"Order", &DMWRITE, DMT_UNINT, get_rule_order, set_rule_order, BBFDM_BOTH},
|
||||
{"Alias", &DMWRITE, DMT_STRING, get_rule_alias, set_rule_alias, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"Description", &DMWRITE, DMT_STRING, get_rule_description, set_rule_description, BBFDM_BOTH},
|
||||
{"Target", &DMWRITE, DMT_STRING, get_rule_target, set_rule_target, BBFDM_BOTH},
|
||||
//{"TargetChain", &DMWRITE, DMT_STRING, get_rule_target_chain, set_rule_target_chain, BBFDM_BOTH},
|
||||
{"Log", &DMWRITE, DMT_BOOL, get_rule_log, set_rule_log, BBFDM_BOTH},
|
||||
{"CreationDate", &DMREAD, DMT_TIME, get_FirewallChainRule_CreationDate, NULL, BBFDM_BOTH},
|
||||
{"ExpiryDate", &DMRule, DMT_TIME, get_FirewallChainRule_ExpiryDate, set_FirewallChainRule_ExpiryDate, BBFDM_BOTH},
|
||||
{"SourceInterface", &DMRule, DMT_STRING, get_rule_source_interface, set_rule_source_interface, BBFDM_BOTH, DM_FLAG_REFERENCE},
|
||||
{"SourceAllInterfaces", &DMRule, DMT_BOOL, get_rule_source_all_interfaces, set_rule_source_all_interfaces, BBFDM_BOTH},
|
||||
{"DestInterface", &DMRule, DMT_STRING, get_rule_dest_interface, set_rule_dest_interface, BBFDM_BOTH, DM_FLAG_REFERENCE},
|
||||
{"DestAllInterfaces", &DMRule, DMT_BOOL, get_rule_dest_all_interfaces, set_rule_dest_all_interfaces, BBFDM_BOTH},
|
||||
{"IPVersion", &DMRule, DMT_INT, get_rule_i_p_version, set_rule_i_p_version, BBFDM_BOTH},
|
||||
{"DestIP", &DMRule, DMT_STRING, get_rule_dest_ip, set_rule_dest_ip, BBFDM_BOTH},
|
||||
{"DestMask", &DMRule, DMT_STRING, get_rule_dest_mask, set_rule_dest_mask, BBFDM_BOTH},
|
||||
{"SourceIP", &DMRule, DMT_STRING, get_rule_source_ip, set_rule_source_ip, BBFDM_BOTH},
|
||||
{"SourceMask", &DMRule, DMT_STRING, get_rule_source_mask, set_rule_source_mask, BBFDM_BOTH},
|
||||
{"Protocol", &DMRule, DMT_INT, get_rule_protocol, set_rule_protocol, BBFDM_BOTH},
|
||||
{"DestPort", &DMRule, DMT_INT, get_rule_dest_port, set_rule_dest_port, BBFDM_BOTH},
|
||||
{"DestPortRangeMax", &DMRule, DMT_INT, get_rule_dest_port_range_max, set_rule_dest_port_range_max, BBFDM_BOTH},
|
||||
{"SourcePort", &DMRule, DMT_INT, get_rule_source_port, set_rule_source_port, BBFDM_BOTH},
|
||||
{"SourcePortRangeMax", &DMRule, DMT_INT, get_rule_source_port_range_max, set_rule_source_port_range_max, BBFDM_BOTH},
|
||||
{"ExpiryDate", &DMWRITE, DMT_TIME, get_FirewallChainRule_ExpiryDate, set_FirewallChainRule_ExpiryDate, BBFDM_BOTH},
|
||||
{"SourceInterface", &DMWRITE, DMT_STRING, get_rule_source_interface, set_rule_source_interface, BBFDM_BOTH, DM_FLAG_REFERENCE},
|
||||
{"SourceAllInterfaces", &DMWRITE, DMT_BOOL, get_rule_source_all_interfaces, set_rule_source_all_interfaces, BBFDM_BOTH},
|
||||
{"DestInterface", &DMWRITE, DMT_STRING, get_rule_dest_interface, set_rule_dest_interface, BBFDM_BOTH, DM_FLAG_REFERENCE},
|
||||
{"DestAllInterfaces", &DMWRITE, DMT_BOOL, get_rule_dest_all_interfaces, set_rule_dest_all_interfaces, BBFDM_BOTH},
|
||||
{"IPVersion", &DMWRITE, DMT_INT, get_rule_i_p_version, set_rule_i_p_version, BBFDM_BOTH},
|
||||
{"DestIP", &DMWRITE, DMT_STRING, get_rule_dest_ip, set_rule_dest_ip, BBFDM_BOTH},
|
||||
{"DestMask", &DMWRITE, DMT_STRING, get_rule_dest_mask, set_rule_dest_mask, BBFDM_BOTH},
|
||||
{"SourceIP", &DMWRITE, DMT_STRING, get_rule_source_ip, set_rule_source_ip, BBFDM_BOTH},
|
||||
{"SourceMask", &DMWRITE, DMT_STRING, get_rule_source_mask, set_rule_source_mask, BBFDM_BOTH},
|
||||
{"Protocol", &DMWRITE, DMT_INT, get_rule_protocol, set_rule_protocol, BBFDM_BOTH},
|
||||
{"DestPort", &DMWRITE, DMT_INT, get_rule_dest_port, set_rule_dest_port, BBFDM_BOTH},
|
||||
{"DestPortRangeMax", &DMWRITE, DMT_INT, get_rule_dest_port_range_max, set_rule_dest_port_range_max, BBFDM_BOTH},
|
||||
{"SourcePort", &DMWRITE, DMT_INT, get_rule_source_port, set_rule_source_port, BBFDM_BOTH},
|
||||
{"SourcePortRangeMax", &DMWRITE, DMT_INT, get_rule_source_port_range_max, set_rule_source_port_range_max, BBFDM_BOTH},
|
||||
{0}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ struct route6_args {
|
|||
|
||||
struct routingfwdargs
|
||||
{
|
||||
char *permission;
|
||||
struct uci_section *routefwdsection;
|
||||
int type;
|
||||
};
|
||||
|
|
@ -45,17 +44,8 @@ enum enum_route_type {
|
|||
/********************************
|
||||
* init function
|
||||
********************************/
|
||||
static inline int init_args_ipv4forward(struct routingfwdargs *args, struct uci_section *s, char *permission, int type)
|
||||
static inline int init_args_route_forwarding(struct routingfwdargs *args, struct uci_section *s, int type)
|
||||
{
|
||||
args->permission = permission;
|
||||
args->routefwdsection = s;
|
||||
args->type = type;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int init_args_ipv6forward(struct routingfwdargs *args, struct uci_section *s, char *permission, int type)
|
||||
{
|
||||
args->permission = permission;
|
||||
args->routefwdsection = s;
|
||||
args->type = type;
|
||||
return 0;
|
||||
|
|
@ -419,7 +409,7 @@ static int browseIPv4ForwardingInst(struct dmctx *dmctx, DMNODE *parent_node, vo
|
|||
if (DM_STRCMP(rt_table, table) != 0 || (DM_STRLEN(table) == 0 && DM_STRCMP(rt_table, "254") != 0))
|
||||
continue;
|
||||
|
||||
init_args_ipv4forward(&curr_routefwdargs, p->config_section, "1", ROUTE_STATIC);
|
||||
init_args_route_forwarding(&curr_routefwdargs, p->config_section, ROUTE_STATIC);
|
||||
|
||||
inst = handle_instance(dmctx, parent_node, p->dmmap_section, "route_instance", "route_alias");
|
||||
|
||||
|
|
@ -432,7 +422,7 @@ static int browseIPv4ForwardingInst(struct dmctx *dmctx, DMNODE *parent_node, vo
|
|||
dmmap_synchronizeRoutingRouterIPv4Forwarding(dmctx, parent_node, prev_data, prev_instance);
|
||||
uci_path_foreach_option_eq(bbfdm, "dmmap_routing", "route_dynamic", "table", rt_table, s) {
|
||||
|
||||
init_args_ipv4forward(&curr_routefwdargs, s, "0", ROUTE_DYNAMIC);
|
||||
init_args_route_forwarding(&curr_routefwdargs, s, ROUTE_DYNAMIC);
|
||||
|
||||
inst = handle_instance(dmctx, parent_node, s, "route_instance", "route_alias");
|
||||
|
||||
|
|
@ -466,7 +456,7 @@ static int browseIPv6ForwardingInst(struct dmctx *dmctx, DMNODE *parent_node, vo
|
|||
if (DM_STRCMP(rt_table, table) != 0 || (DM_STRLEN(table) == 0 && DM_STRCMP(rt_table, "254") != 0))
|
||||
continue;
|
||||
|
||||
init_args_ipv6forward(&curr_route6fwdargs, p->config_section, "1", ROUTE_STATIC);
|
||||
init_args_route_forwarding(&curr_route6fwdargs, p->config_section, ROUTE_STATIC);
|
||||
|
||||
inst = handle_instance(dmctx, parent_node, p->dmmap_section, "route6_instance", "route6_alias");
|
||||
|
||||
|
|
@ -479,7 +469,7 @@ static int browseIPv6ForwardingInst(struct dmctx *dmctx, DMNODE *parent_node, vo
|
|||
dmmap_synchronizeRoutingRouterIPv6Forwarding(dmctx, parent_node, prev_data, prev_instance);
|
||||
uci_path_foreach_option_eq(bbfdm, "dmmap_routing", "route6_dynamic", "table", rt_table, s) {
|
||||
|
||||
init_args_ipv6forward(&curr_route6fwdargs, s, "0", ROUTE_DYNAMIC);
|
||||
init_args_route_forwarding(&curr_route6fwdargs, s, ROUTE_DYNAMIC);
|
||||
|
||||
inst = handle_instance(dmctx, parent_node, s, "route6_instance", "route6_alias");
|
||||
|
||||
|
|
@ -590,6 +580,9 @@ static int set_router_ipv4forwarding_enable(char *refparam, struct dmctx *ctx, v
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
string_to_bool(value, &b);
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "disabled", b ? "0" : "1");
|
||||
return 0;
|
||||
|
|
@ -619,6 +612,9 @@ static int set_router_ipv4forwarding_destip(char *refparam, struct dmctx *ctx, v
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "target", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -640,6 +636,9 @@ static int set_router_ipv4forwarding_destmask(char *refparam, struct dmctx *ctx,
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "netmask", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -678,6 +677,9 @@ static int set_router_ipv4forwarding_forwarding_policy(char *refparam, struct dm
|
|||
bbfdm_set_fault_message(ctx, "Route table '%s' value doesn't exist on the device. It's only allowed to set an available route table.");
|
||||
return FAULT_9007;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "table", value);
|
||||
|
||||
get_dmmap_section_of_config_section("dmmap_routing", "route", section_name(((struct routingfwdargs *)data)->routefwdsection), &dmmap_section);
|
||||
|
|
@ -719,6 +721,9 @@ static int set_router_ipv4forwarding_gatewayip(char *refparam, struct dmctx *ctx
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "gateway", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -751,6 +756,9 @@ static int set_RoutingRouterForwarding_Interface(char *refparam, struct dmctx *c
|
|||
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "interface", reference.value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -772,6 +780,9 @@ static int set_router_ipv4forwarding_metric(char *refparam, struct dmctx *ctx, v
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "metric", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -801,6 +812,9 @@ static int set_RoutingRouterIPv6Forwarding_Enable(char *refparam, struct dmctx *
|
|||
return FAULT_9007;
|
||||
break;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
string_to_bool(value, &b);
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "disabled", b ? "0" : "1");
|
||||
break;
|
||||
|
|
@ -830,6 +844,9 @@ static int set_RoutingRouterIPv6Forwarding_DestIPPrefix(char *refparam, struct d
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "target", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -862,6 +879,9 @@ static int set_RoutingRouterIPv6Forwarding_ForwardingPolicy(char *refparam, stru
|
|||
bbfdm_set_fault_message(ctx, "Route table '%s' value doesn't exist on the device. It's only allowed to set an available route table.");
|
||||
return FAULT_9007;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "table", value);
|
||||
|
||||
get_dmmap_section_of_config_section("dmmap_routing", "route6", section_name(((struct routingfwdargs *)data)->routefwdsection), &dmmap_section);
|
||||
|
|
@ -886,6 +906,9 @@ static int set_RoutingRouterIPv6Forwarding_NextHop(char *refparam, struct dmctx
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "gateway", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -913,6 +936,9 @@ static int set_RoutingRouterIPv6Forwarding_ForwardingMetric(char *refparam, stru
|
|||
return FAULT_9007;
|
||||
return 0;
|
||||
case VALUESET:
|
||||
if (((struct routingfwdargs *)data)->type == ROUTE_DYNAMIC)
|
||||
return 0;
|
||||
|
||||
dmuci_set_value_by_section(((struct routingfwdargs *)data)->routefwdsection, "metric", value);
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1142,16 +1168,6 @@ static int set_RoutingRouterIPv6Forwarding_Alias(char *refparam, struct dmctx *c
|
|||
return 0;
|
||||
}
|
||||
|
||||
static char *get_routing_perm(char *refparam, struct dmctx *dmctx, void *data, char *instance)
|
||||
{
|
||||
if (data != NULL)
|
||||
return ((struct routingfwdargs *)data)->permission;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct dm_permession_s DMRouting = {"1", &get_routing_perm};
|
||||
|
||||
/*************************************************************
|
||||
* ADD DEL OBJ
|
||||
**************************************************************/
|
||||
|
|
@ -1353,32 +1369,32 @@ DMLEAF tRoutingRouterParams[] = {
|
|||
/* *** Device.Routing.Router.{i}.IPv4Forwarding.{i}. *** */
|
||||
DMLEAF tRoutingRouterIPv4ForwardingParams[] = {
|
||||
/* PARAM, permission, type, getvalue, setvalue, bbfdm_type, version*/
|
||||
{"Enable", &DMRouting, DMT_BOOL, get_router_ipv4forwarding_enable, set_router_ipv4forwarding_enable, BBFDM_BOTH},
|
||||
{"Enable", &DMWRITE, DMT_BOOL, get_router_ipv4forwarding_enable, set_router_ipv4forwarding_enable, BBFDM_BOTH},
|
||||
{"Status", &DMREAD, DMT_STRING, get_router_ipv4forwarding_status, NULL, BBFDM_BOTH},
|
||||
{"Alias", &DMWRITE, DMT_STRING, get_router_ipv4forwarding_alias, set_router_ipv4forwarding_alias, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"StaticRoute", &DMREAD, DMT_BOOL, get_router_ipv4forwarding_static_route, NULL, BBFDM_BOTH},
|
||||
{"DestIPAddress", &DMRouting, DMT_STRING, get_router_ipv4forwarding_destip, set_router_ipv4forwarding_destip, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"DestSubnetMask", &DMRouting, DMT_STRING, get_router_ipv4forwarding_destmask, set_router_ipv4forwarding_destmask, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ForwardingPolicy", &DMRouting, DMT_INT, get_router_ipv4forwarding_forwarding_policy, set_router_ipv4forwarding_forwarding_policy, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"GatewayIPAddress", &DMRouting, DMT_STRING, get_router_ipv4forwarding_gatewayip, set_router_ipv4forwarding_gatewayip, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"Interface", &DMRouting, DMT_STRING, get_RoutingRouterForwarding_Interface, set_RoutingRouterForwarding_Interface, BBFDM_BOTH, DM_FLAG_UNIQUE|DM_FLAG_REFERENCE},
|
||||
{"DestIPAddress", &DMWRITE, DMT_STRING, get_router_ipv4forwarding_destip, set_router_ipv4forwarding_destip, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"DestSubnetMask", &DMWRITE, DMT_STRING, get_router_ipv4forwarding_destmask, set_router_ipv4forwarding_destmask, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ForwardingPolicy", &DMWRITE, DMT_INT, get_router_ipv4forwarding_forwarding_policy, set_router_ipv4forwarding_forwarding_policy, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"GatewayIPAddress", &DMWRITE, DMT_STRING, get_router_ipv4forwarding_gatewayip, set_router_ipv4forwarding_gatewayip, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"Interface", &DMWRITE, DMT_STRING, get_RoutingRouterForwarding_Interface, set_RoutingRouterForwarding_Interface, BBFDM_BOTH, DM_FLAG_UNIQUE|DM_FLAG_REFERENCE},
|
||||
{"Origin", &DMREAD, DMT_STRING, get_router_ipv4forwarding_origin, NULL, BBFDM_BOTH},
|
||||
{"ForwardingMetric", &DMRouting, DMT_INT, get_router_ipv4forwarding_metric, set_router_ipv4forwarding_metric, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ForwardingMetric", &DMWRITE, DMT_INT, get_router_ipv4forwarding_metric, set_router_ipv4forwarding_metric, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{0}
|
||||
};
|
||||
|
||||
/* *** Device.Routing.Router.{i}.IPv6Forwarding.{i}. *** */
|
||||
DMLEAF tRoutingRouterIPv6ForwardingParams[] = {
|
||||
/* PARAM, permission, type, getvalue, setvalue, bbfdm_type, version*/
|
||||
{"Enable", &DMRouting, DMT_BOOL, get_RoutingRouterIPv6Forwarding_Enable, set_RoutingRouterIPv6Forwarding_Enable, BBFDM_BOTH},
|
||||
{"Enable", &DMWRITE, DMT_BOOL, get_RoutingRouterIPv6Forwarding_Enable, set_RoutingRouterIPv6Forwarding_Enable, BBFDM_BOTH},
|
||||
{"Status", &DMREAD, DMT_STRING, get_RoutingRouterIPv6Forwarding_Status, NULL, BBFDM_BOTH},
|
||||
{"Alias", &DMWRITE, DMT_STRING, get_RoutingRouterIPv6Forwarding_Alias, set_RoutingRouterIPv6Forwarding_Alias, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"DestIPPrefix", &DMRouting, DMT_STRING, get_RoutingRouterIPv6Forwarding_DestIPPrefix, set_RoutingRouterIPv6Forwarding_DestIPPrefix, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ForwardingPolicy", &DMRouting, DMT_INT, get_RoutingRouterIPv6Forwarding_ForwardingPolicy, set_RoutingRouterIPv6Forwarding_ForwardingPolicy, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"NextHop", &DMRouting, DMT_STRING, get_RoutingRouterIPv6Forwarding_NextHop, set_RoutingRouterIPv6Forwarding_NextHop, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"Interface", &DMRouting, DMT_STRING, get_RoutingRouterForwarding_Interface, set_RoutingRouterForwarding_Interface, BBFDM_BOTH, DM_FLAG_UNIQUE|DM_FLAG_REFERENCE},
|
||||
{"DestIPPrefix", &DMWRITE, DMT_STRING, get_RoutingRouterIPv6Forwarding_DestIPPrefix, set_RoutingRouterIPv6Forwarding_DestIPPrefix, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ForwardingPolicy", &DMWRITE, DMT_INT, get_RoutingRouterIPv6Forwarding_ForwardingPolicy, set_RoutingRouterIPv6Forwarding_ForwardingPolicy, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"NextHop", &DMWRITE, DMT_STRING, get_RoutingRouterIPv6Forwarding_NextHop, set_RoutingRouterIPv6Forwarding_NextHop, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"Interface", &DMWRITE, DMT_STRING, get_RoutingRouterForwarding_Interface, set_RoutingRouterForwarding_Interface, BBFDM_BOTH, DM_FLAG_UNIQUE|DM_FLAG_REFERENCE},
|
||||
{"Origin", &DMREAD, DMT_STRING, get_RoutingRouterIPv6Forwarding_Origin, NULL, BBFDM_BOTH},
|
||||
{"ForwardingMetric", &DMRouting, DMT_INT, get_RoutingRouterIPv6Forwarding_ForwardingMetric, set_RoutingRouterIPv6Forwarding_ForwardingMetric, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ForwardingMetric", &DMWRITE, DMT_INT, get_RoutingRouterIPv6Forwarding_ForwardingMetric, set_RoutingRouterIPv6Forwarding_ForwardingMetric, BBFDM_BOTH, DM_FLAG_UNIQUE},
|
||||
{"ExpirationTime", &DMREAD, DMT_TIME, get_RoutingRouterIPv6Forwarding_ExpirationTime, NULL, BBFDM_BOTH},
|
||||
{0}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -15,8 +15,6 @@
|
|||
|
||||
#include "libbbfdm-api/dmcommon.h"
|
||||
|
||||
extern struct dm_permession_s DMRouting;
|
||||
|
||||
extern DMOBJ tRoutingObj[];
|
||||
extern DMLEAF tRoutingParams[];
|
||||
extern DMOBJ tRoutingRouterObj[];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue