From 2b96dcecac70f3dfa7e4c8e6ab43837cb35bc21c Mon Sep 17 00:00:00 2001 From: paul Date: Sun, 20 Nov 2005 14:54:12 +0000 Subject: 2005-11-20 Paul Jakma * ospf_abr.c: (ospf_abr_announce_network_to_area) check returned LSA of ospf_summary_lsa_refresh and print warning if it failed. (ospf_abr_announce_network_to_area) similar (ospf_abr_announce_rtr_to_area) similar * ospf_lsa.c: (ospf_router_lsa_new) check LSA returned is valid. (ospf_router_lsa_originate) similar (ospf_router_lsa_refresh, ospf_network_lsa_new) similar (ospf_summary_lsa_new) Check ID is valid. (ospf_summary_lsa_originate) ditto, and check returned LSA from previous function is !NULL. (ospf_summary_lsa_refresh) check ospf_summary_lsa_new return is !NULL. (ospf_summary_asbr_lsa_new) ID valid check. (ospf_summary_asbr_lsa_originate) similar. --- ospfd/ospf_abr.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'ospfd/ospf_abr.c') diff --git a/ospfd/ospf_abr.c b/ospfd/ospf_abr.c index 2d47efec..8f365da7 100644 --- a/ospfd/ospf_abr.c +++ b/ospfd/ospf_abr.c @@ -748,6 +748,19 @@ ospf_abr_announce_network_to_area (struct prefix_ipv4 *p, u_int32_t cost, "refreshing summary"); set_metric (old, cost); lsa = ospf_summary_lsa_refresh (area->ospf, old); + + if (!lsa) + { + char buf[INET_ADDRSTRLEN + 3]; /* ipv4 and /XX */ + + prefix2str ((struct prefix *) p, buf, sizeof(buf)); + zlog_warn ("%s: Could not refresh %s to %s", + __func__, + buf, + inet_ntoa (area->area_id)); + return; + } + SET_FLAG (lsa->flags, OSPF_LSA_APPROVED); /* This will flood through area. */ } @@ -760,6 +773,18 @@ ospf_abr_announce_network_to_area (struct prefix_ipv4 *p, u_int32_t cost, lsa = ospf_summary_lsa_originate ( (struct prefix_ipv4 *)p, cost, area); /* This will flood through area. */ + if (!lsa) + { + char buf[INET_ADDRSTRLEN + 3]; /* ipv4 and /XX */ + + prefix2str ((struct prefix *)p, buf, sizeof(buf)); + zlog_warn ("%s: Could not originate %s to %s", + __func__, + buf, + inet_ntoa (area->area_id)); + return; + } + SET_FLAG (lsa->flags, OSPF_LSA_APPROVED); if (IS_DEBUG_OSPF_EVENT) zlog_debug ("ospf_abr_announce_network_to_area(): " @@ -1117,10 +1142,22 @@ ospf_abr_announce_rtr_to_area (struct prefix_ipv4 *p, u_int32_t cost, } else lsa = ospf_summary_asbr_lsa_originate (p, cost, area); - + if (!lsa) + { + char buf[INET_ADDRSTRLEN + 3]; /* ipv4 and /XX */ + + prefix2str ((struct prefix *)p, buf, sizeof(buf)); + zlog_warn ("%s: Could not refresh/originate %s to %s", + __func__, + buf, + inet_ntoa (area->area_id)); + return; + } + if (IS_DEBUG_OSPF_EVENT) zlog_debug ("ospf_abr_announce_rtr_to_area(): " "flooding new version of summary"); + /* zlog_info ("ospf_abr_announce_rtr_to_area(): creating new summary"); lsa = ospf_summary_asbr_lsa (p, cost, area, old); */ -- cgit v1.2.3