Skip to content

Commit

Permalink
Merge pull request #15236 from louis-6wind/fix-label-cmp
Browse files Browse the repository at this point in the history
bgpd: fix mpls label pointer comparison
  • Loading branch information
donaldsharp authored Jan 28, 2024
2 parents 4cb03ca + db1bb52 commit 4d92bad
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions bgpd/bgp_route.c
Original file line number Diff line number Diff line change
Expand Up @@ -4520,12 +4520,12 @@ void bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
hook_call(bgp_process, bgp, afi, safi, dest, peer, true);

/* Same attribute comes in. */
if (!CHECK_FLAG(pi->flags, BGP_PATH_REMOVED)
&& same_attr
&& (!has_valid_label
|| memcmp(&(bgp_path_info_extra_get(pi))->label, label,
num_labels * sizeof(mpls_label_t))
== 0)) {
if (!CHECK_FLAG(pi->flags, BGP_PATH_REMOVED) && same_attr &&
(!has_valid_label ||
(bgp_path_info_extra_get(pi) &&
bgp_labels_same((const mpls_label_t *)pi->extra->label,
pi->extra->num_labels, label,
num_labels)))) {
if (CHECK_FLAG(bgp->af_flags[afi][safi],
BGP_CONFIG_DAMPENING)
&& peer->sort == BGP_PEER_EBGP
Expand Down Expand Up @@ -4710,7 +4710,9 @@ void bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
/* Update MPLS label */
if (has_valid_label) {
extra = bgp_path_info_extra_get(pi);
if (extra->label != label) {
if (!bgp_labels_same((const mpls_label_t *)extra->label,
extra->num_labels, label,
num_labels)) {
memcpy(&extra->label, label,
num_labels * sizeof(mpls_label_t));
extra->num_labels = num_labels;
Expand Down Expand Up @@ -4909,7 +4911,8 @@ void bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
/* Update MPLS label */
if (has_valid_label) {
extra = bgp_path_info_extra_get(new);
if (extra->label != label) {
if (!bgp_labels_same((const mpls_label_t *)extra->label,
extra->num_labels, label, num_labels)) {
memcpy(&extra->label, label,
num_labels * sizeof(mpls_label_t));
extra->num_labels = num_labels;
Expand Down

0 comments on commit 4d92bad

Please sign in to comment.