- printf("\n\t checksum: 0x%04x (%s)",
- EXTRACT_16BITS(tptr),
- (osi_cksum(optr, length)) ? "incorrect" : "correct");
+ printf("\n\t checksum: 0x%04x ", EXTRACT_16BITS(tptr));
+ /* do not attempt to verify the checksum if it is zero
+ * most likely a HMAC-MD5 TLV is also present and
+ * to avoid conflicts the checksum TLV is zeroed.
+ * see rfc3358 for details
+ */
+ if (EXTRACT_16BITS(tptr) == 0)
+ printf("(unverified)");
+ else printf("(%s)", osi_cksum(optr, length) ? "incorrect" : "correct");