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
This commit is contained in:
Timo Teräs 2015-06-24 15:27:21 +03:00 committed by vivek
parent b4575c00ce
commit 43ed4fe5cb

View File

@ -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)