diff options
Diffstat (limited to 'isisd/isisd.c')
-rw-r--r-- | isisd/isisd.c | 115 |
1 files changed, 71 insertions, 44 deletions
diff --git a/isisd/isisd.c b/isisd/isisd.c index a8d6950a..1f0167bb 100644 --- a/isisd/isisd.c +++ b/isisd/isisd.c @@ -20,7 +20,6 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include <string.h> #include <zebra.h> #include "thread.h" @@ -856,7 +855,7 @@ DEFUN (debug_isis_events, "debug isis events", DEBUG_STR "IS-IS information\n" - "IS-IS Events\n") + "IS-IS Events\n") { isis->debugs |= DEBUG_EVENTS; print_debug (vty, DEBUG_EVENTS, 1); @@ -1555,9 +1554,9 @@ DEFUN (topology_generate_grid, topology_generate_grid_cmd, "topology generate grid <1-100> <1-100> <1-65000> [param] [param] " "[param]", - "Topology for IS-IS\n" - "Topology for IS-IS\n" - "Topology grid for IS-IS\n" + "Topology generation for IS-IS\n" + "Topology generation\n" + "Grid topology\n" "X parameter of the grid\n" "Y parameter of the grid\n" "Random seed\n" @@ -1580,6 +1579,9 @@ DEFUN (topology_generate_grid, gen_spgrid_topology (vty, area->topology); remove_topology_lsps (area); generate_topology_lsps (area); + /* Regenerate L1 LSP to get two way connection to the generated + * topology. */ + lsp_regenerate_schedule (area); } return CMD_SUCCESS; @@ -1587,41 +1589,39 @@ DEFUN (topology_generate_grid, DEFUN (show_isis_generated_topology, show_isis_generated_topology_cmd, - "show isis generated-topology", + "show isis generated-topologies", SHOW_STR - "clns network information\n" - "CLNS neighbor adjacencies\n") + "CLNS network information\n" + "Show generated topologies\n") { struct isis_area *area; struct listnode *node; struct listnode *node2; struct arc *arc; + for (ALL_LIST_ELEMENTS_RO (isis->area_list, node, area)) - { - if (area->topology) - { - vty_out (vty, "Topology for isis area:%s%s", area->area_tag, - VTY_NEWLINE); - for (ALL_LIST_ELEMENTS_RO (area->topology, node2, arc)) - { - vty_out (vty, "a %ld %ld %ld%s", arc->from_node, arc->to_node, - arc->distance, VTY_NEWLINE); - } - } - } + { + if (!area->topology) + continue; + + vty_out (vty, "Topology for isis area: %s%s", area->area_tag, + VTY_NEWLINE); + vty_out (vty, "From node To node Distance%s", VTY_NEWLINE); + + for (ALL_LIST_ELEMENTS_RO (area->topology, node2, arc)) + vty_out (vty, "%9ld %11ld %12ld%s", arc->from_node, arc->to_node, + arc->distance, VTY_NEWLINE); + } return CMD_SUCCESS; } -/* - * 'topology base-is' command - */ +/* Base IS for topology generation. */ DEFUN (topology_baseis, topology_baseis_cmd, "topology base-is WORD", - "Topology for IS-IS\n" - "Topology for IS-IS\n" - "A Network IS Base for this topology" - "XX.XXXX.XXXX.XX Network entity title (NET)\n") + "Topology generation for IS-IS\n" + "A Network IS Base for this topology\n" + "XXXX.XXXX.XXXX Network entity title (NET)\n") { struct isis_area *area; u_char buff[ISIS_SYS_ID_LEN]; @@ -1630,22 +1630,18 @@ DEFUN (topology_baseis, assert (area); if (sysid2buff (buff, argv[0])) - { - sysid2buff (area->topology_baseis, argv[0]); - } + sysid2buff (area->topology_baseis, argv[0]); return CMD_SUCCESS; } -/* - * 'no net' command - */ DEFUN (no_topology_baseis, no_topology_baseis_cmd, "no topology base-is WORD", NO_STR - "A Network Entity Title for this process (OSI only)" - "XX.XXXX. ... .XXX.XX Network entity title (NET)\n") + "Topology generation for IS-IS\n" + "A Network IS Base for this topology\n" + "XXXX.XXXX.XXXX Network entity title (NET)\n") { struct isis_area *area; @@ -1656,6 +1652,29 @@ DEFUN (no_topology_baseis, return CMD_SUCCESS; } +ALIAS (no_topology_baseis, + no_topology_baseis_noid_cmd, + "no topology base-is", + NO_STR + "Topology generation for IS-IS\n" + "A Network IS Base for this topology\n") + +DEFUN (topology_basedynh, + topology_basedynh_cmd, + "topology base-dynh WORD", + "Topology generation for IS-IS\n" + "Dynamic hostname base for this topology\n" + "Dynamic hostname base\n") +{ + struct isis_area *area; + + area = vty->index; + assert (area); + + /* I hope that it's enough. */ + area->topology_basedynh = strndup (argv[0], 16); + return CMD_SUCCESS; +} #endif /* TOPOLOGY_GENERATE */ DEFUN (lsp_lifetime, @@ -1968,23 +1987,29 @@ isis_config_write (struct vty *vty) vty_out(vty, "%s", VTY_NEWLINE); write++; } -#ifdef TOPOLOGY_GENERATE - /* seems we save the whole command line here */ - if (area->top_params) - { - vty_out (vty, " %s%s", area->top_params, VTY_NEWLINE); - write++; - } +#ifdef TOPOLOGY_GENERATE if (memcmp (area->topology_baseis, DEFAULT_TOPOLOGY_BASEIS, ISIS_SYS_ID_LEN)) { - vty_out (vty, " topology base_is %s%s", + vty_out (vty, " topology base-is %s%s", sysid_print (area->topology_baseis), VTY_NEWLINE); write++; } - + if (area->topology_basedynh) + { + vty_out (vty, " topology base-dynh %s%s", + area->topology_basedynh, VTY_NEWLINE); + write++; + } + /* We save the whole command line here. */ + if (strlen(area->top_params)) + { + vty_out (vty, " %s%s", area->top_params, VTY_NEWLINE); + write++; + } #endif /* TOPOLOGY_GENERATE */ + } } @@ -2127,7 +2152,9 @@ isis_init () #ifdef TOPOLOGY_GENERATE install_element (ISIS_NODE, &topology_generate_grid_cmd); install_element (ISIS_NODE, &topology_baseis_cmd); + install_element (ISIS_NODE, &topology_basedynh_cmd); install_element (ISIS_NODE, &no_topology_baseis_cmd); + install_element (ISIS_NODE, &no_topology_baseis_noid_cmd); install_element (VIEW_NODE, &show_isis_generated_topology_cmd); install_element (ENABLE_NODE, &show_isis_generated_topology_cmd); #endif /* TOPOLOGY_GENERATE */ |