diff --git a/src/cfg.c b/src/cfg.c index facc098ae..15b5ed364 100644 --- a/src/cfg.c +++ b/src/cfg.c @@ -164,6 +164,8 @@ int config_parse_path(config_setting_t *cfg, int config_parse_node(config_setting_t *cfg, struct node **nodes, struct interface **interfaces) { + static int id; + const char *type_str = NULL; const char *remote_str = NULL; const char *local_str = NULL; @@ -182,9 +184,6 @@ int config_parse_node(config_setting_t *cfg, if (!node->name) cerror(cfg, "Missing node name"); - if (!config_setting_lookup_int(cfg, "id", &node->id)) - cerror(cfg, "Missing id for node '%s'", node->name); - if (!config_setting_lookup_string(cfg, "type", &type_str)) cerror(cfg, "Missing type for node '%s'", node->name); @@ -211,6 +210,9 @@ int config_parse_node(config_setting_t *cfg, config_parse_netem(cfg_netem, node->netem); } + if (!config_setting_lookup_int(cfg, "id", &node->id)) + node->id = id++; + /* Determine outgoing interface */ int index = if_getegress(&node->remote); struct interface *i = if_lookup_index(index, *interfaces);