1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-30 00:00:11 +01:00

node: add enabled setting

This commit is contained in:
Steffen Vogel 2019-02-24 11:08:15 +01:00
parent 0acce9e375
commit e65ffc78dd
3 changed files with 17 additions and 1 deletions

View file

@ -60,6 +60,7 @@ extern "C" {
*/ */
struct node { struct node {
char *name; /**< A short identifier of the node, only used for configuration and logging */ char *name; /**< A short identifier of the node, only used for configuration and logging */
int enabled;
enum state state; enum state state;
@ -198,6 +199,8 @@ struct node_type * node_type(struct node *n)
struct memory_type * node_memory_type(struct node *n, struct memory_type *parent); struct memory_type * node_memory_type(struct node *n, struct memory_type *parent);
int node_is_valid_name(const char *name); int node_is_valid_name(const char *name);
bool node_is_enabled(const struct node *n);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -53,6 +53,7 @@ int node_init(struct node *n, struct node_type *vt)
n->name = NULL; n->name = NULL;
n->_name = NULL; n->_name = NULL;
n->_name_long = NULL; n->_name_long = NULL;
n->enabled = 1;
#ifdef __linux__ #ifdef __linux__
n->fwmark = -1; n->fwmark = -1;
@ -113,8 +114,9 @@ int node_parse(struct node *n, json_t *json, const char *name)
n->name = strdup(name); n->name = strdup(name);
ret = json_unpack_ex(json, &err, 0, "{ s: s, s?: { s?: o } }", ret = json_unpack_ex(json, &err, 0, "{ s: s, s?: b, s?: { s?: o } }",
"type", &type, "type", &type,
"enabled", &n->enabled,
"in", "in",
"signals", &json_signals "signals", &json_signals
); );
@ -603,4 +605,9 @@ int node_is_valid_name(const char *name)
} }
return 0; return 0;
bool node_is_enabled(const struct node *n)
{
return n->enabled;
}
} }

View file

@ -375,6 +375,9 @@ int path_parse(struct path *p, json_t *cfg, struct vlist *nodes)
vlist_push(&p->sources, ps); vlist_push(&p->sources, ps);
} }
if (!node_is_enabled(ps->node))
error("Source %s of path %s is not enabled", node_name(ps->node), path_name(p));
vlist_push(&ps->mappings, me); vlist_push(&ps->mappings, me);
} }
@ -385,6 +388,9 @@ int path_parse(struct path *p, json_t *cfg, struct vlist *nodes)
pd->node = n; pd->node = n;
if (!node_is_enabled(pd->node))
error("Destination %s of path %s is not enabled", node_name(pd->node), path_name(p));
vlist_push(&p->destinations, pd); vlist_push(&p->destinations, pd);
} }