So requested by benno@ print when we receive and send the EOR marker. This gives an indication when a session is synchronized (esp. the recv one). Example
neighbor 10.48.0.242 (upstream): sending IPv4 unicast EOR marker nexthop 10.48.0.242 now valid: via 10.0.0.1 neighbor 10.48.0.242 (upstream): received IPv4 unicast EOR marker While there more importantly fix the log_peer_warn log level from LOG_CRIT to LOG_ERR (like for log_warn). LOG_CRIT is exclusivly used by fatal and yyerror. -- :wq Claudio Index: bgpd.h =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/bgpd.h,v retrieving revision 1.306 diff -u -p -r1.306 bgpd.h --- bgpd.h 28 May 2017 15:16:33 -0000 1.306 +++ bgpd.h 28 May 2017 19:07:35 -0000 @@ -1023,6 +1023,8 @@ int kr_reload(void); struct in6_addr *prefixlen2mask6(u_int8_t prefixlen); /* log.c */ +void log_peer_info(const struct peer_config *, const char *, ...) + __attribute__((__format__ (printf, 2, 3))); void log_peer_warn(const struct peer_config *, const char *, ...) __attribute__((__format__ (printf, 2, 3))); void log_peer_warnx(const struct peer_config *, const char *, ...) Index: logmsg.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/logmsg.c,v retrieving revision 1.2 diff -u -p -r1.2 logmsg.c --- logmsg.c 24 Jan 2017 04:22:42 -0000 1.2 +++ logmsg.c 28 May 2017 12:57:12 -0000 @@ -58,6 +58,22 @@ log_fmt_peer(const struct peer_config *p } void +log_peer_info(const struct peer_config *peer, const char *emsg, ...) +{ + char *p, *nfmt; + va_list ap; + + p = log_fmt_peer(peer); + if (asprintf(&nfmt, "%s: %s", p, emsg) == -1) + fatal(NULL); + va_start(ap, emsg); + vlog(LOG_INFO, nfmt, ap); + va_end(ap); + free(p); + free(nfmt); +} + +void log_peer_warn(const struct peer_config *peer, const char *emsg, ...) { char *p, *nfmt; @@ -73,7 +89,7 @@ log_peer_warn(const struct peer_config * fatal(NULL); } va_start(ap, emsg); - vlog(LOG_CRIT, nfmt, ap); + vlog(LOG_ERR, nfmt, ap); va_end(ap); free(p); free(nfmt); @@ -89,7 +105,7 @@ log_peer_warnx(const struct peer_config if (asprintf(&nfmt, "%s: %s", p, emsg) == -1) fatal(NULL); va_start(ap, emsg); - vlog(LOG_CRIT, nfmt, ap); + vlog(LOG_ERR, nfmt, ap); va_end(ap); free(p); free(nfmt); @@ -161,21 +177,21 @@ log_notification(const struct peer *peer suberrname = suberr_fsm_names[subcode]; break; default: - logit(LOG_CRIT, "%s: %s notification, unknown errcode " + logit(LOG_ERR, "%s: %s notification, unknown errcode " "%u, subcode %u", p, dir, errcode, subcode); free(p); return; } if (uk) - logit(LOG_CRIT, "%s: %s notification: %s, unknown subcode %u", + logit(LOG_ERR, "%s: %s notification: %s, unknown subcode %u", p, dir, errnames[errcode], subcode); else { if (suberrname == NULL) - logit(LOG_CRIT, "%s: %s notification: %s", p, + logit(LOG_ERR, "%s: %s notification: %s", p, dir, errnames[errcode]); else - logit(LOG_CRIT, "%s: %s notification: %s, %s", + logit(LOG_ERR, "%s: %s notification: %s, %s", p, dir, errnames[errcode], suberrname); } free(p); Index: rde.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpd/rde.c,v retrieving revision 1.364 diff -u -p -r1.364 rde.c --- rde.c 28 May 2017 12:21:36 -0000 1.364 +++ rde.c 28 May 2017 19:08:43 -0000 @@ -3490,6 +3490,9 @@ peer_recv_eor(struct rde_peer *peer, u_i if (imsg_compose(ibuf_se, IMSG_SESSION_RESTARTED, peer->conf.id, 0, -1, &aid, sizeof(aid)) == -1) fatal("%s %d imsg_compose error", __func__, __LINE__); + + log_peer_info(&peer->conf, "received %s EOR marker", + aid2str(aid)); } void @@ -3531,6 +3534,9 @@ peer_send_eor(struct rde_peer *peer, u_i fatal("%s %d imsg_compose error in peer_send_eor", __func__, __LINE__); } + + log_peer_info(&peer->conf, "sending %s EOR marker", + aid2str(aid)); } /*