summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ospfd/rde.c
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2011-01-18 20:46:06 +0000
committerclaudio <claudio@openbsd.org>2011-01-18 20:46:06 +0000
commitdc777b13c194dffb7f977f1996ed911eaee72aaf (patch)
tree34664e2a576920017b9a4c961c7a70ece4e99895 /usr.sbin/ospfd/rde.c
parentWhen changing the ifa_broadaddr broadcast address, ifa_update_broadaddr() (diff)
downloadwireguard-openbsd-dc777b13c194dffb7f977f1996ed911eaee72aaf.tar.xz
wireguard-openbsd-dc777b13c194dffb7f977f1996ed911eaee72aaf.zip
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@
Diffstat (limited to 'usr.sbin/ospfd/rde.c')
-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);
}
}