diff --git a/src/sshmngr.c b/src/sshmngr.c
index 3ee2e5762e697dedd786682e907a3094159f319c..bbccd1eabb01de9a3d52dd42ada1a187f98c94dd 100644
--- a/src/sshmngr.c
+++ b/src/sshmngr.c
@@ -179,9 +179,9 @@ static int delObjSSHKey(char *refparam, struct dmctx *ctx, void *data, char *ins
switch (del_action) {
case DEL_INST:
- dmuci_get_value_by_section_string((struct uci_section *)data, "pubkey", &value);
+ dmuci_get_value_by_section_string(((struct dm_data *)data)->dmmap_section, "pubkey", &value);
remove_pubkey(value);
- dmuci_delete_by_section((struct uci_section *)data, NULL, NULL);
+ dmuci_delete_by_section(((struct dm_data *)data)->dmmap_section, NULL, NULL);
break;
case DEL_ALL:
uci_path_foreach_sections_safe(bbfdm, "dmmap_sshmngr", "authkey", stmp, s) {
@@ -248,6 +248,7 @@ static int browseSSHKeyInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev
char *key = NULL;
unsigned idx = 0;
json_object *json_key_list = NULL, *arr_obj = NULL;
+ struct dm_data data = {0};
dmubus_call("sshmngr", "list_keys", UBUS_ARGS{0}, 0, &json_key_list);
DM_ASSERT(json_key_list, return 0);
@@ -272,26 +273,22 @@ static int browseSSHKeyInst(struct dmctx *dmctx, DMNODE *parent_node, void *prev
}
}
- /* delete keys from dmmap which are not available in KEY_FILE */
stmp = NULL;
s = NULL;
uci_path_foreach_sections_safe(bbfdm, "dmmap_sshmngr", "authkey", stmp, s) {
char *val = NULL;
dmuci_get_value_by_section_string(s, "pubkey", &val);
if (!key_exist_in_keyfile(val, json_key_list)) {
+ /* delete keys from dmmap which are not available in KEY_FILE */
dmuci_delete_by_section(s, NULL, NULL);
- }
- }
-
- /* enlist objects */
- stmp = NULL;
- s = NULL;
+ } else {
+ data.dmmap_section = s;
+ /* enlist objects */
+ inst = handle_instance(dmctx, parent_node, s, "instance", "alias");
- uci_path_foreach_sections_safe(bbfdm, "dmmap_sshmngr", "authkey", stmp, s) {
- inst = handle_instance(dmctx, parent_node, s, "instance", "alias");
-
- if (DM_LINK_INST_OBJ(dmctx, parent_node, (void *)s, inst) == DM_STOP)
- break;
+ if (DM_LINK_INST_OBJ(dmctx, parent_node, &data, inst) == DM_STOP)
+ break;
+ }
}
return 0;
}
@@ -634,17 +631,17 @@ static int get_ssh_server_session_port(char *refparam, struct dmctx *ctx, void *
static int get_ssh_key_alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
- return bbf_get_alias(ctx, (struct uci_section *)data, "alias", instance, value);
+ return bbf_get_alias(ctx, ((struct dm_data *)data)->dmmap_section, "alias", instance, value);
}
static int set_ssh_key_alias(char *refparam, struct dmctx *ctx, void *data, char *instance, char *value, int action)
{
- return bbf_set_alias(ctx, (struct uci_section *)data, "alias", instance, value);
+ return bbf_set_alias(ctx, ((struct dm_data *)data)->dmmap_section, "alias", instance, value);
}
static int get_ssh_key_pubkey(char *refparam, struct dmctx *ctx, void *data, char *instance, char **value)
{
- dmuci_get_value_by_section_string((struct uci_section *)data, "pubkey", value);
+ dmuci_get_value_by_section_string(((struct dm_data *)data)->dmmap_section, "pubkey", value);
return 0;
}
@@ -658,7 +655,7 @@ static int set_ssh_key_pubkey(char *refparam, struct dmctx *ctx, void *data, cha
return FAULT_9007;
/* check if same as current key value */
- dmuci_get_value_by_section_string((struct uci_section *)data, "pubkey", &cur_val);
+ dmuci_get_value_by_section_string(((struct dm_data *)data)->dmmap_section, "pubkey", &cur_val);
if (DM_STRCMP(cur_val, value) == 0)
break;
@@ -668,12 +665,12 @@ static int set_ssh_key_pubkey(char *refparam, struct dmctx *ctx, void *data, cha
break;
case VALUESET:
/* check if same as current key value then nothing to do */
- dmuci_get_value_by_section_string((struct uci_section *)data, "pubkey", &cur_val);
+ dmuci_get_value_by_section_string(((struct dm_data *)data)->dmmap_section, "pubkey", &cur_val);
if (DM_STRCMP(cur_val, value) == 0)
break;
add_pubkey(cur_val, value);
- dmuci_set_value_by_section((struct uci_section *)data, "pubkey", value);
+ dmuci_set_value_by_section(((struct dm_data *)data)->dmmap_section, "pubkey", value);
break;
}
return 0;