mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 21:47:15 +02:00
zebra: add zebra to mgmtd oper-state
Signed-off-by: Christian Hopps <chopps@labn.net>
This commit is contained in:
parent
4e0147a05e
commit
ef91d34f01
|
@ -35,6 +35,7 @@
|
||||||
/* ---------- */
|
/* ---------- */
|
||||||
|
|
||||||
const char *mgmt_be_client_names[MGMTD_BE_CLIENT_ID_MAX + 1] = {
|
const char *mgmt_be_client_names[MGMTD_BE_CLIENT_ID_MAX + 1] = {
|
||||||
|
[MGMTD_BE_CLIENT_ID_ZEBRA] = "zebra",
|
||||||
#ifdef HAVE_STATICD
|
#ifdef HAVE_STATICD
|
||||||
[MGMTD_BE_CLIENT_ID_STATICD] = "staticd",
|
[MGMTD_BE_CLIENT_ID_STATICD] = "staticd",
|
||||||
#endif
|
#endif
|
||||||
|
@ -73,7 +74,16 @@ static const char *const *be_client_xpaths[MGMTD_BE_CLIENT_ID_MAX] = {
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *const *be_client_oper_xpaths[MGMTD_BE_CLIENT_ID_MAX] = {};
|
static const char *const zebra_oper_xpaths[] = {
|
||||||
|
"/frr-interface:lib/interface",
|
||||||
|
"/frr-vrf:lib/vrf/frr-zebra:zebra",
|
||||||
|
"/frr-zebra:zebra",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char *const *be_client_oper_xpaths[MGMTD_BE_CLIENT_ID_MAX] = {
|
||||||
|
[MGMTD_BE_CLIENT_ID_ZEBRA] = zebra_oper_xpaths,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We would like to have a better ADT than one with O(n) comparisons
|
* We would like to have a better ADT than one with O(n) comparisons
|
||||||
|
|
|
@ -30,6 +30,7 @@ enum mgmt_be_client_id {
|
||||||
#ifdef HAVE_STATICD
|
#ifdef HAVE_STATICD
|
||||||
MGMTD_BE_CLIENT_ID_STATICD,
|
MGMTD_BE_CLIENT_ID_STATICD,
|
||||||
#endif
|
#endif
|
||||||
|
MGMTD_BE_CLIENT_ID_ZEBRA,
|
||||||
MGMTD_BE_CLIENT_ID_MAX
|
MGMTD_BE_CLIENT_ID_MAX
|
||||||
};
|
};
|
||||||
#define MGMTD_BE_CLIENT_ID_MIN 0
|
#define MGMTD_BE_CLIENT_ID_MIN 0
|
||||||
|
|
|
@ -207,6 +207,16 @@ static const struct frr_yang_module_info *const mgmt_yang_modules[] = {
|
||||||
* NOTE: Always set .ignore_cbs true for to avoid validating
|
* NOTE: Always set .ignore_cbs true for to avoid validating
|
||||||
* backend configuration northbound callbacks during loading.
|
* backend configuration northbound callbacks during loading.
|
||||||
*/
|
*/
|
||||||
|
&(struct frr_yang_module_info){ .name = "frr-zebra",
|
||||||
|
.ignore_cbs = true },
|
||||||
|
/*
|
||||||
|
* TO support LYD_LYB parsing we have to include all the modules that
|
||||||
|
* backend clients include.
|
||||||
|
*/
|
||||||
|
&(struct frr_yang_module_info){ .name = "frr-affinity-map",
|
||||||
|
.ignore_cbs = true },
|
||||||
|
&(struct frr_yang_module_info){ .name = "frr-zebra-route-map",
|
||||||
|
.ignore_cbs = true },
|
||||||
#ifdef HAVE_STATICD
|
#ifdef HAVE_STATICD
|
||||||
&frr_staticd_info,
|
&frr_staticd_info,
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -37,7 +37,7 @@ daemon_flags = {
|
||||||
"lib/filter_cli.c": "VTYSH_ACL",
|
"lib/filter_cli.c": "VTYSH_ACL",
|
||||||
"lib/if.c": "VTYSH_INTERFACE",
|
"lib/if.c": "VTYSH_INTERFACE",
|
||||||
"lib/keychain.c": "VTYSH_KEYS",
|
"lib/keychain.c": "VTYSH_KEYS",
|
||||||
"lib/mgmt_be_client.c": "VTYSH_STATICD",
|
"lib/mgmt_be_client.c": "VTYSH_STATICD|VTYSH_ZEBRA",
|
||||||
"lib/mgmt_fe_client.c": "VTYSH_MGMTD",
|
"lib/mgmt_fe_client.c": "VTYSH_MGMTD",
|
||||||
"lib/lib_vty.c": "VTYSH_ALL",
|
"lib/lib_vty.c": "VTYSH_ALL",
|
||||||
"lib/log_vty.c": "VTYSH_ALL",
|
"lib/log_vty.c": "VTYSH_ALL",
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <zebra.h>
|
#include <zebra.h>
|
||||||
#include "command.h"
|
#include "command.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
#include "mgmt_be_client.h"
|
||||||
|
|
||||||
#include "zebra/debug_clippy.c"
|
#include "zebra/debug_clippy.c"
|
||||||
|
|
||||||
|
@ -846,4 +847,7 @@ void zebra_debug_init(void)
|
||||||
install_element(CONFIG_NODE, &no_debug_zebra_pbr_cmd);
|
install_element(CONFIG_NODE, &no_debug_zebra_pbr_cmd);
|
||||||
install_element(CONFIG_NODE, &debug_zebra_mlag_cmd);
|
install_element(CONFIG_NODE, &debug_zebra_mlag_cmd);
|
||||||
install_element(CONFIG_NODE, &debug_zebra_evpn_mh_cmd);
|
install_element(CONFIG_NODE, &debug_zebra_evpn_mh_cmd);
|
||||||
|
|
||||||
|
/* Init mgmtd backend client debug commands. */
|
||||||
|
mgmt_be_client_lib_vty_init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "affinitymap.h"
|
#include "affinitymap.h"
|
||||||
#include "routemap.h"
|
#include "routemap.h"
|
||||||
#include "routing_nb.h"
|
#include "routing_nb.h"
|
||||||
|
#include "mgmt_be_client.h"
|
||||||
|
|
||||||
#include "zebra/zebra_router.h"
|
#include "zebra/zebra_router.h"
|
||||||
#include "zebra/zebra_errors.h"
|
#include "zebra/zebra_errors.h"
|
||||||
|
@ -58,6 +59,8 @@ pid_t pid;
|
||||||
/* Pacify zclient.o in libfrr, which expects this variable. */
|
/* Pacify zclient.o in libfrr, which expects this variable. */
|
||||||
struct event_loop *master;
|
struct event_loop *master;
|
||||||
|
|
||||||
|
struct mgmt_be_client *mgmt_be_client;
|
||||||
|
|
||||||
/* Route retain mode flag. */
|
/* Route retain mode flag. */
|
||||||
int retain_mode = 0;
|
int retain_mode = 0;
|
||||||
|
|
||||||
|
@ -142,6 +145,8 @@ static void sigint(void)
|
||||||
|
|
||||||
zlog_notice("Terminating on signal");
|
zlog_notice("Terminating on signal");
|
||||||
|
|
||||||
|
mgmt_be_client_destroy(mgmt_be_client);
|
||||||
|
|
||||||
atomic_store_explicit(&zrouter.in_shutdown, true,
|
atomic_store_explicit(&zrouter.in_shutdown, true,
|
||||||
memory_order_relaxed);
|
memory_order_relaxed);
|
||||||
|
|
||||||
|
@ -430,6 +435,8 @@ int main(int argc, char **argv)
|
||||||
zebra_ns_init();
|
zebra_ns_init();
|
||||||
router_id_cmd_init();
|
router_id_cmd_init();
|
||||||
zebra_vty_init();
|
zebra_vty_init();
|
||||||
|
mgmt_be_client = mgmt_be_client_create("zebra", NULL, 0,
|
||||||
|
zrouter.master);
|
||||||
access_list_init();
|
access_list_init();
|
||||||
prefix_list_init();
|
prefix_list_init();
|
||||||
|
|
||||||
|
|
|
@ -156,6 +156,8 @@ const void *lib_vrf_zebra_ribs_rib_get_next(struct nb_cb_get_next_args *args)
|
||||||
safi_t safi;
|
safi_t safi;
|
||||||
|
|
||||||
zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
|
zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
|
||||||
|
if (!zvrf)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (args->list_entry == NULL) {
|
if (args->list_entry == NULL) {
|
||||||
afi = AFI_IP;
|
afi = AFI_IP;
|
||||||
|
@ -198,6 +200,8 @@ lib_vrf_zebra_ribs_rib_lookup_entry(struct nb_cb_lookup_entry_args *args)
|
||||||
uint32_t table_id = 0;
|
uint32_t table_id = 0;
|
||||||
|
|
||||||
zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
|
zvrf = zebra_vrf_lookup_by_id(vrf->vrf_id);
|
||||||
|
if (!zvrf)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
yang_afi_safi_identity2value(args->keys->key[0], &afi, &safi);
|
yang_afi_safi_identity2value(args->keys->key[0], &afi, &safi);
|
||||||
table_id = yang_str2uint32(args->keys->key[1]);
|
table_id = yang_str2uint32(args->keys->key[1]);
|
||||||
|
|
Loading…
Reference in a new issue