0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00

Fixes BGPv6 bug - mandatory attributes weren't validated;

This commit is contained in:
Ondrej Zajicek 2009-04-23 14:44:02 +02:00
parent 8f0c887a52
commit f307842ad8

View File

@ -1355,11 +1355,11 @@ bgp_decode_attrs(struct bgp_conn *conn, byte *attr, unsigned int len, struct lin
} }
#ifdef IPV6 #ifdef IPV6
if (seen[BA_MP_REACH_NLRI / 8] & (1 << (BA_MP_REACH_NLRI % 8))) /* If we received MP_REACH_NLRI we should check mandatory attributes */
if (bgp->mp_reach_len != 0)
mandatory = 1; mandatory = 1;
#endif #endif
/* If there is no (reachability) NLRI, we should exit now */ /* If there is no (reachability) NLRI, we should exit now */
if (! mandatory) if (! mandatory)
return a; return a;
@ -1396,6 +1396,7 @@ bgp_decode_attrs(struct bgp_conn *conn, byte *attr, unsigned int len, struct lin
/* If there's no local preference, define one */ /* If there's no local preference, define one */
if (!(seen[0] & (1 << BA_LOCAL_PREF))) if (!(seen[0] & (1 << BA_LOCAL_PREF)))
bgp_attach_attr(&a->eattrs, pool, BA_LOCAL_PREF, 0); bgp_attach_attr(&a->eattrs, pool, BA_LOCAL_PREF, 0);
return a; return a;
loop: loop: