mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-03 20:55:25 +00:00
bgpd: Ignore validating the attribute flags if path-attribute is configured
E.g. Cisco sends AIGP attribute as transitive, but it's wrong. Hence, the session
is teared down, because of this bgp_attr_flag_invalid() test.
Relax this check if we have `neighbor X path-attribute <discard|treat-as-withdraw>`
configured.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 714e5be9a0
)
This commit is contained in:
parent
325a061690
commit
408cf3786e
@ -1517,6 +1517,7 @@ static bool bgp_attr_flag_invalid(struct bgp_attr_parser_args *args)
|
||||
uint8_t mask = BGP_ATTR_FLAG_EXTLEN;
|
||||
const uint8_t flags = args->flags;
|
||||
const uint8_t attr_code = args->type;
|
||||
struct peer *peer = args->peer;
|
||||
|
||||
/* there may be attributes we don't know about */
|
||||
if (attr_code > attr_flags_values_max)
|
||||
@ -1524,6 +1525,14 @@ static bool bgp_attr_flag_invalid(struct bgp_attr_parser_args *args)
|
||||
if (attr_flags_values[attr_code] == 0)
|
||||
return false;
|
||||
|
||||
/* If `neighbor X path-attribute <discard|treat-as-withdraw>` is
|
||||
* configured, then ignore checking optional, trasitive flags.
|
||||
* The attribute/route will be discarded/withdrawned later instead
|
||||
* of dropping the session.
|
||||
*/
|
||||
if (peer->discard_attrs[attr_code] || peer->withdraw_attrs[attr_code])
|
||||
return false;
|
||||
|
||||
/* RFC4271, "For well-known attributes, the Transitive bit MUST be set
|
||||
* to
|
||||
* 1."
|
||||
|
Loading…
Reference in New Issue
Block a user