]> git.proxmox.com Git - mirror_frr.git/blobdiff - ospf6d/ospf6d.c
zebra: Refactor kernel_rtm to be a bit smarter about how it handles options
[mirror_frr.git] / ospf6d / ospf6d.c
index c4a49903170b4552da8d962d6303874db52339ac..db61fe087bb0155c1942f598b7d151df419476c4 100644 (file)
@@ -24,6 +24,7 @@
 #include "linklist.h"
 #include "vty.h"
 #include "command.h"
+#include "plist.h"
 
 #include "ospf6_proto.h"
 #include "ospf6_network.h"
 #include "ospf6d.h"
 #include "ospf6_bfd.h"
 
-char ospf6_daemon_version[] = OSPF6_DAEMON_VERSION;
-
-struct route_node *
-route_prev (struct route_node *node)
+struct route_node *route_prev(struct route_node *node)
 {
-  struct route_node *end;
-  struct route_node *prev = NULL;
-
-  end = node;
-  node = node->parent;
-  if (node)
-    route_lock_node (node);
-  while (node)
-    {
-      prev = node;
-      node = route_next (node);
-      if (node == end)
-        {
-          route_unlock_node (node);
-          node = NULL;
-        }
-    }
-  route_unlock_node (end);
-  if (prev)
-    route_lock_node (prev);
-
-  return prev;
+       struct route_node *end;
+       struct route_node *prev = NULL;
+
+       end = node;
+       node = node->parent;
+       if (node)
+               route_lock_node(node);
+       while (node) {
+               prev = node;
+               node = route_next(node);
+               if (node == end) {
+                       route_unlock_node(node);
+                       node = NULL;
+               }
+       }
+       route_unlock_node(end);
+       if (prev)
+               route_lock_node(prev);
+
+       return prev;
 }
 
+static struct cmd_node debug_node = {
+       DEBUG_NODE, "", 1 /* VTYSH */
+};
 
-/* show database functions */
-DEFUN (show_version_ospf6,
-       show_version_ospf6_cmd,
-       "show version ospf6",
-       SHOW_STR
-       "Display version\n"
-       "Display ospf6d version\n"
-      )
+static int config_write_ospf6_debug(struct vty *vty)
 {
-  vty_out (vty, "Zebra OSPF6d Version: %s\n",
-           ospf6_daemon_version);
-
-  return CMD_SUCCESS;
+       config_write_ospf6_debug_message(vty);
+       config_write_ospf6_debug_lsa(vty);
+       config_write_ospf6_debug_zebra(vty);
+       config_write_ospf6_debug_interface(vty);
+       config_write_ospf6_debug_neighbor(vty);
+       config_write_ospf6_debug_spf(vty);
+       config_write_ospf6_debug_route(vty);
+       config_write_ospf6_debug_brouter(vty);
+       config_write_ospf6_debug_asbr(vty);
+       config_write_ospf6_debug_abr(vty);
+       config_write_ospf6_debug_flood(vty);
+
+       return 0;
 }
 
-static struct cmd_node debug_node =
+DEFUN_NOSH (show_debugging_ospf6,
+           show_debugging_ospf6_cmd,
+           "show debugging [ospf6]",
+           SHOW_STR
+           DEBUG_STR
+           OSPF6_STR)
 {
-  DEBUG_NODE,
-  "",
-  1 /* VTYSH */
-};
+       vty_out(vty, "OSPF6 debugging status:\n");
 
-static int
-config_write_ospf6_debug (struct vty *vty)
-{
-  config_write_ospf6_debug_message (vty);
-  config_write_ospf6_debug_lsa (vty);
-  config_write_ospf6_debug_zebra (vty);
-  config_write_ospf6_debug_interface (vty);
-  config_write_ospf6_debug_neighbor (vty);
-  config_write_ospf6_debug_spf (vty);
-  config_write_ospf6_debug_route (vty);
-  config_write_ospf6_debug_brouter (vty);
-  config_write_ospf6_debug_asbr (vty);
-  config_write_ospf6_debug_abr (vty);
-  config_write_ospf6_debug_flood (vty);
-  vty_out (vty, "!\n");
-  return 0;
+       config_write_ospf6_debug(vty);
+
+       return CMD_SUCCESS;
 }
 
-#define AREA_LSDB_TITLE_FORMAT \
-  "\n        Area Scoped Link State Database (Area %s)\n\n"
-#define IF_LSDB_TITLE_FORMAT \
-  "\n        I/F Scoped Link State Database (I/F %s in Area %s)\n\n"
-#define AS_LSDB_TITLE_FORMAT \
-  "\n        AS Scoped Link State Database\n\n"
+#define AREA_LSDB_TITLE_FORMAT                                                 \
+       "\n        Area Scoped Link State Database (Area %s)\n\n"
+#define IF_LSDB_TITLE_FORMAT                                                   \
+       "\n        I/F Scoped Link State Database (I/F %s in Area %s)\n\n"
+#define AS_LSDB_TITLE_FORMAT "\n        AS Scoped Link State Database\n\n"
 
