]> git.proxmox.com Git - mirror_frr.git/blob - ospf6d/ospf6d.c
This patch changes ospfd from only listening mode for BFD status updates to interacti...
[mirror_frr.git] / ospf6d / ospf6d.c
1 /*
2 * Copyright (C) 2003 Yasuhiro Ohara
3 *
4 * This file is part of GNU Zebra.
5 *
6 * GNU Zebra is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2, or (at your option) any
9 * later version.
10 *
11 * GNU Zebra is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with GNU Zebra; see the file COPYING. If not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 */
21
22 #include <zebra.h>
23
24 #include "thread.h"
25 #include "linklist.h"
26 #include "vty.h"
27 #include "command.h"
28
29 #include "ospf6_proto.h"
30 #include "ospf6_network.h"
31 #include "ospf6_lsa.h"
32 #include "ospf6_lsdb.h"
33 #include "ospf6_message.h"
34 #include "ospf6_route.h"
35 #include "ospf6_zebra.h"
36 #include "ospf6_spf.h"
37 #include "ospf6_top.h"
38 #include "ospf6_area.h"
39 #include "ospf6_interface.h"
40 #include "ospf6_neighbor.h"
41 #include "ospf6_intra.h"
42 #include "ospf6_asbr.h"
43 #include "ospf6_abr.h"
44 #include "ospf6_flood.h"
45 #include "ospf6d.h"
46 #include "ospf6_bfd.h"
47
48 #ifdef HAVE_SNMP
49 #include "ospf6_snmp.h"
50 #endif /*HAVE_SNMP*/
51
52 char ospf6_daemon_version[] = OSPF6_DAEMON_VERSION;
53
54 struct route_node *
55 route_prev (struct route_node *node)
56 {
57 struct route_node *end;
58 struct route_node *prev = NULL;
59
60 end = node;
61 node = node->parent;
62 if (node)
63 route_lock_node (node);
64 while (node)
65 {
66 prev = node;
67 node = route_next (node);
68 if (node == end)
69 {
70 route_unlock_node (node);
71 node = NULL;
72 }
73 }
74 route_unlock_node (end);
75 if (prev)
76 route_lock_node (prev);
77
78 return prev;
79 }
80
81
82 /* show database functions */
83 DEFUN (show_version_ospf6,
84 show_version_ospf6_cmd,
85 "show version ospf6",
86 SHOW_STR
87 "Displays ospf6d version\n"
88 )
89 {
90 vty_out (vty, "Zebra OSPF6d Version: %s%s",
91 ospf6_daemon_version, VNL);
92
93 return CMD_SUCCESS;
94 }
95
96 static struct cmd_node debug_node =
97 {
98 DEBUG_NODE,
99 "",
100 1 /* VTYSH */
101 };
102
103 static int
104 config_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);
113 config_write_ospf6_debug_brouter (vty);
114 config_write_ospf6_debug_asbr (vty);
115 config_write_ospf6_debug_abr (vty);
116 config_write_ospf6_debug_flood (vty);
117 vty_out (vty, "!%s", VNL);
118 return 0;
119 }
120
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
128 static int
129 parse_show_level (int argc, const char *argv[])
130 {
131 int level = 0;
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
146 static u_int16_t
147 parse_type_spec (int argc, const char *argv[])
148 {
149 u_int16_t type = 0;
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
168 DEFUN (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 )
176 {
177 int level;
178 struct listnode *i, *j;
179 struct ospf6 *o = ospf6;
180 struct ospf6_area *oa;
181 struct ospf6_interface *oi;
182
183 OSPF6_CMD_CHECK_RUNNING ();
184
185 level = parse_show_level (argc, argv);
186
187 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
188 {
189 vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
190 ospf6_lsdb_show (vty, level, NULL, NULL, NULL, oa->lsdb);
191 }
192
193 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
194 {
195 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
196 {
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);
200 }
201 }
202
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);
207 return CMD_SUCCESS;
208 }
209
210 ALIAS (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"
220 )
221
222 DEFUN (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)",
227 SHOW_STR
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 )
241 {
242 int level;
243 struct listnode *i, *j;
244 struct ospf6 *o = ospf6;
245 struct ospf6_area *oa;
246 struct ospf6_interface *oi;
247 u_int16_t type = 0;
248
249 OSPF6_CMD_CHECK_RUNNING ();
250
251 type = parse_type_spec (argc, argv);
252 argc--;
253 argv++;
254 level = parse_show_level (argc, argv);
255
256 switch (OSPF6_LSA_SCOPE (type))
257 {
258 case OSPF6_SCOPE_AREA:
259 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
260 {
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
266 case OSPF6_SCOPE_LINKLOCAL:
267 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
268 {
269 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
270 {
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
278 case OSPF6_SCOPE_AS:
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;
286 }
287
288 vty_out (vty, "%s", VNL);
289 return CMD_SUCCESS;
290 }
291
292 ALIAS (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)",
298 SHOW_STR
299 IPV6_STR
300 OSPF6_STR
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"
314 )
315
316 DEFUN (show_ipv6_ospf6_database_id,
317 show_ipv6_ospf6_database_id_cmd,
318 "show ipv6 ospf6 database * A.B.C.D",
319 SHOW_STR
320 IPV6_STR
321 OSPF6_STR
322 "Display Link state database\n"
323 "Any Link state Type\n"
324 "Specify Link state ID as IPv4 address notation\n"
325 )
326 {
327 int level;
328 struct listnode *i, *j;
329 struct ospf6 *o = ospf6;
330 struct ospf6_area *oa;
331 struct ospf6_interface *oi;
332 u_int32_t id = 0;
333
334 OSPF6_CMD_CHECK_RUNNING ();
335
336 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
337 {
338 vty_out (vty, "Link State ID is not parsable: %s%s",
339 argv[0], VNL);
340 return CMD_SUCCESS;
341 }
342
343 argc--;
344 argv++;
345 level = parse_show_level (argc, argv);
346
347 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
348 {
349 vty_out (vty, AREA_LSDB_TITLE_FORMAT, VNL, oa->name, VNL, VNL);
350 ospf6_lsdb_show (vty, level, NULL, &id, NULL, oa->lsdb);
351 }
352
353 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
354 {
355 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
356 {
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);
360 }
361 }
362
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);
367 return CMD_SUCCESS;
368 }
369
370 ALIAS (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"
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"
383 )
384
385 ALIAS (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"
394 )
395
396 ALIAS (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"
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"
409 )
410
411 DEFUN (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 )
422 {
423 int level;
424 struct listnode *i, *j;
425 struct ospf6 *o = ospf6;
426 struct ospf6_area *oa;
427 struct ospf6_interface *oi;
428 u_int32_t adv_router = 0;
429
430 OSPF6_CMD_CHECK_RUNNING ();
431
432 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
433 {
434 vty_out (vty, "Advertising Router is not parsable: %s%s",
435 argv[0], VNL);
436 return CMD_SUCCESS;
437 }
438
439 argc--;
440 argv++;
441 level = parse_show_level (argc, argv);
442
443 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
444 {
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);
447 }
448
449 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
450 {
451 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
452 {
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);
456 }
457 }
458
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);
463 return CMD_SUCCESS;
464 }
465
466 ALIAS (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"
480 )
481
482 ALIAS (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"
491 )
492
493 ALIAS (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"
506 )
507
508 DEFUN (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 {
529 int level;
530 struct listnode *i, *j;
531 struct ospf6 *o = ospf6;
532 struct ospf6_area *oa;
533 struct ospf6_interface *oi;
534 u_int16_t type = 0;
535 u_int32_t id = 0;
536
537 OSPF6_CMD_CHECK_RUNNING ();
538
539 type = parse_type_spec (argc, argv);
540 argc--;
541 argv++;
542
543 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
544 {
545 vty_out (vty, "Link state ID is not parsable: %s%s",
546 argv[0], VNL);
547 return CMD_SUCCESS;
548 }
549
550 argc--;
551 argv++;
552 level = parse_show_level (argc, argv);
553
554 switch (OSPF6_LSA_SCOPE (type))
555 {
556 case OSPF6_SCOPE_AREA:
557 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
558 {
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
564 case OSPF6_SCOPE_LINKLOCAL:
565 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
566 {
567 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
568 {
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
576 case OSPF6_SCOPE_AS:
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;
584 }
585
586 vty_out (vty, "%s", VNL);
587 return CMD_SUCCESS;
588 }
589
590 ALIAS (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"
613 )
614
615 ALIAS (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"
635 )
636
637 ALIAS (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"
661 )
662
663 DEFUN (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"
683 )
684 {
685 int level;
686 struct listnode *i, *j;
687 struct ospf6 *o = ospf6;
688 struct ospf6_area *oa;
689 struct ospf6_interface *oi;
690 u_int16_t type = 0;
691 u_int32_t adv_router = 0;
692
693 OSPF6_CMD_CHECK_RUNNING ();
694
695 type = parse_type_spec (argc, argv);
696 argc--;
697 argv++;
698
699 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
700 {
701 vty_out (vty, "Advertising Router is not parsable: %s%s",
702 argv[0], VNL);
703 return CMD_SUCCESS;
704 }
705
706 argc--;
707 argv++;
708 level = parse_show_level (argc, argv);
709
710 switch (OSPF6_LSA_SCOPE (type))
711 {
712 case OSPF6_SCOPE_AREA:
713 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
714 {
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
720 case OSPF6_SCOPE_LINKLOCAL:
721 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
722 {
723 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
724 {
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
732 case OSPF6_SCOPE_AS:
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;
740 }
741
742 vty_out (vty, "%s", VNL);
743 return CMD_SUCCESS;
744 }
745
746 ALIAS (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"
770 )
771
772 ALIAS (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",
777 SHOW_STR
778 IPV6_STR
779 OSPF6_STR
780 "Display Link state database\n"
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"
791 "Specify Advertising Router as IPv4 address notation\n"
792 )
793
794 ALIAS (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"
818 )
819
820 DEFUN (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;
833 struct listnode *i, *j;
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",
845 argv[0], VNL);
846 return CMD_SUCCESS;
847 }
848
849 argc--;
850 argv++;
851
852 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
853 {
854 vty_out (vty, "Advertising Router is not parsable: %s%s",
855 argv[0], VNL);
856 return CMD_SUCCESS;
857 }
858
859 argc--;
860 argv++;
861 level = parse_show_level (argc, argv);
862
863 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
864 {
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);
867 }
868
869 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
870 {
871 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
872 {
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);
876 }
877 }
878
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);
883 return CMD_SUCCESS;
884 }
885
886 ALIAS (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"
900 )
901
902 DEFUN (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;
916 struct listnode *i, *j;
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",
938 argv[0], VNL);
939 return CMD_SUCCESS;
940 }
941
942 argc--;
943 argv++;
944 level = parse_show_level (argc, argv);
945
946 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
947 {
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
952 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
953 {
954 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
955 {
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
969 ALIAS (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"
984 )
985
986 DEFUN (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 )
1007 {
1008 int level;
1009 struct listnode *i, *j;
1010 struct ospf6 *o = ospf6;
1011 struct ospf6_area *oa;
1012 struct ospf6_interface *oi;
1013 u_int16_t type = 0;
1014 u_int32_t id = 0;
1015 u_int32_t adv_router = 0;
1016
1017 OSPF6_CMD_CHECK_RUNNING ();
1018
1019 type = parse_type_spec (argc, argv);
1020 argc--;
1021 argv++;
1022
1023 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
1024 {
1025 vty_out (vty, "Link state ID is not parsable: %s%s",
1026 argv[0], VNL);
1027 return CMD_SUCCESS;
1028 }
1029
1030 argc--;
1031 argv++;
1032
1033 if ((inet_pton (AF_INET, argv[0], &adv_router)) != 1)
1034 {
1035 vty_out (vty, "Advertising Router is not parsable: %s%s",
1036 argv[0], VNL);
1037 return CMD_SUCCESS;
1038 }
1039
1040 argc--;
1041 argv++;
1042 level = parse_show_level (argc, argv);
1043
1044 switch (OSPF6_LSA_SCOPE (type))
1045 {
1046 case OSPF6_SCOPE_AREA:
1047 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1048 {
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
1054 case OSPF6_SCOPE_LINKLOCAL:
1055 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1056 {
1057 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
1058 {
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
1066 case OSPF6_SCOPE_AS:
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;
1074 }
1075
1076 vty_out (vty, "%s", VNL);
1077 return CMD_SUCCESS;
1078 }
1079
1080 ALIAS (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"
1101 "Dump LSAs\n"
1102 "Display LSA's internal information\n"
1103 )
1104
1105 DEFUN (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;
1131 struct listnode *i, *j;
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 {
1168 case OSPF6_SCOPE_AREA:
1169 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1170 {
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
1176 case OSPF6_SCOPE_LINKLOCAL:
1177 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1178 {
1179 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
1180 {
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
1188 case OSPF6_SCOPE_AS:
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
1202 ALIAS (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"
1226 "Dump LSAs\n"
1227 "Display LSA's internal information\n"
1228 )
1229
1230 DEFUN (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
1236 "Display Self-originated LSAs\n"
1237 )
1238 {
1239 int level;
1240 struct listnode *i, *j;
1241 struct ospf6 *o = ospf6;
1242 struct ospf6_area *oa;
1243 struct ospf6_interface *oi;
1244 u_int32_t adv_router = 0;
1245
1246 OSPF6_CMD_CHECK_RUNNING ();
1247
1248 level = parse_show_level (argc, argv);
1249
1250 adv_router = o->router_id;
1251
1252 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1253 {
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);
1256 }
1257
1258 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1259 {
1260 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
1261 {
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);
1265 }
1266 }
1267
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);
1272 return CMD_SUCCESS;
1273 }
1274
1275 ALIAS (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
1282 "Display Self-originated LSAs\n"
1283 "Display details of LSAs\n"
1284 "Dump LSAs\n"
1285 "Display LSA's internal information\n"
1286 )
1287
1288 DEFUN (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 )
1308 {
1309 int level;
1310 struct listnode *i, *j;
1311 struct ospf6 *o = ospf6;
1312 struct ospf6_area *oa;
1313 struct ospf6_interface *oi;
1314 u_int16_t type = 0;
1315 u_int32_t adv_router = 0;
1316
1317 OSPF6_CMD_CHECK_RUNNING ();
1318
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))
1327 {
1328 case OSPF6_SCOPE_AREA:
1329 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1330 {
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
1336 case OSPF6_SCOPE_LINKLOCAL:
1337 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1338 {
1339 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
1340 {
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
1348 case OSPF6_SCOPE_AS:
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;
1356 }
1357
1358 vty_out (vty, "%s", VNL);
1359 return CMD_SUCCESS;
1360 }
1361
1362 ALIAS (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"
1385 )
1386
1387 DEFUN (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;
1412 struct listnode *i, *j;
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
1426 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
1427 {
1428 vty_out (vty, "Link State ID is not parsable: %s%s",
1429 argv[0], VNL);
1430 return CMD_SUCCESS;
1431 }
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))
1440 {
1441 case OSPF6_SCOPE_AREA:
1442 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1443 {
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
1449 case OSPF6_SCOPE_LINKLOCAL:
1450 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1451 {
1452 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
1453 {
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
1461 case OSPF6_SCOPE_AS:
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;
1469 }
1470
1471 vty_out (vty, "%s", VNL);
1472 return CMD_SUCCESS;
1473 }
1474
1475 ALIAS (show_ipv6_ospf6_database_type_self_originated_linkstate_id,
1476 show_ipv6_ospf6_database_type_self_originated_linkstate_id_detail_cmd,
1477 "show ipv6 ospf6 database "
1478 "(router|network|inter-prefix|inter-router|as-external|"
1479 "group-membership|type-7|link|intra-prefix) self-originated "
1480 "linkstate-id A.B.C.D (detail|dump|internal)",
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"
1495 "Search by Link state ID\n"
1496 "Specify Link state ID as IPv4 address notation\n"
1497 "Display details of LSAs\n"
1498 "Dump LSAs\n"
1499 "Display LSA's internal information\n"
1500 )
1501
1502 DEFUN (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 )
1523 {
1524 int level;
1525 struct listnode *i, *j;
1526 struct ospf6 *o = ospf6;
1527 struct ospf6_area *oa;
1528 struct ospf6_interface *oi;
1529 u_int16_t type = 0;
1530 u_int32_t adv_router = 0;
1531 u_int32_t id = 0;
1532
1533 OSPF6_CMD_CHECK_RUNNING ();
1534
1535 type = parse_type_spec (argc, argv);
1536 argc--;
1537 argv++;
1538
1539 if ((inet_pton (AF_INET, argv[0], &id)) != 1)
1540 {
1541 vty_out (vty, "Link State ID is not parsable: %s%s",
1542 argv[0], VNL);
1543 return CMD_SUCCESS;
1544 }
1545
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))
1553 {
1554 case OSPF6_SCOPE_AREA:
1555 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1556 {
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
1562 case OSPF6_SCOPE_LINKLOCAL:
1563 for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
1564 {
1565 for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
1566 {
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
1574 case OSPF6_SCOPE_AS:
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;
1582 }
1583
1584 vty_out (vty, "%s", VNL);
1585 return CMD_SUCCESS;
1586 }
1587
1588 ALIAS (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 "
1593 "(detail|dump|internal)",
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"
1607 "Display Self-originated LSAs\n"
1608 "Search by Link state ID\n"
1609 "Specify Link state ID as IPv4 address notation\n"
1610 "Display details of LSAs\n"
1611 "Dump LSAs\n"
1612 "Display LSA's internal information\n"
1613 )
1614
1615
1616 DEFUN (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);
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
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
1671 ALIAS (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"
1680 )
1681
1682 DEFUN (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 {
1691 struct listnode *node;
1692 struct ospf6_area *oa;
1693
1694 OSPF6_CMD_CHECK_RUNNING ();
1695
1696 for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
1697 {
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
1707 ALIAS (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"
1716 )
1717
1718 ALIAS (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"
1728 )
1729
1730 DEFUN (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 {
1739 const char *sargv[CMD_ARGC_MAX];
1740 int i, sargc;
1741 struct listnode *node;
1742 struct ospf6_area *oa;
1743
1744 OSPF6_CMD_CHECK_RUNNING ();
1745
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
1753 for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
1754 {
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 }
1763
1764 /* Install ospf related commands. */
1765 void
1766 ospf6_init (void)
1767 {
1768 ospf6_top_init ();
1769 ospf6_area_init ();
1770 ospf6_interface_init ();
1771 ospf6_neighbor_init ();
1772 ospf6_zebra_init ();
1773
1774 ospf6_lsa_init ();
1775 ospf6_spf_init ();
1776 ospf6_intra_init ();
1777 ospf6_asbr_init ();
1778 ospf6_abr_init ();
1779
1780 #ifdef HAVE_SNMP
1781 ospf6_snmp_init (master);
1782 #endif /*HAVE_SNMP*/
1783
1784 ospf6_bfd_init();
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 ();
1794 install_element_ospf6_debug_brouter ();
1795 install_element_ospf6_debug_asbr ();
1796 install_element_ospf6_debug_abr ();
1797 install_element_ospf6_debug_flood ();
1798
1799 install_element_ospf6_clear_interface ();
1800
1801 install_element (VIEW_NODE, &show_version_ospf6_cmd);
1802 install_element (ENABLE_NODE, &show_version_ospf6_cmd);
1803
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
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
1818 #define INSTALL(n,c) \
1819 install_element (n ## _NODE, &show_ipv6_ospf6_ ## c)
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);
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);
1894
1895 /* Make ospf protocol socket. */
1896 ospf6_serv_sock ();
1897 thread_add_read (master, ospf6_receive, NULL, ospf6_sock);
1898 }
1899
1900 void
1901 ospf6_clean (void)
1902 {
1903 if (!ospf6)
1904 return;
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 }