summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2005-09-21 13:35:04 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2005-09-21 13:35:04 +0000
commitf8523e2fc5b88c59f2a0ead91c3f1086d6606442 (patch)
tree4592864ad0dfabbe26f475d94241773d4f4dc6c5 /usr.sbin
parentd33e334f6e552e2b92365a9b1c79b61247ec4149 (diff)
Make sure that "updates" with only MP withdraws (MP_UNREACH_NRLI) stop
processing after the MP withdraw block. OK henning@
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/bgpd/rde.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/usr.sbin/bgpd/rde.c b/usr.sbin/bgpd/rde.c
index a32d4429ef6..95d1082ed31 100644
--- a/usr.sbin/bgpd/rde.c
+++ b/usr.sbin/bgpd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.172 2005/09/20 14:40:32 henning Exp $ */
+/* $OpenBSD: rde.c,v 1.173 2005/09/21 13:35:03 claudio Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -704,7 +704,8 @@ rde_update_dispatch(struct imsg *imsg)
log_peer_warnx(&peer->conf, "bad AFI, IPv4 disabled");
rde_update_err(peer, ERR_UPDATE, ERR_UPD_OPTATTR,
NULL, 0);
- path_put(asp);
+ if (attrpath_len != 0)
+ path_put(asp);
return (-1);
}
@@ -778,6 +779,11 @@ rde_update_dispatch(struct imsg *imsg)
/* silently ignore unsupported multiprotocol AF */
break;
}
+
+ if ((asp->flags & ~F_ATTR_MP_UNREACH) == 0) {
+ path_put(asp);
+ return (0);
+ }
}
/* shift to NLRI information */