Show from where LSP flooding is triggered.
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
n->present = false;
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("OpenFabric: Adding %s to DNR",
vid2string(n->vertex, buff, sizeof(buff)));
n->present = false;
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("OpenFabric: Adding %s to RF",
vid2string(n->vertex, buff, sizeof(buff)));
n = neighbor_entry_lookup_list(f->neighbors, vertex->N.id);
if (n) {
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("Removing %s from NL as its in the reverse path",
vid2string(vertex, buff, sizeof(buff)));
n = neighbor_entry_lookup_hash(f->neighbors_neighbors, vertex->N.id);
if (n) {
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("Removing %s from NN as its in the reverse path",
vid2string(vertex, buff, sizeof(buff)));
void *cursor = NULL;
struct neighbor_entry *n;
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
- zlog_debug("OpenFabric: Flooding LSP %s",
- rawlspid_print(lsp->hdr.lsp_id));
- }
-
/* Mark all elements in NL as present and move T0s into DNR */
while (!skiplist_next(f->neighbors, NULL, (void **)&n, &cursor)) {
n->present = true;
continue;
}
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
zlog_debug("Moving %s to DNR because it's T0",
rawlspid_print(node_lsp->hdr.lsp_id));
}
struct isis_lsp *nlsp = lsp_for_vertex(f->spftree, n->vertex);
if (!nlsp || !nlsp->tlvs) {
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("Moving %s to DNR as it has no LSP",
vid2string(n->vertex, buff, sizeof(buff)));
continue;
}
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("Considering %s from NL...",
vid2string(n->vertex, buff, sizeof(buff)));
er->id);
if (nn) {
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
char buff[PREFIX2STR_BUFFER];
zlog_debug("Found neighbor %s in NN, removing it from NN and setting reflood.",
vid2string(nn->vertex, buff, sizeof(buff)));
move_to_dnr(lsp, n);
}
- if (isis->debugs & DEBUG_FABRICD_FLOODING) {
+ if (isis->debugs & DEBUG_FLOODING) {
zlog_debug("OpenFabric: Flooding algorithm complete.");
}
}
}
}
-void lsp_flood(struct isis_lsp *lsp, struct isis_circuit *circuit)
+void _lsp_flood(struct isis_lsp *lsp, struct isis_circuit *circuit,
+ const char *func, const char *file, int line)
{
+ if (isis->debugs & DEBUG_FLOODING) {
+ zlog_debug("Flooding LSP %s%s%s (From %s %s:%d)",
+ rawlspid_print(lsp->hdr.lsp_id),
+ circuit ? " except on " : "",
+ circuit ? circuit->interface->name : "",
+ func, file, line);
+ }
+
if (!fabricd)
lsp_set_all_srmflags(lsp, true);
else
int lsp_print_all(struct vty *vty, dict_t *lspdb, char detail, char dynhost);
/* sets SRMflags for all active circuits of an lsp */
void lsp_set_all_srmflags(struct isis_lsp *lsp, bool set);
-void lsp_flood(struct isis_lsp *lsp, struct isis_circuit *circuit);
+
+#define lsp_flood(lsp, circuit) \
+ _lsp_flood((lsp), (circuit), __func__, __FILE__, __LINE__)
+void _lsp_flood(struct isis_lsp *lsp, struct isis_circuit *circuit,
+ const char *func, const char *file, int line);
void lsp_init(void);
#endif /* ISIS_LSP */
return CMD_SUCCESS;
}
-DEFUN (debug_fabric_flooding,
- debug_fabric_flooding_cmd,
- "debug openfabric flooding",
- DEBUG_STR
- PROTO_HELP
- "Flooding optimization algorithm\n")
-{
- isis->debugs |= DEBUG_FABRICD_FLOODING;
- print_debug(vty, DEBUG_FABRICD_FLOODING, 1);
-
- return CMD_SUCCESS;
-}
-
-DEFUN (no_debug_fabric_flooding,
- no_debug_fabric_flooding_cmd,
- "no debug openfabric flooding",
- NO_STR
- UNDEBUG_STR
- PROTO_HELP
- "Flooding optimization algorithm\n")
-{
- isis->debugs &= ~DEBUG_FABRICD_FLOODING;
- print_debug(vty, DEBUG_FABRICD_FLOODING, 0);
-
- return CMD_SUCCESS;
-}
-
-
void isis_vty_daemon_init(void)
{
install_element(ROUTER_NODE, &fabric_tier_cmd);
install_element(ROUTER_NODE, &no_fabric_tier_cmd);
- install_element(ENABLE_NODE, &debug_fabric_flooding_cmd);
- install_element(ENABLE_NODE, &no_debug_fabric_flooding_cmd);
- install_element(CONFIG_NODE, &debug_fabric_flooding_cmd);
- install_element(CONFIG_NODE, &no_debug_fabric_flooding_cmd);
}
vty_out(vty, "IS-IS LSP generation debugging is %s\n", onoffs);
if (flags & DEBUG_LSP_SCHED)
vty_out(vty, "IS-IS LSP scheduling debugging is %s\n", onoffs);
- if (flags & DEBUG_FABRICD_FLOODING)
- vty_out(vty, "OpenFabric Flooding debugging is %s\n", onoffs);
+ if (flags & DEBUG_FLOODING)
+ vty_out(vty, "IS-IS Flooding debugging is %s\n", onoffs);
if (flags & DEBUG_BFD)
vty_out(vty, "IS-IS BFD debugging is %s\n", onoffs);
}
vty_out(vty, "debug " PROTO_NAME " lsp-sched\n");
write++;
}
- if (flags & DEBUG_FABRICD_FLOODING) {
+ if (flags & DEBUG_FLOODING) {
vty_out(vty, "debug " PROTO_NAME " flooding\n");
write++;
}
return CMD_SUCCESS;
}
+DEFUN (debug_isis_flooding,
+ debug_isis_flooding_cmd,
+ "debug " PROTO_NAME " flooding",
+ DEBUG_STR
+ PROTO_HELP
+ "Flooding algorithm\n")
+{
+ isis->debugs |= DEBUG_FLOODING;
+ print_debug(vty, DEBUG_FLOODING, 1);
+
+ return CMD_SUCCESS;
+}
+
+DEFUN (no_debug_isis_flooding,
+ no_debug_isis_flooding_cmd,
+ "no debug " PROTO_NAME " flooding",
+ NO_STR
+ UNDEBUG_STR
+ PROTO_HELP
+ "Flooding algorithm\n")
+{
+ isis->debugs &= ~DEBUG_FLOODING;
+ print_debug(vty, DEBUG_FLOODING, 0);
+
+ return CMD_SUCCESS;
+}
+
DEFUN (debug_isis_snp,
debug_isis_snp_cmd,
"debug " PROTO_NAME " snp-packets",
install_element(ENABLE_NODE, &no_debug_isis_adj_cmd);
install_element(ENABLE_NODE, &debug_isis_tx_queue_cmd);
install_element(ENABLE_NODE, &no_debug_isis_tx_queue_cmd);
+ install_element(ENABLE_NODE, &debug_isis_flooding_cmd);
+ install_element(ENABLE_NODE, &no_debug_isis_flooding_cmd);
install_element(ENABLE_NODE, &debug_isis_snp_cmd);
install_element(ENABLE_NODE, &no_debug_isis_snp_cmd);
install_element(ENABLE_NODE, &debug_isis_upd_cmd);
install_element(CONFIG_NODE, &no_debug_isis_adj_cmd);
install_element(CONFIG_NODE, &debug_isis_tx_queue_cmd);
install_element(CONFIG_NODE, &no_debug_isis_tx_queue_cmd);
+ install_element(CONFIG_NODE, &debug_isis_flooding_cmd);
+ install_element(CONFIG_NODE, &no_debug_isis_flooding_cmd);
install_element(CONFIG_NODE, &debug_isis_snp_cmd);
install_element(CONFIG_NODE, &no_debug_isis_snp_cmd);
install_element(CONFIG_NODE, &debug_isis_upd_cmd);
#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)