diff options
author | Maria Matejka <mq@ucw.cz> | 2023-01-24 09:45:40 +0100 |
---|---|---|
committer | Maria Matejka <mq@ucw.cz> | 2023-01-24 09:45:40 +0100 |
commit | 02b2a4ecaaf850ce04b0cd2e74c1ff6fede3f181 (patch) | |
tree | 70e459c6543dc09059055a103d4f388e9b5b9c18 /proto/bgp/packets.c | |
parent | 3d96a16ae85db4329d2a24b7df9b3c18ae4e1045 (diff) | |
parent | 3186ffe79714a48542d5ad61a94c81216b522fd0 (diff) |
Merge commit '3186ffe79714a48542d5ad61a94c81216b522fd0' into thread-next
Diffstat (limited to 'proto/bgp/packets.c')
-rw-r--r-- | proto/bgp/packets.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c index 0b8a899a..924d6828 100644 --- a/proto/bgp/packets.c +++ b/proto/bgp/packets.c @@ -908,10 +908,10 @@ bgp_rx_open(struct bgp_conn *conn, byte *pkt, uint len) (local_role == BGP_ROLE_PROVIDER && neigh_role == BGP_ROLE_CUSTOMER) || (local_role == BGP_ROLE_RS_CLIENT && neigh_role == BGP_ROLE_RS_SERVER) || (local_role == BGP_ROLE_RS_SERVER && neigh_role == BGP_ROLE_RS_CLIENT))) - { bgp_error(conn, 2, 11, NULL, 0); return; } + { bgp_error(conn, 2, 11, &neigh_role, -1); return; } if ((p->cf->require_roles) && (neigh_role == BGP_ROLE_UNDEFINED)) - { bgp_error(conn, 2, 11, NULL, 0); return; } + { bgp_error(conn, 2, 11, &neigh_role, -1); return; } /* Check the other connection */ other = (conn == &p->outgoing_conn) ? &p->incoming_conn : &p->outgoing_conn; @@ -3152,6 +3152,12 @@ bgp_log_error(struct bgp_proto *p, u8 class, char *msg, uint code, uint subcode, goto done; } + if ((code == 2) && (subcode == 11) && (len == 1)) + { + t += bsprintf(t, " (%s)", bgp_format_role_name(get_u8(data))); + goto done; + } + /* RFC 8203 - shutdown communication */ if (((code == 6) && ((subcode == 2) || (subcode == 4)))) if (bgp_handle_message(p, data, len, &t)) |