{ 0, NULL }
};
+static const struct tok ni_ipv4addr_flag_values[] = {
+ { NI_NODEADDR_FLAG_TRUNCATE, "T" },
+ { NI_NODEADDR_FLAG_ALL, "A" },
+ { 0, NULL }
+};
+
struct ni_reply_fqdn {
nd_uint32_t ni_fqdn_ttl; /* TTL */
nd_uint8_t ni_fqdn_namelen; /* length in octets of the FQDN */
if (flags & NI_NODEADDR_FLAG_TRUNCATE)
ND_PRINT(" [invalid flag Truncate present]");
break;
+ case NI_QTYPE_IPV4ADDR:
+ ND_PRINT("ipv4 addresses");
+ flags = GET_BE_U_2(ni6->ni_flags);
+ if (flags)
+ ND_PRINT(" [%s]",
+ bittok2str_nosep(ni_ipv4addr_flag_values,
+ "none", flags));
+ if (flags & NI_NODEADDR_FLAG_TRUNCATE)
+ ND_PRINT(" [invalid flag Truncate present]");
+ break;
default:
ND_PRINT("unknown");
break;
i += sizeof(uint32_t) + sizeof(nd_ipv6);
}
break;
+ case NI_QTYPE_IPV4ADDR:
+ if (needcomma)
+ ND_PRINT(", ");
+ ND_PRINT("ipv4 addresses");
+ flags = GET_BE_U_2(ni6->ni_flags);
+ if (flags)
+ ND_PRINT(" [%s]",
+ bittok2str_nosep(ni_nodeaddr_flag_values,
+ "none", flags));
+ cp = (const u_char *)(ni6 + 1);
+ while (cp < ep) {
+ uint32_t ttl;
+
+ ttl = GET_BE_U_4(cp);
+ cp += 4;
+ ND_PRINT(" %s(%u)", GET_IPADDR_STRING(cp), ttl);
+ cp += 4;
+ }
+ break;
default:
if (needcomma)
ND_PRINT(", ");
icmpv6-RFC2894-RR icmpv6-RFC2894-RR.pcap icmpv6-RFC2894-RR.out
icmpv6-RFC2894-RR-v icmpv6-RFC2894-RR.pcap icmpv6-RFC2894-RR-v.out -v
icmpv6-ni-flags icmpv6-ni-flags.pcap icmpv6-ni-flags.out
+icmpv6_nodeinfo_queryipv4 icmpv6_nodeinfo_queryipv4.pcap icmpv6_nodeinfo_queryipv4.out -v
+icmpv6_nodeinfo_replyipv4 icmpv6_nodeinfo_replyipv4.pcap icmpv6_nodeinfo_replyipv4.out -v
icmpv6_nodeinfo_queryipv6 icmpv6_nodeinfo_queryipv6.pcap icmpv6_nodeinfo_queryipv6.out -v
icmpv6_nodeinfo_replyipv6 icmpv6_nodeinfo_replyipv6.pcap icmpv6_nodeinfo_replyipv6.out -v