[ospfd] Do not use stale Network/Router LSAs

Should a self originated Network/Router LSA with higher
LS seq. nr. be received we should flood and install it in
the LSDB but we cannot use it for our internal calculations
as it is stale.
Reorginate an new LSA to replace the stale one as soon
as possible.
diff --git a/ospfd/ospf_flood.c b/ospfd/ospf_flood.c
index 0f485fe..41661da 100644
--- a/ospfd/ospf_flood.c
+++ b/ospfd/ospf_flood.c
@@ -133,10 +133,8 @@
     {
     case OSPF_ROUTER_LSA:
       /* Originate a new instance and schedule flooding */
-      /* It shouldn't be necessary, but anyway */
-      ospf_lsa_unlock (&area->router_lsa_self);
-      area->router_lsa_self = ospf_lsa_lock (new);
-
+      if (area->router_lsa_self)
+	area->router_lsa_self->data->ls_seqnum = new->data->ls_seqnum;
       ospf_router_lsa_timer_add (area);
       return;
     case OSPF_NETWORK_LSA:
@@ -170,9 +168,8 @@
               }
 #endif /* HAVE_OPAQUE_LSA */
 
-            ospf_lsa_unlock (&oi->network_lsa_self);
-            oi->network_lsa_self = ospf_lsa_lock (new);
-            
+            if (oi->network_lsa_self)
+	      oi->network_lsa_self->data->ls_seqnum = new->data->ls_seqnum;
             /* Schedule network-LSA origination. */
             ospf_network_lsa_timer_add (oi);
             return;
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 18eed79..15a6a4c 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -2451,7 +2451,10 @@
   if (rt_recalc)
     ospf_spf_calculate_schedule (ospf);
 
-  if (IS_LSA_SELF (new))
+  /* Only install LSA if it is originated/refreshed by us.
+   * If LSA was received by flooding, the RECEIVED flag is set so do
+   * not link the LSA */
+  if (IS_LSA_SELF (new) && !CHECK_FLAG (new->flags, OSPF_LSA_RECEIVED))
     {
       /* Set router-LSA refresh timer. */
       OSPF_TIMER_OFF (area->t_router_lsa_self);