summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbenno <benno@openbsd.org>2015-07-18 22:52:39 +0000
committerbenno <benno@openbsd.org>2015-07-18 22:52:39 +0000
commit49db16b773cd2d0cb9148a08202d2d056e962fe1 (patch)
treef6ffa3fefe8ad9e072d6a42bac986e99d1b2a04e
parentrand_err doesn't exist anymore, coverity 78808 (diff)
downloadwireguard-openbsd-49db16b773cd2d0cb9148a08202d2d056e962fe1.tar.xz
wireguard-openbsd-49db16b773cd2d0cb9148a08202d2d056e962fe1.zip
give bgpd's fatal() varargs and use it to instrument bgpd fatal()
calls to aid in debugging henning@ "makes sense to me", sthen@ "yes please", ok phessler@
-rw-r--r--usr.sbin/bgpd/bgpd.h4
-rw-r--r--usr.sbin/bgpd/log.c15
-rw-r--r--usr.sbin/bgpd/rde.c34
3 files changed, 33 insertions, 20 deletions
diff --git a/usr.sbin/bgpd/bgpd.h b/usr.sbin/bgpd/bgpd.h
index da550f1a0eb..64f0d2fdd94 100644
--- a/usr.sbin/bgpd/bgpd.h
+++ b/usr.sbin/bgpd/bgpd.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: bgpd.h,v 1.286 2015/07/16 18:26:04 claudio Exp $ */
+/* $OpenBSD: bgpd.h,v 1.287 2015/07/18 22:52:39 benno Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -978,7 +978,7 @@ void log_warn(const char *, ...);
void log_warnx(const char *, ...);
void log_info(const char *, ...);
void log_debug(const char *, ...);
-void fatal(const char *) __dead;
+void fatal(const char *, ...) __dead;
void fatalx(const char *) __dead;
/* mrt.c */
diff --git a/usr.sbin/bgpd/log.c b/usr.sbin/bgpd/log.c
index 3ce9df6615b..f372844e773 100644
--- a/usr.sbin/bgpd/log.c
+++ b/usr.sbin/bgpd/log.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: log.c,v 1.58 2014/11/03 16:55:59 bluhm Exp $ */
+/* $OpenBSD: log.c,v 1.59 2015/07/18 22:52:39 benno Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -207,18 +207,25 @@ log_debug(const char *emsg, ...)
}
void
-fatal(const char *emsg)
+fatal(const char *emsg, ...)
{
+ char s[1024];
+ va_list ap;
+
+ va_start(ap, emsg);
+ vsnprintf(s, sizeof(s), emsg, ap);
+ va_end(ap);
+
if (emsg == NULL)
logit(LOG_CRIT, "fatal in %s: %s", procnames[bgpd_process],
strerror(errno));
else
if (errno)
logit(LOG_CRIT, "fatal in %s: %s: %s",
- procnames[bgpd_process], emsg, strerror(errno));
+ procnames[bgpd_process], s, strerror(errno));
else
logit(LOG_CRIT, "fatal in %s: %s",
- procnames[bgpd_process], emsg);
+ procnames[bgpd_process], s);
if (bgpd_process == PROC_MAIN)
exit(1);
diff --git a/usr.sbin/bgpd/rde.c b/usr.sbin/bgpd/rde.c
index ec1e4a350d3..4c1177ac44f 100644
--- a/usr.sbin/bgpd/rde.c
+++ b/usr.sbin/bgpd/rde.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rde.c,v 1.333 2015/07/16 17:26:57 blambert Exp $ */
+/* $OpenBSD: rde.c,v 1.334 2015/07/18 22:52:39 benno Exp $ */
/*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@@ -1966,11 +1966,11 @@ rde_update_err(struct rde_peer *peer, u_int8_t error, u_int8_t suberr,
if ((wbuf = imsg_create(ibuf_se, IMSG_UPDATE_ERR, peer->conf.id, 0,
size + sizeof(error) + sizeof(suberr))) == NULL)
- fatal("imsg_create error");
+ fatal("%s %d imsg_create error", __func__, __LINE__);
if (imsg_add(wbuf, &error, sizeof(error)) == -1 ||
imsg_add(wbuf, &suberr, sizeof(suberr)) == -1 ||
imsg_add(wbuf, data, size) == -1)
- fatal("imsg_add error");
+ fatal("%s %d imsg_add error", __func__, __LINE__);
imsg_close(ibuf_se, wbuf);
peer->state = PEER_ERR;
}
@@ -2493,13 +2493,14 @@ rde_send_kroute(struct prefix *new, struct prefix *old, u_int16_t ribid)
sizeof(kr.nexthop));
if (imsg_compose(ibuf_main, type, rd->rtableid, 0, -1,
&kr, sizeof(kr)) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__,
+ __LINE__);
}
break;
default:
if (imsg_compose(ibuf_main, type, ribs[ribid].rtableid, 0, -1,
&kr, sizeof(kr)) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__, __LINE__);
break;
}
}
@@ -2528,7 +2529,7 @@ rde_send_pftable(u_int16_t id, struct bgpd_addr *addr,
if (imsg_compose(ibuf_main,
del ? IMSG_PFTABLE_REMOVE : IMSG_PFTABLE_ADD,
0, 0, -1, &pfm, sizeof(pfm)) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__, __LINE__);
}
void
@@ -2540,7 +2541,7 @@ rde_send_pftable_commit(void)
if (imsg_compose(ibuf_main, IMSG_PFTABLE_COMMIT, 0, 0, -1, NULL, 0) ==
-1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__, __LINE__);
}
/*
@@ -2558,7 +2559,7 @@ rde_send_nexthop(struct bgpd_addr *next, int valid)
if (imsg_compose(ibuf_main, type, 0, 0, -1, next,
sizeof(struct bgpd_addr)) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__, __LINE__);
}
/*
@@ -2925,7 +2926,8 @@ rde_update_queue_runner(void)
/* finally send message to SE */
if (imsg_compose(ibuf_se, IMSG_UPDATE, peer->conf.id,
0, -1, queue_buf, wpos) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__,
+ __LINE__);
sent++;
if (eor) {
eor = 0;
@@ -2960,7 +2962,8 @@ rde_update6_queue_runner(u_int8_t aid)
/* finally send message to SE */
if (imsg_compose(ibuf_se, IMSG_UPDATE, peer->conf.id,
0, -1, b, len) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__,
+ __LINE__);
sent++;
}
max -= sent;
@@ -2991,7 +2994,8 @@ rde_update6_queue_runner(u_int8_t aid)
/* finally send message to SE */
if (imsg_compose(ibuf_se, IMSG_UPDATE, peer->conf.id,
0, -1, b, len) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__,
+ __LINE__);
sent++;
}
max -= sent;
@@ -3345,7 +3349,7 @@ peer_recv_eor(struct rde_peer *peer, u_int8_t aid)
*/
if (imsg_compose(ibuf_se, IMSG_SESSION_RESTARTED, peer->conf.id,
0, -1, &aid, sizeof(aid)) == -1)
- fatal("imsg_compose error");
+ fatal("%s %d imsg_compose error", __func__, __LINE__);
}
void
@@ -3362,7 +3366,8 @@ peer_send_eor(struct rde_peer *peer, u_int8_t aid)
bzero(&null, 4);
if (imsg_compose(ibuf_se, IMSG_UPDATE, peer->conf.id,
0, -1, &null, 4) == -1)
- fatal("imsg_compose error in peer_send_eor");
+ fatal("%s %d imsg_compose error in peer_send_eor",
+ __func__, __LINE__);
} else {
u_int16_t i;
u_char buf[10];
@@ -3383,7 +3388,8 @@ peer_send_eor(struct rde_peer *peer, u_int8_t aid)
if (imsg_compose(ibuf_se, IMSG_UPDATE, peer->conf.id,
0, -1, &buf, 10) == -1)
- fatal("imsg_compose error in peer_send_eor");
+ fatal("%s %d imsg_compose error in peer_send_eor",
+ __func__, __LINE__);
}
}