]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixes problem with OSPF neighbor router ID change. Thanx to Alexander V. Chernikov
authorOndrej Filip <feela@network.cz>
Fri, 13 Sep 2013 16:55:02 +0000 (18:55 +0200)
committerOndrej Filip <feela@network.cz>
Fri, 13 Sep 2013 16:55:02 +0000 (18:55 +0200)
proto/ospf/hello.c

index d5aa1b95eddcf04ef29c910492b548381e8c3c22..58e87bbf17213e93ac064f55c68123c874e6b44f 100644 (file)
@@ -101,6 +101,17 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
     return;
   }
 
+#ifdef OSPFv2
+  if (n && (n->rid != ntohl(ps_i->routerid)))
+  {
+    OSPF_TRACE(D_EVENTS,
+       "Neighbor %I has changed router id from %R to %R.",
+            n->ip, n->rid, ntohl(ps_i->routerid));
+    ospf_neigh_remove(n);
+    n = NULL;
+  }
+#endif
+
   if (!n)
   {
     if ((ifa->type == OSPF_IT_NBMA) || (ifa->type == OSPF_IT_PTMP))
@@ -132,7 +143,7 @@ ospf_hello_receive(struct ospf_packet *ps_i, struct ospf_iface *ifa,
 
     n = ospf_neighbor_new(ifa);
 
-    n->rid = ntohl(((struct ospf_packet *) ps)->routerid);
+    n->rid = ntohl(ps_i->routerid);
     n->ip = faddr;
     n->dr = ntohl(ps->dr);
     n->bdr = ntohl(ps->bdr);