lifecycle: return the maximum tree depth for the dependency tree when counting depth
This commit is contained in:
parent
8c8727e30f
commit
258e2e8a52
4 changed files with 18 additions and 6 deletions
|
@ -290,7 +290,7 @@ ifquery_main(int argc, char *argv[])
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (!lif_lifecycle_count_rdepends(&exec_opts, &collection))
|
||||
if (lif_lifecycle_count_rdepends(&exec_opts, &collection) == -1)
|
||||
{
|
||||
fprintf(stderr, "%s: could not validate dependency tree\n", argv0);
|
||||
return EXIT_FAILURE;
|
||||
|
|
|
@ -229,7 +229,7 @@ ifupdown_main(int argc, char *argv[])
|
|||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (!lif_lifecycle_count_rdepends(&exec_opts, &collection))
|
||||
if (lif_lifecycle_count_rdepends(&exec_opts, &collection) == -1)
|
||||
{
|
||||
fprintf(stderr, "%s: could not validate dependency tree\n", argv0);
|
||||
return EXIT_FAILURE;
|
||||
|
|
|
@ -419,7 +419,7 @@ count_interface_rdepends(const struct lif_execute_opts *opts, struct lif_dict *c
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
ssize_t
|
||||
lif_lifecycle_count_rdepends(const struct lif_execute_opts *opts, struct lif_dict *collection)
|
||||
{
|
||||
struct lif_node *iter;
|
||||
|
@ -435,9 +435,21 @@ lif_lifecycle_count_rdepends(const struct lif_execute_opts *opts, struct lif_dic
|
|||
if (!count_interface_rdepends(opts, collection, iface, iface->rdepends_count))
|
||||
{
|
||||
fprintf(stderr, "ifupdown: dependency graph is broken for interface %s\n", iface->ifname);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
/* figure out the max depth */
|
||||
size_t maxdepth = 0;
|
||||
|
||||
LIF_DICT_FOREACH(iter, collection)
|
||||
{
|
||||
struct lif_dict_entry *entry = iter->data;
|
||||
struct lif_interface *iface = entry->data;
|
||||
|
||||
if (iface->rdepends_count > maxdepth)
|
||||
maxdepth = iface->rdepends_count;
|
||||
}
|
||||
|
||||
return maxdepth;
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
extern bool lif_lifecycle_query_dependents(const struct lif_execute_opts *opts, struct lif_interface *iface, const char *lifname);
|
||||
extern bool lif_lifecycle_run_phase(const struct lif_execute_opts *opts, struct lif_interface *iface, const char *phase, const char *lifname, bool up);
|
||||
extern bool lif_lifecycle_run(const struct lif_execute_opts *opts, struct lif_interface *iface, struct lif_dict *collection, struct lif_dict *state, const char *lifname, bool up);
|
||||
extern bool lif_lifecycle_count_rdepends(const struct lif_execute_opts *opts, struct lif_dict *collection);
|
||||
extern ssize_t lif_lifecycle_count_rdepends(const struct lif_execute_opts *opts, struct lif_dict *collection);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue