From: Timo Teräs Date: Wed, 24 Jun 2015 12:27:21 +0000 (+0300) Subject: bgpd: Make bgp_info_cmp robust to paths that do not have su_remote info X-Git-Tag: frr-2.0-rc1~617 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=43ed4fe5cb02360b028182719eec1db06405f463;p=mirror%2Ffrr.git bgpd: Make bgp_info_cmp robust to paths that do not have su_remote info My original su_remote == NULL check is not correct. It seems that * bgp_route.c: (bgp_info_cmp) Some bgp_info is compared with su_remote=NULL and it's supposed to be perfectly legal. E.g. configured subnet announces ("network a.b.c.d/n"). Ensure bgp_info_cmp is robust if such a path gets as far as the neighbour address comparison step. (cherry picked from commit 2820a01eed1c616d490ddbfd17793c19597459d1) Conflicts: bgpd/bgp_route.c --- diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 171b5c7add..f04d6db53b 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -803,6 +803,12 @@ bgp_info_cmp (struct bgp *bgp, struct bgp_info *new, struct bgp_info *exist, return 0; } + /* locally configured routes to advertise do not have su_remote */ + if (new->peer->su_remote == NULL) + return 0; + if (exist->peer->su_remote == NULL) + return 1; + ret = sockunion_cmp (new->peer->su_remote, exist->peer->su_remote); if (ret == 1)