ospfd: Update Traffic Engineering support
These patches update original code to RFC3630 (OSPF-TE) and add support of
RFC5392 (Inter-AS v2) & RFC7471 (TE metric extensions) and partial support
of RFC6827 (ASON - GMPLS).
* ospfd/ospf_dump.[c,h]: Add new dump functions for Traffic Engineering
* ospfd/ospf_opaque.[c,h]: Add new TLV code points for RFC5392
* ospfd/ospf_packet.c: Update checking of OSPF_OPTION
* ospfd/ospf_vty.[c,h]: Update ospf_str2area_id
* ospfd/ospf_zebra.c: Add new function ospf_interface_link_params() to get
Link Parameters information from the interface to populate Traffic
Engineering metrics
* ospfd/ospfd.[c,h]: Update OSPF_OPTION flags (T -> MT and new DN)
* ospfd/ospf_te.[c,h]: Major modifications to update the code to new
link parameters structure and new RFCs
Signed-off-by: Olivier Dugeon <olivier.dugeon@orange.com>
diff --git a/ospfd/ospf_dump.c b/ospfd/ospf_dump.c
index fb43210..66cc294 100644
--- a/ospfd/ospf_dump.c
+++ b/ospfd/ospf_dump.c
@@ -133,6 +133,7 @@
unsigned long conf_debug_ospf_lsa = 0;
unsigned long conf_debug_ospf_zebra = 0;
unsigned long conf_debug_ospf_nssa = 0;
+unsigned long conf_debug_ospf_te = 0;
/* Enable debug option variables -- valid only session. */
unsigned long term_debug_ospf_packet[5] = {0, 0, 0, 0, 0};
@@ -142,7 +143,7 @@
unsigned long term_debug_ospf_lsa = 0;
unsigned long term_debug_ospf_zebra = 0;
unsigned long term_debug_ospf_nssa = 0;
-
+unsigned long term_debug_ospf_te = 0;
const char *
@@ -328,13 +329,14 @@
{
static char buf[OSPF_OPTION_STR_MAXLEN];
- snprintf (buf, OSPF_OPTION_STR_MAXLEN, "*|%s|%s|%s|%s|%s|%s|*",
+ snprintf (buf, OSPF_OPTION_STR_MAXLEN, "*|%s|%s|%s|%s|%s|%s|%s",
(options & OSPF_OPTION_O) ? "O" : "-",
(options & OSPF_OPTION_DC) ? "DC" : "-",
(options & OSPF_OPTION_EA) ? "EA" : "-",
(options & OSPF_OPTION_NP) ? "N/P" : "-",
(options & OSPF_OPTION_MC) ? "MC" : "-",
- (options & OSPF_OPTION_E) ? "E" : "-");
+ (options & OSPF_OPTION_E) ? "E" : "-",
+ (options & OSPF_OPTION_MT) ? "M/T" : "-");
return buf;
}
@@ -1426,6 +1428,32 @@
return CMD_SUCCESS;
}
+DEFUN (debug_ospf_te,
+ debug_ospf_te_cmd,
+ "debug ospf te",
+ DEBUG_STR
+ OSPF_STR
+ "OSPF-TE information\n")
+{
+ if (vty->node == CONFIG_NODE)
+ CONF_DEBUG_ON (te, TE);
+ TERM_DEBUG_ON (te, TE);
+ return CMD_SUCCESS;
+}
+
+DEFUN (no_debug_ospf_te,
+ no_debug_ospf_te_cmd,
+ "no debug ospf te",
+ NO_STR
+ DEBUG_STR
+ OSPF_STR
+ "OSPF-TE information\n")
+{
+ if (vty->node == CONFIG_NODE)
+ CONF_DEBUG_OFF (te, TE);
+ TERM_DEBUG_OFF (te, TE);
+ return CMD_SUCCESS;
+}
DEFUN (show_debugging_ospf,
show_debugging_ospf_cmd,
@@ -1673,6 +1701,7 @@
install_element (ENABLE_NODE, &debug_ospf_zebra_cmd);
install_element (ENABLE_NODE, &debug_ospf_event_cmd);
install_element (ENABLE_NODE, &debug_ospf_nssa_cmd);
+ install_element (ENABLE_NODE, &debug_ospf_te_cmd);
install_element (ENABLE_NODE, &no_debug_ospf_packet_send_recv_detail_cmd);
install_element (ENABLE_NODE, &no_debug_ospf_packet_send_recv_cmd);
install_element (ENABLE_NODE, &no_debug_ospf_packet_all_cmd);
@@ -1686,6 +1715,7 @@
install_element (ENABLE_NODE, &no_debug_ospf_zebra_cmd);
install_element (ENABLE_NODE, &no_debug_ospf_event_cmd);
install_element (ENABLE_NODE, &no_debug_ospf_nssa_cmd);
+ install_element (ENABLE_NODE, &no_debug_ospf_te_cmd);
install_element (CONFIG_NODE, &debug_ospf_packet_send_recv_detail_cmd);
install_element (CONFIG_NODE, &debug_ospf_packet_send_recv_cmd);
@@ -1700,6 +1730,7 @@
install_element (CONFIG_NODE, &debug_ospf_zebra_cmd);
install_element (CONFIG_NODE, &debug_ospf_event_cmd);
install_element (CONFIG_NODE, &debug_ospf_nssa_cmd);
+ install_element (CONFIG_NODE, &debug_ospf_te_cmd);
install_element (CONFIG_NODE, &no_debug_ospf_packet_send_recv_detail_cmd);
install_element (CONFIG_NODE, &no_debug_ospf_packet_send_recv_cmd);
install_element (CONFIG_NODE, &no_debug_ospf_packet_all_cmd);
@@ -1713,4 +1744,5 @@
install_element (CONFIG_NODE, &no_debug_ospf_zebra_cmd);
install_element (CONFIG_NODE, &no_debug_ospf_event_cmd);
install_element (CONFIG_NODE, &no_debug_ospf_nssa_cmd);
+ install_element (CONFIG_NODE, &no_debug_ospf_te_cmd);
}