mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 22:09:48 +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>
This commit is contained in:
parent
48f5d828e3
commit
714e5be9a0
@ -1526,6 +1526,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)
|
||||
@ -1533,6 +1534,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