Skip to content

Commit 7f384d6

Browse files
authored
Merge branch 'FRRouting:master' into bfd_rfc_fix
2 parents 715a95d + 0a8b7b3 commit 7f384d6

File tree

265 files changed

+13270
-1304
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

265 files changed

+13270
-1304
lines changed
File renamed without changes.

.github/mergify.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pull_request_rules:
2+
- name: Delete merged branch
3+
conditions:
4+
- merged
5+
actions:
6+
delete_head_branch:

.github/workflows/github-ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ jobs:
2424
- { os: 'ubuntu-latest' ,rel: '24.04', name: 'Ubuntu 24.04 amd64 Build',platform : 'amd64_u24' }
2525
- { os: 'ubuntu-22.04-arm' ,rel: '22.04', name: 'Ubuntu 22.04 arm64 Build',platform : 'arm64_u22' }
2626
- { os: 'ubuntu-22.04-arm' ,rel: '24.04', name: 'Ubuntu 24.04 arm64 Build',platform : 'arm64_u24' }
27+
- { os: 'ubuntu-latest' ,rel: '24.04', name: 'Ubuntu 24.04 amd64 LTTng Build',platform : 'amd64_u24_lttng', lttng: 'true' }
2728

2829
steps:
2930
- name: Checkout
@@ -32,7 +33,7 @@ jobs:
3233
fetch-depth: 1
3334
- name: Build docker image
3435
run: |
35-
docker build --no-cache -t frr-${{ matrix.cfg.platform }} --build-arg=UBUNTU_VERSION=${{ matrix.cfg.rel }} -f docker/ubuntu-ci/Dockerfile .
36+
docker build --no-cache -t frr-${{ matrix.cfg.platform }} --build-arg=UBUNTU_VERSION=${{ matrix.cfg.rel }} --build-arg=ENABLE_LTTNG=${{ matrix.cfg.lttng || 'false' }} -f docker/ubuntu-ci/Dockerfile .
3637
docker save --output /tmp/frr-${{ matrix.cfg.platform }}.tar frr-${{ matrix.cfg.platform }}
3738
- name: Upload docker image artifact
3839
uses: actions/upload-artifact@v4

bfdd/bfdd_vty.c

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ static void _display_peer(struct vty *vty, struct bfd_session *bs)
209209
_display_rtt(&min, &avg, &max, bs);
210210
vty_out(vty, "\t\tRTT min/avg/max: %u/%u/%u usec\n", min, avg, max);
211211
}
212+
if (bs->profile_name)
213+
vty_out(vty, "\t\tProfile: %s\n", bs->profile_name);
212214

213215
vty_out(vty, "\t\tLocal timers:\n");
214216
vty_out(vty, "\t\t\tDetect-multiplier: %u\n",
@@ -341,6 +343,9 @@ static struct json_object *__display_peer_json(struct bfd_session *bs)
341343
else
342344
json_object_string_add(jo, "type", "dynamic");
343345

346+
if (bs->profile_name)
347+
json_object_string_add(jo, "profile", bs->profile_name);
348+
344349
json_object_int_add(jo, "receive-interval",
345350
bs->timers.required_min_rx / 1000);
346351
json_object_int_add(jo, "transmit-interval",
@@ -788,14 +793,16 @@ static void _display_peer_brief(struct vty *vty, struct bfd_session *bs)
788793
vty_out(vty, " %-40s", addr_buf);
789794
inet_ntop(bs->key.family, &bs->key.peer, addr_buf, sizeof(addr_buf));
790795
vty_out(vty, " %-40s", addr_buf);
791-
vty_out(vty, "%-15s\n", state_list[bs->ses_state].str);
796+
vty_out(vty, "%-15s", state_list[bs->ses_state].str);
797+
vty_out(vty, " %-20s\n", bs->profile_name ? bs->profile_name : "-");
792798
} else {
793799
vty_out(vty, "%-10u", bs->discrs.my_discr);
794800
vty_out(vty, " %-40s", satostr(&bs->local_address));
795801
inet_ntop(bs->key.family, &bs->key.peer, addr_buf, sizeof(addr_buf));
796802
vty_out(vty, " %-40s", addr_buf);
797803

798-
vty_out(vty, "%-15s\n", state_list[bs->ses_state].str);
804+
vty_out(vty, "%-15s", state_list[bs->ses_state].str);
805+
vty_out(vty, " %-20s\n", bs->profile_name ? bs->profile_name : "-");
799806
}
800807
}
801808

