diff options
author | claudio <claudio@openbsd.org> | 2011-01-18 20:46:06 +0000 |
---|---|---|
committer | claudio <claudio@openbsd.org> | 2011-01-18 20:46:06 +0000 |
commit | dc777b13c194dffb7f977f1996ed911eaee72aaf (patch) | |
tree | 34664e2a576920017b9a4c961c7a70ece4e99895 /usr.sbin/ospfd/rde.c | |
parent | When changing the ifa_broadaddr broadcast address, ifa_update_broadaddr() (diff) | |
download | wireguard-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.c | 8 |
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); } } |