Add VES stndDefined PM and subscription for O-DU.
[sim/o1-interface.git] / ntsimulator / ntsim-ng / core / datastore / operations.c
1 /*************************************************************************
2 *
3 * Copyright 2021 highstreet technologies GmbH and others
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 ***************************************************************************/
17
18 #define _GNU_SOURCE
19
20 #include "operations.h"
21 #include "utils/log_utils.h"
22
23 int datastore_operations_add_sr_val(struct lyd_node *datastore, const sr_val_t *val) {
24     char *sval = sr_val_to_str(val);
25     struct lyd_node *rc = lyd_new_path(datastore, 0, val->xpath, sval, 0, LYD_PATH_OPT_UPDATE);
26     free(sval);
27     if(rc == 0) {
28         log_error("lyd_new_path failed\n");
29         return NTS_ERR_FAILED;
30     }
31
32     return NTS_ERR_OK;
33 }
34
35 int datastore_operations_change_sr_val(struct lyd_node *datastore, const sr_val_t *val) {
36     return datastore_operations_add_sr_val(datastore, val);
37 }
38
39 int datastore_operations_free_path(struct lyd_node *datastore, const char *xpath) {
40     struct ly_set *set = lyd_find_path(datastore, xpath);
41     if(set && set->number) {
42         struct lyd_node *node = set->set.d[0];
43         lyd_free(node);
44     }
45     else {
46         log_error("lyd_find_path error on %s\n", xpath);
47         ly_set_free(set);
48         return NTS_ERR_FAILED;
49     }
50     ly_set_free(set);
51
52     return NTS_ERR_OK;
53 }
54
55 struct lyd_node *datastore_operations_get_lyd_node(struct lyd_node *datastore, const char *xpath) {
56     struct ly_set *set = lyd_find_path(datastore, xpath);
57     struct lyd_node *node = 0;
58     if(set && set->number) {
59         node = set->set.d[0];
60     }
61     ly_set_free(set);
62
63     return node;
64 }