Hi Paul On Wed, Apr 27, 2016 at 12:19 PM, Paul Jakma <[email protected]> wrote: > * bgp_packet.c: (bgp_update_receive) doesn't differentiate between NLRIs that > are 0 AFI/SAFI cause they weren't set, and those because a peer sent a > bogus AFI/SAFI, before sending sending what may be a misleading, spurious > log message. Check the .nlri pointer is set and avoid this. > > Incorporating a suggestion from: G. Paul Ziemba <[email protected]> > --- > bgpd/bgp_packet.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c > index 740b0f1..9cbb5b5 100644 > --- a/bgpd/bgp_packet.c > +++ b/bgpd/bgp_packet.c > @@ -1631,7 +1631,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size) > NLRI_TYPE_MAX, > }; > struct bgp_nlri nlris[NLRI_TYPE_MAX]; > - > + > /* Status must be Established. */ > if (peer->status != Established) > { > @@ -1645,6 +1645,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size) > memset (&attr, 0, sizeof (struct attr)); > memset (&extra, 0, sizeof (struct attr_extra)); > memset (&nlris, 0, sizeof nlris); > + > attr.extra = &extra; > > s = peer->ibuf; > @@ -1781,6 +1782,8 @@ bgp_update_receive (struct peer *peer, bgp_size_t size) > /* Parse any given NLRIs */ > for (i = NLRI_UPDATE; i < NLRI_TYPE_MAX; i++) > { > + if (!nlris[i].nlri) continue; > + > /* We use afi and safi as indices into tables and what not. It would > * be impossible, at this time, to support unknown afi/safis. And > * anyway, the peer needs to be configured to enable the afi/safi > -- > 2.5.5 > > > _______________________________________________ > Quagga-dev mailing list > [email protected] > https://lists.quagga.net/mailman/listinfo/quagga-dev
Acked-by: Philippe Guibert <[email protected]> _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