-static int
-parse_show_level (int idx_level, int argc, struct cmd_token **argv)
+static int parse_show_level(int idx_level, int argc, struct cmd_token **argv)
 {
-  int level = OSPF6_LSDB_SHOW_LEVEL_NORMAL;
-
-  if (argc > idx_level)
-    {
-      if (strmatch (argv[idx_level]->text, "detail"))
-        level = OSPF6_LSDB_SHOW_LEVEL_DETAIL;
-      else if (strmatch (argv[idx_level]->text, "dump"))
-        level = OSPF6_LSDB_SHOW_LEVEL_DUMP;
-      else if (strmatch (argv[idx_level]->text, "internal"))
-        level = OSPF6_LSDB_SHOW_LEVEL_INTERNAL;
-    }
-
-  return level;
+       int level = OSPF6_LSDB_SHOW_LEVEL_NORMAL;
+
+       if (argc > idx_level) {
+               if (strmatch(argv[idx_level]->text, "detail"))
+                       level = OSPF6_LSDB_SHOW_LEVEL_DETAIL;
+               else if (strmatch(argv[idx_level]->text, "dump"))
+                       level = OSPF6_LSDB_SHOW_LEVEL_DUMP;
+               else if (strmatch(argv[idx_level]->text, "internal"))
+                       level = OSPF6_LSDB_SHOW_LEVEL_INTERNAL;
+       }
+
+       return level;
 }
 
