]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: fix attr comparaison bgp_adj_in_set 15258/head
authorLouis Scalbert <louis.scalbert@6wind.com>
Tue, 30 Jan 2024 14:18:43 +0000 (15:18 +0100)
committerLouis Scalbert <louis.scalbert@6wind.com>
Tue, 30 Jan 2024 14:24:32 +0000 (15:24 +0100)
In bgp_adj_in_set(), attr has not yet been interned. adj->attr is always
different from attr. adj->attr is always uninterned and interned even if
attr and adj->attr are identical.

Fix the comparison.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
bgpd/bgp_advertise.c

index 2ca3ffaa1ae84bab8fc4d75132260721b8f2ce13..a81f288c7accd2016aa0bf5fa358a3540d343f48 100644 (file)
@@ -169,7 +169,7 @@ void bgp_adj_in_set(struct bgp_dest *dest, struct peer *peer, struct attr *attr,
 
        for (adj = dest->adj_in; adj; adj = adj->next) {
                if (adj->peer == peer && adj->addpath_rx_id == addpath_id) {
-                       if (adj->attr != attr) {
+                       if (!attrhash_cmp(adj->attr, attr)) {
                                bgp_attr_unintern(&adj->attr);
                                adj->attr = bgp_attr_intern(attr);
                        }