diff --git a/lib/printf.c b/lib/printf.c index 64fcf728..a668aeaf 100644 --- a/lib/printf.c +++ b/lib/printf.c @@ -198,6 +198,9 @@ int bvsnprintf(char *buf, int size, const char *fmt, va_list args) case 'm': s = strerror(errno); goto str; + case 'M': + s = strerror(va_arg(args, int)); + goto str; case 's': s = va_arg(args, char *); if (!s) diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index 4a68f04b..41081f26 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -158,7 +158,10 @@ bgp_sock_err(sock *sk, int err) struct bgp_conn *conn = sk->data; struct bgp_proto *p = conn->bgp; - BGP_TRACE(D_EVENTS, "Connection closed (socket error %d)", err); + if (err) + BGP_TRACE(D_EVENTS, "Connection lost (%M)", err); + else + BGP_TRACE(D_EVENTS, "Connection closed"); switch (conn->state) { case BS_CONNECT: diff --git a/proto/rip/rip.c b/proto/rip/rip.c index 2826de7f..f9a44835 100644 --- a/proto/rip/rip.c +++ b/proto/rip/rip.c @@ -75,7 +75,7 @@ rip_tx_err( sock *s, int err ) { struct rip_connection *c = s->data; struct proto *p = c->proto; - log( L_ERR "Unexpected error at rip transmit: %m" ); + log( L_ERR "Unexpected error at rip transmit: %M", err ); } static int