Merge pull request #7969 from donaldsharp/more_flags

More flags
This commit is contained in:
Donatas Abraitis 2021-02-01 09:12:09 +02:00 committed by GitHub
commit 01c949cd5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 70 additions and 6 deletions

View File

@ -33,6 +33,7 @@
#include "nexthop.h"
#include "queue.h"
#include "filter.h"
#include "printfrr.h"
#include "bgpd/bgpd.h"
#include "bgpd/bgp_route.h"
@ -1020,3 +1021,50 @@ void bgp_scan_finish(struct bgp *bgp)
bgp->connected_table[afi] = NULL;
}
}
char *bgp_nexthop_dump_bnc_flags(struct bgp_nexthop_cache *bnc, char *buf,
size_t len)
{
if (bnc->flags == 0) {
snprintfrr(buf, len, "None ");
return buf;
}
snprintfrr(buf, len, "%s%s%s%s%s%s%s",
CHECK_FLAG(bnc->flags, BGP_NEXTHOP_VALID) ? "Valid " : "",
CHECK_FLAG(bnc->flags, BGP_NEXTHOP_REGISTERED) ? "Reg " : "",
CHECK_FLAG(bnc->flags, BGP_NEXTHOP_CONNECTED) ? "Conn " : "",
CHECK_FLAG(bnc->flags, BGP_NEXTHOP_PEER_NOTIFIED) ? "Notify "
: "",
CHECK_FLAG(bnc->flags, BGP_STATIC_ROUTE) ? "Static " : "",
CHECK_FLAG(bnc->flags, BGP_STATIC_ROUTE_EXACT_MATCH)
? "Static Exact "
: "",
CHECK_FLAG(bnc->flags, BGP_NEXTHOP_LABELED_VALID)
? "Label Valid "
: "");
return buf;
}
char *bgp_nexthop_dump_bnc_change_flags(struct bgp_nexthop_cache *bnc,
char *buf, size_t len)
{
if (bnc->flags == 0) {
snprintfrr(buf, len, "None ");
return buf;
}
snprintfrr(buf, len, "%s%s%s",
CHECK_FLAG(bnc->change_flags, BGP_NEXTHOP_CHANGED)
? "Changed "
: "",
CHECK_FLAG(bnc->change_flags, BGP_NEXTHOP_METRIC_CHANGED)
? "Metric "
: "",
CHECK_FLAG(bnc->change_flags, BGP_NEXTHOP_CONNECTED_CHANGED)
? "Connected "
: "");
return buf;
}

View File

@ -100,6 +100,11 @@ struct update_subgroup;
struct bgp_dest;
struct attr;
#define BNC_FLAG_DUMP_SIZE 180
extern char *bgp_nexthop_dump_bnc_flags(struct bgp_nexthop_cache *bnc,
char *buf, size_t len);
extern char *bgp_nexthop_dump_bnc_change_flags(struct bgp_nexthop_cache *bnc,
char *buf, size_t len);
extern void bgp_connected_add(struct bgp *bgp, struct connected *c);
extern void bgp_connected_delete(struct bgp *bgp, struct connected *c);
extern bool bgp_subgrp_multiaccess_check_v4(struct in_addr nexthop,

View File

@ -320,12 +320,17 @@ static void bgp_process_nexthop_update(struct bgp_nexthop_cache *bnc,
bnc->change_flags = 0;
/* debug print the input */
if (BGP_DEBUG(nht, NHT))
if (BGP_DEBUG(nht, NHT)) {
char bnc_buf[BNC_FLAG_DUMP_SIZE];
zlog_debug(
"%s(%u): Rcvd NH update %pFX(%u) - metric %d/%d #nhops %d/%d flags 0x%x",
"%s(%u): Rcvd NH update %pFX(%u) - metric %d/%d #nhops %d/%d flags %s",
bnc->bgp->name_pretty, bnc->bgp->vrf_id, &nhr->prefix,
bnc->srte_color, nhr->metric, bnc->metric,
nhr->nexthop_num, bnc->nexthop_num, bnc->flags);
nhr->nexthop_num, bnc->nexthop_num,
bgp_nexthop_dump_bnc_flags(bnc, bnc_buf,
sizeof(bnc_buf)));
}
if (nhr->metric != bnc->metric)
bnc->change_flags |= BGP_NEXTHOP_METRIC_CHANGED;
@ -702,11 +707,17 @@ static void evaluate_paths(struct bgp_nexthop_cache *bnc)
if (BGP_DEBUG(nht, NHT)) {
char buf[PREFIX2STR_BUFFER];
char bnc_buf[BNC_FLAG_DUMP_SIZE];
char chg_buf[BNC_FLAG_DUMP_SIZE];
bnc_str(bnc, buf, PREFIX2STR_BUFFER);
zlog_debug(
"NH update for %s(%u)(%s) - flags 0x%x chgflags 0x%x - evaluate paths",
buf, bnc->srte_color, bnc->bgp->name_pretty, bnc->flags,
bnc->change_flags);
"NH update for %s(%u)(%s) - flags %s chgflags %s- evaluate paths",
buf, bnc->srte_color, bnc->bgp->name_pretty,
bgp_nexthop_dump_bnc_flags(bnc, bnc_buf,
sizeof(bnc_buf)),
bgp_nexthop_dump_bnc_change_flags(bnc, chg_buf,
sizeof(bnc_buf)));
}
LIST_FOREACH (path, &(bnc->paths), nh_thread) {