Replace existing bgp_peer_hostname() function.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
* stale routes from the neighbor that it is retaining.
*/
if (bgp_debug_neighbor_events(peer))
- zlog_debug("%s(%s) Long-lived stale timer (%s) expired",
- peer->host, bgp_peer_hostname(peer),
+ zlog_debug("%pBP Long-lived stale timer (%s) expired", peer,
get_afi_safi_str(afi, safi, false));
UNSET_FLAG(peer->af_sflags[afi][safi], PEER_STATUS_LLGR_WAIT);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) Long-lived set stale community (LLGR_STALE) for: %pFX",
- peer->host,
- bgp_peer_hostname(peer),
- &dest->p);
+ "%pBP Long-lived set stale community (LLGR_STALE) for: %pFX",
+ peer, &dest->p);
attr = *pi->attr;
bgp_attr_add_llgr_community(&attr);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) Long-lived set stale community (LLGR_STALE) for: %pFX",
- peer->host,
- bgp_peer_hostname(peer),
- &dest->p);
+ "%pBP Long-lived set stale community (LLGR_STALE) for: %pFX",
+ peer, &dest->p);
attr = *pi->attr;
bgp_attr_add_llgr_community(&attr);
peer = THREAD_ARG(thread);
if (bgp_debug_neighbor_events(peer)) {
- zlog_debug("%s(%s) graceful restart timer expired", peer->host,
- bgp_peer_hostname(peer));
- zlog_debug("%s(%s) graceful restart stalepath timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ zlog_debug("%pBP graceful restart timer expired", peer);
+ zlog_debug("%pBP graceful restart stalepath timer stopped",
+ peer);
}
FOREACH_AFI_SAFI (afi, safi) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) Long-lived stale timer (%s) started for %d sec",
- peer->host, bgp_peer_hostname(peer),
+ "%pBP Long-lived stale timer (%s) started for %d sec",
+ peer,
get_afi_safi_str(afi, safi, false),
peer->llgr[afi][safi].stale_time);
peer = THREAD_ARG(thread);
if (bgp_debug_neighbor_events(peer))
- zlog_debug("%s(%s) graceful restart stalepath timer expired",
- peer->host, bgp_peer_hostname(peer));
+ zlog_debug("%pBP graceful restart stalepath timer expired",
+ peer);
/* NSF delete stale route */
FOREACH_AFI_SAFI_NSF (afi, safi)
struct vrf *vrf = vrf_lookup_by_id(peer->bgp->vrf_id);
zlog_info(
- "%%ADJCHANGE: neighbor %s(%s) in vrf %s Down %s",
- peer->host, bgp_peer_hostname(peer),
+ "%%ADJCHANGE: neighbor %pBP in vrf %s Down %s",
+ peer,
vrf ? ((vrf->vrf_id != VRF_DEFAULT)
? vrf->name
: VRF_DEFAULT_NAME)
BGP_TIMER_OFF(peer->t_gr_stale);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) graceful restart stalepath timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ "%pBP graceful restart stalepath timer stopped",
+ peer);
}
if (CHECK_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT)) {
if (bgp_debug_neighbor_events(peer)) {
zlog_debug(
- "%s(%s) graceful restart timer started for %d sec",
- peer->host, bgp_peer_hostname(peer),
- peer->v_gr_restart);
+ "%pBP graceful restart timer started for %d sec",
+ peer, peer->v_gr_restart);
zlog_debug(
- "%s(%s) graceful restart stalepath timer started for %d sec",
- peer->host, bgp_peer_hostname(peer),
- peer->bgp->stalepath_time);
+ "%pBP graceful restart stalepath timer started for %d sec",
+ peer, peer->bgp->stalepath_time);
}
BGP_TIMER_ON(peer->t_gr_restart,
bgp_graceful_restart_timer_expire,
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) route-refresh restart stalepath timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ "%pBP route-refresh restart stalepath timer stopped",
+ peer);
}
/* If peer reset before receiving EOR, decrement EOR count and
/* bgp log-neighbor-changes of neighbor Up */
if (CHECK_FLAG(peer->bgp->flags, BGP_FLAG_LOG_NEIGHBOR_CHANGES)) {
struct vrf *vrf = vrf_lookup_by_id(peer->bgp->vrf_id);
- zlog_info("%%ADJCHANGE: neighbor %s(%s) in vrf %s Up",
- peer->host, bgp_peer_hostname(peer),
+ zlog_info("%%ADJCHANGE: neighbor %pBP in vrf %s Up", peer,
vrf ? ((vrf->vrf_id != VRF_DEFAULT)
? vrf->name
: VRF_DEFAULT_NAME)
UNSET_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT);
if (bgp_debug_neighbor_events(peer)) {
if (BGP_PEER_RESTARTING_MODE(peer))
- zlog_debug("peer %s BGP_RESTARTING_MODE", peer->host);
+ zlog_debug("%pBP BGP_RESTARTING_MODE", peer);
else if (BGP_PEER_HELPER_MODE(peer))
- zlog_debug("peer %s BGP_HELPER_MODE", peer->host);
+ zlog_debug("%pBP BGP_HELPER_MODE", peer);
}
FOREACH_AFI_SAFI_NSF (afi, safi) {
BGP_TIMER_OFF(peer->t_gr_stale);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) graceful restart stalepath timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ "%pBP graceful restart stalepath timer stopped",
+ peer);
}
}
if (peer->t_gr_restart) {
BGP_TIMER_OFF(peer->t_gr_restart);
if (bgp_debug_neighbor_events(peer))
- zlog_debug("%s(%s) graceful restart timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ zlog_debug("%pBP graceful restart timer stopped", peer);
}
/* Reset uptime, turn on keepalives, send current table. */
BGP_TIMER_OFF(peer->t_llgr_stale[afi][safi]);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s Long-lived stale timer stopped for afi/safi: %d/%d",
- peer->host, afi, safi);
+ "%pBP Long-lived stale timer stopped for afi/safi: %d/%d",
+ peer, afi, safi);
}
if (CHECK_FLAG(peer->af_cap[afi][safi],
/* If we RX multiple labels we will end up keeping only the last
* one. We do not yet support a label stack greater than 1. */
if (label_depth > 1)
- zlog_info("%s rcvd UPDATE with label stack %d deep", peer->host,
+ zlog_info("%pBP rcvd UPDATE with label stack %d deep", peer,
label_depth);
if (!(bgp_is_withdraw_label(label) || label_bos(label)))
flog_warn(
EC_BGP_INVALID_LABEL_STACK,
- "%s rcvd UPDATE with invalid label stack - no bottom of stack",
- peer->host);
+ "%pBP rcvd UPDATE with invalid label stack - no bottom of stack",
+ peer);
return llen;
}
if (bgp_debug_neighbor_events(
peer))
zlog_debug(
- "%s(%s) sending route-refresh (EoRR) for %s/%s",
- peer->host,
- bgp_peer_hostname(
- peer),
+ "%pBP sending route-refresh (EoRR) for %s/%s",
+ peer,
afi2str(afi),
safi2str(safi));
}
stream_putc(s, ORF_COMMON_PART_REMOVE_ALL);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) sending REFRESH_REQ to remove ORF(%d) (%s) for afi/safi: %s/%s",
- peer->host,
- bgp_peer_hostname(peer),
- orf_type,
+ "%pBP sending REFRESH_REQ to remove ORF(%d) (%s) for afi/safi: %s/%s",
+ peer, orf_type,
(when_to_refresh ==
REFRESH_DEFER
? "defer"
ORF_COMMON_PART_DENY);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) sending REFRESH_REQ with pfxlist ORF(%d) (%s) for afi/safi: %s/%s",
- peer->host,
- bgp_peer_hostname(peer),
- orf_type,
+ "%pBP sending REFRESH_REQ with pfxlist ORF(%d) (%s) for afi/safi: %s/%s",
+ peer, orf_type,
(when_to_refresh ==
REFRESH_DEFER
? "defer"
if (bgp_debug_neighbor_events(peer)) {
if (!orf_refresh)
zlog_debug(
- "%s(%s) sending REFRESH_REQ for afi/safi: %s/%s",
- peer->host, bgp_peer_hostname(peer),
- iana_afi2str(pkt_afi), iana_safi2str(pkt_safi));
+ "%pBP sending REFRESH_REQ for afi/safi: %s/%s",
+ peer, iana_afi2str(pkt_afi),
+ iana_safi2str(pkt_safi));
}
/* Add packet to the peer. */
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) sending CAPABILITY has %s MP_EXT CAP for afi/safi: %s/%s",
- peer->host, bgp_peer_hostname(peer),
+ "%pBP sending CAPABILITY has %s MP_EXT CAP for afi/safi: %s/%s",
+ peer,
action == CAPABILITY_ACTION_SET ? "Advertising"
: "Removing",
iana_afi2str(pkt_afi), iana_safi2str(pkt_safi));
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) route-refresh (BoRR) timer expired for afi/safi: %d/%d",
- peer->host, bgp_peer_hostname(peer), afi, safi);
+ "%pBP route-refresh (BoRR) timer expired for afi/safi: %d/%d",
+ peer, afi, safi);
bgp_timer_set(peer);
}
if (attr_parse_ret == BGP_ATTR_PARSE_WITHDRAW)
flog_err(
EC_BGP_UPDATE_RCV,
- "%s rcvd UPDATE with errors in attr(s)!! Withdrawing route.",
- peer->host);
+ "%pBP rcvd UPDATE with errors in attr(s)!! Withdrawing route.",
+ peer);
if (ret && bgp_debug_update(peer, NULL, NULL, 1)) {
- zlog_debug("%s(%s) rcvd UPDATE w/ attr: %s", peer->host,
- bgp_peer_hostname(peer),
+ zlog_debug("%pBP rcvd UPDATE w/ attr: %s", peer,
peer->rcvd_attr_str);
peer->rcvd_attr_printed = 1;
}
}
if (BGP_DEBUG(update, UPDATE_IN))
- zlog_debug("%s(%s) rcvd UPDATE wlen %d attrlen %d alen %d",
- peer->host, bgp_peer_hostname(peer), withdraw_len,
- attribute_len, update_len);
+ zlog_debug("%pBP rcvd UPDATE wlen %d attrlen %d alen %d", peer,
+ withdraw_len, attribute_len, update_len);
/* Parse any given NLRIs */
for (int i = NLRI_UPDATE; i < NLRI_TYPE_MAX; i++) {
if (bgp_debug_neighbor_events(peer)) {
zlog_debug(
- "%s rcvd Prefixlist ORF(%d) length %d",
- peer->host, orf_type, orf_len);
+ "%pBP rcvd Prefixlist ORF(%d) length %d",
+ peer, orf_type, orf_len);
}
/* we're going to read at least 1 byte of common
if (bgp_debug_neighbor_events(
peer))
zlog_debug(
- "%s rcvd Remove-All pfxlist ORF request",
- peer->host);
+ "%pBP rcvd Remove-All pfxlist ORF request",
+ peer);
prefix_bgp_orf_remove_all(afi,
name);
break;
char buf[INET6_BUFSIZ];
zlog_debug(
- "%s rcvd %s %s seq %u %s/%d ge %d le %d%s",
- peer->host,
+ "%pBP rcvd %s %s seq %u %s/%d ge %d le %d%s",
+ peer,
(common & ORF_COMMON_PART_REMOVE
? "Remove"
: "Add"),
if (!ok || (ok && ret != CMD_SUCCESS)) {
zlog_info(
- "%s Received misformatted prefixlist ORF. Remove All pfxlist",
- peer->host);
+ "%pBP Received misformatted prefixlist ORF. Remove All pfxlist",
+ peer);
prefix_bgp_orf_remove_all(afi,
name);
break;
stream_forward_getp(s, orf_len);
}
if (bgp_debug_neighbor_events(peer))
- zlog_debug("%s rcvd Refresh %s ORF request", peer->host,
+ zlog_debug("%pBP rcvd Refresh %s ORF request", peer,
when_to_refresh == REFRESH_DEFER
? "Defer"
: "Immediate");
PEER_STATUS_EOR_RECEIVED)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) rcvd route-refresh (BoRR) for %s/%s before EoR",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP rcvd route-refresh (BoRR) for %s/%s before EoR",
+ peer, afi2str(afi), safi2str(safi));
return BGP_PACKET_NOOP;
}
if (peer->t_refresh_stalepath) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) rcvd route-refresh (BoRR) for %s/%s, whereas BoRR already received",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP rcvd route-refresh (BoRR) for %s/%s, whereas BoRR already received",
+ peer, afi2str(afi), safi2str(safi));
return BGP_PACKET_NOOP;
}
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) rcvd route-refresh (BoRR) for %s/%s, triggering timer for %u seconds",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi),
+ "%pBP rcvd route-refresh (BoRR) for %s/%s, triggering timer for %u seconds",
+ peer, afi2str(afi), safi2str(safi),
peer->bgp->stalepath_time);
} else if (subtype == BGP_ROUTE_REFRESH_EORR) {
if (!peer->t_refresh_stalepath) {
zlog_err(
- "%s(%s) rcvd route-refresh (EoRR) for %s/%s, whereas no BoRR received",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP rcvd route-refresh (EoRR) for %s/%s, whereas no BoRR received",
+ peer, afi2str(afi), safi2str(safi));
return BGP_PACKET_NOOP;
}
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) rcvd route-refresh (EoRR) for %s/%s, stopping BoRR timer",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP rcvd route-refresh (EoRR) for %s/%s, stopping BoRR timer",
+ peer, afi2str(afi), safi2str(safi));
if (peer->nsf[afi][safi])
bgp_clear_stale_route(peer, afi, safi);
} else {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) rcvd route-refresh (REQUEST) for %s/%s",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP rcvd route-refresh (REQUEST) for %s/%s",
+ peer, afi2str(afi), safi2str(safi));
/* In response to a "normal route refresh request" from the
* peer, the speaker MUST send a BoRR message.
PEER_STATUS_EOR_SEND)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) rcvd route-refresh (REQUEST) for %s/%s before EoR",
- peer->host,
- bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP rcvd route-refresh (REQUEST) for %s/%s before EoR",
+ peer, afi2str(afi),
+ safi2str(safi));
return BGP_PACKET_NOOP;
}
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) sending route-refresh (BoRR) for %s/%s",
- peer->host, bgp_peer_hostname(peer),
- afi2str(afi), safi2str(safi));
+ "%pBP sending route-refresh (BoRR) for %s/%s",
+ peer, afi2str(afi), safi2str(safi));
/* Set flag Ready-To-Send to know when we can send EoRR
* message.
return false;
zlog_info(
- "%%MAXPFXEXCEED: No. of %s prefix received from %s(%s) %u exceed, limit %u",
- get_afi_safi_str(afi, safi, false), peer->host,
- bgp_peer_hostname(peer), pcount, peer->pmax[afi][safi]);
+ "%%MAXPFXEXCEED: No. of %s prefix received from %pBP %u exceed, limit %u",
+ get_afi_safi_str(afi, safi, false), peer, pcount,
+ peer->pmax[afi][safi]);
SET_FLAG(peer->af_sflags[afi][safi], PEER_STATUS_PREFIX_LIMIT);
if (CHECK_FLAG(peer->af_flags[afi][safi],
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) Maximum-prefix restart timer started for %d secs",
- peer->host, bgp_peer_hostname(peer),
- peer->v_pmax_restart);
+ "%pBP Maximum-prefix restart timer started for %d secs",
+ peer, peer->v_pmax_restart);
BGP_TIMER_ON(peer->t_pmax_restart,
bgp_maximum_prefix_restart_timer,
return false;
zlog_info(
- "%%MAXPFX: No. of %s prefix received from %s reaches %u, max %u",
- get_afi_safi_str(afi, safi, false), peer->host, pcount,
+ "%%MAXPFX: No. of %s prefix received from %pBP reaches %u, max %u",
+ get_afi_safi_str(afi, safi, false), peer, pcount,
peer->pmax[afi][safi]);
SET_FLAG(peer->af_sflags[afi][safi],
PEER_STATUS_PREFIX_THRESHOLD);
num_labels, addpath_id ? 1 : 0,
addpath_id, evpn, pfx_buf,
sizeof(pfx_buf));
- zlog_debug("%s rcvd %s", peer->host,
+ zlog_debug("%pBP rcvd %s", peer,
pfx_buf);
}
if (bgp_debug_update(peer, p, NULL, 1)) {
if (!peer->rcvd_attr_printed) {
zlog_debug(
- "%s rcvd UPDATE w/ attr: %s",
- peer->host,
+ "%pBP rcvd UPDATE w/ attr: %s",
+ peer,
peer->rcvd_attr_str);
peer->rcvd_attr_printed = 1;
}
addpath_id, evpn, pfx_buf,
sizeof(pfx_buf));
zlog_debug(
- "%s rcvd %s...duplicate ignored",
- peer->host, pfx_buf);
+ "%pBP rcvd %s...duplicate ignored",
+ peer, pfx_buf);
}
/* graceful restart STALE flag unset. */
addpath_id ? 1 : 0, addpath_id, evpn,
pfx_buf, sizeof(pfx_buf));
zlog_debug(
- "%s rcvd %s, flapped quicker than processing",
- peer->host, pfx_buf);
+ "%pBP rcvd %s, flapped quicker than processing",
+ peer, pfx_buf);
}
bgp_path_info_restore(dest, pi);
num_labels, addpath_id ? 1 : 0,
addpath_id, evpn, pfx_buf,
sizeof(pfx_buf));
- zlog_debug("%s rcvd %s", peer->host, pfx_buf);
+ zlog_debug("%pBP rcvd %s", peer, pfx_buf);
}
/* graceful restart STALE flag unset. */
/* Received Logging. */
if (bgp_debug_update(peer, p, NULL, 1)) {
if (!peer->rcvd_attr_printed) {
- zlog_debug("%s rcvd UPDATE w/ attr: %s", peer->host,
+ zlog_debug("%pBP rcvd UPDATE w/ attr: %s", peer,
peer->rcvd_attr_str);
peer->rcvd_attr_printed = 1;
}
bgp_debug_rdpfxpath2str(afi, safi, prd, p, label, num_labels,
addpath_id ? 1 : 0, addpath_id, evpn,
pfx_buf, sizeof(pfx_buf));
- zlog_debug("%s rcvd %s", peer->host, pfx_buf);
+ zlog_debug("%pBP rcvd %s", peer, pfx_buf);
}
/* Make new BGP info. */
if (bgp_debug_update(peer, p, NULL, 1)) {
if (!peer->rcvd_attr_printed) {
- zlog_debug("%s rcvd UPDATE w/ attr: %s", peer->host,
+ zlog_debug("%pBP rcvd UPDATE w/ attr: %s", peer,
peer->rcvd_attr_str);
peer->rcvd_attr_printed = 1;
}
bgp_debug_rdpfxpath2str(afi, safi, prd, p, label, num_labels,
addpath_id ? 1 : 0, addpath_id, evpn,
pfx_buf, sizeof(pfx_buf));
- zlog_debug("%s rcvd UPDATE about %s -- DENIED due to: %s",
- peer->host, pfx_buf, reason);
+ zlog_debug("%pBP rcvd UPDATE about %s -- DENIED due to: %s",
+ peer, pfx_buf, reason);
}
if (pi) {
bgp_debug_rdpfxpath2str(afi, safi, prd, p, label, num_labels,
addpath_id ? 1 : 0, addpath_id, NULL,
pfx_buf, sizeof(pfx_buf));
- zlog_debug("%s rcvd UPDATE about %s -- withdrawn", peer->host,
+ zlog_debug("%pBP rcvd UPDATE about %s -- withdrawn", peer,
pfx_buf);
}
if (peer->t_gr_restart) {
BGP_TIMER_OFF(peer->t_gr_restart);
if (bgp_debug_neighbor_events(peer))
- zlog_debug("%s(%s) graceful restart timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ zlog_debug("%pBP graceful restart timer stopped", peer);
}
if (peer->t_gr_stale) {
BGP_TIMER_OFF(peer->t_gr_stale);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) graceful restart stalepath timer stopped",
- peer->host, bgp_peer_hostname(peer));
+ "%pBP graceful restart stalepath timer stopped",
+ peer);
}
bgp_clear_route_all(peer);
}
BGP_TIMER_OFF(peer->t_pmax_restart);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) Maximum-prefix restart timer canceled",
- peer->host,
- bgp_peer_hostname(peer));
+ "%pBP Maximum-prefix restart timer canceled",
+ peer);
}
if (BGP_IS_VALID_STATE_FOR_NOTIF(peer->status)) {
BGP_TIMER_OFF(peer->t_pmax_restart);
if (bgp_debug_neighbor_events(peer))
zlog_debug(
- "%s(%s) Maximum-prefix restart timer cancelled",
- peer->host, bgp_peer_hostname(peer));
+ "%pBP Maximum-prefix restart timer cancelled",
+ peer);
}
BGP_EVENT_ADD(peer, BGP_Start);
return true;
gr_router_detected = false;
}
}
+
+printfrr_ext_autoreg_p("BP", printfrr_bp);
+static ssize_t printfrr_bp(struct fbuf *buf, struct printfrr_eargs *ea,
+ const void *ptr)
+{
+ const struct peer *peer = ptr;
+
+ if (!peer)
+ return bputs(buf, "(null)");
+
+ return bprintfrr(buf, "%s(%s)", peer->host,
+ peer->hostname ? peer->hostname : "Unknown");
+}
!!CHECK_FLAG(bm->flags, BM_FLAG_GRACEFUL_SHUTDOWN));
}
-static inline const char *bgp_peer_hostname(struct peer *peer)
-{
- return peer->hostname ? peer->hostname : "Unknown";
-}
-
/* For benefit of rfapi */
extern struct peer *peer_new(struct bgp *bgp);
extern void bgp_recalculate_afi_safi_bestpaths(struct bgp *bgp, afi_t afi,
safi_t safi);
+
+#ifdef _FRR_ATTRIBUTE_PRINTFRR
+/* clang-format off */
+#pragma FRR printfrr_ext "%pBP" (struct peer *)
+/* clang-format on */
+#endif
+
#endif /* _QUAGGA_BGPD_H */
:frrfmtout:`fe80::1234/64`
+.. frrfmt:: %pBP (struct peer *)
+
+ :frrfmtout:`192.168.1.1(leaf1.frrouting.org)`
+
+ Print BGP peer's IP and hostname together.
+
pimd/pim6d
""""""""""
if (
len(
tgen.gears["c1"].run(
- 'grep "10.0.1.2 rcvd 192.168.255.254/32 IPv4 unicast...duplicate ignored" bgpd.log'
+ 'grep "10.0.1.2(x1) rcvd 192.168.255.254/32 IPv4 unicast...duplicate ignored" bgpd.log'
)
)
> 0