]> git.proxmox.com Git - mirror_frr.git/blame - ospf6d/ospf6d.c
Support for 'clear ipv6 ospf6 interface [ifname]
[mirror_frr.git] / ospf6d / ospf6d.c
CommitLineData
718e3744 1/*
508e53e2 2 * Copyright (C) 2003 Yasuhiro Ohara
718e3744 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
508e53e2 22#include <zebra.h>
718e3744 23
508e53e2 24#include "thread.h"
25#include "linklist.h"
26#include "vty.h"
27#include "command.h"
718e3744 28
508e53e2 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"
049207c3 43#include "ospf6_abr.h"
1e05838a 44#include "ospf6_flood.h"
049207c3 45#include "ospf6d.h"
718e3744 46
ef1bbf5c 47#ifdef HAVE_SNMP
48#include "ospf6_snmp.h"
49#endif /*HAVE_SNMP*/
50
718e3744 51char ospf6_daemon_version[] = OSPF6_DAEMON_VERSION;
52
508e53e2 53struct route_node *
54route_prev (struct route_node *node)
718e3744 55{
508e53e2 56 struct route_node *end;
57 struct route_node *prev = NULL;
718e3744 58
508e53e2 59 end = node;
60 node = node->parent;
3b68735f 61 if (node)
62 route_lock_node (node);
508e53e2 63 while (node)
64 {
65 prev = node;
3b68735f 66 node = route_next (node);
67 if (node == end)
68 {
69 route_unlock_node (node);
70 node = NULL;
71 }
508e53e2 72 }
73 route_unlock_node (end);
3b68735f 74 if (prev)
75 route_lock_node (prev);
718e3744 76
508e53e2 77 return prev;
718e3744 78}
79
6b0655a2 80
6452df09 81/* show database functions */
718e3744 82DEFUN (show_version_ospf6,
83 show_version_ospf6_cmd,
84 "show version ospf6",
85 SHOW_STR
508e53e2 86 "Displays ospf6d version\n"
87 )
718e3744 88{
89 vty_out (vty, "Zebra OSPF6d Version: %s%s",
049207c3 90 ospf6_daemon_version, VNL);
718e3744 91
92 return CMD_SUCCESS;
93}
94
7fc626de 95static struct cmd_node debug_node =
718e3744 96{
508e53e2 97 DEBUG_NODE,
69b4a810 98 "",
99 1 /* VTYSH */
508e53e2 100};
718e3744 101
6ac29a51 102static int
508e53e2 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);
cb4b8845 112 config_write_ospf6_debug_brouter (vty);
508e53e2 113 config_write_ospf6_debug_asbr (vty);
049207c3 114 config_write_ospf6_debug_abr (vty);
1e05838a 115 config_write_ospf6_debug_flood (vty);
049207c3 116 vty_out (vty, "!%s", VNL);
508e53e2 117 return 0;
718e3744 118}
119
049207c3 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
0c083ee9 128parse_show_level (int argc, const char *argv[])
049207c3 129{
6452df09 130 int level = 0;
049207c3 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
0c083ee9 146parse_type_spec (int argc, const char *argv[])
049207c3 147{
6452df09 148 u_int16_t type = 0;
049207c3 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
508e53e2 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 )
718e3744 175{
049207c3 176 int level;
52dc7ee6 177 struct listnode *i, *j;
508e53e2 178 struct ospf6 *o = ospf6;
049207c3 179 struct ospf6_area *oa;
180 struct ospf6_interface *oi;
508e53e2 181
182 OSPF6_CMD_CHECK_RUNNING ();
183
049207c3 184 level = parse_show_level (argc, argv);
718e3744 185
1eb8ef25 186 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 187 {
049207c3 188 vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
189 ospf6_lsdb_show (vty, level, NULL, NULL, NULL, oa->lsdb);
508e53e2 190 }
049207c3 191
1eb8ef25 192 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 193 {
1eb8ef25 194 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
508e53e2 195 {
049207c3 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);
508e53e2 199 }
200 }
718e3744 201
049207c3 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);
718e3744 206 return CMD_SUCCESS;
207}
208
508e53e2 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"
6ac29a51 219 )
508e53e2 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)",
718e3744 226 SHOW_STR
508e53e2 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 )
718e3744 240{
049207c3 241 int level;
52dc7ee6 242 struct listnode *i, *j;
508e53e2 243 struct ospf6 *o = ospf6;
049207c3 244 struct ospf6_area *oa;
245 struct ospf6_interface *oi;
508e53e2 246 u_int16_t type = 0;
247
718e3744 248 OSPF6_CMD_CHECK_RUNNING ();
249
049207c3 250 type = parse_type_spec (argc, argv);
251 argc--;
252 argv++;
253 level = parse_show_level (argc, argv);
508e53e2 254
049207c3 255 switch (OSPF6_LSA_SCOPE (type))
508e53e2 256 {
6452df09 257 case OSPF6_SCOPE_AREA:
1eb8ef25 258 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 259 {
049207c3 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
6452df09 265 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 266 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 267 {
1eb8ef25 268 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 269 {
049207c3 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
6452df09 277 case OSPF6_SCOPE_AS:
049207c3 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;
508e53e2 285 }
286
049207c3 287 vty_out (vty, "%s", VNL);
718e3744 288 return CMD_SUCCESS;
289}
290
508e53e2 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)",
718e3744 297 SHOW_STR
508e53e2 298 IPV6_STR
718e3744 299 OSPF6_STR
508e53e2 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"
6ac29a51 313 )
508e53e2 314
315DEFUN (show_ipv6_ospf6_database_id,
316 show_ipv6_ospf6_database_id_cmd,
317 "show ipv6 ospf6 database * A.B.C.D",
718e3744 318 SHOW_STR
508e53e2 319 IPV6_STR
718e3744 320 OSPF6_STR
508e53e2 321 "Display Link state database\n"
322 "Any Link state Type\n"
323 "Specify Link state ID as IPv4 address notation\n"
324 )
718e3744 325{
049207c3 326 int level;
52dc7ee6 327 struct listnode *i, *j;
508e53e2 328 struct ospf6 *o = ospf6;
049207c3 329 struct ospf6_area *oa;
330 struct ospf6_interface *oi;
508e53e2 331 u_int32_t id = 0;
332
718e3744 333 OSPF6_CMD_CHECK_RUNNING ();
334
508e53e2 335 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
718e3744 336 {
508e53e2 337 vty_out (vty, "Link State ID is not parsable: %s%s",
049207c3 338 argv[0], VNL);
508e53e2 339 return CMD_SUCCESS;
718e3744 340 }
341
049207c3 342 argc--;
343 argv++;
344 level = parse_show_level (argc, argv);
345
1eb8ef25 346 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 347 {
049207c3 348 vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
349 ospf6_lsdb_show (vty, level, NULL, &id, NULL, oa->lsdb);
508e53e2 350 }
049207c3 351
1eb8ef25 352 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 353 {
1eb8ef25 354 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
508e53e2 355 {
049207c3 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);
508e53e2 359 }
360 }
718e3744 361
049207c3 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);
718e3744 366 return CMD_SUCCESS;
367}
368
508e53e2 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"
049207c3 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"
6ac29a51 382 )
049207c3 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"
6ac29a51 393 )
049207c3 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"
508e53e2 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"
6ac29a51 408 )
508e53e2 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 )
718e3744 421{
049207c3 422 int level;
52dc7ee6 423 struct listnode *i, *j;
508e53e2 424 struct ospf6 *o = ospf6;
049207c3 425 struct ospf6_area *oa;
426 struct ospf6_interface *oi;
427 u_int32_t adv_router = 0;
718e3744 428
508e53e2 429 OSPF6_CMD_CHECK_RUNNING ();
718e3744 430
049207c3 431 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
718e3744 432 {
508e53e2 433 vty_out (vty, "Advertising Router is not parsable: %s%s",
049207c3 434 argv[0], VNL);
508e53e2 435 return CMD_SUCCESS;
718e3744 436 }
437
049207c3 438 argc--;
439 argv++;
440 level = parse_show_level (argc, argv);
441
1eb8ef25 442 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
718e3744 443 {
049207c3 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);
718e3744 446 }
049207c3 447
1eb8ef25 448 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
718e3744 449 {
1eb8ef25 450 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
508e53e2 451 {
049207c3 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);
508e53e2 455 }
718e3744 456 }
457
049207c3 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);
508e53e2 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"
6ac29a51 479 )
508e53e2 480
049207c3 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"
6ac29a51 490 )
049207c3 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"
6ac29a51 505 )
049207c3 506
508e53e2 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{
049207c3 528 int level;
52dc7ee6 529 struct listnode *i, *j;
508e53e2 530 struct ospf6 *o = ospf6;
049207c3 531 struct ospf6_area *oa;
532 struct ospf6_interface *oi;
508e53e2 533 u_int16_t type = 0;
534 u_int32_t id = 0;
535
536 OSPF6_CMD_CHECK_RUNNING ();
537
049207c3 538 type = parse_type_spec (argc, argv);
539 argc--;
540 argv++;
508e53e2 541
049207c3 542 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
718e3744 543 {
508e53e2 544 vty_out (vty, "Link state ID is not parsable: %s%s",
049207c3 545 argv[0], VNL);
508e53e2 546 return CMD_SUCCESS;
718e3744 547 }
548
049207c3 549 argc--;
550 argv++;
551 level = parse_show_level (argc, argv);
552
553 switch (OSPF6_LSA_SCOPE (type))
718e3744 554 {
6452df09 555 case OSPF6_SCOPE_AREA:
1eb8ef25 556 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 557 {
049207c3 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
6452df09 563 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 564 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 565 {
1eb8ef25 566 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 567 {
049207c3 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
6452df09 575 case OSPF6_SCOPE_AS:
049207c3 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;
718e3744 583 }
584
049207c3 585 vty_out (vty, "%s", VNL);
718e3744 586 return CMD_SUCCESS;
587}
588
508e53e2 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"
6ac29a51 612 )
508e53e2 613
049207c3 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"
6ac29a51 634 )
049207c3 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"
6ac29a51 660 )
049207c3 661
508e53e2 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"
718e3744 682 )
683{
049207c3 684 int level;
52dc7ee6 685 struct listnode *i, *j;
508e53e2 686 struct ospf6 *o = ospf6;
049207c3 687 struct ospf6_area *oa;
688 struct ospf6_interface *oi;
508e53e2 689 u_int16_t type = 0;
049207c3 690 u_int32_t adv_router = 0;
718e3744 691
508e53e2 692 OSPF6_CMD_CHECK_RUNNING ();
718e3744 693
049207c3 694 type = parse_type_spec (argc, argv);
695 argc--;
696 argv++;
508e53e2 697
049207c3 698 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
718e3744 699 {
508e53e2 700 vty_out (vty, "Advertising Router is not parsable: %s%s",
049207c3 701 argv[0], VNL);
508e53e2 702 return CMD_SUCCESS;
718e3744 703 }
704
049207c3 705 argc--;
706 argv++;
707 level = parse_show_level (argc, argv);
708
709 switch (OSPF6_LSA_SCOPE (type))
508e53e2 710 {
6452df09 711 case OSPF6_SCOPE_AREA:
1eb8ef25 712 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 713 {
049207c3 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
6452df09 719 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 720 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 721 {
1eb8ef25 722 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 723 {
049207c3 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
6452df09 731 case OSPF6_SCOPE_AS:
049207c3 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;
508e53e2 739 }
718e3744 740
049207c3 741 vty_out (vty, "%s", VNL);
508e53e2 742 return CMD_SUCCESS;
718e3744 743}
744
508e53e2 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"
6ac29a51 769 )
508e53e2 770
049207c3 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",
508e53e2 776 SHOW_STR
777 IPV6_STR
778 OSPF6_STR
779 "Display Link state database\n"
049207c3 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"
508e53e2 790 "Specify Advertising Router as IPv4 address notation\n"
6ac29a51 791 )
718e3744 792
049207c3 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"
6ac29a51 817 )
049207c3 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;
52dc7ee6 832 struct listnode *i, *j;
049207c3 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",
6452df09 844 argv[0], VNL);
049207c3 845 return CMD_SUCCESS;
718e3744 846 }
847
049207c3 848 argc--;
849 argv++;
850
851 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
718e3744 852 {
508e53e2 853 vty_out (vty, "Advertising Router is not parsable: %s%s",
049207c3 854 argv[0], VNL);
508e53e2 855 return CMD_SUCCESS;
718e3744 856 }
857
049207c3 858 argc--;
859 argv++;
860 level = parse_show_level (argc, argv);
861
1eb8ef25 862 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 863 {
049207c3 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);
508e53e2 866 }
049207c3 867
1eb8ef25 868 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 869 {
1eb8ef25 870 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
508e53e2 871 {
049207c3 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);
508e53e2 875 }
876 }
718e3744 877
049207c3 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);
718e3744 882 return CMD_SUCCESS;
883}
884
508e53e2 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"
6ac29a51 899 )
508e53e2 900
049207c3 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;
52dc7ee6 915 struct listnode *i, *j;
049207c3 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",
6452df09 937 argv[0], VNL);
049207c3 938 return CMD_SUCCESS;
939 }
940
941 argc--;
942 argv++;
943 level = parse_show_level (argc, argv);
944
1eb8ef25 945 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 946 {
049207c3 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
1eb8ef25 951 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 952 {
1eb8ef25 953 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 954 {
049207c3 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"
6ac29a51 983 )
049207c3 984
508e53e2 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 )
718e3744 1006{
049207c3 1007 int level;
52dc7ee6 1008 struct listnode *i, *j;
508e53e2 1009 struct ospf6 *o = ospf6;
049207c3 1010 struct ospf6_area *oa;
1011 struct ospf6_interface *oi;
508e53e2 1012 u_int16_t type = 0;
1013 u_int32_t id = 0;
049207c3 1014 u_int32_t adv_router = 0;
508e53e2 1015
1016 OSPF6_CMD_CHECK_RUNNING ();
718e3744 1017
049207c3 1018 type = parse_type_spec (argc, argv);
1019 argc--;
1020 argv++;
508e53e2 1021
049207c3 1022 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
508e53e2 1023 {
1024 vty_out (vty, "Link state ID is not parsable: %s%s",
049207c3 1025 argv[0], VNL);
508e53e2 1026 return CMD_SUCCESS;
718e3744 1027 }
1028
049207c3 1029 argc--;
1030 argv++;
1031
1032 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
718e3744 1033 {
508e53e2 1034 vty_out (vty, "Advertising Router is not parsable: %s%s",
049207c3 1035 argv[0], VNL);
508e53e2 1036 return CMD_SUCCESS;
1037 }
1038
049207c3 1039 argc--;
1040 argv++;
1041 level = parse_show_level (argc, argv);
1042
1043 switch (OSPF6_LSA_SCOPE (type))
508e53e2 1044 {
6452df09 1045 case OSPF6_SCOPE_AREA:
1eb8ef25 1046 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1047 {
049207c3 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
6452df09 1053 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 1054 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1055 {
1eb8ef25 1056 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 1057 {
049207c3 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
6452df09 1065 case OSPF6_SCOPE_AS:
049207c3 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;
718e3744 1073 }
1074
049207c3 1075 vty_out (vty, "%s", VNL);
718e3744 1076 return CMD_SUCCESS;
1077}
1078
508e53e2 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"
049207c3 1100 "Dump LSAs\n"
1101 "Display LSA's internal information\n"
6ac29a51 1102 )
049207c3 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;
52dc7ee6 1130 struct listnode *i, *j;
049207c3 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 {
6452df09 1167 case OSPF6_SCOPE_AREA:
1eb8ef25 1168 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1169 {
049207c3 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
6452df09 1175 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 1176 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1177 {
1eb8ef25 1178 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 1179 {
049207c3 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
6452df09 1187 case OSPF6_SCOPE_AS:
049207c3 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"
508e53e2 1225 "Dump LSAs\n"
1226 "Display LSA's internal information\n"
6ac29a51 1227 )
508e53e2 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
508e53e2 1235 "Display Self-originated LSAs\n"
1236 )
718e3744 1237{
049207c3 1238 int level;
52dc7ee6 1239 struct listnode *i, *j;
508e53e2 1240 struct ospf6 *o = ospf6;
049207c3 1241 struct ospf6_area *oa;
1242 struct ospf6_interface *oi;
1243 u_int32_t adv_router = 0;
718e3744 1244
508e53e2 1245 OSPF6_CMD_CHECK_RUNNING ();
1246
049207c3 1247 level = parse_show_level (argc, argv);
718e3744 1248
049207c3 1249 adv_router = o->router_id;
718e3744 1250
1eb8ef25 1251 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
508e53e2 1252 {
049207c3 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);
508e53e2 1255 }
049207c3 1256
1eb8ef25 1257 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
718e3744 1258 {
1eb8ef25 1259 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
508e53e2 1260 {
049207c3 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);
508e53e2 1264 }
718e3744 1265 }
1266
049207c3 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);
718e3744 1271 return CMD_SUCCESS;
1272}
1273
508e53e2 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
508e53e2 1281 "Display Self-originated LSAs\n"
1282 "Display details of LSAs\n"
1283 "Dump LSAs\n"
1284 "Display LSA's internal information\n"
049207c3 1285 )
508e53e2 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 )
718e3744 1307{
049207c3 1308 int level;
52dc7ee6 1309 struct listnode *i, *j;
508e53e2 1310 struct ospf6 *o = ospf6;
049207c3 1311 struct ospf6_area *oa;
1312 struct ospf6_interface *oi;
508e53e2 1313 u_int16_t type = 0;
049207c3 1314 u_int32_t adv_router = 0;
718e3744 1315
508e53e2 1316 OSPF6_CMD_CHECK_RUNNING ();
718e3744 1317
049207c3 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))
718e3744 1326 {
6452df09 1327 case OSPF6_SCOPE_AREA:
1eb8ef25 1328 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1329 {
049207c3 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
6452df09 1335 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 1336 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1337 {
1eb8ef25 1338 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 1339 {
049207c3 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
6452df09 1347 case OSPF6_SCOPE_AS:
049207c3 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;
718e3744 1355 }
508e53e2 1356
049207c3 1357 vty_out (vty, "%s", VNL);
1358 return CMD_SUCCESS;
1359}
508e53e2 1360
049207c3 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"
6ac29a51 1384 )
508e53e2 1385
049207c3 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;
52dc7ee6 1411 struct listnode *i, *j;
049207c3 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
6452df09 1425 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
718e3744 1426 {
049207c3 1427 vty_out (vty, "Link State ID is not parsable: %s%s",
1428 argv[0], VNL);
1429 return CMD_SUCCESS;
718e3744 1430 }
049207c3 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))
718e3744 1439 {
6452df09 1440 case OSPF6_SCOPE_AREA:
1eb8ef25 1441 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1442 {
049207c3 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
6452df09 1448 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 1449 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1450 {
1eb8ef25 1451 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 1452 {
049207c3 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
6452df09 1460 case OSPF6_SCOPE_AS:
049207c3 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;
718e3744 1468 }
718e3744 1469
049207c3 1470 vty_out (vty, "%s", VNL);
718e3744 1471 return CMD_SUCCESS;
1472}
718e3744 1473
049207c3 1474ALIAS (show_ipv6_ospf6_database_type_self_originated_linkstate_id,
1475 show_ipv6_ospf6_database_type_self_originated_linkstate_id_detail_cmd,
508e53e2 1476 "show ipv6 ospf6 database "
1477 "(router|network|inter-prefix|inter-router|as-external|"
1478 "group-membership|type-7|link|intra-prefix) self-originated "
049207c3 1479 "linkstate-id A.B.C.D (detail|dump|internal)",
508e53e2 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"
049207c3 1494 "Search by Link state ID\n"
1495 "Specify Link state ID as IPv4 address notation\n"
508e53e2 1496 "Display details of LSAs\n"
1497 "Dump LSAs\n"
1498 "Display LSA's internal information\n"
6ac29a51 1499 )
508e53e2 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 )
718e3744 1522{
049207c3 1523 int level;
52dc7ee6 1524 struct listnode *i, *j;
508e53e2 1525 struct ospf6 *o = ospf6;
049207c3 1526 struct ospf6_area *oa;
1527 struct ospf6_interface *oi;
508e53e2 1528 u_int16_t type = 0;
049207c3 1529 u_int32_t adv_router = 0;
508e53e2 1530 u_int32_t id = 0;
718e3744 1531
508e53e2 1532 OSPF6_CMD_CHECK_RUNNING ();
718e3744 1533
049207c3 1534 type = parse_type_spec (argc, argv);
1535 argc--;
1536 argv++;
508e53e2 1537
6452df09 1538 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
508e53e2 1539 {
1540 vty_out (vty, "Link State ID is not parsable: %s%s",
049207c3 1541 argv[0], VNL);
508e53e2 1542 return CMD_SUCCESS;
1543 }
718e3744 1544
049207c3 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))
718e3744 1552 {
6452df09 1553 case OSPF6_SCOPE_AREA:
1eb8ef25 1554 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1555 {
049207c3 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
6452df09 1561 case OSPF6_SCOPE_LINKLOCAL:
1eb8ef25 1562 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
049207c3 1563 {
1eb8ef25 1564 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
049207c3 1565 {
049207c3 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
6452df09 1573 case OSPF6_SCOPE_AS:
049207c3 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;
718e3744 1581 }
508e53e2 1582
049207c3 1583 vty_out (vty, "%s", VNL);
508e53e2 1584 return CMD_SUCCESS;
718e3744 1585}
1586
508e53e2 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 "
049207c3 1592 "(detail|dump|internal)",
508e53e2 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"
508e53e2 1606 "Display Self-originated LSAs\n"
049207c3 1607 "Search by Link state ID\n"
1608 "Specify Link state ID as IPv4 address notation\n"
508e53e2 1609 "Display details of LSAs\n"
1610 "Dump LSAs\n"
1611 "Display LSA's internal information\n"
6ac29a51 1612 )
508e53e2 1613
6452df09 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);
597fa7c1
J
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
6452df09 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"
6ac29a51 1679 )
6452df09 1680
4846ef64 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{
52dc7ee6 1690 struct listnode *node;
4846ef64 1691 struct ospf6_area *oa;
1692
1eb8ef25 1693 for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
4846ef64 1694 {
4846ef64 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"
6ac29a51 1713 )
4846ef64 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"
6ac29a51 1725 )
4846ef64 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{
0c083ee9 1736 const char *sargv[CMD_ARGC_MAX];
4846ef64 1737 int i, sargc;
52dc7ee6 1738 struct listnode *node;
4846ef64 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
1eb8ef25 1748 for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
4846ef64 1749 {
4846ef64 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}
6452df09 1758
718e3744 1759/* Install ospf related commands. */
1760void
6ac29a51 1761ospf6_init (void)
718e3744 1762{
1e05838a 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
ef1bbf5c 1775#ifdef HAVE_SNMP
0c083ee9 1776 ospf6_snmp_init (master);
ef1bbf5c 1777#endif /*HAVE_SNMP*/
1778
508e53e2 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 ();
cb4b8845 1788 install_element_ospf6_debug_brouter ();
508e53e2 1789 install_element_ospf6_debug_asbr ();
6452df09 1790 install_element_ospf6_debug_abr ();
1e05838a 1791 install_element_ospf6_debug_flood ();
718e3744 1792
a1b11f9b
DS
1793 install_element_ospf6_clear_interface ();
1794
718e3744 1795 install_element (VIEW_NODE, &show_version_ospf6_cmd);
718e3744 1796 install_element (ENABLE_NODE, &show_version_ospf6_cmd);
049207c3 1797
6452df09 1798 install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_cmd);
1799 install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_detail_cmd);
1800 install_element (ENABLE_NODE, &show_ipv6_ospf6_border_routers_cmd);
1801 install_element (ENABLE_NODE, &show_ipv6_ospf6_border_routers_detail_cmd);
1802
4846ef64 1803 install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_cmd);
1804 install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_router_cmd);
1805 install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_network_cmd);
1806 install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_detail_cmd);
1807 install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_cmd);
1808 install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_router_cmd);
1809 install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_network_cmd);
1810 install_element (ENABLE_NODE, &show_ipv6_ospf6_linkstate_detail_cmd);
1811
049207c3 1812#define INSTALL(n,c) \
b31b8136 1813 install_element (n ## _NODE, &show_ipv6_ospf6_ ## c)
049207c3 1814
1815 INSTALL (VIEW, database_cmd);
1816 INSTALL (VIEW, database_detail_cmd);
1817 INSTALL (VIEW, database_type_cmd);
1818 INSTALL (VIEW, database_type_detail_cmd);
1819 INSTALL (VIEW, database_id_cmd);
1820 INSTALL (VIEW, database_id_detail_cmd);
1821 INSTALL (VIEW, database_linkstate_id_cmd);
1822 INSTALL (VIEW, database_linkstate_id_detail_cmd);
1823 INSTALL (VIEW, database_router_cmd);
1824 INSTALL (VIEW, database_router_detail_cmd);
1825 INSTALL (VIEW, database_adv_router_cmd);
1826 INSTALL (VIEW, database_adv_router_detail_cmd);
1827 INSTALL (VIEW, database_type_id_cmd);
1828 INSTALL (VIEW, database_type_id_detail_cmd);
1829 INSTALL (VIEW, database_type_linkstate_id_cmd);
1830 INSTALL (VIEW, database_type_linkstate_id_detail_cmd);
1831 INSTALL (VIEW, database_type_router_cmd);
1832 INSTALL (VIEW, database_type_router_detail_cmd);
1833 INSTALL (VIEW, database_type_adv_router_cmd);
1834 INSTALL (VIEW, database_type_adv_router_detail_cmd);
1835 INSTALL (VIEW, database_adv_router_linkstate_id_cmd);
1836 INSTALL (VIEW, database_adv_router_linkstate_id_detail_cmd);
1837 INSTALL (VIEW, database_id_router_cmd);
1838 INSTALL (VIEW, database_id_router_detail_cmd);
1839 INSTALL (VIEW, database_type_id_router_cmd);
1840 INSTALL (VIEW, database_type_id_router_detail_cmd);
1841 INSTALL (VIEW, database_type_adv_router_linkstate_id_cmd);
1842 INSTALL (VIEW, database_type_adv_router_linkstate_id_detail_cmd);
1843 INSTALL (VIEW, database_self_originated_cmd);
1844 INSTALL (VIEW, database_self_originated_detail_cmd);
1845 INSTALL (VIEW, database_type_self_originated_cmd);
1846 INSTALL (VIEW, database_type_self_originated_detail_cmd);
1847 INSTALL (VIEW, database_type_id_self_originated_cmd);
1848 INSTALL (VIEW, database_type_id_self_originated_detail_cmd);
1849 INSTALL (VIEW, database_type_self_originated_linkstate_id_cmd);
1850 INSTALL (VIEW, database_type_self_originated_linkstate_id_detail_cmd);
049207c3 1851
1852 INSTALL (ENABLE, database_cmd);
1853 INSTALL (ENABLE, database_detail_cmd);
1854 INSTALL (ENABLE, database_type_cmd);
1855 INSTALL (ENABLE, database_type_detail_cmd);
1856 INSTALL (ENABLE, database_id_cmd);
1857 INSTALL (ENABLE, database_id_detail_cmd);
1858 INSTALL (ENABLE, database_linkstate_id_cmd);
1859 INSTALL (ENABLE, database_linkstate_id_detail_cmd);
1860 INSTALL (ENABLE, database_router_cmd);
1861 INSTALL (ENABLE, database_router_detail_cmd);
1862 INSTALL (ENABLE, database_adv_router_cmd);
1863 INSTALL (ENABLE, database_adv_router_detail_cmd);
1864 INSTALL (ENABLE, database_type_id_cmd);
1865 INSTALL (ENABLE, database_type_id_detail_cmd);
1866 INSTALL (ENABLE, database_type_linkstate_id_cmd);
1867 INSTALL (ENABLE, database_type_linkstate_id_detail_cmd);
1868 INSTALL (ENABLE, database_type_router_cmd);
1869 INSTALL (ENABLE, database_type_router_detail_cmd);
1870 INSTALL (ENABLE, database_type_adv_router_cmd);
1871 INSTALL (ENABLE, database_type_adv_router_detail_cmd);
1872 INSTALL (ENABLE, database_adv_router_linkstate_id_cmd);
1873 INSTALL (ENABLE, database_adv_router_linkstate_id_detail_cmd);
1874 INSTALL (ENABLE, database_id_router_cmd);
1875 INSTALL (ENABLE, database_id_router_detail_cmd);
1876 INSTALL (ENABLE, database_type_id_router_cmd);
1877 INSTALL (ENABLE, database_type_id_router_detail_cmd);
1878 INSTALL (ENABLE, database_type_adv_router_linkstate_id_cmd);
1879 INSTALL (ENABLE, database_type_adv_router_linkstate_id_detail_cmd);
1880 INSTALL (ENABLE, database_self_originated_cmd);
1881 INSTALL (ENABLE, database_self_originated_detail_cmd);
1882 INSTALL (ENABLE, database_type_self_originated_cmd);
1883 INSTALL (ENABLE, database_type_self_originated_detail_cmd);
1884 INSTALL (ENABLE, database_type_id_self_originated_cmd);
1885 INSTALL (ENABLE, database_type_id_self_originated_detail_cmd);
1886 INSTALL (ENABLE, database_type_self_originated_linkstate_id_cmd);
1887 INSTALL (ENABLE, database_type_self_originated_linkstate_id_detail_cmd);
718e3744 1888
508e53e2 1889 /* Make ospf protocol socket. */
1890 ospf6_serv_sock ();
1891 thread_add_read (master, ospf6_receive, NULL, ospf6_sock);
718e3744 1892}
1893
ef2d5d10
PL
1894void
1895ospf6_clean (void)
1896{
1897 if (ospf6->route_table)
1898 ospf6_route_remove_all (ospf6->route_table);
1899 if (ospf6->brouter_table)
1900 ospf6_route_remove_all (ospf6->brouter_table);
1901}