From a1b5f469e70333042c2a0bd7e98bc4e69f4a0237 Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Tue, 13 Nov 2018 19:30:24 -0200 Subject: [PATCH] lib: introduce function that loads all FRR native YANG modules In some cases it will be necessary to load all FRR native modules. Examples: * vtysh needs to load all YANG modules so that it can manipulate data from all daemons. * The gen_northbound_callbacks tool will need to load all YANG modules since augmentations from one module can have an effect in the required northbound callbacks of other modules. The new yang_module_load_all() function provides this functionality. As a side note, the "frr_native_modules" will need to be updated every time we add a new YANG module to FRR. Signed-off-by: Renato Westphal --- lib/yang.c | 11 +++++++++++ lib/yang.h | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/lib/yang.c b/lib/yang.c index 73f63b18e4..011fff65a2 100644 --- a/lib/yang.c +++ b/lib/yang.c @@ -71,6 +71,11 @@ static const char *yang_module_imp_clb(const char *mod_name, return NULL; } +static const char * const frr_native_modules[] = { + "frr-interface", + "frr-ripd", +}; + /* Generate the yang_modules tree. */ static inline int yang_module_compare(const struct yang_module *a, const struct yang_module *b) @@ -108,6 +113,12 @@ struct yang_module *yang_module_load(const char *module_name) return module; } +void yang_module_load_all(void) +{ + for (size_t i = 0; i < array_size(frr_native_modules); i++) + yang_module_load(frr_native_modules[i]); +} + struct yang_module *yang_module_find(const char *module_name) { struct yang_module s; diff --git a/lib/yang.h b/lib/yang.h index b55d7bcb5e..aa08654abe 100644 --- a/lib/yang.h +++ b/lib/yang.h @@ -114,6 +114,11 @@ extern struct yang_modules yang_modules; */ extern struct yang_module *yang_module_load(const char *module_name); +/* + * Load all FRR native YANG models. + */ +extern void yang_module_load_all(void); + /* * Find a YANG module by its name. *