@@ -832,12 +839,14 @@ static void _display_peers_brief(struct vty *vty, const char *vrfname, bool use_
832839
vty_out(vty, "%-10s", "SessionId");
833840
vty_out(vty, " %-40s", "LocalAddress");
834841
vty_out(vty, " %-40s", "PeerAddress");
835-
vty_out(vty, "%-15s\n", "Status");
842+
vty_out(vty, "%-15s", "Status");
843+
vty_out(vty, " %-20s\n", "Profile");
836844

837845
vty_out(vty, "%-10s", "=========");
838846
vty_out(vty, " %-40s", "============");
839847
vty_out(vty, " %-40s", "===========");
840-
vty_out(vty, "%-15s\n", "======");
848+
vty_out(vty, "%-15s", "======");
849+
vty_out(vty, " %-20s\n", "=======");
841850

842851
bfd_id_iterate(_display_peer_brief_iter, &bvt);
843852
return;

bgpd/bgp_advertise.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,8 @@ struct bgp_advertise_attr *bgp_advertise_attr_intern(struct hash *hash,
103103
struct bgp_advertise_attr ref;
104104
struct bgp_advertise_attr *baa;
105105

106-
ref.attr = bgp_attr_intern(attr);
106+
/* The attr is already intern'ed */
107+
ref.attr = attr;
107108
baa = (struct bgp_advertise_attr *)hash_get(
108109
hash, &ref, bgp_advertise_attr_hash_alloc);
109110
baa->refcnt++;

bgpd/bgp_advertise.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,6 @@ struct bgp_adj_out {
6969

7070
uint32_t addpath_tx_id;
7171

72-
/* Attribute hash */
73-
uint32_t attr_hash;
74-
7572
/* Advertised attribute. */
7673
struct attr *attr;
7774

bgpd/bgp_attr.c

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,7 +1533,7 @@ void bgp_attr_unintern_sub(struct attr *attr)
15331533
struct bgp_route_evpn *bre;
15341534
struct bgp_nhc *nhc;
15351535

1536-
/* aspath refcount shoud be decrement. */
1536+
/* aspath refcount should be decrement. */
15371537
aspath_unintern(&attr->aspath);
15381538
bgp_attr_unset(attr, BGP_ATTR_AS_PATH);
15391539

@@ -1712,7 +1712,7 @@ bgp_attr_malformed(struct bgp_attr_parser_args *args, uint8_t subcode,
17121712
const uint8_t flags = args->flags;
17131713
/* startp and length must be special-cased, as whether or not to
17141714
* send the attribute data with the NOTIFY depends on the error,
1715-
* the caller therefore signals this with the seperate length argument
1715+
* the caller therefore signals this with the separate length argument
17161716
*/
17171717
uint8_t *notify_datap = (length > 0 ? args->startp : NULL);
17181718

@@ -2198,7 +2198,7 @@ bgp_attr_nexthop(struct bgp_attr_parser_args *args)
21982198
return BGP_ATTR_PARSE_PROCEED;
21992199
}
22002200

2201-
/* MED atrribute. */
2201+
/* MED attribute. */
22022202
static enum bgp_attr_parse_ret bgp_attr_med(struct bgp_attr_parser_args *args)
22032203
{
22042204
struct peer_connection *const connection = args->connection;
@@ -3020,7 +3020,7 @@ bgp_attr_ext_communities(struct bgp_attr_parser_args *args)
30203020

30213021
/* Handle scenario where router flag ecommunity is not
30223022
* set but default gw ext community is present.
3023-
* Use default gateway, set and propogate R-bit.
3023+
* Use default gateway, set and propagate R-bit.
30243024
*/
30253025
if (CHECK_FLAG(attr->evpn_flags, ATTR_EVPN_FLAG_DEFAULT_GW))
30263026
SET_FLAG(attr->evpn_flags, ATTR_EVPN_FLAG_ROUTER);
@@ -3253,7 +3253,7 @@ bgp_attr_srv6_service_data(struct bgp_attr_parser_args *args)
32533253

32543254
if (STREAM_READABLE(connection->curr) < headersz) {
32553255
flog_err(EC_BGP_ATTR_LEN,
3256-
"Malformed SRv6 Service Data Sub-Sub-TLV attribute - insufficent data (need %zu for attribute header, have %zu remaining in UPDATE)",
3256+
"Malformed SRv6 Service Data Sub-Sub-TLV attribute - insufficient data (need %zu for attribute header, have %zu remaining in UPDATE)",
32573257
headersz, STREAM_READABLE(connection->curr));
32583258
return bgp_attr_malformed(args, BGP_NOTIFY_UPDATE_ATTR_LENG_ERR,
32593259
args->total);
@@ -3264,7 +3264,7 @@ bgp_attr_srv6_service_data(struct bgp_attr_parser_args *args)
32643264

32653265
if (STREAM_READABLE(connection->curr) < length) {
32663266
flog_err(EC_BGP_ATTR_LEN,
3267-
"Malformed SRv6 Service Data Sub-Sub-TLV attribute - insufficent data (need %hu for attribute data, have %zu remaining in UPDATE)",
3267+
"Malformed SRv6 Service Data Sub-Sub-TLV attribute - insufficient data (need %hu for attribute data, have %zu remaining in UPDATE)",
32683268
length, STREAM_READABLE(connection->curr));
32693269
return bgp_attr_malformed(args, BGP_NOTIFY_UPDATE_ATTR_LENG_ERR,
32703270
args->total);
@@ -3347,7 +3347,7 @@ bgp_attr_srv6_service(struct bgp_attr_parser_args *args)
33473347

33483348
if (STREAM_READABLE(connection->curr) < headersz) {
33493349
flog_err(EC_BGP_ATTR_LEN,
3350-
"Malformed SRv6 Service Sub-TLV attribute - insufficent data (need %zu for attribute header, have %zu remaining in UPDATE)",
3350+
"Malformed SRv6 Service Sub-TLV attribute - insufficient data (need %zu for attribute header, have %zu remaining in UPDATE)",
33513351
headersz, STREAM_READABLE(connection->curr));
33523352
return bgp_attr_malformed(args, BGP_NOTIFY_UPDATE_ATTR_LENG_ERR,
33533353
args->total);
@@ -3358,7 +3358,7 @@ bgp_attr_srv6_service(struct bgp_attr_parser_args *args)
33583358

33593359
if (STREAM_READABLE(connection->curr) < length) {
33603360
flog_err(EC_BGP_ATTR_LEN,
3361-
"Malformed SRv6 Service Sub-TLV attribute - insufficent data (need %hu for attribute data, have %zu remaining in UPDATE)",
3361+
"Malformed SRv6 Service Sub-TLV attribute - insufficient data (need %hu for attribute data, have %zu remaining in UPDATE)",
33623362
length, STREAM_READABLE(connection->curr));
33633363
return bgp_attr_malformed(args, BGP_NOTIFY_UPDATE_ATTR_LENG_ERR,
33643364
args->total);
@@ -3368,7 +3368,7 @@ bgp_attr_srv6_service(struct bgp_attr_parser_args *args)
33683368
if (STREAM_READABLE(connection->curr) <
33693369
BGP_PREFIX_SID_SRV6_L3_SERVICE_SID_INFO_LENGTH) {
33703370
flog_err(EC_BGP_ATTR_LEN,
3371-
"Malformed SRv6 Service Sub-TLV attribute - insufficent data (need %d for attribute data, have %zu remaining in UPDATE)",
3371+
"Malformed SRv6 Service Sub-TLV attribute - insufficient data (need %d for attribute data, have %zu remaining in UPDATE)",
33723372
BGP_PREFIX_SID_SRV6_L3_SERVICE_SID_INFO_LENGTH,
33733373
STREAM_READABLE(connection->curr));
33743374
return bgp_attr_malformed(
@@ -3633,7 +3633,7 @@ enum bgp_attr_parse_ret bgp_attr_prefix_sid(struct bgp_attr_parser_args *args)
36333633
while (STREAM_READABLE(connection->curr) > 0 && psid_parsed_length < args->length) {
36343634
if (STREAM_READABLE(connection->curr) < headersz) {
36353635
flog_err(EC_BGP_ATTR_LEN,
3636-
"Malformed Prefix SID attribute - insufficent data (need %zu for attribute header, have %zu remaining in UPDATE)",
3636+
"Malformed Prefix SID attribute - insufficient data (need %zu for attribute header, have %zu remaining in UPDATE)",
36373637
headersz, STREAM_READABLE(connection->curr));
36383638
return bgp_attr_malformed(
36393639
args, BGP_NOTIFY_UPDATE_ATTR_LENG_ERR,
@@ -4185,7 +4185,7 @@ enum bgp_attr_parse_ret bgp_attr_parse(struct peer *peer, struct attr *attr,
41854185
goto done;
41864186
}
41874187

4188-
/* Check extended attribue length bit. */
4188+
/* Check extended attribute length bit. */
41894189
if (CHECK_FLAG(flag, BGP_ATTR_FLAG_EXTLEN))
41904190
length = stream_getw(BGP_INPUT(connection));
41914191
else
@@ -4217,8 +4217,8 @@ enum bgp_attr_parse_ret bgp_attr_parse(struct peer *peer, struct attr *attr,
42174217
/* If attribute appears more than once in the UPDATE message,
42184218
* for MP_REACH_NLRI & MP_UNREACH_NLRI attributes
42194219
* the Error Subcode is set to Malformed Attribute List.
4220-
* For all other attributes, all the occurances of the attribute
4221-
* other than the first occurence is discarded. (RFC7606 3g)
4220+
* For all other attributes, all the occurrences of the attribute
4221+
* other than the first occurrence is discarded. (RFC7606 3g)
42224222
*/
42234223

42244224
if (CHECK_BITMAP(seen, type)) {
@@ -4484,7 +4484,7 @@ enum bgp_attr_parse_ret bgp_attr_parse(struct peer *peer, struct attr *attr,
44844484
/*
44854485
* At this stage, we have done all fiddling with as4, and the
44864486
* resulting info is in attr->aggregator resp. attr->aspath so
4487-
* we can chuck as4_aggregator and as4_path alltogether in order
4487+
* we can chuck as4_aggregator and as4_path altogether in order
44884488
* to save memory
44894489
*/
44904490
/*

bgpd/bgp_bfd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ extern void bgp_peer_remove_bfd_config(struct peer *p);
5656

5757
/**
5858
* Special function to handle the case of changing source address. This
59-
* happens when the peer/group is configured with `neigbor X update-source Y`.
59+
* happens when the peer/group is configured with `neighbor X update-source Y`.
6060
*/
6161
extern void bgp_peer_bfd_update_source(struct peer *p);
6262

bgpd/bgp_bmp.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1408,7 +1408,7 @@ static bool bmp_wrsync(struct bmp *bmp, struct pullwr *pullwr)
14081408
memset(&bmp->syncpos, 0,
14091409
sizeof(bmp->syncpos));
14101410
bmp->syncpos.family = afi2family(afi);
1411-
/* check whethere there is a valid
1411+
/* check whether there is a valid
14121412
* next mid-layer table, otherwise
14131413
* declare table completed (eor)
14141414
*/

bgpd/bgp_clist.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1420,7 +1420,7 @@ void extcommunity_list_unset(struct community_list_handler *ch,
14201420
route_map_notify_dependencies(name, RMAP_EVENT_ECLIST_DELETED);
14211421
}
14221422

1423-
/* Initializa community-list. Return community-list handler. */
1423+
/* Initialize community-list. Return community-list handler. */
14241424
struct community_list_handler *community_list_init(void)
14251425
{
14261426
struct community_list_handler *ch;

0 commit comments

Comments
 (0)