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