static void
print_mtrace(netdissect_options *ndo,
+ const char *typename,
const u_char *bp, u_int len)
{
const struct tr_query *tr = (const struct tr_query *)(bp + 8);
ND_PRINT(" [invalid len %u]", len);
return;
}
- ND_PRINT("mtrace %u: %s to %s reply-to %s",
- GET_BE_U_3(tr->tr_qid),
- GET_IPADDR_STRING(tr->tr_src), GET_IPADDR_STRING(tr->tr_dst),
- GET_IPADDR_STRING(tr->tr_raddr));
- if (IN_CLASSD(GET_BE_U_4(tr->tr_raddr)))
- ND_PRINT(" with-ttl %u", GET_U_1(tr->tr_rttl));
- return;
-trunc:
- nd_print_trunc(ndo);
-}
-
-static void
-print_mresp(netdissect_options *ndo,
- const u_char *bp, u_int len)
-{
- const struct tr_query *tr = (const struct tr_query *)(bp + 8);
-
- ND_TCHECK_SIZE(tr);
- if (len < 8 + sizeof (struct tr_query)) {
- ND_PRINT(" [invalid len %u]", len);
- return;
- }
- ND_PRINT("mresp %u: %s to %s reply-to %s",
+ ND_PRINT("%s %u: %s to %s reply-to %s",
+ typename,
GET_BE_U_3(tr->tr_qid),
GET_IPADDR_STRING(tr->tr_src), GET_IPADDR_STRING(tr->tr_dst),
GET_IPADDR_STRING(tr->tr_raddr));
pimv1_print(ndo, bp, len);
break;
case 0x1e:
- print_mresp(ndo, bp, len);
+ print_mtrace(ndo, "mresp", bp, len);
break;
case 0x1f:
- print_mtrace(ndo, bp, len);
+ print_mtrace(ndo, "mtrace", bp, len);
break;
default:
ND_PRINT("igmp-%u", GET_U_1(bp));