File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / quagga / ospf6d / ospf6d.c
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Nov 2 10:09:11 2016 UTC (7 years, 8 months ago) by misho
Branches: quagga, MAIN
CVS tags: v1_0_20160315, HEAD
quagga 1.0.20160315

    1: /*
    2:  * Copyright (C) 2003 Yasuhiro Ohara
    3:  *
    4:  * This file is part of GNU Zebra.
    5:  *
    6:  * GNU Zebra is free software; you can redistribute it and/or modify it
    7:  * under the terms of the GNU General Public License as published by the
    8:  * Free Software Foundation; either version 2, or (at your option) any
    9:  * later version.
   10:  *
   11:  * GNU Zebra is distributed in the hope that it will be useful, but
   12:  * WITHOUT ANY WARRANTY; without even the implied warranty of
   13:  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   14:  * General Public License for more details.
   15:  *
   16:  * You should have received a copy of the GNU General Public License
   17:  * along with GNU Zebra; see the file COPYING.  If not, write to the 
   18:  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
   19:  * Boston, MA 02111-1307, USA.  
   20:  */
   21: 
   22: #include <zebra.h>
   23: 
   24: #include "thread.h"
   25: #include "linklist.h"
   26: #include "vty.h"
   27: #include "command.h"
   28: 
   29: #include "ospf6_proto.h"
   30: #include "ospf6_network.h"
   31: #include "ospf6_lsa.h"
   32: #include "ospf6_lsdb.h"
   33: #include "ospf6_message.h"
   34: #include "ospf6_route.h"
   35: #include "ospf6_zebra.h"
   36: #include "ospf6_spf.h"
   37: #include "ospf6_top.h"
   38: #include "ospf6_area.h"
   39: #include "ospf6_interface.h"
   40: #include "ospf6_neighbor.h"
   41: #include "ospf6_intra.h"
   42: #include "ospf6_asbr.h"
   43: #include "ospf6_abr.h"
   44: #include "ospf6_flood.h"
   45: #include "ospf6d.h"
   46: 
   47: #ifdef HAVE_SNMP
   48: #include "ospf6_snmp.h"
   49: #endif /*HAVE_SNMP*/
   50: 
   51: char ospf6_daemon_version[] = OSPF6_DAEMON_VERSION;
   52: 
   53: struct route_node *
   54: route_prev (struct route_node *node)
   55: {
   56:   struct route_node *end;
   57:   struct route_node *prev = NULL;
   58: 
   59:   end = node;
   60:   node = node->parent;
   61:   if (node)
   62:     route_lock_node (node);
   63:   while (node)
   64:     {
   65:       prev = node;
   66:       node = route_next (node);
   67:       if (node == end)
   68:         {
   69:           route_unlock_node (node);
   70:           node = NULL;
   71:         }
   72:     }
   73:   route_unlock_node (end);
   74:   if (prev)
   75:     route_lock_node (prev);
   76: 
   77:   return prev;
   78: }
   79: 
   80: 
   81: /* show database functions */
   82: DEFUN (show_version_ospf6,
   83:        show_version_ospf6_cmd,
   84:        "show version ospf6",
   85:        SHOW_STR
   86:        "Displays ospf6d version\n"
   87:       )
   88: {
   89:   vty_out (vty, "Zebra OSPF6d Version: %s%s",
   90:            ospf6_daemon_version, VNL);
   91: 
   92:   return CMD_SUCCESS;
   93: }
   94: 
   95: static struct cmd_node debug_node =
   96: {
   97:   DEBUG_NODE,
   98:   "",
   99:   1 /* VTYSH */
  100: };
  101: 
  102: static int
  103: config_write_ospf6_debug (struct vty *vty)
  104: {
  105:   config_write_ospf6_debug_message (vty);
  106:   config_write_ospf6_debug_lsa (vty);
  107:   config_write_ospf6_debug_zebra (vty);
  108:   config_write_ospf6_debug_interface (vty);
  109:   config_write_ospf6_debug_neighbor (vty);
  110:   config_write_ospf6_debug_spf (vty);
  111:   config_write_ospf6_debug_route (vty);
  112:   config_write_ospf6_debug_brouter (vty);
  113:   config_write_ospf6_debug_asbr (vty);
  114:   config_write_ospf6_debug_abr (vty);
  115:   config_write_ospf6_debug_flood (vty);
  116:   vty_out (vty, "!%s", VNL);
  117:   return 0;
  118: }
  119: 
  120: #define AREA_LSDB_TITLE_FORMAT \
  121:   "%s        Area Scoped Link State Database (Area %s)%s%s"
  122: #define IF_LSDB_TITLE_FORMAT \
  123:   "%s        I/F Scoped Link State Database (I/F %s in Area %s)%s%s"
  124: #define AS_LSDB_TITLE_FORMAT \
  125:   "%s        AS Scoped Link State Database%s%s"
  126: 
  127: static int
  128: parse_show_level (int argc, const char *argv[])
  129: {
  130:   int level = 0;
  131:   if (argc)
  132:     {
  133:       if (! strncmp (argv[0], "de", 2))
  134:         level = OSPF6_LSDB_SHOW_LEVEL_DETAIL;
  135:       else if (! strncmp (argv[0], "du", 2))
  136:         level = OSPF6_LSDB_SHOW_LEVEL_DUMP;
  137:       else if (! strncmp (argv[0], "in", 2))
  138:         level = OSPF6_LSDB_SHOW_LEVEL_INTERNAL;
  139:     }
  140:   else
  141:     level = OSPF6_LSDB_SHOW_LEVEL_NORMAL;
  142:   return level;
  143: }
  144: 
  145: static u_int16_t
  146: parse_type_spec (int argc, const char *argv[])
  147: {
  148:   u_int16_t type = 0;
  149:   assert (argc);
  150:   if (! strcmp (argv[0], "router"))
  151:     type = htons (OSPF6_LSTYPE_ROUTER);
  152:   else if (! strcmp (argv[0], "network"))
  153:     type = htons (OSPF6_LSTYPE_NETWORK);
  154:   else if (! strcmp (argv[0], "as-external"))
  155:     type = htons (OSPF6_LSTYPE_AS_EXTERNAL);
  156:   else if (! strcmp (argv[0], "intra-prefix"))
  157:     type = htons (OSPF6_LSTYPE_INTRA_PREFIX);
  158:   else if (! strcmp (argv[0], "inter-router"))
  159:     type = htons (OSPF6_LSTYPE_INTER_ROUTER);
  160:   else if (! strcmp (argv[0], "inter-prefix"))
  161:     type = htons (OSPF6_LSTYPE_INTER_PREFIX);
  162:   else if (! strcmp (argv[0], "link"))
  163:     type = htons (OSPF6_LSTYPE_LINK);
  164:   return type;
  165: }
  166: 
  167: DEFUN (show_ipv6_ospf6_database,
  168:        show_ipv6_ospf6_database_cmd,
  169:        "show ipv6 ospf6 database",
  170:        SHOW_STR
  171:        IPV6_STR
  172:        OSPF6_STR
  173:        "Display Link state database\n"
  174:       )
  175: {
  176:   int level;
  177:   struct listnode *i, *j;
  178:   struct ospf6 *o = ospf6;
  179:   struct ospf6_area *oa;
  180:   struct ospf6_interface *oi;
  181: 
  182:   OSPF6_CMD_CHECK_RUNNING ();
  183: 
  184:   level = parse_show_level (argc, argv);
  185: 
  186:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  187:     {
  188:       vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  189:       ospf6_lsdb_show (vty, level, NULL, NULL, NULL, oa->lsdb);
  190:     }
  191: 
  192:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  193:     {
  194:       for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  195:         {
  196:           vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  197:                    oi->interface->name, oa->name, VNL, VNL);
  198:           ospf6_lsdb_show (vty, level, NULL, NULL, NULL, oi->lsdb);
  199:         }
  200:     }
  201: 
  202:   vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  203:   ospf6_lsdb_show (vty, level, NULL, NULL, NULL, o->lsdb);
  204: 
  205:   vty_out (vty, "%s", VNL);
  206:   return CMD_SUCCESS;
  207: }
  208: 
  209: ALIAS (show_ipv6_ospf6_database,
  210:        show_ipv6_ospf6_database_detail_cmd,
  211:        "show ipv6 ospf6 database (detail|dump|internal)",
  212:        SHOW_STR
  213:        IPV6_STR
  214:        OSPF6_STR
  215:        "Display Link state database\n"
  216:        "Display details of LSAs\n"
  217:        "Dump LSAs\n"
  218:        "Display LSA's internal information\n"
  219:       )
  220: 
  221: DEFUN (show_ipv6_ospf6_database_type,
  222:        show_ipv6_ospf6_database_type_cmd,
  223:        "show ipv6 ospf6 database "
  224:        "(router|network|inter-prefix|inter-router|as-external|"
  225:        "group-membership|type-7|link|intra-prefix)",
  226:        SHOW_STR
  227:        IPV6_STR
  228:        OSPF6_STR
  229:        "Display Link state database\n"
  230:        "Display Router LSAs\n"
  231:        "Display Network LSAs\n"
  232:        "Display Inter-Area-Prefix LSAs\n"
  233:        "Display Inter-Area-Router LSAs\n"
  234:        "Display As-External LSAs\n"
  235:        "Display Group-Membership LSAs\n"
  236:        "Display Type-7 LSAs\n"
  237:        "Display Link LSAs\n"
  238:        "Display Intra-Area-Prefix LSAs\n"
  239:       )
  240: {
  241:   int level;
  242:   struct listnode *i, *j;
  243:   struct ospf6 *o = ospf6;
  244:   struct ospf6_area *oa;
  245:   struct ospf6_interface *oi;
  246:   u_int16_t type = 0;
  247: 
  248:   OSPF6_CMD_CHECK_RUNNING ();
  249: 
  250:   type = parse_type_spec (argc, argv);
  251:   argc--;
  252:   argv++;
  253:   level = parse_show_level (argc, argv);
  254: 
  255:   switch (OSPF6_LSA_SCOPE (type))
  256:     {
  257:       case OSPF6_SCOPE_AREA:
  258:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  259:           {
  260:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  261:             ospf6_lsdb_show (vty, level, &type, NULL, NULL, oa->lsdb);
  262:           }
  263:         break;
  264: 
  265:       case OSPF6_SCOPE_LINKLOCAL:
  266:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  267:           {
  268:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  269:               {
  270:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  271:                          oi->interface->name, oa->name, VNL, VNL);
  272:                 ospf6_lsdb_show (vty, level, &type, NULL, NULL, oi->lsdb);
  273:               }
  274:           }
  275:         break;
  276: 
  277:       case OSPF6_SCOPE_AS:
  278:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  279:         ospf6_lsdb_show (vty, level, &type, NULL, NULL, o->lsdb);
  280:         break;
  281: 
  282:       default:
  283:         assert (0);
  284:         break;
  285:     }
  286: 
  287:   vty_out (vty, "%s", VNL);
  288:   return CMD_SUCCESS;
  289: }
  290: 
  291: ALIAS (show_ipv6_ospf6_database_type,
  292:        show_ipv6_ospf6_database_type_detail_cmd,
  293:        "show ipv6 ospf6 database "
  294:        "(router|network|inter-prefix|inter-router|as-external|"
  295:        "group-membership|type-7|link|intra-prefix) "
  296:        "(detail|dump|internal)",
  297:        SHOW_STR
  298:        IPV6_STR
  299:        OSPF6_STR
  300:        "Display Link state database\n"
  301:        "Display Router LSAs\n"
  302:        "Display Network LSAs\n"
  303:        "Display Inter-Area-Prefix LSAs\n"
  304:        "Display Inter-Area-Router LSAs\n"
  305:        "Display As-External LSAs\n"
  306:        "Display Group-Membership LSAs\n"
  307:        "Display Type-7 LSAs\n"
  308:        "Display Link LSAs\n"
  309:        "Display Intra-Area-Prefix LSAs\n"
  310:        "Display details of LSAs\n"
  311:        "Dump LSAs\n"
  312:        "Display LSA's internal information\n"
  313:       )
  314: 
  315: DEFUN (show_ipv6_ospf6_database_id,
  316:        show_ipv6_ospf6_database_id_cmd,
  317:        "show ipv6 ospf6 database * A.B.C.D",
  318:        SHOW_STR
  319:        IPV6_STR
  320:        OSPF6_STR
  321:        "Display Link state database\n"
  322:        "Any Link state Type\n"
  323:        "Specify Link state ID as IPv4 address notation\n"
  324:       )
  325: {
  326:   int level;
  327:   struct listnode *i, *j;
  328:   struct ospf6 *o = ospf6;
  329:   struct ospf6_area *oa;
  330:   struct ospf6_interface *oi;
  331:   u_int32_t id = 0;
  332: 
  333:   OSPF6_CMD_CHECK_RUNNING ();
  334: 
  335:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
  336:     {
  337:       vty_out (vty, "Link State ID is not parsable: %s%s",
  338:                argv[0], VNL);
  339:       return CMD_SUCCESS;
  340:     }
  341: 
  342:   argc--;
  343:   argv++;
  344:   level = parse_show_level (argc, argv);
  345: 
  346:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  347:     {
  348:       vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  349:       ospf6_lsdb_show (vty, level, NULL, &id, NULL, oa->lsdb);
  350:     }
  351: 
  352:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  353:     {
  354:       for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  355:         {
  356:           vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  357:                    oi->interface->name, oa->name, VNL, VNL);
  358:           ospf6_lsdb_show (vty, level, NULL, &id, NULL, oi->lsdb);
  359:         }
  360:     }
  361: 
  362:   vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  363:   ospf6_lsdb_show (vty, level, NULL, &id, NULL, o->lsdb);
  364: 
  365:   vty_out (vty, "%s", VNL);
  366:   return CMD_SUCCESS;
  367: }
  368: 
  369: ALIAS (show_ipv6_ospf6_database_id,
  370:        show_ipv6_ospf6_database_id_detail_cmd,
  371:        "show ipv6 ospf6 database * A.B.C.D "
  372:        "(detail|dump|internal)",
  373:        SHOW_STR
  374:        IPV6_STR
  375:        OSPF6_STR
  376:        "Display Link state database\n"
  377:        "Any Link state Type\n"
  378:        "Specify Link state ID as IPv4 address notation\n"
  379:        "Display details of LSAs\n"
  380:        "Dump LSAs\n"
  381:        "Display LSA's internal information\n"
  382:       )
  383: 
  384: ALIAS (show_ipv6_ospf6_database_id,
  385:        show_ipv6_ospf6_database_linkstate_id_cmd,
  386:        "show ipv6 ospf6 database linkstate-id A.B.C.D",
  387:        SHOW_STR
  388:        IPV6_STR
  389:        OSPF6_STR
  390:        "Display Link state database\n"
  391:        "Search by Link state ID\n"
  392:        "Specify Link state ID as IPv4 address notation\n"
  393:       )
  394: 
  395: ALIAS (show_ipv6_ospf6_database_id,
  396:        show_ipv6_ospf6_database_linkstate_id_detail_cmd,
  397:        "show ipv6 ospf6 database linkstate-id A.B.C.D "
  398:        "(detail|dump|internal)",
  399:        SHOW_STR
  400:        IPV6_STR
  401:        OSPF6_STR
  402:        "Display Link state database\n"
  403:        "Search by Link state ID\n"
  404:        "Specify Link state ID as IPv4 address notation\n"
  405:        "Display details of LSAs\n"
  406:        "Dump LSAs\n"
  407:        "Display LSA's internal information\n"
  408:       )
  409: 
  410: DEFUN (show_ipv6_ospf6_database_router,
  411:        show_ipv6_ospf6_database_router_cmd,
  412:        "show ipv6 ospf6 database * * A.B.C.D",
  413:        SHOW_STR
  414:        IPV6_STR
  415:        OSPF6_STR
  416:        "Display Link state database\n"
  417:        "Any Link state Type\n"
  418:        "Any Link state ID\n"
  419:        "Specify Advertising Router as IPv4 address notation\n"
  420:       )
  421: {
  422:   int level;
  423:   struct listnode *i, *j;
  424:   struct ospf6 *o = ospf6;
  425:   struct ospf6_area *oa;
  426:   struct ospf6_interface *oi;
  427:   u_int32_t adv_router = 0;
  428: 
  429:   OSPF6_CMD_CHECK_RUNNING ();
  430: 
  431:   if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
  432:     {
  433:       vty_out (vty, "Advertising Router is not parsable: %s%s",
  434:                argv[0], VNL);
  435:       return CMD_SUCCESS;
  436:     }
  437: 
  438:   argc--;
  439:   argv++;
  440:   level = parse_show_level (argc, argv);
  441: 
  442:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  443:     {
  444:       vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  445:       ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oa->lsdb);
  446:     }
  447: 
  448:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  449:     {
  450:       for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  451:         {
  452:           vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  453:                    oi->interface->name, oa->name, VNL, VNL);
  454:           ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oi->lsdb);
  455:         }
  456:     }
  457: 
  458:   vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  459:   ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, o->lsdb);
  460: 
  461:   vty_out (vty, "%s", VNL);
  462:   return CMD_SUCCESS;
  463: }
  464: 
  465: ALIAS (show_ipv6_ospf6_database_router,
  466:        show_ipv6_ospf6_database_router_detail_cmd,
  467:        "show ipv6 ospf6 database * * A.B.C.D "
  468:        "(detail|dump|internal)",
  469:        SHOW_STR
  470:        IPV6_STR
  471:        OSPF6_STR
  472:        "Display Link state database\n"
  473:        "Any Link state Type\n"
  474:        "Any Link state ID\n"
  475:        "Specify Advertising Router as IPv4 address notation\n"
  476:        "Display details of LSAs\n"
  477:        "Dump LSAs\n"
  478:        "Display LSA's internal information\n"
  479:       )
  480: 
  481: ALIAS (show_ipv6_ospf6_database_router,
  482:        show_ipv6_ospf6_database_adv_router_cmd,
  483:        "show ipv6 ospf6 database adv-router A.B.C.D",
  484:        SHOW_STR
  485:        IPV6_STR
  486:        OSPF6_STR
  487:        "Display Link state database\n"
  488:        "Search by Advertising Router\n"
  489:        "Specify Advertising Router as IPv4 address notation\n"
  490:       )
  491: 
  492: ALIAS (show_ipv6_ospf6_database_router,
  493:        show_ipv6_ospf6_database_adv_router_detail_cmd,
  494:        "show ipv6 ospf6 database adv-router A.B.C.D "
  495:        "(detail|dump|internal)",
  496:        SHOW_STR
  497:        IPV6_STR
  498:        OSPF6_STR
  499:        "Display Link state database\n"
  500:        "Search by Advertising Router\n"
  501:        "Specify Advertising Router as IPv4 address notation\n"
  502:        "Display details of LSAs\n"
  503:        "Dump LSAs\n"
  504:        "Display LSA's internal information\n"
  505:       )
  506: 
  507: DEFUN (show_ipv6_ospf6_database_type_id,
  508:        show_ipv6_ospf6_database_type_id_cmd,
  509:        "show ipv6 ospf6 database "
  510:        "(router|network|inter-prefix|inter-router|as-external|"
  511:        "group-membership|type-7|link|intra-prefix) A.B.C.D",
  512:        SHOW_STR
  513:        IPV6_STR
  514:        OSPF6_STR
  515:        "Display Link state database\n"
  516:        "Display Router LSAs\n"
  517:        "Display Network LSAs\n"
  518:        "Display Inter-Area-Prefix LSAs\n"
  519:        "Display Inter-Area-Router LSAs\n"
  520:        "Display As-External LSAs\n"
  521:        "Display Group-Membership LSAs\n"
  522:        "Display Type-7 LSAs\n"
  523:        "Display Link LSAs\n"
  524:        "Display Intra-Area-Prefix LSAs\n"
  525:        "Specify Link state ID as IPv4 address notation\n"
  526:       )
  527: {
  528:   int level;
  529:   struct listnode *i, *j;
  530:   struct ospf6 *o = ospf6;
  531:   struct ospf6_area *oa;
  532:   struct ospf6_interface *oi;
  533:   u_int16_t type = 0;
  534:   u_int32_t id = 0;
  535: 
  536:   OSPF6_CMD_CHECK_RUNNING ();
  537: 
  538:   type = parse_type_spec (argc, argv);
  539:   argc--;
  540:   argv++;
  541: 
  542:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
  543:     {
  544:       vty_out (vty, "Link state ID is not parsable: %s%s",
  545:                argv[0], VNL);
  546:       return CMD_SUCCESS;
  547:     }
  548: 
  549:   argc--;
  550:   argv++;
  551:   level = parse_show_level (argc, argv);
  552: 
  553:   switch (OSPF6_LSA_SCOPE (type))
  554:     {
  555:       case OSPF6_SCOPE_AREA:
  556:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  557:           {
  558:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  559:             ospf6_lsdb_show (vty, level, &type, &id, NULL, oa->lsdb);
  560:           }
  561:         break;
  562: 
  563:       case OSPF6_SCOPE_LINKLOCAL:
  564:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  565:           {
  566:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  567:               {
  568:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  569:                          oi->interface->name, oa->name, VNL, VNL);
  570:                 ospf6_lsdb_show (vty, level, &type, &id, NULL, oi->lsdb);
  571:               }
  572:           }
  573:         break;
  574: 
  575:       case OSPF6_SCOPE_AS:
  576:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  577:         ospf6_lsdb_show (vty, level, &type, &id, NULL, o->lsdb);
  578:         break;
  579: 
  580:       default:
  581:         assert (0);
  582:         break;
  583:     }
  584: 
  585:   vty_out (vty, "%s", VNL);
  586:   return CMD_SUCCESS;
  587: }
  588: 
  589: ALIAS (show_ipv6_ospf6_database_type_id,
  590:        show_ipv6_ospf6_database_type_id_detail_cmd,
  591:        "show ipv6 ospf6 database "
  592:        "(router|network|inter-prefix|inter-router|as-external|"
  593:        "group-membership|type-7|link|intra-prefix) A.B.C.D "
  594:        "(detail|dump|internal)",
  595:        SHOW_STR
  596:        IPV6_STR
  597:        OSPF6_STR
  598:        "Display Link state database\n"
  599:        "Display Router LSAs\n"
  600:        "Display Network LSAs\n"
  601:        "Display Inter-Area-Prefix LSAs\n"
  602:        "Display Inter-Area-Router LSAs\n"
  603:        "Display As-External LSAs\n"
  604:        "Display Group-Membership LSAs\n"
  605:        "Display Type-7 LSAs\n"
  606:        "Display Link LSAs\n"
  607:        "Display Intra-Area-Prefix LSAs\n"
  608:        "Specify Link state ID as IPv4 address notation\n"
  609:        "Display details of LSAs\n"
  610:        "Dump LSAs\n"
  611:        "Display LSA's internal information\n"
  612:       )
  613: 
  614: ALIAS (show_ipv6_ospf6_database_type_id,
  615:        show_ipv6_ospf6_database_type_linkstate_id_cmd,
  616:        "show ipv6 ospf6 database "
  617:        "(router|network|inter-prefix|inter-router|as-external|"
  618:        "group-membership|type-7|link|intra-prefix) linkstate-id A.B.C.D",
  619:        SHOW_STR
  620:        IPV6_STR
  621:        OSPF6_STR
  622:        "Display Link state database\n"
  623:        "Display Router LSAs\n"
  624:        "Display Network LSAs\n"
  625:        "Display Inter-Area-Prefix LSAs\n"
  626:        "Display Inter-Area-Router LSAs\n"
  627:        "Display As-External LSAs\n"
  628:        "Display Group-Membership LSAs\n"
  629:        "Display Type-7 LSAs\n"
  630:        "Display Link LSAs\n"
  631:        "Display Intra-Area-Prefix LSAs\n"
  632:        "Search by Link state ID\n"
  633:        "Specify Link state ID as IPv4 address notation\n"
  634:       )
  635: 
  636: ALIAS (show_ipv6_ospf6_database_type_id,
  637:        show_ipv6_ospf6_database_type_linkstate_id_detail_cmd,
  638:        "show ipv6 ospf6 database "
  639:        "(router|network|inter-prefix|inter-router|as-external|"
  640:        "group-membership|type-7|link|intra-prefix) linkstate-id A.B.C.D "
  641:        "(detail|dump|internal)",
  642:        SHOW_STR
  643:        IPV6_STR
  644:        OSPF6_STR
  645:        "Display Link state database\n"
  646:        "Display Router LSAs\n"
  647:        "Display Network LSAs\n"
  648:        "Display Inter-Area-Prefix LSAs\n"
  649:        "Display Inter-Area-Router LSAs\n"
  650:        "Display As-External LSAs\n"
  651:        "Display Group-Membership LSAs\n"
  652:        "Display Type-7 LSAs\n"
  653:        "Display Link LSAs\n"
  654:        "Display Intra-Area-Prefix LSAs\n"
  655:        "Search by Link state ID\n"
  656:        "Specify Link state ID as IPv4 address notation\n"
  657:        "Display details of LSAs\n"
  658:        "Dump LSAs\n"
  659:        "Display LSA's internal information\n"
  660:       )
  661: 
  662: DEFUN (show_ipv6_ospf6_database_type_router,
  663:        show_ipv6_ospf6_database_type_router_cmd,
  664:        "show ipv6 ospf6 database "
  665:        "(router|network|inter-prefix|inter-router|as-external|"
  666:        "group-membership|type-7|link|intra-prefix) * A.B.C.D",
  667:        SHOW_STR
  668:        IPV6_STR
  669:        OSPF6_STR
  670:        "Display Link state database\n"
  671:        "Display Router LSAs\n"
  672:        "Display Network LSAs\n"
  673:        "Display Inter-Area-Prefix LSAs\n"
  674:        "Display Inter-Area-Router LSAs\n"
  675:        "Display As-External LSAs\n"
  676:        "Display Group-Membership LSAs\n"
  677:        "Display Type-7 LSAs\n"
  678:        "Display Link LSAs\n"
  679:        "Display Intra-Area-Prefix LSAs\n"
  680:        "Any Link state ID\n"
  681:        "Specify Advertising Router as IPv4 address notation\n"
  682:       )
  683: {
  684:   int level;
  685:   struct listnode *i, *j;
  686:   struct ospf6 *o = ospf6;
  687:   struct ospf6_area *oa;
  688:   struct ospf6_interface *oi;
  689:   u_int16_t type = 0;
  690:   u_int32_t adv_router = 0;
  691: 
  692:   OSPF6_CMD_CHECK_RUNNING ();
  693: 
  694:   type = parse_type_spec (argc, argv);
  695:   argc--;
  696:   argv++;
  697: 
  698:   if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
  699:     {
  700:       vty_out (vty, "Advertising Router is not parsable: %s%s",
  701:                argv[0], VNL);
  702:       return CMD_SUCCESS;
  703:     }
  704: 
  705:   argc--;
  706:   argv++;
  707:   level = parse_show_level (argc, argv);
  708: 
  709:   switch (OSPF6_LSA_SCOPE (type))
  710:     {
  711:       case OSPF6_SCOPE_AREA:
  712:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  713:           {
  714:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  715:             ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oa->lsdb);
  716:           }
  717:         break;
  718: 
  719:       case OSPF6_SCOPE_LINKLOCAL:
  720:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  721:           {
  722:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  723:               {
  724:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  725:                          oi->interface->name, oa->name, VNL, VNL);
  726:                 ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oi->lsdb);
  727:               }
  728:           }
  729:         break;
  730: 
  731:       case OSPF6_SCOPE_AS:
  732:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  733:         ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, o->lsdb);
  734:         break;
  735: 
  736:       default:
  737:         assert (0);
  738:         break;
  739:     }
  740: 
  741:   vty_out (vty, "%s", VNL);
  742:   return CMD_SUCCESS;
  743: }
  744: 
  745: ALIAS (show_ipv6_ospf6_database_type_router,
  746:        show_ipv6_ospf6_database_type_router_detail_cmd,
  747:        "show ipv6 ospf6 database "
  748:        "(router|network|inter-prefix|inter-router|as-external|"
  749:        "group-membership|type-7|link|intra-prefix) * A.B.C.D "
  750:        "(detail|dump|internal)",
  751:        SHOW_STR
  752:        IPV6_STR
  753:        OSPF6_STR
  754:        "Display Link state database\n"
  755:        "Display Router LSAs\n"
  756:        "Display Network LSAs\n"
  757:        "Display Inter-Area-Prefix LSAs\n"
  758:        "Display Inter-Area-Router LSAs\n"
  759:        "Display As-External LSAs\n"
  760:        "Display Group-Membership LSAs\n"
  761:        "Display Type-7 LSAs\n"
  762:        "Display Link LSAs\n"
  763:        "Display Intra-Area-Prefix LSAs\n"
  764:        "Any Link state ID\n"
  765:        "Specify Advertising Router as IPv4 address notation\n"
  766:        "Display details of LSAs\n"
  767:        "Dump LSAs\n"
  768:        "Display LSA's internal information\n"
  769:       )
  770: 
  771: ALIAS (show_ipv6_ospf6_database_type_router,
  772:        show_ipv6_ospf6_database_type_adv_router_cmd,
  773:        "show ipv6 ospf6 database "
  774:        "(router|network|inter-prefix|inter-router|as-external|"
  775:        "group-membership|type-7|link|intra-prefix) adv-router A.B.C.D",
  776:        SHOW_STR
  777:        IPV6_STR
  778:        OSPF6_STR
  779:        "Display Link state database\n"
  780:        "Display Router LSAs\n"
  781:        "Display Network LSAs\n"
  782:        "Display Inter-Area-Prefix LSAs\n"
  783:        "Display Inter-Area-Router LSAs\n"
  784:        "Display As-External LSAs\n"
  785:        "Display Group-Membership LSAs\n"
  786:        "Display Type-7 LSAs\n"
  787:        "Display Link LSAs\n"
  788:        "Display Intra-Area-Prefix LSAs\n"
  789:        "Search by Advertising Router\n"
  790:        "Specify Advertising Router as IPv4 address notation\n"
  791:       )
  792: 
  793: ALIAS (show_ipv6_ospf6_database_type_router,
  794:        show_ipv6_ospf6_database_type_adv_router_detail_cmd,
  795:        "show ipv6 ospf6 database "
  796:        "(router|network|inter-prefix|inter-router|as-external|"
  797:        "group-membership|type-7|link|intra-prefix) adv-router A.B.C.D "
  798:        "(detail|dump|internal)",
  799:        SHOW_STR
  800:        IPV6_STR
  801:        OSPF6_STR
  802:        "Display Link state database\n"
  803:        "Display Router LSAs\n"
  804:        "Display Network LSAs\n"
  805:        "Display Inter-Area-Prefix LSAs\n"
  806:        "Display Inter-Area-Router LSAs\n"
  807:        "Display As-External LSAs\n"
  808:        "Display Group-Membership LSAs\n"
  809:        "Display Type-7 LSAs\n"
  810:        "Display Link LSAs\n"
  811:        "Display Intra-Area-Prefix LSAs\n"
  812:        "Search by Advertising Router\n"
  813:        "Specify Advertising Router as IPv4 address notation\n"
  814:        "Display details of LSAs\n"
  815:        "Dump LSAs\n"
  816:        "Display LSA's internal information\n"
  817:       )
  818: 
  819: DEFUN (show_ipv6_ospf6_database_id_router,
  820:        show_ipv6_ospf6_database_id_router_cmd,
  821:        "show ipv6 ospf6 database * A.B.C.D A.B.C.D",
  822:        SHOW_STR
  823:        IPV6_STR
  824:        OSPF6_STR
  825:        "Display Link state database\n"
  826:        "Any Link state Type\n"
  827:        "Specify Link state ID as IPv4 address notation\n"
  828:        "Specify Advertising Router as IPv4 address notation\n"
  829:       )
  830: {
  831:   int level;
  832:   struct listnode *i, *j;
  833:   struct ospf6 *o = ospf6;
  834:   struct ospf6_area *oa;
  835:   struct ospf6_interface *oi;
  836:   u_int32_t id = 0;
  837:   u_int32_t adv_router = 0;
  838: 
  839:   OSPF6_CMD_CHECK_RUNNING ();
  840: 
  841:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
  842:     {
  843:       vty_out (vty, "Link state ID is not parsable: %s%s",
  844:                argv[0], VNL);
  845:       return CMD_SUCCESS;
  846:     }
  847: 
  848:   argc--;
  849:   argv++;
  850: 
  851:   if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
  852:     {
  853:       vty_out (vty, "Advertising Router is not parsable: %s%s",
  854:                argv[0], VNL);
  855:       return CMD_SUCCESS;
  856:     }
  857: 
  858:   argc--;
  859:   argv++;
  860:   level = parse_show_level (argc, argv);
  861: 
  862:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  863:     {
  864:       vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  865:       ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oa->lsdb);
  866:     }
  867: 
  868:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  869:     {
  870:       for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  871:         {
  872:           vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  873:                    oi->interface->name, oa->name, VNL, VNL);
  874:           ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oi->lsdb);
  875:         }
  876:     }
  877: 
  878:   vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  879:   ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, o->lsdb);
  880: 
  881:   vty_out (vty, "%s", VNL);
  882:   return CMD_SUCCESS;
  883: }
  884: 
  885: ALIAS (show_ipv6_ospf6_database_id_router,
  886:        show_ipv6_ospf6_database_id_router_detail_cmd,
  887:        "show ipv6 ospf6 database * A.B.C.D A.B.C.D "
  888:        "(detail|dump|internal)",
  889:        SHOW_STR
  890:        IPV6_STR
  891:        OSPF6_STR
  892:        "Display Link state database\n"
  893:        "Any Link state Type\n"
  894:        "Specify Link state ID as IPv4 address notation\n"
  895:        "Specify Advertising Router as IPv4 address notation\n"
  896:        "Display details of LSAs\n"
  897:        "Dump LSAs\n"
  898:        "Display LSA's internal information\n"
  899:       )
  900: 
  901: DEFUN (show_ipv6_ospf6_database_adv_router_linkstate_id,
  902:        show_ipv6_ospf6_database_adv_router_linkstate_id_cmd,
  903:        "show ipv6 ospf6 database adv-router A.B.C.D linkstate-id A.B.C.D",
  904:        SHOW_STR
  905:        IPV6_STR
  906:        OSPF6_STR
  907:        "Display Link state database\n"
  908:        "Search by Advertising Router\n"
  909:        "Specify Advertising Router as IPv4 address notation\n"
  910:        "Search by Link state ID\n"
  911:        "Specify Link state ID as IPv4 address notation\n"
  912:       )
  913: {
  914:   int level;
  915:   struct listnode *i, *j;
  916:   struct ospf6 *o = ospf6;
  917:   struct ospf6_area *oa;
  918:   struct ospf6_interface *oi;
  919:   u_int32_t id = 0;
  920:   u_int32_t adv_router = 0;
  921: 
  922:   OSPF6_CMD_CHECK_RUNNING ();
  923: 
  924:   if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
  925:     {
  926:       vty_out (vty, "Advertising Router is not parsable: %s%s",
  927:                argv[0], VNL);
  928:       return CMD_SUCCESS;
  929:     }
  930: 
  931:   argc--;
  932:   argv++;
  933: 
  934:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
  935:     {
  936:       vty_out (vty, "Link state ID is not parsable: %s%s",
  937:                argv[0], VNL);
  938:       return CMD_SUCCESS;
  939:     }
  940: 
  941:   argc--;
  942:   argv++;
  943:   level = parse_show_level (argc, argv);
  944: 
  945:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  946:     {
  947:       vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
  948:       ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oa->lsdb);
  949:     }
  950: 
  951:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
  952:     {
  953:       for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
  954:         {
  955:           vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
  956:                    oi->interface->name, oa->name, VNL, VNL);
  957:           ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oi->lsdb);
  958:         }
  959:     }
  960: 
  961:   vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
  962:   ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, o->lsdb);
  963: 
  964:   vty_out (vty, "%s", VNL);
  965:   return CMD_SUCCESS;
  966: }
  967: 
  968: ALIAS (show_ipv6_ospf6_database_adv_router_linkstate_id,
  969:        show_ipv6_ospf6_database_adv_router_linkstate_id_detail_cmd,
  970:        "show ipv6 ospf6 database adv-router A.B.C.D linkstate-id A.B.C.D "
  971:        "(detail|dump|internal)",
  972:        SHOW_STR
  973:        IPV6_STR
  974:        OSPF6_STR
  975:        "Display Link state database\n"
  976:        "Search by Advertising Router\n"
  977:        "Specify Advertising Router as IPv4 address notation\n"
  978:        "Search by Link state ID\n"
  979:        "Specify Link state ID as IPv4 address notation\n"
  980:        "Display details of LSAs\n"
  981:        "Dump LSAs\n"
  982:        "Display LSA's internal information\n"
  983:       )
  984: 
  985: DEFUN (show_ipv6_ospf6_database_type_id_router,
  986:        show_ipv6_ospf6_database_type_id_router_cmd,
  987:        "show ipv6 ospf6 database "
  988:        "(router|network|inter-prefix|inter-router|as-external|"
  989:        "group-membership|type-7|link|intra-prefix) A.B.C.D A.B.C.D",
  990:        SHOW_STR
  991:        IPV6_STR
  992:        OSPF6_STR
  993:        "Display Link state database\n"
  994:        "Display Router LSAs\n"
  995:        "Display Network LSAs\n"
  996:        "Display Inter-Area-Prefix LSAs\n"
  997:        "Display Inter-Area-Router LSAs\n"
  998:        "Display As-External LSAs\n"
  999:        "Display Group-Membership LSAs\n"
 1000:        "Display Type-7 LSAs\n"
 1001:        "Display Link LSAs\n"
 1002:        "Display Intra-Area-Prefix LSAs\n"
 1003:        "Specify Link state ID as IPv4 address notation\n"
 1004:        "Specify Advertising Router as IPv4 address notation\n"
 1005:       )
 1006: {
 1007:   int level;
 1008:   struct listnode *i, *j;
 1009:   struct ospf6 *o = ospf6;
 1010:   struct ospf6_area *oa;
 1011:   struct ospf6_interface *oi;
 1012:   u_int16_t type = 0;
 1013:   u_int32_t id = 0;
 1014:   u_int32_t adv_router = 0;
 1015: 
 1016:   OSPF6_CMD_CHECK_RUNNING ();
 1017: 
 1018:   type = parse_type_spec (argc, argv);
 1019:   argc--;
 1020:   argv++;
 1021: 
 1022:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
 1023:     {
 1024:       vty_out (vty, "Link state ID is not parsable: %s%s",
 1025:                argv[0], VNL);
 1026:       return CMD_SUCCESS;
 1027:     }
 1028: 
 1029:   argc--;
 1030:   argv++;
 1031: 
 1032:   if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
 1033:     {
 1034:       vty_out (vty, "Advertising Router is not parsable: %s%s",
 1035:                argv[0], VNL);
 1036:       return CMD_SUCCESS;
 1037:     }
 1038: 
 1039:   argc--;
 1040:   argv++;
 1041:   level = parse_show_level (argc, argv);
 1042: 
 1043:   switch (OSPF6_LSA_SCOPE (type))
 1044:     {
 1045:       case OSPF6_SCOPE_AREA:
 1046:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1047:           {
 1048:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
 1049:             ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
 1050:           }
 1051:         break;
 1052: 
 1053:       case OSPF6_SCOPE_LINKLOCAL:
 1054:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1055:           {
 1056:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
 1057:               {
 1058:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
 1059:                          oi->interface->name, oa->name, VNL, VNL);
 1060:                 ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
 1061:               }
 1062:           }
 1063:         break;
 1064: 
 1065:       case OSPF6_SCOPE_AS:
 1066:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
 1067:         ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
 1068:         break;
 1069: 
 1070:       default:
 1071:         assert (0);
 1072:         break;
 1073:     }
 1074: 
 1075:   vty_out (vty, "%s", VNL);
 1076:   return CMD_SUCCESS;
 1077: }
 1078: 
 1079: ALIAS (show_ipv6_ospf6_database_type_id_router,
 1080:        show_ipv6_ospf6_database_type_id_router_detail_cmd,
 1081:        "show ipv6 ospf6 database "
 1082:        "(router|network|inter-prefix|inter-router|as-external|"
 1083:        "group-membership|type-7|link|intra-prefix) A.B.C.D A.B.C.D "
 1084:        "(dump|internal)",
 1085:        SHOW_STR
 1086:        IPV6_STR
 1087:        OSPF6_STR
 1088:        "Display Link state database\n"
 1089:        "Display Router LSAs\n"
 1090:        "Display Network LSAs\n"
 1091:        "Display Inter-Area-Prefix LSAs\n"
 1092:        "Display Inter-Area-Router LSAs\n"
 1093:        "Display As-External LSAs\n"
 1094:        "Display Group-Membership LSAs\n"
 1095:        "Display Type-7 LSAs\n"
 1096:        "Display Link LSAs\n"
 1097:        "Display Intra-Area-Prefix LSAs\n"
 1098:        "Specify Link state ID as IPv4 address notation\n"
 1099:        "Specify Advertising Router as IPv4 address notation\n"
 1100:        "Dump LSAs\n"
 1101:        "Display LSA's internal information\n"
 1102:       )
 1103: 
 1104: DEFUN (show_ipv6_ospf6_database_type_adv_router_linkstate_id,
 1105:        show_ipv6_ospf6_database_type_adv_router_linkstate_id_cmd,
 1106:        "show ipv6 ospf6 database "
 1107:        "(router|network|inter-prefix|inter-router|as-external|"
 1108:        "group-membership|type-7|link|intra-prefix) "
 1109:        "adv-router A.B.C.D linkstate-id A.B.C.D",
 1110:        SHOW_STR
 1111:        IPV6_STR
 1112:        OSPF6_STR
 1113:        "Display Link state database\n"
 1114:        "Display Router LSAs\n"
 1115:        "Display Network LSAs\n"
 1116:        "Display Inter-Area-Prefix LSAs\n"
 1117:        "Display Inter-Area-Router LSAs\n"
 1118:        "Display As-External LSAs\n"
 1119:        "Display Group-Membership LSAs\n"
 1120:        "Display Type-7 LSAs\n"
 1121:        "Display Link LSAs\n"
 1122:        "Display Intra-Area-Prefix LSAs\n"
 1123:        "Search by Advertising Router\n"
 1124:        "Specify Advertising Router as IPv4 address notation\n"
 1125:        "Search by Link state ID\n"
 1126:        "Specify Link state ID as IPv4 address notation\n"
 1127:       )
 1128: {
 1129:   int level;
 1130:   struct listnode *i, *j;
 1131:   struct ospf6 *o = ospf6;
 1132:   struct ospf6_area *oa;
 1133:   struct ospf6_interface *oi;
 1134:   u_int16_t type = 0;
 1135:   u_int32_t id = 0;
 1136:   u_int32_t adv_router = 0;
 1137: 
 1138:   OSPF6_CMD_CHECK_RUNNING ();
 1139: 
 1140:   type = parse_type_spec (argc, argv);
 1141:   argc--;
 1142:   argv++;
 1143: 
 1144:   if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
 1145:     {
 1146:       vty_out (vty, "Advertising Router is not parsable: %s%s",
 1147:                argv[0], VNL);
 1148:       return CMD_SUCCESS;
 1149:     }
 1150: 
 1151:   argc--;
 1152:   argv++;
 1153: 
 1154:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
 1155:     {
 1156:       vty_out (vty, "Link state ID is not parsable: %s%s",
 1157:                argv[0], VNL);
 1158:       return CMD_SUCCESS;
 1159:     }
 1160: 
 1161:   argc--;
 1162:   argv++;
 1163:   level = parse_show_level (argc, argv);
 1164: 
 1165:   switch (OSPF6_LSA_SCOPE (type))
 1166:     {
 1167:       case OSPF6_SCOPE_AREA:
 1168:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1169:           {
 1170:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
 1171:             ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
 1172:           }
 1173:         break;
 1174: 
 1175:       case OSPF6_SCOPE_LINKLOCAL:
 1176:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1177:           {
 1178:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
 1179:               {
 1180:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
 1181:                          oi->interface->name, oa->name, VNL, VNL);
 1182:                 ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
 1183:               }
 1184:           }
 1185:         break;
 1186: 
 1187:       case OSPF6_SCOPE_AS:
 1188:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
 1189:         ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
 1190:         break;
 1191: 
 1192:       default:
 1193:         assert (0);
 1194:         break;
 1195:     }
 1196: 
 1197:   vty_out (vty, "%s", VNL);
 1198:   return CMD_SUCCESS;
 1199: }
 1200: 
 1201: ALIAS (show_ipv6_ospf6_database_type_adv_router_linkstate_id,
 1202:        show_ipv6_ospf6_database_type_adv_router_linkstate_id_detail_cmd,
 1203:        "show ipv6 ospf6 database "
 1204:        "(router|network|inter-prefix|inter-router|as-external|"
 1205:        "group-membership|type-7|link|intra-prefix) "
 1206:        "adv-router A.B.C.D linkstate-id A.B.C.D "
 1207:        "(dump|internal)",
 1208:        SHOW_STR
 1209:        IPV6_STR
 1210:        OSPF6_STR
 1211:        "Display Link state database\n"
 1212:        "Display Router LSAs\n"
 1213:        "Display Network LSAs\n"
 1214:        "Display Inter-Area-Prefix LSAs\n"
 1215:        "Display Inter-Area-Router LSAs\n"
 1216:        "Display As-External LSAs\n"
 1217:        "Display Group-Membership LSAs\n"
 1218:        "Display Type-7 LSAs\n"
 1219:        "Display Link LSAs\n"
 1220:        "Display Intra-Area-Prefix LSAs\n"
 1221:        "Search by Advertising Router\n"
 1222:        "Specify Advertising Router as IPv4 address notation\n"
 1223:        "Search by Link state ID\n"
 1224:        "Specify Link state ID as IPv4 address notation\n"
 1225:        "Dump LSAs\n"
 1226:        "Display LSA's internal information\n"
 1227:       )
 1228: 
 1229: DEFUN (show_ipv6_ospf6_database_self_originated,
 1230:        show_ipv6_ospf6_database_self_originated_cmd,
 1231:        "show ipv6 ospf6 database self-originated",
 1232:        SHOW_STR
 1233:        IPV6_STR
 1234:        OSPF6_STR
 1235:        "Display Self-originated LSAs\n"
 1236:       )
 1237: {
 1238:   int level;
 1239:   struct listnode *i, *j;
 1240:   struct ospf6 *o = ospf6;
 1241:   struct ospf6_area *oa;
 1242:   struct ospf6_interface *oi;
 1243:   u_int32_t adv_router = 0;
 1244: 
 1245:   OSPF6_CMD_CHECK_RUNNING ();
 1246: 
 1247:   level = parse_show_level (argc, argv);
 1248: 
 1249:   adv_router = o->router_id;
 1250: 
 1251:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1252:     {
 1253:       vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
 1254:       ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oa->lsdb);
 1255:     }
 1256: 
 1257:   for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1258:     {
 1259:       for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
 1260:         {
 1261:           vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
 1262:                    oi->interface->name, oa->name, VNL, VNL);
 1263:           ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oi->lsdb);
 1264:         }
 1265:     }
 1266: 
 1267:   vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
 1268:   ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, o->lsdb);
 1269: 
 1270:   vty_out (vty, "%s", VNL);
 1271:   return CMD_SUCCESS;
 1272: }
 1273: 
 1274: ALIAS (show_ipv6_ospf6_database_self_originated,
 1275:        show_ipv6_ospf6_database_self_originated_detail_cmd,
 1276:        "show ipv6 ospf6 database self-originated "
 1277:        "(detail|dump|internal)",
 1278:        SHOW_STR
 1279:        IPV6_STR
 1280:        OSPF6_STR
 1281:        "Display Self-originated LSAs\n"
 1282:        "Display details of LSAs\n"
 1283:        "Dump LSAs\n"
 1284:        "Display LSA's internal information\n"
 1285:       )
 1286: 
 1287: DEFUN (show_ipv6_ospf6_database_type_self_originated,
 1288:        show_ipv6_ospf6_database_type_self_originated_cmd,
 1289:        "show ipv6 ospf6 database "
 1290:        "(router|network|inter-prefix|inter-router|as-external|"
 1291:        "group-membership|type-7|link|intra-prefix) self-originated",
 1292:        SHOW_STR
 1293:        IPV6_STR
 1294:        OSPF6_STR
 1295:        "Display Link state database\n"
 1296:        "Display Router LSAs\n"
 1297:        "Display Network LSAs\n"
 1298:        "Display Inter-Area-Prefix LSAs\n"
 1299:        "Display Inter-Area-Router LSAs\n"
 1300:        "Display As-External LSAs\n"
 1301:        "Display Group-Membership LSAs\n"
 1302:        "Display Type-7 LSAs\n"
 1303:        "Display Link LSAs\n"
 1304:        "Display Intra-Area-Prefix LSAs\n"
 1305:        "Display Self-originated LSAs\n"
 1306:       )
 1307: {
 1308:   int level;
 1309:   struct listnode *i, *j;
 1310:   struct ospf6 *o = ospf6;
 1311:   struct ospf6_area *oa;
 1312:   struct ospf6_interface *oi;
 1313:   u_int16_t type = 0;
 1314:   u_int32_t adv_router = 0;
 1315: 
 1316:   OSPF6_CMD_CHECK_RUNNING ();
 1317: 
 1318:   type = parse_type_spec (argc, argv);
 1319:   argc--;
 1320:   argv++;
 1321:   level = parse_show_level (argc, argv);
 1322: 
 1323:   adv_router = o->router_id;
 1324: 
 1325:   switch (OSPF6_LSA_SCOPE (type))
 1326:     {
 1327:       case OSPF6_SCOPE_AREA:
 1328:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1329:           {
 1330:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
 1331:             ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oa->lsdb);
 1332:           }
 1333:         break;
 1334: 
 1335:       case OSPF6_SCOPE_LINKLOCAL:
 1336:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1337:           {
 1338:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
 1339:               {
 1340:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
 1341:                          oi->interface->name, oa->name, VNL, VNL);
 1342:                 ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oi->lsdb);
 1343:               }
 1344:           }
 1345:         break;
 1346: 
 1347:       case OSPF6_SCOPE_AS:
 1348:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
 1349:         ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, o->lsdb);
 1350:         break;
 1351: 
 1352:       default:
 1353:         assert (0);
 1354:         break;
 1355:     }
 1356: 
 1357:   vty_out (vty, "%s", VNL);
 1358:   return CMD_SUCCESS;
 1359: }
 1360: 
 1361: ALIAS (show_ipv6_ospf6_database_type_self_originated,
 1362:        show_ipv6_ospf6_database_type_self_originated_detail_cmd,
 1363:        "show ipv6 ospf6 database "
 1364:        "(router|network|inter-prefix|inter-router|as-external|"
 1365:        "group-membership|type-7|link|intra-prefix) self-originated "
 1366:        "(detail|dump|internal)",
 1367:        SHOW_STR
 1368:        IPV6_STR
 1369:        OSPF6_STR
 1370:        "Display Link state database\n"
 1371:        "Display Router LSAs\n"
 1372:        "Display Network LSAs\n"
 1373:        "Display Inter-Area-Prefix LSAs\n"
 1374:        "Display Inter-Area-Router LSAs\n"
 1375:        "Display As-External LSAs\n"
 1376:        "Display Group-Membership LSAs\n"
 1377:        "Display Type-7 LSAs\n"
 1378:        "Display Link LSAs\n"
 1379:        "Display Intra-Area-Prefix LSAs\n"
 1380:        "Display Self-originated LSAs\n"
 1381:        "Display details of LSAs\n"
 1382:        "Dump LSAs\n"
 1383:        "Display LSA's internal information\n"
 1384:       )
 1385: 
 1386: DEFUN (show_ipv6_ospf6_database_type_self_originated_linkstate_id,
 1387:        show_ipv6_ospf6_database_type_self_originated_linkstate_id_cmd,
 1388:        "show ipv6 ospf6 database "
 1389:        "(router|network|inter-prefix|inter-router|as-external|"
 1390:        "group-membership|type-7|link|intra-prefix) self-originated "
 1391:        "linkstate-id A.B.C.D",
 1392:        SHOW_STR
 1393:        IPV6_STR
 1394:        OSPF6_STR
 1395:        "Display Link state database\n"
 1396:        "Display Router LSAs\n"
 1397:        "Display Network LSAs\n"
 1398:        "Display Inter-Area-Prefix LSAs\n"
 1399:        "Display Inter-Area-Router LSAs\n"
 1400:        "Display As-External LSAs\n"
 1401:        "Display Group-Membership LSAs\n"
 1402:        "Display Type-7 LSAs\n"
 1403:        "Display Link LSAs\n"
 1404:        "Display Intra-Area-Prefix LSAs\n"
 1405:        "Display Self-originated LSAs\n"
 1406:        "Search by Link state ID\n"
 1407:        "Specify Link state ID as IPv4 address notation\n"
 1408:       )
 1409: {
 1410:   int level;
 1411:   struct listnode *i, *j;
 1412:   struct ospf6 *o = ospf6;
 1413:   struct ospf6_area *oa;
 1414:   struct ospf6_interface *oi;
 1415:   u_int16_t type = 0;
 1416:   u_int32_t adv_router = 0;
 1417:   u_int32_t id = 0;
 1418: 
 1419:   OSPF6_CMD_CHECK_RUNNING ();
 1420: 
 1421:   type = parse_type_spec (argc, argv);
 1422:   argc--;
 1423:   argv++;
 1424: 
 1425:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
 1426:     {
 1427:       vty_out (vty, "Link State ID is not parsable: %s%s",
 1428:                argv[0], VNL);
 1429:       return CMD_SUCCESS;
 1430:     }
 1431: 
 1432:   argc--;
 1433:   argv++;
 1434:   level = parse_show_level (argc, argv);
 1435: 
 1436:   adv_router = o->router_id;
 1437: 
 1438:   switch (OSPF6_LSA_SCOPE (type))
 1439:     {
 1440:       case OSPF6_SCOPE_AREA:
 1441:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1442:           {
 1443:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
 1444:             ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
 1445:           }
 1446:         break;
 1447: 
 1448:       case OSPF6_SCOPE_LINKLOCAL:
 1449:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1450:           {
 1451:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
 1452:               {
 1453:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
 1454:                          oi->interface->name, oa->name, VNL, VNL);
 1455:                 ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
 1456:               }
 1457:           }
 1458:         break;
 1459: 
 1460:       case OSPF6_SCOPE_AS:
 1461:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
 1462:         ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
 1463:         break;
 1464: 
 1465:       default:
 1466:         assert (0);
 1467:         break;
 1468:     }
 1469: 
 1470:   vty_out (vty, "%s", VNL);
 1471:   return CMD_SUCCESS;
 1472: }
 1473: 
 1474: ALIAS (show_ipv6_ospf6_database_type_self_originated_linkstate_id,
 1475:        show_ipv6_ospf6_database_type_self_originated_linkstate_id_detail_cmd,
 1476:        "show ipv6 ospf6 database "
 1477:        "(router|network|inter-prefix|inter-router|as-external|"
 1478:        "group-membership|type-7|link|intra-prefix) self-originated "
 1479:        "linkstate-id A.B.C.D (detail|dump|internal)",
 1480:        SHOW_STR
 1481:        IPV6_STR
 1482:        OSPF6_STR
 1483:        "Display Link state database\n"
 1484:        "Display Router LSAs\n"
 1485:        "Display Network LSAs\n"
 1486:        "Display Inter-Area-Prefix LSAs\n"
 1487:        "Display Inter-Area-Router LSAs\n"
 1488:        "Display As-External LSAs\n"
 1489:        "Display Group-Membership LSAs\n"
 1490:        "Display Type-7 LSAs\n"
 1491:        "Display Link LSAs\n"
 1492:        "Display Intra-Area-Prefix LSAs\n"
 1493:        "Display Self-originated LSAs\n"
 1494:        "Search by Link state ID\n"
 1495:        "Specify Link state ID as IPv4 address notation\n"
 1496:        "Display details of LSAs\n"
 1497:        "Dump LSAs\n"
 1498:        "Display LSA's internal information\n"
 1499:       )
 1500: 
 1501: DEFUN (show_ipv6_ospf6_database_type_id_self_originated,
 1502:        show_ipv6_ospf6_database_type_id_self_originated_cmd,
 1503:        "show ipv6 ospf6 database "
 1504:        "(router|network|inter-prefix|inter-router|as-external|"
 1505:        "group-membership|type-7|link|intra-prefix) A.B.C.D self-originated",
 1506:        SHOW_STR
 1507:        IPV6_STR
 1508:        OSPF6_STR
 1509:        "Display Link state database\n"
 1510:        "Display Router LSAs\n"
 1511:        "Display Network LSAs\n"
 1512:        "Display Inter-Area-Prefix LSAs\n"
 1513:        "Display Inter-Area-Router LSAs\n"
 1514:        "Display As-External LSAs\n"
 1515:        "Display Group-Membership LSAs\n"
 1516:        "Display Type-7 LSAs\n"
 1517:        "Display Link LSAs\n"
 1518:        "Display Intra-Area-Prefix LSAs\n"
 1519:        "Specify Link state ID as IPv4 address notation\n"
 1520:        "Display Self-originated LSAs\n"
 1521:       )
 1522: {
 1523:   int level;
 1524:   struct listnode *i, *j;
 1525:   struct ospf6 *o = ospf6;
 1526:   struct ospf6_area *oa;
 1527:   struct ospf6_interface *oi;
 1528:   u_int16_t type = 0;
 1529:   u_int32_t adv_router = 0;
 1530:   u_int32_t id = 0;
 1531: 
 1532:   OSPF6_CMD_CHECK_RUNNING ();
 1533: 
 1534:   type = parse_type_spec (argc, argv);
 1535:   argc--;
 1536:   argv++;
 1537: 
 1538:   if ((inet_pton (AF_INET, argv[0], &id)) != 1)
 1539:     {
 1540:       vty_out (vty, "Link State ID is not parsable: %s%s",
 1541:                argv[0], VNL);
 1542:       return CMD_SUCCESS;
 1543:     }
 1544: 
 1545:   argc--;
 1546:   argv++;
 1547:   level = parse_show_level (argc, argv);
 1548: 
 1549:   adv_router = o->router_id;
 1550: 
 1551:   switch (OSPF6_LSA_SCOPE (type))
 1552:     {
 1553:       case OSPF6_SCOPE_AREA:
 1554:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1555:           {
 1556:             vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
 1557:             ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
 1558:           }
 1559:         break;
 1560: 
 1561:       case OSPF6_SCOPE_LINKLOCAL:
 1562:         for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
 1563:           {
 1564:             for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
 1565:               {
 1566:                 vty_out (vty, IF_LSDB_TITLE_FORMAT, VNL,
 1567:                          oi->interface->name, oa->name, VNL, VNL);
 1568:                 ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
 1569:               }
 1570:           }
 1571:         break;
 1572: 
 1573:       case OSPF6_SCOPE_AS:
 1574:         vty_out (vty, AS_LSDB_TITLE_FORMAT, VNL, VNL, VNL);
 1575:         ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
 1576:         break;
 1577: 
 1578:       default:
 1579:         assert (0);
 1580:         break;
 1581:     }
 1582: 
 1583:   vty_out (vty, "%s", VNL);
 1584:   return CMD_SUCCESS;
 1585: }
 1586: 
 1587: ALIAS (show_ipv6_ospf6_database_type_id_self_originated,
 1588:        show_ipv6_ospf6_database_type_id_self_originated_detail_cmd,
 1589:        "show ipv6 ospf6 database "
 1590:        "(router|network|inter-prefix|inter-router|as-external|"
 1591:        "group-membership|type-7|link|intra-prefix) A.B.C.D self-originated "
 1592:        "(detail|dump|internal)",
 1593:        SHOW_STR
 1594:        IPV6_STR
 1595:        OSPF6_STR
 1596:        "Display Link state database\n"
 1597:        "Display Router LSAs\n"
 1598:        "Display Network LSAs\n"
 1599:        "Display Inter-Area-Prefix LSAs\n"
 1600:        "Display Inter-Area-Router LSAs\n"
 1601:        "Display As-External LSAs\n"
 1602:        "Display Group-Membership LSAs\n"
 1603:        "Display Type-7 LSAs\n"
 1604:        "Display Link LSAs\n"
 1605:        "Display Intra-Area-Prefix LSAs\n"
 1606:        "Display Self-originated LSAs\n"
 1607:        "Search by Link state ID\n"
 1608:        "Specify Link state ID as IPv4 address notation\n"
 1609:        "Display details of LSAs\n"
 1610:        "Dump LSAs\n"
 1611:        "Display LSA's internal information\n"
 1612:       )
 1613: 
 1614: 
 1615: DEFUN (show_ipv6_ospf6_border_routers,
 1616:        show_ipv6_ospf6_border_routers_cmd,
 1617:        "show ipv6 ospf6 border-routers",
 1618:        SHOW_STR
 1619:        IP6_STR
 1620:        OSPF6_STR
 1621:        "Display routing table for ABR and ASBR\n"
 1622:       )
 1623: {
 1624:   u_int32_t adv_router;
 1625:   void (*showfunc) (struct vty *, struct ospf6_route *);
 1626:   struct ospf6_route *ro;
 1627:   struct prefix prefix;
 1628: 
 1629:   OSPF6_CMD_CHECK_RUNNING ();
 1630: 
 1631:   if (argc && ! strcmp ("detail", argv[0]))
 1632:     {
 1633:       showfunc = ospf6_route_show_detail;
 1634:       argc--;
 1635:       argv++;
 1636:     }
 1637:   else
 1638:     showfunc = ospf6_brouter_show;
 1639: 
 1640:   if (argc)
 1641:     {
 1642:       if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
 1643:         {
 1644:           vty_out (vty, "Router ID is not parsable: %s%s", argv[0], VNL);
 1645:           return CMD_SUCCESS;
 1646:         }
 1647: 
 1648:       ospf6_linkstate_prefix (adv_router, 0, &prefix);
 1649:       ro = ospf6_route_lookup (&prefix, ospf6->brouter_table);
 1650:       if (!ro)
 1651:         {
 1652:           vty_out (vty, "No Route found for Router ID: %s%s", argv[0], VNL);
 1653:           return CMD_SUCCESS;
 1654:         }
 1655: 
 1656:       ospf6_route_show_detail (vty, ro);
 1657:       return CMD_SUCCESS;
 1658:     }
 1659: 
 1660:   if (showfunc == ospf6_brouter_show)
 1661:     ospf6_brouter_show_header (vty);
 1662: 
 1663:   for (ro = ospf6_route_head (ospf6->brouter_table); ro;
 1664:        ro = ospf6_route_next (ro))
 1665:     (*showfunc) (vty, ro);
 1666: 
 1667:   return CMD_SUCCESS;
 1668: }
 1669: 
 1670: ALIAS (show_ipv6_ospf6_border_routers,
 1671:        show_ipv6_ospf6_border_routers_detail_cmd,
 1672:        "show ipv6 ospf6 border-routers (A.B.C.D|detail)",
 1673:        SHOW_STR
 1674:        IP6_STR
 1675:        OSPF6_STR
 1676:        "Display routing table for ABR and ASBR\n"
 1677:        "Specify Router-ID\n"
 1678:        "Display Detail\n"
 1679:       )
 1680: 
 1681: DEFUN (show_ipv6_ospf6_linkstate,
 1682:        show_ipv6_ospf6_linkstate_cmd,
 1683:        "show ipv6 ospf6 linkstate",
 1684:        SHOW_STR
 1685:        IP6_STR
 1686:        OSPF6_STR
 1687:        "Display linkstate routing table\n"
 1688:       )
 1689: {
 1690:   struct listnode *node;
 1691:   struct ospf6_area *oa;
 1692: 
 1693:   for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
 1694:     {
 1695:       vty_out (vty, "%s        SPF Result in Area %s%s%s",
 1696:                VNL, oa->name, VNL, VNL);
 1697:       ospf6_linkstate_table_show (vty, argc, argv, oa->spf_table);
 1698:     }
 1699: 
 1700:   vty_out (vty, "%s", VNL);
 1701:   return CMD_SUCCESS;
 1702: }
 1703: 
 1704: ALIAS (show_ipv6_ospf6_linkstate,
 1705:        show_ipv6_ospf6_linkstate_router_cmd,
 1706:        "show ipv6 ospf6 linkstate router A.B.C.D",
 1707:        SHOW_STR
 1708:        IP6_STR
 1709:        OSPF6_STR
 1710:        "Display linkstate routing table\n"
 1711:        "Display Router Entry\n"
 1712:        "Specify Router ID as IPv4 address notation\n"
 1713:       )
 1714: 
 1715: ALIAS (show_ipv6_ospf6_linkstate,
 1716:        show_ipv6_ospf6_linkstate_network_cmd,
 1717:        "show ipv6 ospf6 linkstate network A.B.C.D A.B.C.D",
 1718:        SHOW_STR
 1719:        IP6_STR
 1720:        OSPF6_STR
 1721:        "Display linkstate routing table\n"
 1722:        "Display Network Entry\n"
 1723:        "Specify Router ID as IPv4 address notation\n"
 1724:        "Specify Link state ID as IPv4 address notation\n"
 1725:       )
 1726: 
 1727: DEFUN (show_ipv6_ospf6_linkstate_detail,
 1728:        show_ipv6_ospf6_linkstate_detail_cmd,
 1729:        "show ipv6 ospf6 linkstate detail",
 1730:        SHOW_STR
 1731:        IP6_STR
 1732:        OSPF6_STR
 1733:        "Display linkstate routing table\n"
 1734:       )
 1735: {
 1736:   const char *sargv[CMD_ARGC_MAX];
 1737:   int i, sargc;
 1738:   struct listnode *node;
 1739:   struct ospf6_area *oa;
 1740: 
 1741:   /* copy argv to sargv and then append "detail" */
 1742:   for (i = 0; i < argc; i++)
 1743:     sargv[i] = argv[i];
 1744:   sargc = argc;
 1745:   sargv[sargc++] = "detail";
 1746:   sargv[sargc] = NULL;
 1747: 
 1748:   for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
 1749:     {
 1750:       vty_out (vty, "%s        SPF Result in Area %s%s%s",
 1751:                VNL, oa->name, VNL, VNL);
 1752:       ospf6_linkstate_table_show (vty, sargc, sargv, oa->spf_table);
 1753:     }
 1754: 
 1755:   vty_out (vty, "%s", VNL);
 1756:   return CMD_SUCCESS;
 1757: }
 1758: 
 1759: /* Install ospf related commands. */
 1760: void
 1761: ospf6_init (void)
 1762: {
 1763:   ospf6_top_init ();
 1764:   ospf6_area_init ();
 1765:   ospf6_interface_init ();
 1766:   ospf6_neighbor_init ();
 1767:   ospf6_zebra_init (master);
 1768: 
 1769:   ospf6_lsa_init ();
 1770:   ospf6_spf_init ();
 1771:   ospf6_intra_init ();
 1772:   ospf6_asbr_init ();
 1773:   ospf6_abr_init ();
 1774: 
 1775: #ifdef HAVE_SNMP
 1776:   ospf6_snmp_init (master);
 1777: #endif /*HAVE_SNMP*/
 1778: 
 1779:   install_node (&debug_node, config_write_ospf6_debug);
 1780: 
 1781:   install_element_ospf6_debug_message ();
 1782:   install_element_ospf6_debug_lsa ();
 1783:   install_element_ospf6_debug_interface ();
 1784:   install_element_ospf6_debug_neighbor ();
 1785:   install_element_ospf6_debug_zebra ();
 1786:   install_element_ospf6_debug_spf ();
 1787:   install_element_ospf6_debug_route ();
 1788:   install_element_ospf6_debug_brouter ();
 1789:   install_element_ospf6_debug_asbr ();
 1790:   install_element_ospf6_debug_abr ();
 1791:   install_element_ospf6_debug_flood ();
 1792: 
 1793:   install_element (VIEW_NODE, &show_version_ospf6_cmd);
 1794:   install_element (ENABLE_NODE, &show_version_ospf6_cmd);
 1795: 
 1796:   install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_cmd);
 1797:   install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_detail_cmd);
 1798:   install_element (ENABLE_NODE, &show_ipv6_ospf6_border_routers_cmd);
 1799:   install_element (ENABLE_NODE, &show_ipv6_ospf6_border_routers_detail_cmd);
 1800: 
 1801:   install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_cmd);
 1802:   install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_router_cmd);
 1803:   install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_network_cmd);
 1804:   install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_detail_cmd);
 1805:   install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_cmd);
 1806:   install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_router_cmd);
 1807:   install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_network_cmd);
 1808:   install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_detail_cmd);
 1809: 
 1810: #define INSTALL(n,c) \
 1811:   install_element (n ## _NODE, &show_ipv6_ospf6_ ## c)
 1812: 
 1813:   INSTALL (VIEW, database_cmd);
 1814:   INSTALL (VIEW, database_detail_cmd);
 1815:   INSTALL (VIEW, database_type_cmd);
 1816:   INSTALL (VIEW, database_type_detail_cmd);
 1817:   INSTALL (VIEW, database_id_cmd);
 1818:   INSTALL (VIEW, database_id_detail_cmd);
 1819:   INSTALL (VIEW, database_linkstate_id_cmd);
 1820:   INSTALL (VIEW, database_linkstate_id_detail_cmd);
 1821:   INSTALL (VIEW, database_router_cmd);
 1822:   INSTALL (VIEW, database_router_detail_cmd);
 1823:   INSTALL (VIEW, database_adv_router_cmd);
 1824:   INSTALL (VIEW, database_adv_router_detail_cmd);
 1825:   INSTALL (VIEW, database_type_id_cmd);
 1826:   INSTALL (VIEW, database_type_id_detail_cmd);
 1827:   INSTALL (VIEW, database_type_linkstate_id_cmd);
 1828:   INSTALL (VIEW, database_type_linkstate_id_detail_cmd);
 1829:   INSTALL (VIEW, database_type_router_cmd);
 1830:   INSTALL (VIEW, database_type_router_detail_cmd);
 1831:   INSTALL (VIEW, database_type_adv_router_cmd);
 1832:   INSTALL (VIEW, database_type_adv_router_detail_cmd);
 1833:   INSTALL (VIEW, database_adv_router_linkstate_id_cmd);
 1834:   INSTALL (VIEW, database_adv_router_linkstate_id_detail_cmd);
 1835:   INSTALL (VIEW, database_id_router_cmd);
 1836:   INSTALL (VIEW, database_id_router_detail_cmd);
 1837:   INSTALL (VIEW, database_type_id_router_cmd);
 1838:   INSTALL (VIEW, database_type_id_router_detail_cmd);
 1839:   INSTALL (VIEW, database_type_adv_router_linkstate_id_cmd);
 1840:   INSTALL (VIEW, database_type_adv_router_linkstate_id_detail_cmd);
 1841:   INSTALL (VIEW, database_self_originated_cmd);
 1842:   INSTALL (VIEW, database_self_originated_detail_cmd);
 1843:   INSTALL (VIEW, database_type_self_originated_cmd);
 1844:   INSTALL (VIEW, database_type_self_originated_detail_cmd);
 1845:   INSTALL (VIEW, database_type_id_self_originated_cmd);
 1846:   INSTALL (VIEW, database_type_id_self_originated_detail_cmd);
 1847:   INSTALL (VIEW, database_type_self_originated_linkstate_id_cmd);
 1848:   INSTALL (VIEW, database_type_self_originated_linkstate_id_detail_cmd);
 1849: 
 1850:   INSTALL (ENABLE, database_cmd);
 1851:   INSTALL (ENABLE, database_detail_cmd);
 1852:   INSTALL (ENABLE, database_type_cmd);
 1853:   INSTALL (ENABLE, database_type_detail_cmd);
 1854:   INSTALL (ENABLE, database_id_cmd);
 1855:   INSTALL (ENABLE, database_id_detail_cmd);
 1856:   INSTALL (ENABLE, database_linkstate_id_cmd);
 1857:   INSTALL (ENABLE, database_linkstate_id_detail_cmd);
 1858:   INSTALL (ENABLE, database_router_cmd);
 1859:   INSTALL (ENABLE, database_router_detail_cmd);
 1860:   INSTALL (ENABLE, database_adv_router_cmd);
 1861:   INSTALL (ENABLE, database_adv_router_detail_cmd);
 1862:   INSTALL (ENABLE, database_type_id_cmd);
 1863:   INSTALL (ENABLE, database_type_id_detail_cmd);
 1864:   INSTALL (ENABLE, database_type_linkstate_id_cmd);
 1865:   INSTALL (ENABLE, database_type_linkstate_id_detail_cmd);
 1866:   INSTALL (ENABLE, database_type_router_cmd);
 1867:   INSTALL (ENABLE, database_type_router_detail_cmd);
 1868:   INSTALL (ENABLE, database_type_adv_router_cmd);
 1869:   INSTALL (ENABLE, database_type_adv_router_detail_cmd);
 1870:   INSTALL (ENABLE, database_adv_router_linkstate_id_cmd);
 1871:   INSTALL (ENABLE, database_adv_router_linkstate_id_detail_cmd);
 1872:   INSTALL (ENABLE, database_id_router_cmd);
 1873:   INSTALL (ENABLE, database_id_router_detail_cmd);
 1874:   INSTALL (ENABLE, database_type_id_router_cmd);
 1875:   INSTALL (ENABLE, database_type_id_router_detail_cmd);
 1876:   INSTALL (ENABLE, database_type_adv_router_linkstate_id_cmd);
 1877:   INSTALL (ENABLE, database_type_adv_router_linkstate_id_detail_cmd);
 1878:   INSTALL (ENABLE, database_self_originated_cmd);
 1879:   INSTALL (ENABLE, database_self_originated_detail_cmd);
 1880:   INSTALL (ENABLE, database_type_self_originated_cmd);
 1881:   INSTALL (ENABLE, database_type_self_originated_detail_cmd);
 1882:   INSTALL (ENABLE, database_type_id_self_originated_cmd);
 1883:   INSTALL (ENABLE, database_type_id_self_originated_detail_cmd);
 1884:   INSTALL (ENABLE, database_type_self_originated_linkstate_id_cmd);
 1885:   INSTALL (ENABLE, database_type_self_originated_linkstate_id_detail_cmd);
 1886: 
 1887:   /* Make ospf protocol socket. */
 1888:   ospf6_serv_sock ();
 1889:   thread_add_read (master, ospf6_receive, NULL, ospf6_sock);
 1890: }
 1891: 
 1892: void
 1893: ospf6_clean (void)
 1894: {
 1895:   if (ospf6->route_table)
 1896:     ospf6_route_remove_all (ospf6->route_table);
 1897:   if (ospf6->brouter_table)
 1898:     ospf6_route_remove_all (ospf6->brouter_table);
 1899: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>