mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 07:48:07 +00:00
bgpd: don't try to reconcile AS4_PATH with NULL
bgp_attr_munge_as4_attrs would previously try to reintegrate an AS4_PATH with a NULL AS_PATH, leading to a rather nasty SEGV. Let's go by RFC6793 and treat missing AS_PATH as 0-length AS_PATH, which in turn means discarding the AS4_PATH. [NB: we don't actually stick to the actual rule, which is discarding AS4_PATH if it's longer than AS_PATH; indeed we should probably fix that too] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
955be06f8a
commit
f47e5a18b5
@ -1360,6 +1360,9 @@ bgp_attr_munge_as4_attrs (struct peer *const peer,
|
|||||||
/* need to reconcile NEW_AS_PATH and AS_PATH */
|
/* need to reconcile NEW_AS_PATH and AS_PATH */
|
||||||
if (!ignore_as4_path && (attr->flag & (ATTR_FLAG_BIT( BGP_ATTR_AS4_PATH))))
|
if (!ignore_as4_path && (attr->flag & (ATTR_FLAG_BIT( BGP_ATTR_AS4_PATH))))
|
||||||
{
|
{
|
||||||
|
if (!attr->aspath)
|
||||||
|
return BGP_ATTR_PARSE_PROCEED;
|
||||||
|
|
||||||
newpath = aspath_reconcile_as4 (attr->aspath, as4_path);
|
newpath = aspath_reconcile_as4 (attr->aspath, as4_path);
|
||||||
aspath_unintern (&attr->aspath);
|
aspath_unintern (&attr->aspath);
|
||||||
attr->aspath = aspath_intern (newpath);
|
attr->aspath = aspath_intern (newpath);
|
||||||
|
Loading…
Reference in New Issue
Block a user