From: Vipin Kumar <[email protected]> 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 <[email protected]> Reviewed-by: Pradosh Mohapatra <[email protected]> Dinesh Dutt <[email protected]> --- ospf6d/ospf6_area.c | 6 ++++++ ospf6d/ospf6_asbr.c | 2 ++ ospf6d/ospf6_top.c | 8 ++++++++ ospf6d/ospf6d.c | 4 ++++ 4 files changed, 20 insertions(+) diff --git a/ospf6d/ospf6_area.c b/ospf6d/ospf6_area.c index 9b70422..05c2a90 100644 --- a/ospf6d/ospf6_area.c +++ b/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); diff --git a/ospf6d/ospf6_asbr.c b/ospf6d/ospf6_asbr.c index a954812..dc7f1ce 100644 --- a/ospf6d/ospf6_asbr.c +++ b/ospf6d/ospf6_asbr.c @@ -1290,6 +1290,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 7fffba8..f574344 100644 --- a/ospf6d/ospf6_top.c +++ b/ospf6d/ospf6_top.c @@ -721,6 +721,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; } @@ -752,6 +754,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]; @@ -786,6 +790,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; } @@ -850,6 +856,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 63d3f11..3e00d86 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]; -- 1.9.1 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
