+ case ICMP6_HADISCOV_REQUEST:
+ case ICMP6_HADISCOV_REPLY:
+ {
+ struct in6_addr *in6;
+ u_int32_t *res;
+ u_char *cp;
+ printf("icmp6: ha discovery %s: ",
+ dp->icmp6_type == ICMP6_HADISCOV_REQUEST ?
+ "request" : "reply");
+ TCHECK(dp->icmp6_data16[0]);
+ printf("id=%d", ntohs(dp->icmp6_data16[0]));
+ cp = (u_char *)dp + icmp6len;
+ res = (u_int32_t *)(dp + 1);
+ in6 = (struct in6_addr *)(res + 2);
+ for (; (u_char *)in6 < cp; in6++) {
+ TCHECK(*in6);
+ printf(", %s", ip6addr_string(in6));
+ }
+ break;
+ }
+ case ICMP6_MOBILEPREFIX_SOLICIT:
+ case ICMP6_MOBILEPREFIX_ADVERT: