#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-bgp.c,v 1.97 2005-06-03 07:28:24 hannes Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-bgp.c,v 1.98 2005-10-16 18:14:55 guy Exp $";
#endif
#include <tcpdump-stdinc.h>
stacked labels in a a single BGP message
*/
+ if (24 > plen)
+ return -1;
+
plen-=24; /* adjust prefixlen - labellength */
if (32 < plen)
TCHECK(pptr[0]);
plen = pptr[0]; /* get prefix length */
+ if (0 == plen)
+ return 1; /* default route target */
+
+ if (32 > plen)
+ return -1;
+
plen-=32; /* adjust prefix length */
- if (0 < plen)
+ if (64 < plen)
return -1;
memset(&route_target, 0, sizeof(route_target));
TCHECK(pptr[0]);
plen = pptr[0]; /* get prefix length */
+ if ((24+64) > plen)
+ return -1;
+
plen-=(24+64); /* adjust prefixlen - labellength - RD len*/
if (32 < plen)
TCHECK(pptr[0]);
plen = pptr[0]; /* get prefix length */
+
+ if (24 > plen)
+ return -1;
+
plen-=24; /* adjust prefixlen - labellength */
if (128 < plen)
TCHECK(pptr[0]);
plen = pptr[0]; /* get prefix length */
+ if ((24+64) > plen)
+ return -1;
+
plen-=(24+64); /* adjust prefixlen - labellength - RD len*/
if (128 < plen)
TCHECK(pptr[0]);
plen = pptr[0]; /* get prefix length */
+ if ((24+64) > plen)
+ return -1;
+
plen-=(24+64); /* adjust prefixlen - labellength - RD len*/
if (152 < plen)