icmp6_nodeinfo
struct icmp6_nodeinfo *nip;
nip = (struct icmp6_nodeinfo *)outpack;
mynireply(const struct icmp6_nodeinfo *nip)
struct icmp6_nodeinfo *ni;
ni = (struct icmp6_nodeinfo *)buf;
pr_suptypes(struct icmp6_nodeinfo *ni /* ni->qtype must be SUPTYPES */,
pr_nodeaddr(struct icmp6_nodeinfo *ni, /* ni->qtype must be NODEADDR */
nilen -= sizeof(struct icmp6_nodeinfo);
struct icmp6_nodeinfo *ni;
ni = (struct icmp6_nodeinfo *)icp;
ni = (struct icmp6_nodeinfo *)icp;
static void pr_suptypes(struct icmp6_nodeinfo *, size_t);
static void pr_nodeaddr(struct icmp6_nodeinfo *, int);
static int mynireply(const struct icmp6_nodeinfo *);
__CTASSERT(sizeof(struct icmp6_nodeinfo) == 16);
struct icmp6_nodeinfo *ni6, *nni6;
int replylen = sizeof(struct ip6_hdr) + sizeof(struct icmp6_nodeinfo);
IP6_EXTHDR_GET(ni6, struct icmp6_nodeinfo *, m, off, sizeof(*ni6));
subjlen = m->m_pkthdr.len - off - sizeof(struct icmp6_nodeinfo);
m_copydata(m, off + sizeof(struct icmp6_nodeinfo),
off + sizeof(struct icmp6_nodeinfo), subjlen);
if ((icmp6_nodeinfo & 1) == 0)
if ((icmp6_nodeinfo & 2) == 0)
nni6 = (struct icmp6_nodeinfo *)(mtod(n, struct ip6_hdr *) + 1);
bcopy((void *)ni6, (void *)nni6, sizeof(struct icmp6_nodeinfo));
sizeof(struct ip6_hdr) + sizeof(struct icmp6_nodeinfo));
sizeof(struct icmp6_nodeinfo);
sizeof(struct icmp6_nodeinfo) + copied;
extern int icmp6_nodeinfo;
ni6_addrs(struct icmp6_nodeinfo *ni6, struct ifnet **ifpp, char *subj,
ni6_store_addrs(struct icmp6_nodeinfo *ni6,
struct icmp6_nodeinfo *nni6, struct ifnet *ifp0,
static int ni6_addrs(struct icmp6_nodeinfo *, struct ifnet **, char *,
static int ni6_store_addrs(struct icmp6_nodeinfo *, struct icmp6_nodeinfo *,
NULL, 0, &icmp6_nodeinfo, 0,
if (!icmp6_nodeinfo)
else if (icmp6len >= sizeof(struct icmp6_nodeinfo))
if ((icmp6_nodeinfo & 5) != 5)
int icmp6_nodeinfo = 1; /* enable/disable NI response */