-static u_int16_t
-parse_type_spec (int idx_lsa, int argc, struct cmd_token **argv)
+static uint16_t parse_type_spec(int idx_lsa, int argc, struct cmd_token **argv)
 {
-  u_int16_t type = 0;
-
-  if (argc > idx_lsa)
-    {
-      if (strmatch (argv[idx_lsa]->text, "router"))
-        type = htons (OSPF6_LSTYPE_ROUTER);
-      else if (strmatch (argv[idx_lsa]->text, "network"))
-        type = htons (OSPF6_LSTYPE_NETWORK);
-      else if (strmatch (argv[idx_lsa]->text, "as-external"))
-        type = htons (OSPF6_LSTYPE_AS_EXTERNAL);
-      else if (strmatch (argv[idx_lsa]->text, "intra-prefix"))
-        type = htons (OSPF6_LSTYPE_INTRA_PREFIX);
-      else if (strmatch (argv[idx_lsa]->text, "inter-router"))
-        type = htons (OSPF6_LSTYPE_INTER_ROUTER);
-      else if (strmatch (argv[idx_lsa]->text, "inter-prefix"))
-        type = htons (OSPF6_LSTYPE_INTER_PREFIX);
-      else if (strmatch (argv[idx_lsa]->text, "link"))
-        type = htons (OSPF6_LSTYPE_LINK);
-    }
-
-  return type;
+       uint16_t type = 0;
+
+       if (argc > idx_lsa) {
+               if (strmatch(argv[idx_lsa]->text, "router"))
+                       type = htons(OSPF6_LSTYPE_ROUTER);
+               else if (strmatch(argv[idx_lsa]->text, "network"))
+                       type = htons(OSPF6_LSTYPE_NETWORK);
+               else if (strmatch(argv[idx_lsa]->text, "as-external"))
+                       type = htons(OSPF6_LSTYPE_AS_EXTERNAL);
+               else if (strmatch(argv[idx_lsa]->text, "intra-prefix"))
+                       type = htons(OSPF6_LSTYPE_INTRA_PREFIX);
+               else if (strmatch(argv[idx_lsa]->text, "inter-router"))
+                       type = htons(OSPF6_LSTYPE_INTER_ROUTER);
+               else if (strmatch(argv[idx_lsa]->text, "inter-prefix"))
+                       type = htons(OSPF6_LSTYPE_INTER_PREFIX);
+               else if (strmatch(argv[idx_lsa]->text, "link"))
+                       type = htons(OSPF6_LSTYPE_LINK);
+       }
+
+       return type;
 }
 
 DEFUN (show_ipv6_ospf6_database,
@@ -176,38 +161,35 @@ DEFUN (show_ipv6_ospf6_database,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_level = 4;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  level = parse_show_level (idx_level, argc, argv);
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-      ospf6_lsdb_show (vty, level, NULL, NULL, NULL, oa->lsdb);
-    }
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-        {
-          vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                   oi->interface->name, oa->name);
-          ospf6_lsdb_show (vty, level, NULL, NULL, NULL, oi->lsdb);
-        }
-    }
-
-  vty_out (vty, AS_LSDB_TITLE_FORMAT);
-  ospf6_lsdb_show (vty, level, NULL, NULL, NULL, o->lsdb);
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_level = 4;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       level = parse_show_level(idx_level, argc, argv);
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+               ospf6_lsdb_show(vty, level, NULL, NULL, NULL, oa->lsdb);
+       }
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                       vty_out(vty, IF_LSDB_TITLE_FORMAT, oi->interface->name,
+                               oa->name);
+                       ospf6_lsdb_show(vty, level, NULL, NULL, NULL, oi->lsdb);
+               }
+       }
+
+       vty_out(vty, AS_LSDB_TITLE_FORMAT);
+       ospf6_lsdb_show(vty, level, NULL, NULL, NULL, o->lsdb);
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_type,
@@ -231,54 +213,52 @@ DEFUN (show_ipv6_ospf6_database_type,
        "Display LSA's internal information\n"
       )
 {
-  int idx_lsa = 4;
-  int idx_level = 5;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  level = parse_show_level (idx_level, argc, argv);
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, NULL, NULL, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, NULL, NULL, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, NULL, NULL, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_level = 5;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       level = parse_show_level(idx_level, argc, argv);
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, NULL, NULL,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, NULL, NULL,
+                                               oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, NULL, NULL, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_id,
@@ -295,43 +275,40 @@ DEFUN (show_ipv6_ospf6_database_id,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_ipv4 = 5;
-  int idx_level = 6;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int32_t id = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  if (argv[idx_ipv4]->type == IPV4_TKN)
-    inet_pton (AF_INET, argv[idx_ipv4]->arg, &id);
-
-  level = parse_show_level (idx_level, argc, argv);
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-      ospf6_lsdb_show (vty, level, NULL, &id, NULL, oa->lsdb);
-    }
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-        {
-          vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                   oi->interface->name, oa->name);
-          ospf6_lsdb_show (vty, level, NULL, &id, NULL, oi->lsdb);
-        }
-    }
-
-  vty_out (vty, AS_LSDB_TITLE_FORMAT);
-  ospf6_lsdb_show (vty, level, NULL, &id, NULL, o->lsdb);
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_ipv4 = 5;
+       int idx_level = 6;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint32_t id = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       if (argv[idx_ipv4]->type == IPV4_TKN)
+               inet_pton(AF_INET, argv[idx_ipv4]->arg, &id);
+
+       level = parse_show_level(idx_level, argc, argv);
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+               ospf6_lsdb_show(vty, level, NULL, &id, NULL, oa->lsdb);
+       }
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                       vty_out(vty, IF_LSDB_TITLE_FORMAT, oi->interface->name,
+                               oa->name);
+                       ospf6_lsdb_show(vty, level, NULL, &id, NULL, oi->lsdb);
+               }
+       }
+
+       vty_out(vty, AS_LSDB_TITLE_FORMAT);
+       ospf6_lsdb_show(vty, level, NULL, &id, NULL, o->lsdb);
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_router,
@@ -349,40 +326,81 @@ DEFUN (show_ipv6_ospf6_database_router,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_ipv4 = 6;
-  int idx_level = 7;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-  inet_pton (AF_INET, argv[idx_ipv4]->arg, &adv_router);
-  level = parse_show_level (idx_level, argc, argv);
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-      ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oa->lsdb);
-    }
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-        {
-          vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                   oi->interface->name, oa->name);
-          ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oi->lsdb);
-        }
-    }
-
-  vty_out (vty, AS_LSDB_TITLE_FORMAT);
-  ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, o->lsdb);
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_ipv4 = 6;
+       int idx_level = 7;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+       inet_pton(AF_INET, argv[idx_ipv4]->arg, &adv_router);
+       level = parse_show_level(idx_level, argc, argv);
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+               ospf6_lsdb_show(vty, level, NULL, NULL, &adv_router, oa->lsdb);
+       }
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                       vty_out(vty, IF_LSDB_TITLE_FORMAT, oi->interface->name,
+                               oa->name);
+                       ospf6_lsdb_show(vty, level, NULL, NULL, &adv_router,
+                                       oi->lsdb);
+               }
+       }
+
+       vty_out(vty, AS_LSDB_TITLE_FORMAT);
+       ospf6_lsdb_show(vty, level, NULL, NULL, &adv_router, o->lsdb);
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
+}
+
+DEFUN_HIDDEN (show_ipv6_ospf6_database_aggr_router,
+       show_ipv6_ospf6_database_aggr_router_cmd,
+       "show ipv6 ospf6 database aggr adv-router A.B.C.D",
+       SHOW_STR
+       IPV6_STR
+       OSPF6_STR
+       "Display Link state database\n"
+       "Aggregated Router LSA\n"
+       "Search by Advertising Router\n"
+       "Specify Advertising Router as IPv4 address notation\n")
+{
+       int level = OSPF6_LSDB_SHOW_LEVEL_DETAIL;
+       uint16_t type = htons(OSPF6_LSTYPE_ROUTER);
+       int idx_ipv4 = 6;
+       struct listnode *i;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_lsdb *lsdb;
+       uint32_t adv_router = 0;
+
+       inet_pton(AF_INET, argv[idx_ipv4]->arg, &adv_router);
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               if (adv_router == o->router_id)
+                       lsdb = oa->lsdb_self;
+               else
+                       lsdb = oa->lsdb;
+               if (ospf6_create_single_router_lsa(oa, lsdb, adv_router)
+                   == NULL) {
+                       vty_out(vty, "Adv router is not found in LSDB.");
+                       return CMD_SUCCESS;
+               }
+               ospf6_lsdb_show(vty, level, &type, NULL, NULL,
+                               oa->temp_router_lsa_lsdb);
+               /* Remove the temp cache */
+               ospf6_remove_temp_router_lsa(oa);
+       }
+
+       vty_out(vty, "\n");
+
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_type_id,
@@ -408,57 +426,54 @@ DEFUN (show_ipv6_ospf6_database_type_id,
        "Display LSA's internal information\n"
       )
 {
-  int idx_lsa = 4;
-  int idx_ipv4 = 6;
-  int idx_level = 7;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t id = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  inet_pton (AF_INET, argv[idx_ipv4]->arg, &id);
-  level = parse_show_level (idx_level, argc, argv);
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, &id, NULL, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, &id, NULL, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, &id, NULL, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_ipv4 = 6;
+       int idx_level = 7;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t id = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       inet_pton(AF_INET, argv[idx_ipv4]->arg, &id);
+       level = parse_show_level(idx_level, argc, argv);
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, &id, NULL, oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, &id, NULL,
+                                               oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, &id, NULL, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_type_router,
@@ -485,57 +500,55 @@ DEFUN (show_ipv6_ospf6_database_type_router,
        "Display LSA's internal information\n"
       )
 {
-  int idx_lsa = 4;
-  int idx_ipv4 = 6;
-  int idx_level = 7;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  inet_pton (AF_INET, argv[idx_ipv4]->arg, &adv_router);
-  level = parse_show_level (idx_level, argc, argv);
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_ipv4 = 6;
+       int idx_level = 7;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       inet_pton(AF_INET, argv[idx_ipv4]->arg, &adv_router);
+       level = parse_show_level(idx_level, argc, argv);
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, NULL, &adv_router,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, NULL,
+                                               &adv_router, oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, NULL, &adv_router, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 
@@ -554,43 +567,41 @@ DEFUN (show_ipv6_ospf6_database_id_router,
        "Display LSA's internal information\n"
       )
 {
-  int idx_ls_id = 5;
-  int idx_adv_rtr = 6;
-  int idx_level = 7;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int32_t id = 0;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-  inet_pton (AF_INET, argv[idx_ls_id]->arg, &id);
-  inet_pton (AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
-  level = parse_show_level (idx_level, argc, argv);
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-      ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oa->lsdb);
-    }
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-        {
-          vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                   oi->interface->name, oa->name);
-          ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oi->lsdb);
-        }
-    }
-
-  vty_out (vty, AS_LSDB_TITLE_FORMAT);
-  ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, o->lsdb);
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_ls_id = 5;
+       int idx_adv_rtr = 6;
+       int idx_level = 7;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint32_t id = 0;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+       inet_pton(AF_INET, argv[idx_ls_id]->arg, &id);
+       inet_pton(AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
+       level = parse_show_level(idx_level, argc, argv);
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+               ospf6_lsdb_show(vty, level, NULL, &id, &adv_router, oa->lsdb);
+       }
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                       vty_out(vty, IF_LSDB_TITLE_FORMAT, oi->interface->name,
+                               oa->name);
+                       ospf6_lsdb_show(vty, level, NULL, &id, &adv_router,
+                                       oi->lsdb);
+               }
+       }
+
+       vty_out(vty, AS_LSDB_TITLE_FORMAT);
+       ospf6_lsdb_show(vty, level, NULL, &id, &adv_router, o->lsdb);
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 
@@ -609,43 +620,41 @@ DEFUN (show_ipv6_ospf6_database_adv_router_linkstate_id,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_adv_rtr = 5;
-  int idx_ls_id = 7;
-  int idx_level = 8;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int32_t id = 0;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-  inet_pton (AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
-  inet_pton (AF_INET, argv[idx_ls_id]->arg, &id);
-  level = parse_show_level (idx_level, argc, argv);
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-      ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oa->lsdb);
-    }
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-        {
-          vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                   oi->interface->name, oa->name);
-          ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, oi->lsdb);
-        }
-    }
-
-  vty_out (vty, AS_LSDB_TITLE_FORMAT);
-  ospf6_lsdb_show (vty, level, NULL, &id, &adv_router, o->lsdb);
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_adv_rtr = 5;
+       int idx_ls_id = 7;
+       int idx_level = 8;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint32_t id = 0;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+       inet_pton(AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
+       inet_pton(AF_INET, argv[idx_ls_id]->arg, &id);
+       level = parse_show_level(idx_level, argc, argv);
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+               ospf6_lsdb_show(vty, level, NULL, &id, &adv_router, oa->lsdb);
+       }
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                       vty_out(vty, IF_LSDB_TITLE_FORMAT, oi->interface->name,
+                               oa->name);
+                       ospf6_lsdb_show(vty, level, NULL, &id, &adv_router,
+                                       oi->lsdb);
+               }
+       }
+
+       vty_out(vty, AS_LSDB_TITLE_FORMAT);
+       ospf6_lsdb_show(vty, level, NULL, &id, &adv_router, o->lsdb);
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_type_id_router,
@@ -669,60 +678,58 @@ DEFUN (show_ipv6_ospf6_database_type_id_router,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_lsa = 4;
-  int idx_ls_id = 5;
-  int idx_adv_rtr = 6;
-  int idx_level = 7;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t id = 0;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  inet_pton (AF_INET, argv[idx_ls_id]->arg, &id);
-  inet_pton (AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
-  level = parse_show_level (idx_level, argc, argv);
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_ls_id = 5;
+       int idx_adv_rtr = 6;
+       int idx_level = 7;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t id = 0;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       inet_pton(AF_INET, argv[idx_ls_id]->arg, &id);
+       inet_pton(AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
+       level = parse_show_level(idx_level, argc, argv);
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, &id, &adv_router,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, &id,
+                                               &adv_router, oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, &id, &adv_router, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 
@@ -749,60 +756,58 @@ DEFUN (show_ipv6_ospf6_database_type_adv_router_linkstate_id,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_lsa = 4;
-  int idx_adv_rtr = 6;
-  int idx_ls_id = 8;
-  int idx_level = 9;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t id = 0;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  inet_pton (AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
-  inet_pton (AF_INET, argv[idx_ls_id]->arg, &id);
-  level = parse_show_level (idx_level, argc, argv);
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_adv_rtr = 6;
+       int idx_ls_id = 8;
+       int idx_level = 9;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t id = 0;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       inet_pton(AF_INET, argv[idx_adv_rtr]->arg, &adv_router);
+       inet_pton(AF_INET, argv[idx_ls_id]->arg, &id);
+       level = parse_show_level(idx_level, argc, argv);
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, &id, &adv_router,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, &id,
+                                               &adv_router, oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, &id, &adv_router, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_self_originated,
@@ -817,39 +822,37 @@ DEFUN (show_ipv6_ospf6_database_self_originated,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_level = 5;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-  level = parse_show_level (idx_level, argc, argv);
-  adv_router = o->router_id;
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-      ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oa->lsdb);
-    }
-
-  for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-    {
-      for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-        {
-          vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                   oi->interface->name, oa->name);
-          ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, oi->lsdb);
-        }
-    }
-
-  vty_out (vty, AS_LSDB_TITLE_FORMAT);
-  ospf6_lsdb_show (vty, level, NULL, NULL, &adv_router, o->lsdb);
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_level = 5;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+       level = parse_show_level(idx_level, argc, argv);
+       adv_router = o->router_id;
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+               ospf6_lsdb_show(vty, level, NULL, NULL, &adv_router, oa->lsdb);
+       }
+
+       for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+               for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                       vty_out(vty, IF_LSDB_TITLE_FORMAT, oi->interface->name,
+                               oa->name);
+                       ospf6_lsdb_show(vty, level, NULL, NULL, &adv_router,
+                                       oi->lsdb);
+               }
+       }
+
+       vty_out(vty, AS_LSDB_TITLE_FORMAT);
+       ospf6_lsdb_show(vty, level, NULL, NULL, &adv_router, o->lsdb);
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 
@@ -874,57 +877,55 @@ DEFUN (show_ipv6_ospf6_database_type_self_originated,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_lsa = 4;
-  int idx_level = 6;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t adv_router = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  level = parse_show_level (idx_level, argc, argv);
-
-  adv_router = o->router_id;
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, NULL, &adv_router, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_level = 6;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t adv_router = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       level = parse_show_level(idx_level, argc, argv);
+
+       adv_router = o->router_id;
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, NULL, &adv_router,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, NULL,
+                                               &adv_router, oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, NULL, &adv_router, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_type_self_originated_linkstate_id,
@@ -950,59 +951,57 @@ DEFUN (show_ipv6_ospf6_database_type_self_originated_linkstate_id,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_lsa = 4;
-  int idx_ls_id = 7;
-  int idx_level = 8;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t adv_router = 0;
-  u_int32_t id = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  inet_pton (AF_INET, argv[idx_ls_id]->arg, &id);
-  level = parse_show_level (idx_level, argc, argv);
-  adv_router = o->router_id;
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_ls_id = 7;
+       int idx_level = 8;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t adv_router = 0;
+       uint32_t id = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       inet_pton(AF_INET, argv[idx_ls_id]->arg, &id);
+       level = parse_show_level(idx_level, argc, argv);
+       adv_router = o->router_id;
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, &id, &adv_router,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, &id,
+                                               &adv_router, oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, &id, &adv_router, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_database_type_id_self_originated,
@@ -1027,59 +1026,57 @@ DEFUN (show_ipv6_ospf6_database_type_id_self_originated,
        "Dump LSAs\n"
        "Display LSA's internal information\n")
 {
-  int idx_lsa = 4;
-  int idx_ls_id = 5;
-  int idx_level = 7;
-  int level;
-  struct listnode *i, *j;
-  struct ospf6 *o = ospf6;
-  struct ospf6_area *oa;
-  struct ospf6_interface *oi;
-  u_int16_t type = 0;
-  u_int32_t adv_router = 0;
-  u_int32_t id = 0;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  type = parse_type_spec (idx_lsa, argc, argv);
-  inet_pton (AF_INET, argv[idx_ls_id]->arg, &id);
-  level = parse_show_level (idx_level, argc, argv);
-  adv_router = o->router_id;
-
-  switch (OSPF6_LSA_SCOPE (type))
-    {
-      case OSPF6_SCOPE_AREA:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            vty_out (vty, AREA_LSDB_TITLE_FORMAT, oa->name);
-            ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oa->lsdb);
-          }
-        break;
-
-      case OSPF6_SCOPE_LINKLOCAL:
-        for (ALL_LIST_ELEMENTS_RO (o->area_list, i, oa))
-          {
-            for (ALL_LIST_ELEMENTS_RO (oa->if_list, j, oi))
-              {
-                vty_out (vty, IF_LSDB_TITLE_FORMAT,
-                         oi->interface->name, oa->name);
-                ospf6_lsdb_show (vty, level, &type, &id, &adv_router, oi->lsdb);
-              }
-          }
-        break;
-
-      case OSPF6_SCOPE_AS:
-        vty_out (vty, AS_LSDB_TITLE_FORMAT);
-        ospf6_lsdb_show (vty, level, &type, &id, &adv_router, o->lsdb);
-        break;
-
-      default:
-        assert (0);
-        break;
-    }
-
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       int idx_lsa = 4;
+       int idx_ls_id = 5;
+       int idx_level = 7;
+       int level;
+       struct listnode *i, *j;
+       struct ospf6 *o = ospf6;
+       struct ospf6_area *oa;
+       struct ospf6_interface *oi;
+       uint16_t type = 0;
+       uint32_t adv_router = 0;
+       uint32_t id = 0;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       type = parse_type_spec(idx_lsa, argc, argv);
+       inet_pton(AF_INET, argv[idx_ls_id]->arg, &id);
+       level = parse_show_level(idx_level, argc, argv);
+       adv_router = o->router_id;
+
+       switch (OSPF6_LSA_SCOPE(type)) {
+       case OSPF6_SCOPE_AREA:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       vty_out(vty, AREA_LSDB_TITLE_FORMAT, oa->name);
+                       ospf6_lsdb_show(vty, level, &type, &id, &adv_router,
+                                       oa->lsdb);
+               }
+               break;
+
+       case OSPF6_SCOPE_LINKLOCAL:
+               for (ALL_LIST_ELEMENTS_RO(o->area_list, i, oa)) {
+                       for (ALL_LIST_ELEMENTS_RO(oa->if_list, j, oi)) {
+                               vty_out(vty, IF_LSDB_TITLE_FORMAT,
+                                       oi->interface->name, oa->name);
+                               ospf6_lsdb_show(vty, level, &type, &id,
+                                               &adv_router, oi->lsdb);
+                       }
+               }
+               break;
+
+       case OSPF6_SCOPE_AS:
+               vty_out(vty, AS_LSDB_TITLE_FORMAT);
+               ospf6_lsdb_show(vty, level, &type, &id, &adv_router, o->lsdb);
+               break;
+
+       default:
+               assert(0);
+               break;
+       }
+
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 DEFUN (show_ipv6_ospf6_border_routers,
@@ -1092,47 +1089,42 @@ DEFUN (show_ipv6_ospf6_border_routers,
        "Router ID\n"
        "Show detailed output\n")
 {
-  int idx_ipv4 = 4;
-  u_int32_t adv_router;
-  struct ospf6_route *ro;
-  struct prefix prefix;
-
-  OSPF6_CMD_CHECK_RUNNING ();
-
-  if (argc == 5)
-    {
-      if (strmatch (argv[idx_ipv4]->text, "detail"))
-        {
-          for (ro = ospf6_route_head (ospf6->brouter_table); ro;
-               ro = ospf6_route_next (ro))
-            ospf6_route_show_detail (vty, ro);
-        }
-      else
-        {
-          inet_pton (AF_INET, argv[idx_ipv4]->arg, &adv_router);
-
-          ospf6_linkstate_prefix (adv_router, 0, &prefix);
-          ro = ospf6_route_lookup (&prefix, ospf6->brouter_table);
-          if (!ro)
-            {
-              vty_out (vty, "No Route found for Router ID: %s\n", argv[4]->arg);
-              return CMD_SUCCESS;
-            }
-
-          ospf6_route_show_detail (vty, ro);
-          return CMD_SUCCESS;
-        }
-    }
-  else
-    {
-      ospf6_brouter_show_header (vty);
-
-      for (ro = ospf6_route_head (ospf6->brouter_table); ro;
-           ro = ospf6_route_next (ro))
-        ospf6_brouter_show (vty, ro);
-    }
-
-  return CMD_SUCCESS;
+       int idx_ipv4 = 4;
+       uint32_t adv_router;
+       struct ospf6_route *ro;
+       struct prefix prefix;
+
+       OSPF6_CMD_CHECK_RUNNING();
+
+       if (argc == 5) {
+               if (strmatch(argv[idx_ipv4]->text, "detail")) {
+                       for (ro = ospf6_route_head(ospf6->brouter_table); ro;
+                            ro = ospf6_route_next(ro))
+                               ospf6_route_show_detail(vty, ro);
+               } else {
+                       inet_pton(AF_INET, argv[idx_ipv4]->arg, &adv_router);
+
+                       ospf6_linkstate_prefix(adv_router, 0, &prefix);
+                       ro = ospf6_route_lookup(&prefix, ospf6->brouter_table);
+                       if (!ro) {
+                               vty_out(vty,
+                                       "No Route found for Router ID: %s\n",
+                                       argv[4]->arg);
+                               return CMD_SUCCESS;
+                       }
+
+                       ospf6_route_show_detail(vty, ro);
+                       return CMD_SUCCESS;
+               }
+       } else {
+               ospf6_brouter_show_header(vty);
+
+               for (ro = ospf6_route_head(ospf6->brouter_table); ro;
+                    ro = ospf6_route_next(ro))
+                       ospf6_brouter_show(vty, ro);
+       }
+
+       return CMD_SUCCESS;
 }
 
 
@@ -1149,24 +1141,23 @@ DEFUN (show_ipv6_ospf6_linkstate,
        "Specify Router ID as IPv4 address notation\n"
        "Specify Link state ID as IPv4 address notation\n")
 {
-  int idx_ipv4 = 4;
-  struct listnode *node;
-  struct ospf6_area *oa;
+       int idx_ipv4 = 5;
+       struct listnode *node;
+       struct ospf6_area *oa;
 
-  OSPF6_CMD_CHECK_RUNNING ();
+       OSPF6_CMD_CHECK_RUNNING();
 
-  for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
-    {
-      vty_out (vty, "\n        SPF Result in Area %s\n\n", oa->name);
-      ospf6_linkstate_table_show (vty, idx_ipv4, argc, argv, oa->spf_table);
-    }
+       for (ALL_LIST_ELEMENTS_RO(ospf6->area_list, node, oa)) {
+               vty_out(vty, "\n        SPF Result in Area %s\n\n", oa->name);
+               ospf6_linkstate_table_show(vty, idx_ipv4, argc, argv,
+                                          oa->spf_table);
+       }
 
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
 }
 
 
-
 DEFUN (show_ipv6_ospf6_linkstate_detail,
        show_ipv6_ospf6_linkstate_detail_cmd,
        "show ipv6 ospf6 linkstate detail",
@@ -1176,89 +1167,114 @@ DEFUN (show_ipv6_ospf6_linkstate_detail,
        "Display linkstate routing table\n"
        "Display detailed information\n")
 {
-  int idx_detail = 4;
-  struct listnode *node;
-  struct ospf6_area *oa;
+       int idx_detail = 4;
+       struct listnode *node;
+       struct ospf6_area *oa;
 
-  OSPF6_CMD_CHECK_RUNNING ();
+       OSPF6_CMD_CHECK_RUNNING();
 
-  for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
-    {
-      vty_out (vty, "\n        SPF Result in Area %s\n\n", oa->name);
-      ospf6_linkstate_table_show (vty, idx_detail, argc, argv, oa->spf_table);
-    }
+       for (ALL_LIST_ELEMENTS_RO(ospf6->area_list, node, oa)) {
+               vty_out(vty, "\n        SPF Result in Area %s\n\n", oa->name);
+               ospf6_linkstate_table_show(vty, idx_detail, argc, argv,
+                                          oa->spf_table);
+       }
 
-  vty_out (vty, "\n");
-  return CMD_SUCCESS;
+       vty_out(vty, "\n");
+       return CMD_SUCCESS;
+}
+
+static void ospf6_plist_add(struct prefix_list *plist)
+{
+       if (prefix_list_afi(plist) != AFI_IP6)
+               return;
+       ospf6_area_plist_update(plist, 1);
+}
+
+static void ospf6_plist_del(struct prefix_list *plist)
+{
+       if (prefix_list_afi(plist) != AFI_IP6)
+               return;
+       ospf6_area_plist_update(plist, 0);
 }
 
 /* Install ospf related commands. */
-void
-ospf6_init (void)
+void ospf6_init(void)
 {
-  ospf6_top_init ();
-  ospf6_area_init ();
-  ospf6_interface_init ();
-  ospf6_neighbor_init ();
-  ospf6_zebra_init(master);
-
-  ospf6_lsa_init ();
-  ospf6_spf_init ();
-  ospf6_intra_init ();
-  ospf6_asbr_init ();
-  ospf6_abr_init ();
-
-  ospf6_bfd_init();
-  install_node (&debug_node, config_write_ospf6_debug);
-
-  install_element_ospf6_debug_message ();
-  install_element_ospf6_debug_lsa ();
-  install_element_ospf6_debug_interface ();
-  install_element_ospf6_debug_neighbor ();
-  install_element_ospf6_debug_zebra ();
-  install_element_ospf6_debug_spf ();
-  install_element_ospf6_debug_route ();
-  install_element_ospf6_debug_brouter ();
-  install_element_ospf6_debug_asbr ();
-  install_element_ospf6_debug_abr ();
-  install_element_ospf6_debug_flood ();
-
-  install_element_ospf6_clear_interface ();
-
-  install_element (VIEW_NODE, &show_version_ospf6_cmd);
-
-  install_element (VIEW_NODE, &show_ipv6_ospf6_border_routers_cmd);
-
-  install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_linkstate_detail_cmd);
-
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_id_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_router_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_router_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_adv_router_linkstate_id_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_id_router_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_router_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_adv_router_linkstate_id_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_self_originated_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_self_originated_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_id_self_originated_cmd);
-  install_element (VIEW_NODE, &show_ipv6_ospf6_database_type_self_originated_linkstate_id_cmd);
-
-  /* Make ospf protocol socket. */
-  ospf6_serv_sock ();
-  thread_add_read(master, ospf6_receive, NULL, ospf6_sock, NULL);
+       ospf6_top_init();
+       ospf6_area_init();
+       ospf6_interface_init();
+       ospf6_neighbor_init();
+       ospf6_zebra_init(master);
+
+       ospf6_lsa_init();
+       ospf6_spf_init();
+       ospf6_intra_init();
+       ospf6_asbr_init();
+       ospf6_abr_init();
+
+       prefix_list_add_hook(ospf6_plist_add);
+       prefix_list_delete_hook(ospf6_plist_del);
+
+       ospf6_bfd_init();
+       install_node(&debug_node, config_write_ospf6_debug);
+
+       install_element_ospf6_debug_message();
+       install_element_ospf6_debug_lsa();
+       install_element_ospf6_debug_interface();
+       install_element_ospf6_debug_neighbor();
+       install_element_ospf6_debug_zebra();
+       install_element_ospf6_debug_spf();
+       install_element_ospf6_debug_route();
+       install_element_ospf6_debug_brouter();
+       install_element_ospf6_debug_asbr();
+       install_element_ospf6_debug_abr();
+       install_element_ospf6_debug_flood();
+
+       install_element_ospf6_clear_interface();
+
+       install_element(VIEW_NODE, &show_debugging_ospf6_cmd);
+
+       install_element(VIEW_NODE, &show_ipv6_ospf6_border_routers_cmd);
+
+       install_element(VIEW_NODE, &show_ipv6_ospf6_linkstate_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_linkstate_detail_cmd);
+
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_type_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_id_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_router_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_type_id_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_type_router_cmd);
+       install_element(VIEW_NODE,
+                       &show_ipv6_ospf6_database_adv_router_linkstate_id_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_id_router_cmd);
+       install_element(VIEW_NODE,
+                       &show_ipv6_ospf6_database_type_id_router_cmd);
+       install_element(
+               VIEW_NODE,
+               &show_ipv6_ospf6_database_type_adv_router_linkstate_id_cmd);
+       install_element(VIEW_NODE,
+                       &show_ipv6_ospf6_database_self_originated_cmd);
+       install_element(VIEW_NODE,
+                       &show_ipv6_ospf6_database_type_self_originated_cmd);
+       install_element(VIEW_NODE,
+                       &show_ipv6_ospf6_database_type_id_self_originated_cmd);
+       install_element(
+               VIEW_NODE,
+               &show_ipv6_ospf6_database_type_self_originated_linkstate_id_cmd);
+       install_element(VIEW_NODE, &show_ipv6_ospf6_database_aggr_router_cmd);
+
+       /* Make ospf protocol socket. */
+       ospf6_serv_sock();
+       thread_add_read(master, ospf6_receive, NULL, ospf6_sock, NULL);
 }
 
-void
-ospf6_clean (void)
+void ospf6_clean(void)
 {
-  if (!ospf6)
-    return;
-  if (ospf6->route_table)
-    ospf6_route_remove_all (ospf6->route_table);
-  if (ospf6->brouter_table)
-    ospf6_route_remove_all (ospf6->brouter_table);
+       if (!ospf6)
+               return;
+       if (ospf6->route_table)
+               ospf6_route_remove_all(ospf6->route_table);
+       if (ospf6->brouter_table)
+               ospf6_route_remove_all(ospf6->brouter_table);
 }