summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2011-01-18 20:46:07 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2011-01-18 20:46:07 +0000
commitcb8d82cda1c866cfcb9d070870f1158e64d9c03c (patch)
tree8f40b6132ef5d8ab70107e12a0c7876019596e11
parent43cb0e950c6d4a6e8a4407a5614af39041cb0074 (diff)
When fixing conflicts make sure the right vertex is passed to lsa_merge()
so that the correct sequence number is used for the LSA. So re-lookup the vertex before calling lsa_merge(). Problem found and diff OK bluhm@
-rw-r--r--usr.sbin/ospfd/rde.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.sbin/ospfd/rde.c b/usr.sbin/ospfd/rde.c
index 792ea264ab9..fe8c05bc566 100644
--- a/usr.sbin/ospfd/rde.c
+++ b/usr.sbin/ospfd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.90 2011/01/17 17:20:26 claudio Exp $ */
+/* $OpenBSD: rde.c,v 1.91 2011/01/18 20:46:06 claudio Exp $ */
/*
* Copyright (c) 2004, 2005 Claudio Jeker <claudio@openbsd.org>
@@ -1150,12 +1150,16 @@ rde_asext_get(struct kroute *rr)
rdeconf->rtr_id.s_addr);
}
+ v = lsa_find(NULL, LSA_TYPE_EXTERNAL, an->ls_id,
+ rdeconf->rtr_id.s_addr);
lsa = orig_asext_lsa(rr, an->ls_id, DEFAULT_AGE);
lsa_merge(nbrself, lsa, v);
if (oan != an) {
+ v = lsa_find(NULL, LSA_TYPE_EXTERNAL, oan->ls_id,
+ rdeconf->rtr_id.s_addr);
lsa = orig_asext_lsa(&oan->r, oan->ls_id, DEFAULT_AGE);
- lsa_merge(nbrself, lsa, NULL);
+ lsa_merge(nbrself, lsa, v);
}
}