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>
This commit is contained in:
Donald Sharp 2015-05-19 18:03:41 -07:00
parent a1b11f9bfa
commit b52a8a52c1
4 changed files with 20 additions and 0 deletions

View file

@ -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);

View file

@ -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;

View file

@ -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;
}

View file

@ -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];