2005-11-20 Paul Jakma <paul.jakma@sun.com>

        * 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.
diff --git a/ospfd/ospf_abr.c b/ospfd/ospf_abr.c
index 2d47efe..8f365da 100644
--- a/ospfd/ospf_abr.c
+++ b/ospfd/ospf_abr.c
@@ -748,6 +748,19 @@
                        "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 @@
       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 @@
 	}
       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); */