#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.49 2004-01-08 22:08:40 hannes Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.51 2004-03-24 02:32:27 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
{ LS_OPAQUE_TE_LINK_SUBTLV_LINK_PROTECTION_TYPE, "Link Protection Type" },
{ LS_OPAQUE_TE_LINK_SUBTLV_INTF_SW_CAP_DESCR, "Interface Switching Capability" },
{ LS_OPAQUE_TE_LINK_SUBTLV_SHARED_RISK_GROUP, "Shared Risk Link Group" },
+ { LS_OPAQUE_TE_LINK_SUBTLV_DIFFSERV_TE, "Diffserv TE" },
{ 0, NULL }
};
register const struct aslametric *almp;
register const struct mcla *mcp;
register const u_int32_t *lp;
- register int j, k, tlv_type, tlv_length, subtlv_type, subtlv_length, priority_level;
+ register int j, k, tlv_type, tlv_length, subtlv_type, subtlv_length, priority_level, bandwidth_constraint;
register int ls_length;
const u_int8_t *tptr;
int count_srlg;
tptr = (u_int8_t *)(&lsap->lsa_un.un_grace_tlv.type);
while (ls_length != 0) {
- if (!TTEST2(*tptr, 4))
- goto trunc;
+ TCHECK2(*tptr, 4);
if (ls_length < 4) {
printf("\n\t Remaining LS length %u < 4", ls_length);
return(ls_end);
return(ls_end);
}
ls_length-=tlv_length;
+ TCHECK2(*tptr, tlv_length);
switch(tlv_type) {
case LS_OPAQUE_GRACE_TLV_PERIOD:
tptr = (u_int8_t *)(&lsap->lsa_un.un_te_lsa_tlv.type);
while (ls_length != 0) {
- if (!TTEST2(*tptr, 4))
- goto trunc;
+ TCHECK2(*tptr, 4);
if (ls_length < 4) {
printf("\n\t Remaining LS length %u < 4", ls_length);
return(ls_end);
tlv_length);
return(ls_end);
}
- if (!TTEST2(*tptr, 4))
- goto trunc;
+ TCHECK2(*tptr, 4);
subtlv_type = EXTRACT_16BITS(tptr);
subtlv_length = EXTRACT_16BITS(tptr+2);
tptr+=4;
subtlv_type,
subtlv_length);
- if (!TTEST2(*tptr, subtlv_length))
- goto trunc;
+ TCHECK2(*tptr, subtlv_length);
switch(subtlv_type) {
case LS_OPAQUE_TE_LINK_SUBTLV_ADMIN_GROUP:
printf(", 0x%08x", EXTRACT_32BITS(tptr));
bw.f*8/1000000 );
}
break;
+ case LS_OPAQUE_TE_LINK_SUBTLV_DIFFSERV_TE:
+ printf("\n\t\tBandwidth Constraints Model ID: (%u)", *tptr);
+ for (bandwidth_constraint = 0; bandwidth_constraint < 8; bandwidth_constraint++) {
+ bw.i = EXTRACT_32BITS(tptr+4+bandwidth_constraint*4);
+ printf("\n\t\t Bandwidth constraint %d: %.3f Mbps",
+ bandwidth_constraint,
+ bw.f*8/1000000 );
+ }
+ break;
case LS_OPAQUE_TE_LINK_SUBTLV_TE_METRIC:
printf(", Metric %u", EXTRACT_32BITS(tptr));
break;
break;
case LS_OPAQUE_TE_TLV_ROUTER:
+ if (tlv_length < 4) {
+ printf("\n\t TLV length %u < 4", tlv_length);
+ return(ls_end);
+ }
+ TCHECK2(*tptr, 4);
printf(", %s", ipaddr_string(tptr));
break;