Annotation of embedaddon/quagga/ospf6d/ospf6d.c, revision 1.1.1.3

1.1       misho       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: 
1.1.1.3 ! misho      80: 
1.1       misho      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 ();
1.1.1.3 ! misho    1767:   ospf6_zebra_init (master);
1.1       misho    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: 
1.1.1.2   misho    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>