nd_opt
struct nd_opt_hdr *nd_opt;
len = sizeof(*nd_opt) + ifp->if_addrlen;
nd_opt = (struct nd_opt_hdr *)p;
nd_opt->nd_opt_type = ND_OPT_TARGET_LINKADDR;
nd_opt->nd_opt_len = len >> 3;
lladdr = (char *)(nd_opt + 1);
struct nd_opt_hdr *nd_opt;
nd_opt = ndopts->nd_opts_search;
if ((caddr_t)&nd_opt->nd_opt_len >= (caddr_t)ndopts->nd_opts_last) {
olen = nd_opt->nd_opt_len << 3;
ndopts->nd_opts_search = (struct nd_opt_hdr *)((caddr_t)nd_opt + olen);
return nd_opt;
struct nd_opt_hdr *nd_opt;
nd_opt = nd6_option(ndopts);
if (nd_opt == NULL && ndopts->nd_opts_last == NULL) {
if (nd_opt == NULL)
switch (nd_opt->nd_opt_type) {
if (ndopts->nd_opt_array[nd_opt->nd_opt_type]) {
nd_opt->nd_opt_type));
ndopts->nd_opt_array[nd_opt->nd_opt_type]
= nd_opt;
if (ndopts->nd_opt_array[nd_opt->nd_opt_type] == 0) {
ndopts->nd_opt_array[nd_opt->nd_opt_type]
= nd_opt;
(struct nd_opt_prefix_info *)nd_opt;
"option ignored\n", nd_opt->nd_opt_type));
struct nd_opt_hdr *nd_opt = (struct nd_opt_hdr *)(nd_na + 1);
bzero((caddr_t)nd_opt, optlen);
nd_opt->nd_opt_type = ND_OPT_TARGET_LINKADDR;
nd_opt->nd_opt_len = optlen >> 3;
bcopy(mac, (caddr_t)(nd_opt + 1), ifp->if_addrlen);
struct nd_opt_hdr *nd_opt;
nd_opt = (struct nd_opt_hdr *)(nd_ns + 1);
bzero(nd_opt, optlen);
nd_opt->nd_opt_type = ND_OPT_SOURCE_LINKADDR;
nd_opt->nd_opt_len = optlen >> 3;
bcopy(mac, nd_opt + 1, ifp->if_addrlen);
struct nd_opt_hdr *nd_opt = (struct nd_opt_hdr *)(nd_ns + 1);
bzero((caddr_t)nd_opt, optlen);
nd_opt->nd_opt_type = ND_OPT_NONCE;
nd_opt->nd_opt_len = optlen >> 3;
bcopy(nonce, (caddr_t)(nd_opt + 1), ND_OPT_NONCE_LEN);
union nd_opt ndopts;
union nd_opt *ndopts, uint32_t optflags)
free_ndopts(union nd_opt *ndopts)
union nd_opt *, uint32_t);
static void free_ndopts(union nd_opt *);
union nd_opt ndopts;