summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2005-06-04 22:58:03 +0000
committerhenning <henning@openbsd.org>2005-06-04 22:58:03 +0000
commit195a6a88929ebd5dbcf8cd9f85655cda0624cd79 (patch)
tree65fe7d5b6a286e39f0062fe118111960bfce69e5
parentuse the recorded error code to prevent sending out multiple notifications (diff)
downloadwireguard-openbsd-195a6a88929ebd5dbcf8cd9f85655cda0624cd79.tar.xz
wireguard-openbsd-195a6a88929ebd5dbcf8cd9f85655cda0624cd79.zip
do not send out suberrorcodes for cease errors; there are none in the
standard
-rw-r--r--usr.sbin/bgpd/session.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.sbin/bgpd/session.c b/usr.sbin/bgpd/session.c
index 3c461341842..4c40bfff92d 100644
--- a/usr.sbin/bgpd/session.c
+++ b/usr.sbin/bgpd/session.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: session.c,v 1.223 2005/06/04 22:54:22 henning Exp $ */
+/* $OpenBSD: session.c,v 1.224 2005/06/04 22:58:03 henning Exp $ */
/*
* Copyright (c) 2003, 2004, 2005 Henning Brauer <henning@openbsd.org>
@@ -1366,6 +1366,7 @@ session_notification(struct peer *peer, u_int8_t errcode, u_int8_t subcode,
struct mrt *mrt;
ssize_t len;
int errs = 0;
+ u_int8_t null8 = 0;
if (peer->stats.last_sent_errcode) /* some notifctn already sent */
return;
@@ -1384,7 +1385,10 @@ session_notification(struct peer *peer, u_int8_t errcode, u_int8_t subcode,
errs += buf_add(buf, &msg.len, sizeof(msg.len));
errs += buf_add(buf, &msg.type, sizeof(msg.type));
errs += buf_add(buf, &errcode, sizeof(errcode));
- errs += buf_add(buf, &subcode, sizeof(subcode));
+ if (errcode == ERR_CEASE)
+ errs += buf_add(buf, &null8, sizeof(null8));
+ else
+ errs += buf_add(buf, &subcode, sizeof(subcode));
if (datalen > 0)
errs += buf_add(buf, data, datalen);