/* \summary: Open Shortest Path First (OSPF) printer */
-#ifdef HAVE_CONFIG_H
#include <config.h>
-#endif
#include "netdissect-stdinc.h"
static const struct tok ospf_rla_flag_values[] = {
{ RLA_FLAG_B, "ABR" },
{ RLA_FLAG_E, "ASBR" },
- { RLA_FLAG_W1, "Virtual" },
- { RLA_FLAG_W2, "W2" },
+ { RLA_FLAG_V, "Virtual" },
+ { RLA_FLAG_W, "Wildcard" },
{ RLA_FLAG_NT, "Nt" },
+ { RLA_FLAG_H, "Host" },
{ 0, NULL }
};
GET_IPADDR_STRING(lsap->lsa_un.un_nla.nla_mask));
ap = lsap->lsa_un.un_nla.nla_router;
while ((const u_char *)ap < ls_end) {
- ND_TCHECK_SIZE(ap);
- ND_PRINT("\n\t %s", GET_IPADDR_STRING(*ap));
+ ND_PRINT("\n\t %s", GET_IPADDR_STRING(ap));
++ap;
}
break;
break;
}
+
+ /* in OSPF everything has to be 32-bit aligned, including TLVs */
+ if (tlv_length % 4) {
+ tlv_length += (4 - (tlv_length % 4));
+ }
tptr+=tlv_length;
ls_length_remaining-=tlv_length;
}
if ((const u_char *)ap < dataend)
ND_PRINT("\n\t Neighbor List:");
while ((const u_char *)ap < dataend) {
- ND_TCHECK_SIZE(ap);
- ND_PRINT("\n\t %s", GET_IPADDR_STRING(*ap));
+ ND_PRINT("\n\t %s", GET_IPADDR_STRING(ap));
++ap;
}
break; /* HELLO */
case OSPF_TYPE_LS_ACK:
lshp = op->ospf_lsa.lsa_lshdr;
- while (ospf_print_lshdr(ndo, lshp) != -1) {
+ while ((const u_char *)lshp < dataend) {
+ ospf_print_lshdr(ndo, lshp);
++lshp;
}
break;