Skip to content

Commit

Permalink
Merge pull request #13949 from opensourcerouting/fix/bgpd_deprecations
Browse files Browse the repository at this point in the history
bgpd: rfc8810 deprecations
  • Loading branch information
mjstapp authored Jul 7, 2023
2 parents 2332ca1 + 04dfcb1 commit f5b8a4e
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 96 deletions.
27 changes: 2 additions & 25 deletions bgpd/bgp_open.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ static const struct message capcode_str[] = {
{CAPABILITY_CODE_ADDPATH, "AddPath"},
{CAPABILITY_CODE_DYNAMIC, "Dynamic"},
{CAPABILITY_CODE_ENHE, "Extended Next Hop Encoding"},
{CAPABILITY_CODE_DYNAMIC_OLD, "Dynamic (Old)"},
{CAPABILITY_CODE_REFRESH_OLD, "Route Refresh (Old)"},
{CAPABILITY_CODE_ORF_OLD, "ORF (Old)"},
{CAPABILITY_CODE_FQDN, "FQDN"},
{CAPABILITY_CODE_ENHANCED_RR, "Enhanced Route Refresh"},
Expand All @@ -56,9 +54,7 @@ static const size_t cap_minsizes[] = {
[CAPABILITY_CODE_AS4] = CAPABILITY_CODE_AS4_LEN,
[CAPABILITY_CODE_ADDPATH] = CAPABILITY_CODE_ADDPATH_LEN,
[CAPABILITY_CODE_DYNAMIC] = CAPABILITY_CODE_DYNAMIC_LEN,
[CAPABILITY_CODE_DYNAMIC_OLD] = CAPABILITY_CODE_DYNAMIC_LEN,
[CAPABILITY_CODE_ENHE] = CAPABILITY_CODE_ENHE_LEN,
[CAPABILITY_CODE_REFRESH_OLD] = CAPABILITY_CODE_REFRESH_LEN,
[CAPABILITY_CODE_ORF_OLD] = CAPABILITY_CODE_ORF_LEN,
[CAPABILITY_CODE_FQDN] = CAPABILITY_CODE_MIN_FQDN_LEN,
[CAPABILITY_CODE_ENHANCED_RR] = CAPABILITY_CODE_ENHANCED_LEN,
Expand All @@ -81,9 +77,7 @@ static const size_t cap_modsizes[] = {
[CAPABILITY_CODE_AS4] = 4,
[CAPABILITY_CODE_ADDPATH] = 4,
[CAPABILITY_CODE_DYNAMIC] = 1,
[CAPABILITY_CODE_DYNAMIC_OLD] = 1,
[CAPABILITY_CODE_ENHE] = 6,
[CAPABILITY_CODE_REFRESH_OLD] = 1,
[CAPABILITY_CODE_ORF_OLD] = 1,
[CAPABILITY_CODE_FQDN] = 1,
[CAPABILITY_CODE_ENHANCED_RR] = 1,
Expand Down Expand Up @@ -1011,14 +1005,12 @@ static int bgp_capability_parse(struct peer *peer, size_t length,
switch (caphdr.code) {
case CAPABILITY_CODE_MP:
case CAPABILITY_CODE_REFRESH:
case CAPABILITY_CODE_REFRESH_OLD:
case CAPABILITY_CODE_ORF:
case CAPABILITY_CODE_ORF_OLD:
case CAPABILITY_CODE_RESTART:
case CAPABILITY_CODE_AS4:
case CAPABILITY_CODE_ADDPATH:
case CAPABILITY_CODE_DYNAMIC:
case CAPABILITY_CODE_DYNAMIC_OLD:
case CAPABILITY_CODE_ENHE:
case CAPABILITY_CODE_FQDN:
case CAPABILITY_CODE_ENHANCED_RR:
Expand Down Expand Up @@ -1076,15 +1068,12 @@ static int bgp_capability_parse(struct peer *peer, size_t length,
}
} break;
case CAPABILITY_CODE_ENHANCED_RR:
case CAPABILITY_CODE_REFRESH:
case CAPABILITY_CODE_REFRESH_OLD: {
case CAPABILITY_CODE_REFRESH: {
/* BGP refresh capability */
if (caphdr.code == CAPABILITY_CODE_ENHANCED_RR)
SET_FLAG(peer->cap, PEER_CAP_ENHANCED_RR_RCV);
else if (caphdr.code == CAPABILITY_CODE_REFRESH_OLD)
SET_FLAG(peer->cap, PEER_CAP_REFRESH_OLD_RCV);
else
SET_FLAG(peer->cap, PEER_CAP_REFRESH_NEW_RCV);
SET_FLAG(peer->cap, PEER_CAP_REFRESH_RCV);
} break;
case CAPABILITY_CODE_ORF:
case CAPABILITY_CODE_ORF_OLD:
Expand All @@ -1097,7 +1086,6 @@ static int bgp_capability_parse(struct peer *peer, size_t length,
ret = bgp_capability_llgr(peer, &caphdr);
break;
case CAPABILITY_CODE_DYNAMIC:
case CAPABILITY_CODE_DYNAMIC_OLD:
SET_FLAG(peer->cap, PEER_CAP_DYNAMIC_RCV);
break;
case CAPABILITY_CODE_AS4:
Expand Down Expand Up @@ -1769,11 +1757,6 @@ uint16_t bgp_open_capability(struct stream *s, struct peer *peer,
/* Route refresh. */
SET_FLAG(peer->cap, PEER_CAP_REFRESH_ADV);
stream_putc(s, BGP_OPEN_OPT_CAP);
ext_opt_params ? stream_putw(s, CAPABILITY_CODE_REFRESH_LEN + 2)
: stream_putc(s, CAPABILITY_CODE_REFRESH_LEN + 2);
stream_putc(s, CAPABILITY_CODE_REFRESH_OLD);
stream_putc(s, CAPABILITY_CODE_REFRESH_LEN);
stream_putc(s, BGP_OPEN_OPT_CAP);
ext_opt_params ? stream_putw(s, CAPABILITY_CODE_REFRESH_LEN + 2)
: stream_putc(s, CAPABILITY_CODE_REFRESH_LEN + 2);
stream_putc(s, CAPABILITY_CODE_REFRESH);
Expand Down Expand Up @@ -1910,12 +1893,6 @@ uint16_t bgp_open_capability(struct stream *s, struct peer *peer,
if (CHECK_FLAG(peer->flags, PEER_FLAG_DYNAMIC_CAPABILITY)) {
SET_FLAG(peer->cap, PEER_CAP_DYNAMIC_ADV);
stream_putc(s, BGP_OPEN_OPT_CAP);
ext_opt_params
? stream_putw(s, CAPABILITY_CODE_DYNAMIC_LEN + 2)
: stream_putc(s, CAPABILITY_CODE_DYNAMIC_LEN + 2);
stream_putc(s, CAPABILITY_CODE_DYNAMIC_OLD);
stream_putc(s, CAPABILITY_CODE_DYNAMIC_LEN);
stream_putc(s, BGP_OPEN_OPT_CAP);
ext_opt_params
? stream_putw(s, CAPABILITY_CODE_DYNAMIC_LEN + 2)
: stream_putc(s, CAPABILITY_CODE_DYNAMIC_LEN + 2);
Expand Down
2 changes: 0 additions & 2 deletions bgpd/bgp_open.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,13 @@ struct graceful_restart_af {
#define CAPABILITY_CODE_ORF 3 /* Cooperative Route Filtering Capability */
#define CAPABILITY_CODE_RESTART 64 /* Graceful Restart Capability */
#define CAPABILITY_CODE_AS4 65 /* 4-octet AS number Capability */
#define CAPABILITY_CODE_DYNAMIC_OLD 66 /* Dynamic Capability, deprecated since 2003 */
#define CAPABILITY_CODE_DYNAMIC 67 /* Dynamic Capability */
#define CAPABILITY_CODE_ADDPATH 69 /* Addpath Capability */
#define CAPABILITY_CODE_ENHANCED_RR 70 /* Enhanced Route Refresh capability */
#define CAPABILITY_CODE_LLGR 71 /* Long-lived Graceful Restart */
#define CAPABILITY_CODE_FQDN 73 /* Advertise hostname capability */
#define CAPABILITY_CODE_SOFT_VERSION 75 /* Software Version capability */
#define CAPABILITY_CODE_ENHE 5 /* Extended Next Hop Encoding */
#define CAPABILITY_CODE_REFRESH_OLD 128 /* Route Refresh Capability(cisco) */
#define CAPABILITY_CODE_ORF_OLD 130 /* Cooperative Route Filtering Capability(cisco) */
#define CAPABILITY_CODE_EXT_MESSAGE 6 /* Extended Message Support */
#define CAPABILITY_CODE_ROLE 9 /* Role Capability */
Expand Down
2 changes: 1 addition & 1 deletion bgpd/bgp_packet.c
Original file line number Diff line number Diff line change
Expand Up @@ -1103,7 +1103,7 @@ void bgp_route_refresh_send(struct peer *peer, afi_t afi, safi_t safi,
s = stream_new(peer->max_packet_size);

/* Make BGP update packet. */
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_NEW_RCV))
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_RCV))
bgp_packet_set_marker(s, BGP_MSG_ROUTE_REFRESH_NEW);
else
bgp_packet_set_marker(s, BGP_MSG_ROUTE_REFRESH_OLD);
Expand Down
5 changes: 1 addition & 4 deletions bgpd/bgp_routemap.c
Original file line number Diff line number Diff line change
Expand Up @@ -4192,10 +4192,7 @@ static void bgp_route_map_process_peer(const char *rmap_name,
safi2str(safi), peer->host);

bgp_soft_reconfig_in(peer, afi, safi);
} else if (CHECK_FLAG(peer->cap,
PEER_CAP_REFRESH_OLD_RCV)
|| CHECK_FLAG(peer->cap,
PEER_CAP_REFRESH_NEW_RCV)) {
} else if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_RCV)) {
if (bgp_debug_update(peer, NULL, NULL, 1))
zlog_debug(
"Processing route_map %s(%s:%s) update on peer %s (inbound, route-refresh)",
Expand Down
68 changes: 12 additions & 56 deletions bgpd/bgp_vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -14015,46 +14015,19 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,

/* Route Refresh */
if (CHECK_FLAG(p->cap, PEER_CAP_REFRESH_ADV) ||
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_NEW_RCV) ||
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_OLD_RCV)) {
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_RCV)) {
if (CHECK_FLAG(p->cap, PEER_CAP_REFRESH_ADV) &&
(CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_NEW_RCV) ||
CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_OLD_RCV))) {
if (CHECK_FLAG(
p->cap,
PEER_CAP_REFRESH_OLD_RCV) &&
CHECK_FLAG(
p->cap,
PEER_CAP_REFRESH_NEW_RCV))
json_object_string_add(
json_cap,
"routeRefresh",
"advertisedAndReceivedOldNew");
else {
if (CHECK_FLAG(
p->cap,
PEER_CAP_REFRESH_OLD_RCV))
json_object_string_add(
json_cap,
"routeRefresh",
"advertisedAndReceivedOld");
else
json_object_string_add(
json_cap,
"routeRefresh",
"advertisedAndReceivedNew");
}
} else if (CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_ADV))
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_RCV))
json_object_string_add(json_cap,
"routeRefresh",
"advertisedAndReceived");
else if (CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_ADV))
json_object_string_add(json_cap,
"routeRefresh",
"advertised");
else if (CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_NEW_RCV) ||
CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_OLD_RCV))
PEER_CAP_REFRESH_RCV))
json_object_string_add(json_cap,
"routeRefresh",
"received");
Expand Down Expand Up @@ -14456,33 +14429,16 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,

