cp = (const u_char *)ip6;
advance = sizeof(struct ip6_hdr);
nh = EXTRACT_U_1(ip6->ip6_nxt);
- dst_addr = (const void *)&ip6->ip6_dst;
+ dst_addr = (const void *)ip6->ip6_dst;
while (cp < ndo->ndo_snapend) {
cp += advance;
/*
* Compute a V6-style checksum by building a pseudoheader.
*/
-int
+uint16_t
nextproto6_cksum(netdissect_options *ndo,
const struct ip6_hdr *ip6, const uint8_t *data,
u_int len, u_int covlen, u_int next_proto)
/* pseudo-header */
memset(&ph, 0, sizeof(ph));
- UNALIGNED_MEMCPY(&ph.ph_src, &ip6->ip6_src, sizeof (struct in6_addr));
+ UNALIGNED_MEMCPY(&ph.ph_src, ip6->ip6_src, sizeof (struct in6_addr));
nh = EXTRACT_U_1(ip6->ip6_nxt);
switch (nh) {
break;
default:
- UNALIGNED_MEMCPY(&ph.ph_dst, &ip6->ip6_dst, sizeof (struct in6_addr));
+ UNALIGNED_MEMCPY(&ph.ph_dst, ip6->ip6_dst,
+ sizeof (struct in6_addr));
break;
}
ph.ph_len = htonl(len);
int fragmented = 0;
u_int flow;
+ ndo->ndo_protocol = "ip6";
ip6 = (const struct ip6_hdr *)bp;
ND_TCHECK_SIZE(ip6);
ND_PRINT("ip-proto-%u %u", nh, len);
return;
}
+
+ /* ndo_protocol reassignment after xxx_print() calls */
+ ndo->ndo_protocol = "ip6";
}
return;
trunc:
- ND_PRINT("[|ip6]");
+ nd_print_trunc(ndo);
}