summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2015-05-19 18:03:41 -0700
committerDonald Sharp <sharpd@cumulusnetworks.com>2015-05-19 18:03:41 -0700
commitb52a8a52c1bf7788f8ca7a130da95c6c07b066a1 (patch)
treed8de4f7db0eda8a01633b9b7da9b4c69fa2e46d8
parenta1b11f9bfaa857c0b5d5b69e6db765b2c9c68305 (diff)
ospf6d: ospfv3-show-cmds-instance-check-fix.patch
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>
-rw-r--r--ospf6d/ospf6_area.c6
-rw-r--r--ospf6d/ospf6_asbr.c2
-rw-r--r--ospf6d/ospf6_top.c8
-rw-r--r--ospf6d/ospf6d.c4
4 files changed, 20 insertions, 0 deletions
diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c
index c3a90df6dc..ac2fc378bb 100644
--- a/ospf6d/ospf6_area.c
+++ b/ospf6d/ospf6_area.c
@@ -826,6 +826,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))
@@ -861,6 +863,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)
@@ -907,6 +911,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);
diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c
index 97e9473efc..698119f32a 100644
--- a/ospf6d/ospf6_asbr.c
+++ b/ospf6d/ospf6_asbr.c
@@ -1312,6 +1312,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;
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index a08826d630..b24bf73ccf 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -724,6 +724,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;
}
@@ -755,6 +757,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];
@@ -789,6 +793,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;
}
@@ -853,6 +859,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;
}
diff --git a/ospf6d/ospf6d.c b/ospf6d/ospf6d.c
index f5760b089b..032643e4dd 100644
--- a/ospf6d/ospf6d.c
+++ b/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];