diff options
author | Claudio Jeker <claudio@cvs.openbsd.org> | 2006-05-28 22:07:55 +0000 |
---|---|---|
committer | Claudio Jeker <claudio@cvs.openbsd.org> | 2006-05-28 22:07:55 +0000 |
commit | 726de3291890e1627458e3144ae99d4e6c54b52c (patch) | |
tree | 6c8bf716686044b1e1d765abbe0f4d8aaf73c1f9 /usr.sbin/bgpd/rde_rib.c | |
parent | 7d4bab594e4f26163c21a61f675c729dbbb130ec (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.c | 5 |
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); |