From: Donatas Abraitis Date: Thu, 13 Aug 2020 15:42:31 +0000 (+0300) Subject: bgpd: Dump attributes before returning from bgp_attr_malformed() X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=45fa94a942b90246012c5ecb6d9fc72b7f620032;p=mirror%2Ffrr.git bgpd: Dump attributes before returning from bgp_attr_malformed() This would be handy for situations when a notification was sent, but it's absolutely not clear who triggered that. Just in case dumping all attributes under the debug mode would help finding the _bad_ attribute. Signed-off-by: Donatas Abraitis --- diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index d8566fed9f..121b170f42 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -1148,6 +1148,7 @@ bgp_attr_malformed(struct bgp_attr_parser_args *args, uint8_t subcode, bgp_size_t length) { struct peer *const peer = args->peer; + struct attr *const attr = args->attr; const uint8_t flags = args->flags; /* startp and length must be special-cased, as whether or not to * send the attribute data with the NOTIFY depends on the error, @@ -1155,6 +1156,14 @@ bgp_attr_malformed(struct bgp_attr_parser_args *args, uint8_t subcode, */ uint8_t *notify_datap = (length > 0 ? args->startp : NULL); + if (bgp_debug_update(peer, NULL, NULL, 1)) { + char attr_str[BUFSIZ] = {0}; + + bgp_dump_attr(attr, attr_str, BUFSIZ); + + zlog_debug("%s: attributes: %s", __func__, attr_str); + } + /* Only relax error handling for eBGP peers */ if (peer->sort != BGP_PEER_EBGP) { bgp_notify_send_with_data(peer, BGP_NOTIFY_UPDATE_ERR, subcode,