summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2018-08-08 13:49:20 +0000
committerclaudio <claudio@openbsd.org>2018-08-08 13:49:20 +0000
commit9b84c3c2c4bb8b79bd71af6d1c90d3255065a1c2 (patch)
tree1e19d767b8439879fcc0d67bcb1863469a2dc041
parentsync (diff)
downloadwireguard-openbsd-9b84c3c2c4bb8b79bd71af6d1c90d3255065a1c2.tar.xz
wireguard-openbsd-9b84c3c2c4bb8b79bd71af6d1c90d3255065a1c2.zip
Make the (non-)transitive handling of ext communities a bit more obvious.
-rw-r--r--usr.sbin/bgpd/rde_update.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/usr.sbin/bgpd/rde_update.c b/usr.sbin/bgpd/rde_update.c
index d7270fb0d32..8a44f0d0875 100644
--- a/usr.sbin/bgpd/rde_update.c
+++ b/usr.sbin/bgpd/rde_update.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde_update.c,v 1.96 2018/08/03 16:31:22 claudio Exp $ */
+/* $OpenBSD: rde_update.c,v 1.97 2018/08/08 13:49:20 claudio Exp $ */
/*
* Copyright (c) 2004 Claudio Jeker <claudio@openbsd.org>
@@ -881,13 +881,16 @@ up_generate_attr(struct rde_peer *peer, struct update_attr *upa,
free(ndata);
return (-1);
}
- } else
+ } else {
+ /* everything got removed */
r = 0;
- break;
+ }
+ } else {
+ if ((r = attr_write(up_attr_buf + wlen,
+ len, oa->flags, oa->type, oa->data,
+ oa->len)) == -1)
+ return (-1);
}
- if ((r = attr_write(up_attr_buf + wlen, len,
- oa->flags, oa->type, oa->data, oa->len)) == -1)
- return (-1);
break;
default:
/* unknown attribute */