Browse Source

ospf6d: Add the missing ospf6 running check in show cmds

SYMPTOM:

If some of the ospfv3 commands like 'show ipv6 ospf6 route' are executed
with ospf6d daemon running but before having any ospfv3 configuration, then
ospf6d crash is seen.

ISSUE:

There are a few show commands, which are (unlike others) not checking if
ospf6 instance is initialized already.

FIX:

Add the missing checks, by using OSPF6_CMD_CHECK_RUNNING() in the commands
where its needed and not yet used.

Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com>
Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
             Dinesh Dutt <ddutt@cumulusnetworks.com>
Vipin Kumar 3 years ago
parent
commit
f972dec833
4 changed files with 20 additions and 0 deletions
  1. 6 0
      ospf6d/ospf6_area.c
  2. 2 0
      ospf6d/ospf6_asbr.c
  3. 8 0
      ospf6d/ospf6_top.c
  4. 4 0
      ospf6d/ospf6d.c

+ 6 - 0
ospf6d/ospf6_area.c

@@ -666,6 +666,8 @@ DEFUN (show_ipv6_ospf6_spf_tree,
   struct ospf6_route *route;
   struct prefix prefix;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   ospf6_linkstate_prefix (ospf6->router_id, htonl (0), &prefix);
 
   for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
@@ -701,6 +703,8 @@ DEFUN (show_ipv6_ospf6_area_spf_tree,
   struct ospf6_route *route;
   struct prefix prefix;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   ospf6_linkstate_prefix (ospf6->router_id, htonl (0), &prefix);
 
   if (inet_pton (AF_INET, argv[0], &area_id) != 1)
@@ -747,6 +751,8 @@ DEFUN (show_ipv6_ospf6_simulate_spf_tree_root,
   struct ospf6_route_table *spf_table;
   unsigned char tmp_debug_ospf6_spf = 0;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   inet_pton (AF_INET, argv[0], &router_id);
   ospf6_linkstate_prefix (router_id, htonl (0), &prefix);
 

+ 2 - 0
ospf6d/ospf6_asbr.c

@@ -1291,6 +1291,8 @@ DEFUN (show_ipv6_ospf6_redistribute,
 {
   struct ospf6_route *route;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   ospf6_redistribute_show_config (vty);
 
   for (route = ospf6_route_head (ospf6->external_table); route;

+ 8 - 0
ospf6d/ospf6_top.c

@@ -1155,6 +1155,8 @@ DEFUN (show_ipv6_ospf6_route,
        ROUTE_STR
        )
 {
+  OSPF6_CMD_CHECK_RUNNING ();
+
   ospf6_route_table_show (vty, argc, argv, ospf6->route_table);
   return CMD_SUCCESS;
 }
@@ -1186,6 +1188,8 @@ DEFUN (show_ipv6_ospf6_route_match,
   const char *sargv[CMD_ARGC_MAX];
   int i, sargc;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   /* copy argv to sargv and then append "match" */
   for (i = 0; i < argc; i++)
     sargv[i] = argv[i];
@@ -1220,6 +1224,8 @@ DEFUN (show_ipv6_ospf6_route_match_detail,
   sargv[sargc++] = "detail";
   sargv[sargc] = NULL;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   ospf6_route_table_show (vty, sargc, sargv, ospf6->route_table);
   return CMD_SUCCESS;
 }
@@ -1284,6 +1290,8 @@ DEFUN (show_ipv6_ospf6_route_type_detail,
   sargv[sargc++] = "detail";
   sargv[sargc] = NULL;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   ospf6_route_table_show (vty, sargc, sargv, ospf6->route_table);
   return CMD_SUCCESS;
 }

+ 4 - 0
ospf6d/ospf6d.c

@@ -1690,6 +1690,8 @@ DEFUN (show_ipv6_ospf6_linkstate,
   struct listnode *node;
   struct ospf6_area *oa;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   for (ALL_LIST_ELEMENTS_RO (ospf6->area_list, node, oa))
     {
       vty_out (vty, "%s        SPF Result in Area %s%s%s",
@@ -1738,6 +1740,8 @@ DEFUN (show_ipv6_ospf6_linkstate_detail,
   struct listnode *node;
   struct ospf6_area *oa;
 
+  OSPF6_CMD_CHECK_RUNNING ();
+
   /* copy argv to sargv and then append "detail" */
   for (i = 0; i < argc; i++)
     sargv[i] = argv[i];