From 64541ffa8f33404e32336d1905b73f89a7d26610 Mon Sep 17 00:00:00 2001 From: Francois Dumontet Date: Tue, 12 Jul 2022 14:12:08 +0200 Subject: [PATCH] bgp:change in showing neighbor description currently "show bgp summary" and "sho bgp summary wide" commands provide a description string until a whitespace is occuring this respectively with size limits of 20 and 60 chars now theses two commands are providing strings with all characters until the last witespace before size limit Signed-off-by: Francois Dumontet --- bgpd/bgp_vty.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 19901792ea..d8c56f1ade 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -10392,9 +10392,24 @@ static void bgp_show_failed_summary(struct vty *vty, struct bgp *bgp, static char *bgp_peer_description_stripped(char *desc, uint32_t size) { static char stripped[BUFSIZ]; - uint32_t len = size > strlen(desc) ? strlen(desc) : size; + uint32_t i = 0; + uint32_t last_space = 0; - strlcpy(stripped, desc, len + 1); + while (i < size) { + if (*(desc + i) == 0) { + stripped[i] = '\0'; + return stripped; + } + if (i != 0 && *(desc + i) == ' ' && last_space != i - 1) + last_space = i; + stripped[i] = *(desc + i); + i++; + } + + if (last_space > size) + stripped[size + 1] = '\0'; + else + stripped[last_space] = '\0'; return stripped; }