From 38b6715c699f908265f11f6945db8e99bfb83fab Mon Sep 17 00:00:00 2001 From: Amin Ben Romdhane <amin.benromdhane@iopsys.eu> Date: Wed, 19 Feb 2025 15:25:19 +0100 Subject: [PATCH] Mark Device.Firewall.AdvancedLevel parameter value as reference --- src/firewall.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/firewall.c b/src/firewall.c index 7757b81..f9d6b18 100644 --- a/src/firewall.c +++ b/src/firewall.c @@ -1321,13 +1321,22 @@ static int set_firewall_config(char *refparam, struct dmctx *ctx, void *data, ch static int set_firewall_advanced_level(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action) { + char *allowed_objects[] = {"Device.Firewall.Level.", NULL}; + struct dm_reference reference = {0}; + + bbfdm_get_reference_linker(ctx, value, &reference); + switch (action) { case VALUECHECK: if (bbfdm_validate_string(ctx, value, -1, -1, NULL, NULL)) return FAULT_9007; + + if (dm_validate_allowed_objects(ctx, &reference, allowed_objects)) + return FAULT_9007; + break; case VALUESET: - if (strcasecmp(value, "Device.Firewall.Level.1.") != 0) { + if (strcmp(reference.path, "Device.Firewall.Level.1") != 0) { bbfdm_set_fault_message(ctx, "The current Firewall implementation supports only one Level. So the value should be 'Device.Firewall.Level.1'."); return FAULT_9007; } @@ -2510,7 +2519,7 @@ DMLEAF tFirewallParams[] = { /* PARAM, permission, type, getvalue, setvalue, bbfdm_type, version*/ {"Enable", &DMWRITE, DMT_BOOL, get_firewall_enable, set_firewall_enable, BBFDM_BOTH}, {"Config", &DMWRITE, DMT_STRING, get_firewall_config, set_firewall_config, BBFDM_BOTH}, -{"AdvancedLevel", &DMWRITE, DMT_STRING, get_firewall_advanced_level, set_firewall_advanced_level, BBFDM_BOTH}, +{"AdvancedLevel", &DMWRITE, DMT_STRING, get_firewall_advanced_level, set_firewall_advanced_level, BBFDM_BOTH, DM_FLAG_REFERENCE}, {"LevelNumberOfEntries", &DMREAD, DMT_UNINT, get_firewall_level_number_of_entries, NULL, BBFDM_BOTH}, {"ChainNumberOfEntries", &DMREAD, DMT_UNINT, get_firewall_chain_number_of_entries, NULL, BBFDM_BOTH}, {"DMZNumberOfEntries", &DMREAD, DMT_UNINT, get_firewall_dmz_number_of_entries, NULL, BBFDM_BOTH}, -- GitLab