summaryrefslogtreecommitdiff
path: root/usr.sbin/bgpd/rde_rib.c
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2006-05-28 22:07:55 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2006-05-28 22:07:55 +0000
commit726de3291890e1627458e3144ae99d4e6c54b52c (patch)
tree6c8bf716686044b1e1d765abbe0f4d8aaf73c1f9 /usr.sbin/bgpd/rde_rib.c
parent7d4bab594e4f26163c21a61f675c729dbbb130ec (diff)
Preload and pin nexthop used in filtersets so the are validiated when used.
This will fix problems with set nexthop on outgoing filters. Found by gluk@ OK henning@
Diffstat (limited to 'usr.sbin/bgpd/rde_rib.c')
-rw-r--r--usr.sbin/bgpd/rde_rib.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/usr.sbin/bgpd/rde_rib.c b/usr.sbin/bgpd/rde_rib.c
index 2d93bdfe1f8..a566c0288ad 100644
--- a/usr.sbin/bgpd/rde_rib.c
+++ b/usr.sbin/bgpd/rde_rib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde_rib.c,v 1.85 2006/04/04 12:03:26 henning Exp $ */
+/* $OpenBSD: rde_rib.c,v 1.86 2006/05/28 22:07:54 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Claudio Jeker <claudio@openbsd.org>
@@ -918,6 +918,9 @@ nexthop_unlink(struct rde_aspath *asp)
nh = asp->nexthop;
asp->nexthop = NULL;
+ if (nh->refcnt > 0)
+ return;
+
if (LIST_EMPTY(&nh->path_h)) {
LIST_REMOVE(nh, nexthop_l);
rde_send_nexthop(&nh->exit_nexthop, 0);