#include "isisd/isis_constants.h"
#include "isisd/isis_common.h"
#include "isisd/isis_redist.h"
+#include "isisd/isis_pdu_counter.h"
+#include "isisd/isis_circuit.h"
#include "isis_flags.h"
#include "dict.h"
#include "isis_memory.h"
#define PROTO_REDIST_STR FRR_REDIST_STR_ISISD
#define PROTO_REDIST_HELP FRR_REDIST_HELP_STR_ISISD
#define ROUTER_NODE ISIS_NODE
+extern void isis_cli_init(void);
#endif
extern struct zebra_privs_t isisd_privs;
int level;
};
+/* for yang configuration */
+enum isis_metric_style {
+ ISIS_NARROW_METRIC = 0,
+ ISIS_WIDE_METRIC,
+ ISIS_TRANSITION_METRIC,
+};
+
struct isis_area {
struct isis *isis; /* back pointer */
dict_t *lspdb[ISIS_LEVELS]; /* link-state dbs */
uint16_t min_spf_interval[ISIS_LEVELS];
/* the percentage of LSP mtu size used, before generating a new frag */
int lsp_frag_threshold;
+ uint64_t lsp_gen_count[ISIS_LEVELS];
+ uint64_t lsp_purge_count[ISIS_LEVELS];
int ip_circuits;
/* logging adjacency changes? */
uint8_t log_adj_changes;
struct lsp_refresh_arg lsp_refresh_arg[ISIS_LEVELS];
+ pdu_counter_t pdu_tx_counters;
+ pdu_counter_t pdu_rx_counters;
+ uint64_t lsp_rxmt_count;
+
QOBJ_FIELDS
};
DECLARE_QOBJ_TYPE(isis_area)
struct isis_area *isis_area_create(const char *);
struct isis_area *isis_area_lookup(const char *);
int isis_area_get(struct vty *vty, const char *area_tag);
+int isis_area_destroy(const char *area_tag);
void print_debug(struct vty *, int, int);
+struct isis_lsp *lsp_for_arg(const char *argv, dict_t *lspdb);
void isis_area_invalidate_routes(struct isis_area *area, int levels);
void isis_area_verify_routes(struct isis_area *area);
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);
/* Master of threads. */
extern struct thread_master *master;
#define DEBUG_PACKET_DUMP (1<<6)
#define DEBUG_LSP_GEN (1<<7)
#define DEBUG_LSP_SCHED (1<<8)
-#define DEBUG_FABRICD_FLOODING (1<<9)
+#define DEBUG_FLOODING (1<<9)
#define DEBUG_BFD (1<<10)
+#define DEBUG_TX_QUEUE (1<<11)
#define lsp_debug(...) \
do { \