/* Route Refresh */
if (CHECK_FLAG(p->cap, PEER_CAP_REFRESH_ADV) ||
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_NEW_RCV) ||
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_OLD_RCV)) {
CHECK_FLAG(p->cap, PEER_CAP_REFRESH_RCV)) {
vty_out(vty, " Route refresh:");
if (CHECK_FLAG(p->cap, PEER_CAP_REFRESH_ADV))
vty_out(vty, " advertised");
if (CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_NEW_RCV) ||
CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_OLD_RCV))
vty_out(vty, " %sreceived(%s)",
if (CHECK_FLAG(p->cap, PEER_CAP_REFRESH_RCV))
vty_out(vty, " %sreceived",
CHECK_FLAG(p->cap,
PEER_CAP_REFRESH_ADV)
? "and "
: "",
(CHECK_FLAG(
p->cap,
PEER_CAP_REFRESH_OLD_RCV) &&
CHECK_FLAG(
p->cap,
PEER_CAP_REFRESH_NEW_RCV))
? "old & new"
: CHECK_FLAG(
p->cap,
PEER_CAP_REFRESH_OLD_RCV)
? "old"
: "new");

: "");
vty_out(vty, "\n");
}

Expand Down
9 changes: 3 additions & 6 deletions bgpd/bgpd.c
Original file line number Diff line number Diff line change
Expand Up @@ -4414,8 +4414,7 @@ void peer_change_action(struct peer *peer, afi_t afi, safi_t safi,
bgp_notify_send(peer, BGP_NOTIFY_CEASE,
BGP_NOTIFY_CEASE_CONFIG_CHANGE);
} else if (type == peer_change_reset_in) {
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_OLD_RCV)
|| CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_NEW_RCV))
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_RCV))
bgp_route_refresh_send(peer, afi, safi, 0, 0, 0,
BGP_ROUTE_REFRESH_NORMAL);
else {
Expand Down Expand Up @@ -5718,8 +5717,7 @@ void peer_on_policy_change(struct peer *peer, afi_t afi, safi_t safi,
if (bgp_soft_reconfig_in(peer, afi, safi))
return;

if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_OLD_RCV) ||
CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_NEW_RCV))
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_RCV))
bgp_route_refresh_send(peer, afi, safi, 0, 0, 0,
BGP_ROUTE_REFRESH_NORMAL);
}
Expand Down Expand Up @@ -7986,8 +7984,7 @@ int peer_clear_soft(struct peer *peer, afi_t afi, safi_t safi,
/* If neighbor has route refresh capability, send route
refresh
message to the peer. */
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_OLD_RCV)
|| CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_NEW_RCV))
if (CHECK_FLAG(peer->cap, PEER_CAP_REFRESH_RCV))
bgp_route_refresh_send(
peer, afi, safi, 0, 0, 0,
BGP_ROUTE_REFRESH_NORMAL);
Expand Down
3 changes: 1 addition & 2 deletions bgpd/bgpd.h
Original file line number Diff line number Diff line change
Expand Up @@ -1242,8 +1242,7 @@ struct peer {
/* Capability flags (reset in bgp_stop) */
uint32_t cap;
#define PEER_CAP_REFRESH_ADV (1U << 0) /* refresh advertised */
#define PEER_CAP_REFRESH_OLD_RCV (1U << 1) /* refresh old received */
#define PEER_CAP_REFRESH_NEW_RCV (1U << 2) /* refresh rfc received */
#define PEER_CAP_REFRESH_RCV (1U << 2) /* refresh rfc received */
#define PEER_CAP_DYNAMIC_ADV (1U << 3) /* dynamic advertised */
#define PEER_CAP_DYNAMIC_RCV (1U << 4) /* dynamic received */
#define PEER_CAP_RESTART_ADV (1U << 5) /* restart advertised */
Expand Down

0 comments on commit f5b8a4e

Please sign in to comment.