forked from Mirror/frr
isisd: split northbound callbacks into multiple files
Rearrange the isisd northbound callbacks as following: * isis_nb.h: prototypes of all northbound callbacks. * isis_nb.c: definition of all northbound callbacks and their associated YANG data paths. * isis_nb_config.c: implementation of YANG configuration nodes. * isis_nb_state.c: implementation of YANG state nodes. * isis_nb_notifications.c: implementation of YANG notifications. This should help to keep to code more organized and easier to maintain. No behavior changes intended. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
37cdb6e91d
commit
2a1c520e9f
|
@ -48,6 +48,7 @@
|
|||
#include "isisd/isis_mt.h"
|
||||
#include "isisd/isis_tlvs.h"
|
||||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
extern struct isis *isis;
|
||||
|
||||
|
@ -375,6 +376,20 @@ void isis_adj_print(struct isis_adjacency *adj)
|
|||
return;
|
||||
}
|
||||
|
||||
const char *isis_adj_yang_state(enum isis_adj_state state)
|
||||
{
|
||||
switch (state) {
|
||||
case ISIS_ADJ_DOWN:
|
||||
return "down";
|
||||
case ISIS_ADJ_UP:
|
||||
return "up";
|
||||
case ISIS_ADJ_INITIALIZING:
|
||||
return "init";
|
||||
default:
|
||||
return "failed";
|
||||
}
|
||||
}
|
||||
|
||||
int isis_adj_expire(struct thread *thread)
|
||||
{
|
||||
struct isis_adjacency *adj;
|
||||
|
|
|
@ -121,6 +121,7 @@ DECLARE_HOOK(isis_adj_state_change_hook, (struct isis_adjacency *adj), (adj))
|
|||
void isis_adj_state_change(struct isis_adjacency *adj,
|
||||
enum isis_adj_state state, const char *reason);
|
||||
void isis_adj_print(struct isis_adjacency *adj);
|
||||
const char *isis_adj_yang_state(enum isis_adj_state state);
|
||||
int isis_adj_expire(struct thread *thread);
|
||||
void isis_adj_print_vty(struct isis_adjacency *adj, struct vty *vty,
|
||||
char detail);
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
#include "isisd/isis_mt.h"
|
||||
#include "isisd/isis_errors.h"
|
||||
#include "isisd/isis_tx_queue.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
DEFINE_QOBJ_TYPE(isis_circuit)
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#include "yang.h"
|
||||
#include "lib/linklist.h"
|
||||
#include "isisd/isisd.h"
|
||||
#include "isisd/isis_cli.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
#include "isisd/isis_misc.h"
|
||||
#include "isisd/isis_circuit.h"
|
||||
#include "isisd/isis_csm.h"
|
||||
|
|
127
isisd/isis_cli.h
127
isisd/isis_cli.h
|
@ -1,127 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2018 Volta Networks
|
||||
* Emanuele Di Pascale
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef ISISD_ISIS_CLI_H_
|
||||
#define ISISD_ISIS_CLI_H_
|
||||
|
||||
/* add cli_show declarations here as externs */
|
||||
void cli_show_router_isis(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_ipv4(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_ipv6(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_bfd_monitoring(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_area_address(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_is_type(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_dynamic_hostname(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_attached(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_overload(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_metric_style(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_area_pwd(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_domain_pwd(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_gen_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_ref_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_max_lifetime(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_mtu(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_spf_min_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_spf_ietf_backoff(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_purge_origin(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mpls_te(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mpls_te_router_addr(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_def_origin_ipv4(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_def_origin_ipv6(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_redistribute_ipv4(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_redistribute_ipv6(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv4_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv4_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_unicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_passive(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_password(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_metric(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_hello_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_hello_multi(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_threeway_shake(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_hello_padding(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_csnp_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_psnp_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv4_unicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv4_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv4_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_unicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_circ_type(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_network_type(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_priority(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_log_adjacency(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
|
||||
#endif /* ISISD_ISIS_CLI_H_ */
|
|
@ -57,6 +57,7 @@
|
|||
#include "isisd/isis_te.h"
|
||||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_tx_queue.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
static int lsp_refresh(struct thread *thread);
|
||||
static int lsp_l1_refresh_pseudo(struct thread *thread);
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#include "isisd/isis_lsp.h"
|
||||
#include "isisd/isis_mt.h"
|
||||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
/* Default configuration file name */
|
||||
#define ISISD_DEFAULT_CONFIG "isisd.conf"
|
||||
|
|
815
isisd/isis_nb.c
Normal file
815
isisd/isis_nb.c
Normal file
|
@ -0,0 +1,815 @@
|
|||
/*
|
||||
* Copyright (C) 2018 Volta Networks
|
||||
* Emanuele Di Pascale
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
#include "northbound.h"
|
||||
#include "libfrr.h"
|
||||
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
/* clang-format off */
|
||||
const struct frr_yang_module_info frr_isisd_info = {
|
||||
.name = "frr-isisd",
|
||||
.nodes = {
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_router_isis,
|
||||
.create = isis_instance_create,
|
||||
.destroy = isis_instance_destroy,
|
||||
},
|
||||
.priority = NB_DFLT_PRIORITY - 1,
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/is-type",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_is_type,
|
||||
.modify = isis_instance_is_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/area-address",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_area_address,
|
||||
.create = isis_instance_area_address_create,
|
||||
.destroy = isis_instance_area_address_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/dynamic-hostname",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_dynamic_hostname,
|
||||
.modify = isis_instance_dynamic_hostname_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/attached",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_attached,
|
||||
.modify = isis_instance_attached_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/overload",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_overload,
|
||||
.modify = isis_instance_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/metric-style",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_metric_style,
|
||||
.modify = isis_instance_metric_style_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/purge-originator",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_purge_origin,
|
||||
.modify = isis_instance_purge_originator_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/mtu",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_lsp_mtu,
|
||||
.modify = isis_instance_lsp_mtu_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/refresh-interval",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_lsp_ref_interval,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/refresh-interval/level-1",
|
||||
.cbs = {
|
||||
.modify = isis_instance_lsp_refresh_interval_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/refresh-interval/level-2",
|
||||
.cbs = {
|
||||
.modify = isis_instance_lsp_refresh_interval_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/maximum-lifetime",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_lsp_max_lifetime,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-1",
|
||||
.cbs = {
|
||||
.modify = isis_instance_lsp_maximum_lifetime_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-2",
|
||||
.cbs = {
|
||||
.modify = isis_instance_lsp_maximum_lifetime_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/generation-interval",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_lsp_gen_interval,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/generation-interval/level-1",
|
||||
.cbs = {
|
||||
.modify = isis_instance_lsp_generation_interval_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/lsp/generation-interval/level-2",
|
||||
.cbs = {
|
||||
.modify = isis_instance_lsp_generation_interval_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay",
|
||||
.cbs = {
|
||||
.apply_finish = ietf_backoff_delay_apply_finish,
|
||||
.cli_show = cli_show_isis_spf_ietf_backoff,
|
||||
.create = isis_instance_spf_ietf_backoff_delay_create,
|
||||
.destroy = isis_instance_spf_ietf_backoff_delay_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/init-delay",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_ietf_backoff_delay_init_delay_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/short-delay",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_ietf_backoff_delay_short_delay_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/long-delay",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_ietf_backoff_delay_long_delay_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/hold-down",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_ietf_backoff_delay_hold_down_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/ietf-backoff-delay/time-to-learn",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_ietf_backoff_delay_time_to_learn_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/minimum-interval",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_spf_min_interval,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/minimum-interval/level-1",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_minimum_interval_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/spf/minimum-interval/level-2",
|
||||
.cbs = {
|
||||
.modify = isis_instance_spf_minimum_interval_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/area-password",
|
||||
.cbs = {
|
||||
.apply_finish = area_password_apply_finish,
|
||||
.cli_show = cli_show_isis_area_pwd,
|
||||
.create = isis_instance_area_password_create,
|
||||
.destroy = isis_instance_area_password_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/area-password/password",
|
||||
.cbs = {
|
||||
.modify = isis_instance_area_password_password_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/area-password/password-type",
|
||||
.cbs = {
|
||||
.modify = isis_instance_area_password_password_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/area-password/authenticate-snp",
|
||||
.cbs = {
|
||||
.modify = isis_instance_area_password_authenticate_snp_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/domain-password",
|
||||
.cbs = {
|
||||
.apply_finish = domain_password_apply_finish,
|
||||
.cli_show = cli_show_isis_domain_pwd,
|
||||
.create = isis_instance_domain_password_create,
|
||||
.destroy = isis_instance_domain_password_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/domain-password/password",
|
||||
.cbs = {
|
||||
.modify = isis_instance_domain_password_password_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/domain-password/password-type",
|
||||
.cbs = {
|
||||
.modify = isis_instance_domain_password_password_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/domain-password/authenticate-snp",
|
||||
.cbs = {
|
||||
.modify = isis_instance_domain_password_authenticate_snp_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4",
|
||||
.cbs = {
|
||||
.apply_finish = default_info_origin_ipv4_apply_finish,
|
||||
.cli_show = cli_show_isis_def_origin_ipv4,
|
||||
.create = isis_instance_default_information_originate_ipv4_create,
|
||||
.destroy = isis_instance_default_information_originate_ipv4_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/always",
|
||||
.cbs = {
|
||||
.modify = isis_instance_default_information_originate_ipv4_always_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/route-map",
|
||||
.cbs = {
|
||||
.destroy = isis_instance_default_information_originate_ipv4_route_map_destroy,
|
||||
.modify = isis_instance_default_information_originate_ipv4_route_map_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv4/metric",
|
||||
.cbs = {
|
||||
.modify = isis_instance_default_information_originate_ipv4_metric_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6",
|
||||
.cbs = {
|
||||
.apply_finish = default_info_origin_ipv6_apply_finish,
|
||||
.cli_show = cli_show_isis_def_origin_ipv6,
|
||||
.create = isis_instance_default_information_originate_ipv6_create,
|
||||
.destroy = isis_instance_default_information_originate_ipv6_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/always",
|
||||
.cbs = {
|
||||
.modify = isis_instance_default_information_originate_ipv6_always_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/route-map",
|
||||
.cbs = {
|
||||
.destroy = isis_instance_default_information_originate_ipv6_route_map_destroy,
|
||||
.modify = isis_instance_default_information_originate_ipv6_route_map_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/default-information-originate/ipv6/metric",
|
||||
.cbs = {
|
||||
.modify = isis_instance_default_information_originate_ipv6_metric_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/redistribute/ipv4",
|
||||
.cbs = {
|
||||
.apply_finish = redistribute_ipv4_apply_finish,
|
||||
.cli_show = cli_show_isis_redistribute_ipv4,
|
||||
.create = isis_instance_redistribute_ipv4_create,
|
||||
.destroy = isis_instance_redistribute_ipv4_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/redistribute/ipv4/route-map",
|
||||
.cbs = {
|
||||
.destroy = isis_instance_redistribute_ipv4_route_map_destroy,
|
||||
.modify = isis_instance_redistribute_ipv4_route_map_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/redistribute/ipv4/metric",
|
||||
.cbs = {
|
||||
.modify = isis_instance_redistribute_ipv4_metric_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/redistribute/ipv6",
|
||||
.cbs = {
|
||||
.apply_finish = redistribute_ipv6_apply_finish,
|
||||
.cli_show = cli_show_isis_redistribute_ipv6,
|
||||
.create = isis_instance_redistribute_ipv6_create,
|
||||
.destroy = isis_instance_redistribute_ipv6_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/redistribute/ipv6/route-map",
|
||||
.cbs = {
|
||||
.destroy = isis_instance_redistribute_ipv6_route_map_destroy,
|
||||
.modify = isis_instance_redistribute_ipv6_route_map_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/redistribute/ipv6/metric",
|
||||
.cbs = {
|
||||
.modify = isis_instance_redistribute_ipv6_metric_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mt_ipv4_multicast,
|
||||
.create = isis_instance_multi_topology_ipv4_multicast_create,
|
||||
.destroy = isis_instance_multi_topology_ipv4_multicast_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-multicast/overload",
|
||||
.cbs = {
|
||||
.modify = isis_instance_multi_topology_ipv4_multicast_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mt_ipv4_mgmt,
|
||||
.create = isis_instance_multi_topology_ipv4_management_create,
|
||||
.destroy = isis_instance_multi_topology_ipv4_management_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv4-management/overload",
|
||||
.cbs = {
|
||||
.modify = isis_instance_multi_topology_ipv4_management_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mt_ipv6_unicast,
|
||||
.create = isis_instance_multi_topology_ipv6_unicast_create,
|
||||
.destroy = isis_instance_multi_topology_ipv6_unicast_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-unicast/overload",
|
||||
.cbs = {
|
||||
.modify = isis_instance_multi_topology_ipv6_unicast_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mt_ipv6_multicast,
|
||||
.create = isis_instance_multi_topology_ipv6_multicast_create,
|
||||
.destroy = isis_instance_multi_topology_ipv6_multicast_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-multicast/overload",
|
||||
.cbs = {
|
||||
.modify = isis_instance_multi_topology_ipv6_multicast_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mt_ipv6_mgmt,
|
||||
.create = isis_instance_multi_topology_ipv6_management_create,
|
||||
.destroy = isis_instance_multi_topology_ipv6_management_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-management/overload",
|
||||
.cbs = {
|
||||
.modify = isis_instance_multi_topology_ipv6_management_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mt_ipv6_dstsrc,
|
||||
.create = isis_instance_multi_topology_ipv6_dstsrc_create,
|
||||
.destroy = isis_instance_multi_topology_ipv6_dstsrc_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/multi-topology/ipv6-dstsrc/overload",
|
||||
.cbs = {
|
||||
.modify = isis_instance_multi_topology_ipv6_dstsrc_overload_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/log-adjacency-changes",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_log_adjacency,
|
||||
.modify = isis_instance_log_adjacency_changes_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/mpls-te",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mpls_te,
|
||||
.create = isis_instance_mpls_te_create,
|
||||
.destroy = isis_instance_mpls_te_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/mpls-te/router-address",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_isis_mpls_te_router_addr,
|
||||
.destroy = isis_instance_mpls_te_router_address_destroy,
|
||||
.modify = isis_instance_mpls_te_router_address_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis",
|
||||
.cbs = {
|
||||
.create = lib_interface_isis_create,
|
||||
.destroy = lib_interface_isis_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/area-tag",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_area_tag_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/circuit-type",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_circ_type,
|
||||
.modify = lib_interface_isis_circuit_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv4-routing",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_ipv4,
|
||||
.modify = lib_interface_isis_ipv4_routing_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/ipv6-routing",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_ipv6,
|
||||
.modify = lib_interface_isis_ipv6_routing_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/bfd-monitoring",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_bfd_monitoring_modify,
|
||||
.cli_show = cli_show_ip_isis_bfd_monitoring,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_csnp_interval,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-1",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_csnp_interval_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/csnp-interval/level-2",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_csnp_interval_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_psnp_interval,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-1",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_psnp_interval_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/psnp-interval/level-2",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_psnp_interval_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/padding",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_hello_padding,
|
||||
.modify = lib_interface_isis_hello_padding_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/interval",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_hello_interval,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-1",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_hello_interval_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/interval/level-2",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_hello_interval_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_hello_multi,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-1",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_hello_multiplier_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/hello/multiplier/level-2",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_hello_multiplier_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/metric",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_metric,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/metric/level-1",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_metric_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/metric/level-2",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_metric_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/priority",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_priority,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/priority/level-1",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_priority_level_1_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/priority/level-2",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_priority_level_2_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/network-type",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_network_type,
|
||||
.modify = lib_interface_isis_network_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/passive",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_passive,
|
||||
.modify = lib_interface_isis_passive_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_password,
|
||||
.create = lib_interface_isis_password_create,
|
||||
.destroy = lib_interface_isis_password_destroy,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password/password",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_password_password_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/password/password-type",
|
||||
.cbs = {
|
||||
.modify = lib_interface_isis_password_password_type_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/disable-three-way-handshake",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_threeway_shake,
|
||||
.modify = lib_interface_isis_disable_three_way_handshake_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-unicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv4_unicast,
|
||||
.modify = lib_interface_isis_multi_topology_ipv4_unicast_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-multicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv4_multicast,
|
||||
.modify = lib_interface_isis_multi_topology_ipv4_multicast_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv4-management",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv4_mgmt,
|
||||
.modify = lib_interface_isis_multi_topology_ipv4_management_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-unicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv6_unicast,
|
||||
.modify = lib_interface_isis_multi_topology_ipv6_unicast_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-multicast",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv6_multicast,
|
||||
.modify = lib_interface_isis_multi_topology_ipv6_multicast_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-management",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv6_mgmt,
|
||||
.modify = lib_interface_isis_multi_topology_ipv6_management_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/multi-topology/ipv6-dstsrc",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_ip_isis_mt_ipv6_dstsrc,
|
||||
.modify = lib_interface_isis_multi_topology_ipv6_dstsrc_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency",
|
||||
.cbs = {
|
||||
.get_next = lib_interface_isis_adjacencies_adjacency_get_next,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/hold-timer",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-priority",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/state",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_adjacencies_adjacency_state_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-changes",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_adjacency_changes_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-number",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_adjacency_number_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/init-fails",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_init_fails_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-rejects",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_adjacency_rejects_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/id-len-mismatch",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_id_len_mismatch_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/max-area-addresses-mismatch",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-type-fails",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_authentication_type_fails_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-fails",
|
||||
.cbs = {
|
||||
.get_elem = lib_interface_isis_event_counters_authentication_fails_get_elem,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = NULL,
|
||||
},
|
||||
}
|
||||
};
|
548
isisd/isis_nb.h
Normal file
548
isisd/isis_nb.h
Normal file
|
@ -0,0 +1,548 @@
|
|||
/*
|
||||
* Copyright (C) 2018 Volta Networks
|
||||
* Emanuele Di Pascale
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef ISISD_ISIS_NB_H_
|
||||
#define ISISD_ISIS_NB_H_
|
||||
|
||||
extern const struct frr_yang_module_info frr_isisd_info;
|
||||
|
||||
/* Forward declaration(s). */
|
||||
struct isis_area;
|
||||
struct isis_circuit;
|
||||
struct isis_adjacency;
|
||||
|
||||
/* Mandatory callbacks. */
|
||||
int isis_instance_create(enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_destroy(enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_is_type_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_area_address_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_area_address_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_dynamic_hostname_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_attached_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_overload_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_metric_style_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_purge_originator_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_mtu_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_refresh_interval_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_refresh_interval_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_maximum_lifetime_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_maximum_lifetime_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_generation_interval_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_lsp_generation_interval_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_ietf_backoff_delay_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_ietf_backoff_delay_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_spf_ietf_backoff_delay_init_delay_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_ietf_backoff_delay_short_delay_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_ietf_backoff_delay_long_delay_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_ietf_backoff_delay_hold_down_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_ietf_backoff_delay_time_to_learn_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_minimum_interval_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_spf_minimum_interval_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_area_password_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_area_password_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_area_password_password_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_area_password_password_type_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_area_password_authenticate_snp_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_domain_password_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_domain_password_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_domain_password_password_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_domain_password_password_type_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_domain_password_authenticate_snp_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv4_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv4_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_default_information_originate_ipv4_always_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv4_route_map_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv4_route_map_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_default_information_originate_ipv4_metric_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv6_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv6_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_default_information_originate_ipv6_always_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv6_route_map_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_default_information_originate_ipv6_route_map_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_default_information_originate_ipv6_metric_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_redistribute_ipv4_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_redistribute_ipv4_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_redistribute_ipv4_route_map_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_redistribute_ipv4_route_map_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_redistribute_ipv4_metric_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_redistribute_ipv6_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_redistribute_ipv6_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_redistribute_ipv6_route_map_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_redistribute_ipv6_route_map_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_redistribute_ipv6_metric_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv4_multicast_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv4_multicast_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_multi_topology_ipv4_multicast_overload_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv4_management_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv4_management_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_multi_topology_ipv4_management_overload_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_unicast_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_unicast_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_multi_topology_ipv6_unicast_overload_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_multicast_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_multicast_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_multi_topology_ipv6_multicast_overload_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_management_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_management_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_multi_topology_ipv6_management_overload_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_dstsrc_create(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_multi_topology_ipv6_dstsrc_destroy(
|
||||
enum nb_event event, const struct lyd_node *dnode);
|
||||
int isis_instance_multi_topology_ipv6_dstsrc_overload_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_log_adjacency_changes_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_mpls_te_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_mpls_te_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int isis_instance_mpls_te_router_address_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int isis_instance_mpls_te_router_address_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int lib_interface_isis_create(enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int lib_interface_isis_area_tag_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_ipv4_routing_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_ipv6_routing_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_circuit_type_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_bfd_monitoring_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_csnp_interval_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_csnp_interval_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_psnp_interval_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_psnp_interval_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_hello_padding_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_hello_interval_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_hello_interval_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_hello_multiplier_level_1_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_hello_multiplier_level_2_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_metric_level_1_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_metric_level_2_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_priority_level_1_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_priority_level_2_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_network_type_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_passive_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_password_create(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_password_destroy(enum nb_event event,
|
||||
const struct lyd_node *dnode);
|
||||
int lib_interface_isis_password_password_modify(enum nb_event event,
|
||||
const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_password_password_type_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_disable_three_way_handshake_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv4_unicast_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv4_multicast_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv4_management_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv6_unicast_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv6_multicast_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv6_management_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
int lib_interface_isis_multi_topology_ipv6_dstsrc_modify(
|
||||
enum nb_event event, const struct lyd_node *dnode,
|
||||
union nb_resource *resource);
|
||||
const void *
|
||||
lib_interface_isis_adjacencies_adjacency_get_next(const void *parent_list_entry,
|
||||
const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_state_get_elem(const char *xpath,
|
||||
const void *list_entry);
|
||||
struct yang_data *lib_interface_isis_event_counters_adjacency_changes_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *lib_interface_isis_event_counters_adjacency_number_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_init_fails_get_elem(const char *xpath,
|
||||
const void *list_entry);
|
||||
struct yang_data *lib_interface_isis_event_counters_adjacency_rejects_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *lib_interface_isis_event_counters_id_len_mismatch_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_authentication_type_fails_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_authentication_fails_get_elem(
|
||||
const char *xpath, const void *list_entry);
|
||||
|
||||
/* Optional 'apply_finish' callbacks. */
|
||||
void ietf_backoff_delay_apply_finish(const struct lyd_node *dnode);
|
||||
void area_password_apply_finish(const struct lyd_node *dnode);
|
||||
void domain_password_apply_finish(const struct lyd_node *dnode);
|
||||
void default_info_origin_apply_finish(const struct lyd_node *dnode, int family);
|
||||
void default_info_origin_ipv4_apply_finish(const struct lyd_node *dnode);
|
||||
void default_info_origin_ipv6_apply_finish(const struct lyd_node *dnode);
|
||||
void redistribute_apply_finish(const struct lyd_node *dnode, int family);
|
||||
void redistribute_ipv4_apply_finish(const struct lyd_node *dnode);
|
||||
void redistribute_ipv6_apply_finish(const struct lyd_node *dnode);
|
||||
|
||||
/* Optional 'cli_show' callbacks. */
|
||||
void cli_show_router_isis(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_ipv4(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_ipv6(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_bfd_monitoring(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_area_address(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_is_type(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_dynamic_hostname(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_attached(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_overload(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_metric_style(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_area_pwd(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_domain_pwd(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_gen_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_ref_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_max_lifetime(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_lsp_mtu(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_spf_min_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_spf_ietf_backoff(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_purge_origin(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mpls_te(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mpls_te_router_addr(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_def_origin_ipv4(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_def_origin_ipv6(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_redistribute_ipv4(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_redistribute_ipv6(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv4_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv4_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_unicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_passive(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_password(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_metric(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_hello_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_hello_multi(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_threeway_shake(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_hello_padding(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_csnp_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_psnp_interval(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv4_unicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv4_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv4_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_unicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_multicast(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_mgmt(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_mt_ipv6_dstsrc(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_circ_type(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_network_type(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_ip_isis_priority(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_log_adjacency(struct vty *vty, struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
|
||||
/* Notifications. */
|
||||
void isis_notif_db_overload(const struct isis_area *area, bool overload);
|
||||
void isis_notif_lsp_too_large(const struct isis_circuit *circuit,
|
||||
uint32_t pdu_size, const char *lsp_id);
|
||||
void isis_notif_if_state_change(const struct isis_circuit *circuit, bool down);
|
||||
void isis_notif_corrupted_lsp(const struct isis_area *area,
|
||||
const char *lsp_id); /* currently unused */
|
||||
void isis_notif_lsp_exceed_max(const struct isis_area *area,
|
||||
const char *lsp_id);
|
||||
void isis_notif_max_area_addr_mismatch(const struct isis_circuit *circuit,
|
||||
uint8_t max_area_addrs,
|
||||
const char *raw_pdu);
|
||||
void isis_notif_authentication_type_failure(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu);
|
||||
void isis_notif_authentication_failure(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu);
|
||||
void isis_notif_adj_state_change(const struct isis_adjacency *adj,
|
||||
int new_state, const char *reason);
|
||||
void isis_notif_reject_adjacency(const struct isis_circuit *circuit,
|
||||
const char *reason, const char *raw_pdu);
|
||||
void isis_notif_area_mismatch(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu);
|
||||
void isis_notif_lsp_received(const struct isis_circuit *circuit,
|
||||
const char *lsp_id, uint32_t seqno,
|
||||
uint32_t timestamp, const char *sys_id);
|
||||
void isis_notif_lsp_gen(const struct isis_area *area, const char *lsp_id,
|
||||
uint32_t seqno, uint32_t timestamp);
|
||||
void isis_notif_id_len_mismatch(const struct isis_circuit *circuit,
|
||||
uint8_t rcv_id_len, const char *raw_pdu);
|
||||
void isis_notif_version_skew(const struct isis_circuit *circuit,
|
||||
uint8_t version, const char *raw_pdu);
|
||||
void isis_notif_lsp_error(const struct isis_circuit *circuit,
|
||||
const char *lsp_id, const char *raw_pdu,
|
||||
uint32_t offset, uint8_t tlv_type);
|
||||
void isis_notif_seqno_skipped(const struct isis_circuit *circuit,
|
||||
const char *lsp_id);
|
||||
void isis_notif_own_lsp_purge(const struct isis_circuit *circuit,
|
||||
const char *lsp_id);
|
||||
|
||||
#endif /* ISISD_ISIS_NB_H_ */
|
2236
isisd/isis_nb_config.c
Normal file
2236
isisd/isis_nb_config.c
Normal file
File diff suppressed because it is too large
Load diff
491
isisd/isis_nb_notifications.c
Normal file
491
isisd/isis_nb_notifications.c
Normal file
|
@ -0,0 +1,491 @@
|
|||
/*
|
||||
* Copyright (C) 2018 Volta Networks
|
||||
* Emanuele Di Pascale
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
#include "northbound.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "isisd/isisd.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
#include "isisd/isis_adjacency.h"
|
||||
#include "isisd/isis_dynhn.h"
|
||||
#include "isisd/isis_misc.h"
|
||||
|
||||
/*
|
||||
* Helper functions.
|
||||
*/
|
||||
static void notif_prep_instance_hdr(const char *xpath,
|
||||
const struct isis_area *area,
|
||||
const char *routing_instance,
|
||||
struct list *args)
|
||||
{
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/routing-instance", xpath);
|
||||
data = yang_data_new_string(xpath_arg, routing_instance);
|
||||
listnode_add(args, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/routing-protocol-name",
|
||||
xpath);
|
||||
data = yang_data_new_string(xpath_arg, area->area_tag);
|
||||
listnode_add(args, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/isis-level", xpath);
|
||||
data = yang_data_new_enum(xpath_arg, area->is_type);
|
||||
listnode_add(args, data);
|
||||
}
|
||||
|
||||
static void notif_prepr_iface_hdr(const char *xpath,
|
||||
const struct isis_circuit *circuit,
|
||||
struct list *args)
|
||||
{
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/interface-name", xpath);
|
||||
data = yang_data_new_string(xpath_arg, circuit->interface->name);
|
||||
listnode_add(args, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/interface-level", xpath);
|
||||
data = yang_data_new_enum(xpath_arg, circuit->is_type);
|
||||
listnode_add(args, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/extended-circuit-id", xpath);
|
||||
/* we do not seem to have the extended version of the circuit_id */
|
||||
data = yang_data_new_uint32(xpath_arg, (uint32_t)circuit->circuit_id);
|
||||
listnode_add(args, data);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:database-overload
|
||||
*/
|
||||
void isis_notif_db_overload(const struct isis_area *area, bool overload)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:database-overload";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/overload", xpath);
|
||||
data = yang_data_new_enum(xpath_arg, !!overload);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:lsp-too-large
|
||||
*/
|
||||
void isis_notif_lsp_too_large(const struct isis_circuit *circuit,
|
||||
uint32_t pdu_size, const char *lsp_id)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:lsp-too-large";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/pdu-size", xpath);
|
||||
data = yang_data_new_uint32(xpath_arg, pdu_size);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:if-state-change
|
||||
*/
|
||||
void isis_notif_if_state_change(const struct isis_circuit *circuit, bool down)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:if-state-change";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/state", xpath);
|
||||
data = yang_data_new_enum(xpath_arg, !!down);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:corrupted-lsp-detected
|
||||
*/
|
||||
void isis_notif_corrupted_lsp(const struct isis_area *area, const char *lsp_id)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:corrupted-lsp-detected";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:attempt-to-exceed-max-sequence
|
||||
*/
|
||||
void isis_notif_lsp_exceed_max(const struct isis_area *area, const char *lsp_id)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:attempt-to-exceed-max-sequence";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:max-area-addresses-mismatch
|
||||
*/
|
||||
void isis_notif_max_area_addr_mismatch(const struct isis_circuit *circuit,
|
||||
uint8_t max_area_addrs,
|
||||
const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:max-area-addresses-mismatch";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/max-area-addresses", xpath);
|
||||
data = yang_data_new_uint8(xpath_arg, max_area_addrs);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:authentication-type-failure
|
||||
*/
|
||||
void isis_notif_authentication_type_failure(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:authentication-type-failure";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:authentication-failure
|
||||
*/
|
||||
void isis_notif_authentication_failure(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:authentication-failure";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:adjacency-state-change
|
||||
*/
|
||||
void isis_notif_adj_state_change(const struct isis_adjacency *adj,
|
||||
int new_state, const char *reason)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:adjacency-state-change";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_circuit *circuit = adj->circuit;
|
||||
struct isis_area *area = circuit->area;
|
||||
struct isis_dynhn *dyn = dynhn_find_by_id(adj->sysid);
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
if (dyn) {
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/neighbor", xpath);
|
||||
data = yang_data_new_string(xpath_arg, dyn->hostname);
|
||||
listnode_add(arguments, data);
|
||||
}
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/neighbor-system-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, sysid_print(adj->sysid));
|
||||
listnode_add(arguments, data);
|
||||
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/state", xpath);
|
||||
data = yang_data_new_string(xpath_arg, isis_adj_yang_state(new_state));
|
||||
listnode_add(arguments, data);
|
||||
if (new_state == ISIS_ADJ_DOWN) {
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/reason", xpath);
|
||||
data = yang_data_new_string(xpath_arg, reason);
|
||||
listnode_add(arguments, data);
|
||||
}
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:rejected-adjacency
|
||||
*/
|
||||
void isis_notif_reject_adjacency(const struct isis_circuit *circuit,
|
||||
const char *reason, const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:rejected-adjacency";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/reason", xpath);
|
||||
data = yang_data_new_string(xpath_arg, reason);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:area-mismatch
|
||||
*/
|
||||
void isis_notif_area_mismatch(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:area-mismatch";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:lsp-received
|
||||
*/
|
||||
void isis_notif_lsp_received(const struct isis_circuit *circuit,
|
||||
const char *lsp_id, uint32_t seqno,
|
||||
uint32_t timestamp, const char *sys_id)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:lsp-received";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/sequence", xpath);
|
||||
data = yang_data_new_uint32(xpath_arg, seqno);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/received-timestamp", xpath);
|
||||
data = yang_data_new_uint32(xpath_arg, timestamp);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/neighbor-system-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, sys_id);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:lsp-generation
|
||||
*/
|
||||
void isis_notif_lsp_gen(const struct isis_area *area, const char *lsp_id,
|
||||
uint32_t seqno, uint32_t timestamp)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:lsp-generation";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/sequence", xpath);
|
||||
data = yang_data_new_uint32(xpath_arg, seqno);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/send-timestamp", xpath);
|
||||
data = yang_data_new_uint32(xpath_arg, timestamp);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:id-len-mismatch
|
||||
*/
|
||||
void isis_notif_id_len_mismatch(const struct isis_circuit *circuit,
|
||||
uint8_t rcv_id_len, const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:id-len-mismatch";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/pdu-field-len", xpath);
|
||||
data = yang_data_new_uint8(xpath_arg, rcv_id_len);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:version-skew
|
||||
*/
|
||||
void isis_notif_version_skew(const struct isis_circuit *circuit,
|
||||
uint8_t version, const char *raw_pdu)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:version-skew";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/protocol-version", xpath);
|
||||
data = yang_data_new_uint8(xpath_arg, version);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:lsp-error-detected
|
||||
*/
|
||||
void isis_notif_lsp_error(const struct isis_circuit *circuit,
|
||||
const char *lsp_id, const char *raw_pdu,
|
||||
__attribute__((unused)) uint32_t offset,
|
||||
__attribute__((unused)) uint8_t tlv_type)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:lsp-error-detected";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/raw-pdu", xpath);
|
||||
data = yang_data_new(xpath_arg, raw_pdu);
|
||||
listnode_add(arguments, data);
|
||||
/* ignore offset and tlv_type which cannot be set properly */
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:sequence-number-skipped
|
||||
*/
|
||||
void isis_notif_seqno_skipped(const struct isis_circuit *circuit,
|
||||
const char *lsp_id)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:sequence-number-skipped";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:own-lsp-purge
|
||||
*/
|
||||
void isis_notif_own_lsp_purge(const struct isis_circuit *circuit,
|
||||
const char *lsp_id)
|
||||
{
|
||||
const char *xpath = "/frr-isisd:own-lsp-purge";
|
||||
struct list *arguments = yang_data_list_new();
|
||||
char xpath_arg[XPATH_MAXLEN];
|
||||
struct yang_data *data;
|
||||
struct isis_area *area = circuit->area;
|
||||
|
||||
notif_prep_instance_hdr(xpath, area, "default", arguments);
|
||||
notif_prepr_iface_hdr(xpath, circuit, arguments);
|
||||
snprintf(xpath_arg, sizeof(xpath_arg), "%s/lsp-id", xpath);
|
||||
data = yang_data_new_string(xpath_arg, lsp_id);
|
||||
listnode_add(arguments, data);
|
||||
|
||||
nb_notification_send(xpath, arguments);
|
||||
}
|
386
isisd/isis_nb_state.c
Normal file
386
isisd/isis_nb_state.c
Normal file
|
@ -0,0 +1,386 @@
|
|||
/*
|
||||
* Copyright (C) 2018 Volta Networks
|
||||
* Emanuele Di Pascale
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
#include "northbound.h"
|
||||
#include "linklist.h"
|
||||
|
||||
#include "isisd/isisd.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
#include "isisd/isis_circuit.h"
|
||||
#include "isisd/isis_adjacency.h"
|
||||
#include "isisd/isis_misc.h"
|
||||
|
||||
/*
|
||||
* XPath: /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency
|
||||
*/
|
||||
const void *
|
||||
lib_interface_isis_adjacencies_adjacency_get_next(const void *parent_list_entry,
|
||||
const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
struct isis_adjacency *adj, *adj_next = NULL;
|
||||
struct list *list;
|
||||
struct listnode *node, *node_next;
|
||||
|
||||
/* Get first adjacency. */
|
||||
if (list_entry == NULL) {
|
||||
ifp = (struct interface *)parent_list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
switch (circuit->circ_type) {
|
||||
case CIRCUIT_T_BROADCAST:
|
||||
for (int level = ISIS_LEVEL1; level <= ISIS_LEVELS;
|
||||
level++) {
|
||||
adj = listnode_head(
|
||||
circuit->u.bc.adjdb[level - 1]);
|
||||
if (adj)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CIRCUIT_T_P2P:
|
||||
adj = circuit->u.p2p.neighbor;
|
||||
break;
|
||||
default:
|
||||
adj = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
return adj;
|
||||
}
|
||||
|
||||
/* Get next adjacency. */
|
||||
adj = (struct isis_adjacency *)list_entry;
|
||||
circuit = adj->circuit;
|
||||
switch (circuit->circ_type) {
|
||||
case CIRCUIT_T_BROADCAST:
|
||||
list = circuit->u.bc.adjdb[adj->level - 1];
|
||||
node = listnode_lookup(list, adj);
|
||||
node_next = listnextnode(node);
|
||||
if (node_next)
|
||||
adj_next = listgetdata(node_next);
|
||||
else if (adj->level == ISIS_LEVEL1) {
|
||||
/*
|
||||
* Once we finish the L1 adjacencies, move to the L2
|
||||
* adjacencies list.
|
||||
*/
|
||||
list = circuit->u.bc.adjdb[ISIS_LEVEL2 - 1];
|
||||
adj_next = listnode_head(list);
|
||||
}
|
||||
break;
|
||||
case CIRCUIT_T_P2P:
|
||||
/* P2P circuits have at most one adjacency. */
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return adj_next;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sys-type
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_sys_type_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_enum(xpath, adj->level);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-sysid
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_sysid_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_string(xpath, sysid_print(adj->sysid));
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-extended-circuit-id
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_extended_circuit_id_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_uint32(xpath, adj->circuit->circuit_id);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-snpa
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_snpa_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_string(xpath, snpa_print(adj->snpa));
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/hold-timer
|
||||
*/
|
||||
struct yang_data *lib_interface_isis_adjacencies_adjacency_hold_timer_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_uint16(xpath, adj->hold_time);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/neighbor-priority
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_neighbor_priority_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_uint8(xpath, adj->prio[adj->level - 1]);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/adjacencies/adjacency/state
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_adjacencies_adjacency_state_get_elem(const char *xpath,
|
||||
const void *list_entry)
|
||||
{
|
||||
const struct isis_adjacency *adj = list_entry;
|
||||
|
||||
return yang_data_new_string(xpath, isis_adj_yang_state(adj->adj_state));
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-changes
|
||||
*/
|
||||
struct yang_data *lib_interface_isis_event_counters_adjacency_changes_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->adj_state_changes);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-number
|
||||
*/
|
||||
struct yang_data *lib_interface_isis_event_counters_adjacency_number_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
struct isis_adjacency *adj;
|
||||
struct listnode *node;
|
||||
uint32_t total = 0;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* TODO: keep track of the number of adjacencies instead of calculating
|
||||
* it on demand.
|
||||
*/
|
||||
switch (circuit->circ_type) {
|
||||
case CIRCUIT_T_BROADCAST:
|
||||
for (int level = ISIS_LEVEL1; level <= ISIS_LEVELS; level++) {
|
||||
for (ALL_LIST_ELEMENTS_RO(
|
||||
circuit->u.bc.adjdb[level - 1], node, adj))
|
||||
total++;
|
||||
}
|
||||
break;
|
||||
case CIRCUIT_T_P2P:
|
||||
adj = circuit->u.p2p.neighbor;
|
||||
if (adj)
|
||||
total = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return yang_data_new_uint32(xpath, total);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-interface:lib/interface/frr-isisd:isis/event-counters/init-fails
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_init_fails_get_elem(const char *xpath,
|
||||
const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->init_failures);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/adjacency-rejects
|
||||
*/
|
||||
struct yang_data *lib_interface_isis_event_counters_adjacency_rejects_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->rej_adjacencies);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/id-len-mismatch
|
||||
*/
|
||||
struct yang_data *lib_interface_isis_event_counters_id_len_mismatch_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->id_len_mismatches);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/max-area-addresses-mismatch
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_max_area_addresses_mismatch_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->max_area_addr_mismatches);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-type-fails
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_authentication_type_fails_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->auth_type_failures);
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath:
|
||||
* /frr-interface:lib/interface/frr-isisd:isis/event-counters/authentication-fails
|
||||
*/
|
||||
struct yang_data *
|
||||
lib_interface_isis_event_counters_authentication_fails_get_elem(
|
||||
const char *xpath, const void *list_entry)
|
||||
{
|
||||
struct interface *ifp;
|
||||
struct isis_circuit *circuit;
|
||||
|
||||
ifp = (struct interface *)list_entry;
|
||||
if (!ifp)
|
||||
return NULL;
|
||||
|
||||
circuit = circuit_scan_by_ifp(ifp);
|
||||
if (!circuit)
|
||||
return NULL;
|
||||
|
||||
return yang_data_new_uint32(xpath, circuit->auth_failures);
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -58,6 +58,7 @@
|
|||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_tx_queue.h"
|
||||
#include "isisd/isis_pdu_counter.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
static int ack_lsp(struct isis_lsp_hdr *hdr, struct isis_circuit *circuit,
|
||||
int level)
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#include "isisd/isis_te.h"
|
||||
#include "isisd/isis_mt.h"
|
||||
#include "isisd/fabricd.h"
|
||||
#include "isisd/isis_nb.h"
|
||||
|
||||
struct isis *isis = NULL;
|
||||
|
||||
|
|
|
@ -219,52 +219,6 @@ int isis_area_passwd_cleartext_set(struct isis_area *area, int level,
|
|||
int isis_area_passwd_hmac_md5_set(struct isis_area *area, int level,
|
||||
const char *passwd, uint8_t snp_auth);
|
||||
|
||||
extern const struct frr_yang_module_info frr_isisd_info;
|
||||
extern void isis_northbound_init(void);
|
||||
|
||||
/* YANG northbound notifications */
|
||||
extern void isis_notif_db_overload(const struct isis_area *area, bool overload);
|
||||
extern void isis_notif_lsp_too_large(const struct isis_circuit *circuit,
|
||||
uint32_t pdu_size, const char *lsp_id);
|
||||
extern void isis_notif_if_state_change(const struct isis_circuit *circuit,
|
||||
bool down);
|
||||
extern void isis_notif_corrupted_lsp(const struct isis_area *area,
|
||||
const char *lsp_id); /* currently unused */
|
||||
extern void isis_notif_lsp_exceed_max(const struct isis_area *area,
|
||||
const char *lsp_id);
|
||||
extern void
|
||||
isis_notif_max_area_addr_mismatch(const struct isis_circuit *circuit,
|
||||
uint8_t max_area_addrs, const char *raw_pdu);
|
||||
extern void
|
||||
isis_notif_authentication_type_failure(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu);
|
||||
extern void
|
||||
isis_notif_authentication_failure(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu);
|
||||
extern void isis_notif_adj_state_change(const struct isis_adjacency *adj,
|
||||
int new_state, const char *reason);
|
||||
extern void isis_notif_reject_adjacency(const struct isis_circuit *circuit,
|
||||
const char *reason,
|
||||
const char *raw_pdu);
|
||||
extern void isis_notif_area_mismatch(const struct isis_circuit *circuit,
|
||||
const char *raw_pdu);
|
||||
extern void isis_notif_lsp_received(const struct isis_circuit *circuit,
|
||||
const char *lsp_id, uint32_t seqno,
|
||||
uint32_t timestamp, const char *sys_id);
|
||||
extern void isis_notif_lsp_gen(const struct isis_area *area, const char *lsp_id,
|
||||
uint32_t seqno, uint32_t timestamp);
|
||||
extern void isis_notif_id_len_mismatch(const struct isis_circuit *circuit,
|
||||
uint8_t rcv_id_len, const char *raw_pdu);
|
||||
extern void isis_notif_version_skew(const struct isis_circuit *circuit,
|
||||
uint8_t version, const char *raw_pdu);
|
||||
extern void isis_notif_lsp_error(const struct isis_circuit *circuit,
|
||||
const char *lsp_id, const char *raw_pdu,
|
||||
uint32_t offset, uint8_t tlv_type);
|
||||
extern void isis_notif_seqno_skipped(const struct isis_circuit *circuit,
|
||||
const char *lsp_id);
|
||||
extern void isis_notif_own_lsp_purge(const struct isis_circuit *circuit,
|
||||
const char *lsp_id);
|
||||
|
||||
/* Master of threads. */
|
||||
extern struct thread_master *master;
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@ noinst_HEADERS += \
|
|||
isisd/isis_memory.h \
|
||||
isisd/isis_misc.h \
|
||||
isisd/isis_mt.h \
|
||||
isisd/isis_nb.h \
|
||||
isisd/isis_network.h \
|
||||
isisd/isis_pdu.h \
|
||||
isisd/isis_pdu_counter.h \
|
||||
|
@ -54,7 +55,6 @@ noinst_HEADERS += \
|
|||
isisd/isisd.h \
|
||||
isisd/iso_checksum.h \
|
||||
isisd/fabricd.h \
|
||||
isisd/isis_cli.h \
|
||||
# end
|
||||
|
||||
LIBISIS_SOURCES = \
|
||||
|
@ -99,7 +99,10 @@ ISIS_LDADD_COMMON = lib/libfrr.la $(LIBCAP)
|
|||
|
||||
isisd_libisis_a_SOURCES = \
|
||||
$(LIBISIS_SOURCES) \
|
||||
isisd/isis_northbound.c \
|
||||
isisd/isis_nb.c \
|
||||
isisd/isis_nb_config.c \
|
||||
isisd/isis_nb_notifications.c \
|
||||
isisd/isis_nb_state.c \
|
||||
isisd/isis_cli.c \
|
||||
#end
|
||||
|
||||
|
|
Loading…
Reference in a new issue