diff options
author | 2015-07-18 22:52:39 +0000 | |
---|---|---|
committer | 2015-07-18 22:52:39 +0000 | |
commit | 49db16b773cd2d0cb9148a08202d2d056e962fe1 (patch) | |
tree | f6ffa3fefe8ad9e072d6a42bac986e99d1b2a04e | |
parent | rand_err doesn't exist anymore, coverity 78808 (diff) | |
download | wireguard-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.h | 4 | ||||
-rw-r--r-- | usr.sbin/bgpd/log.c | 15 | ||||
-rw-r--r-- | usr.sbin/bgpd/rde.c | 34 |
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__); } } |