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
51char ospf6_daemon_version[] = OSPF6_DAEMON_VERSION;
52
53struct route_node *
54route_prev (struct route_node *node)
55{
56  struct route_node *end;
57  struct route_node *prev = NULL;
58
59  end = node;
60  node = node->parent;
61  if (node)
62    route_lock_node (node);
63  while (node)
64    {
65      prev = node;
66      node = route_next (node);
67      if (node == end)
68        {
69          route_unlock_node (node);
70          node = NULL;
71        }
72    }
73  route_unlock_node (end);
74  if (prev)
75    route_lock_node (prev);
76
77  return prev;
78}
79
80
81/* show database functions */
82DEFUN (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
95static struct cmd_node debug_node =
96{
97  DEBUG_NODE,
98  "",
99  1 /* VTYSH */
100};
101
102static int
103config_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
127static int
128parse_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
145static u_int16_t
146parse_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
167DEFUN (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
209ALIAS (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
221DEFUN (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
291ALIAS (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
315DEFUN (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
369ALIAS (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
384ALIAS (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
395ALIAS (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
410DEFUN (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
465ALIAS (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
481ALIAS (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
492ALIAS (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
507DEFUN (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
589ALIAS (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
614ALIAS (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
636ALIAS (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
662DEFUN (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
745ALIAS (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
771ALIAS (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
793ALIAS (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
819DEFUN (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
885ALIAS (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
901DEFUN (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
968ALIAS (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
985DEFUN (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
1079ALIAS (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
1104DEFUN (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
1201ALIAS (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
1229DEFUN (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
1274ALIAS (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
1287DEFUN (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
1361ALIAS (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
1386DEFUN (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
1474ALIAS (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
1501DEFUN (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
1587ALIAS (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
1615DEFUN (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
1670ALIAS (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
1681DEFUN (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
1704ALIAS (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
1715ALIAS (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
1727DEFUN (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. */
1760void
1761ospf6_init (void)
1762{
1763  ospf6_top_init ();
1764  ospf6_area_init ();
1765  ospf6_interface_init ();
1766  ospf6_neighbor_init ();
1767  ospf6_zebra_init ();
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
1892void
1893ospf6_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}
1900