l3addr
const struct sockaddr *l3addr);
lla_lookup(struct lltable *llt, u_int flags, const struct sockaddr *l3addr)
return (llt->llt_lookup(llt, flags, l3addr));
lla_create(struct lltable *llt, u_int flags, const struct sockaddr *l3addr,
return (llt->llt_create(llt, flags, l3addr, rt));
lla_delete(struct lltable *llt, u_int flags, const struct sockaddr *l3addr)
return (llt->llt_delete(llt, flags, l3addr));
union l3addr src, *psrc;
union l3addr dst, src, *psrc;
union l3addr taddr, *daddrp = NULL;
union l3addr *(*nd_holdsrc)(struct llentry *, union l3addr *);
void (*nd_output)(struct ifnet *, const union l3addr *,
const union l3addr *, const uint8_t *, const union l3addr *);
void (*nd_missed)(struct ifnet *, const union l3addr *,
static union l3addr *
arp_llinfo_holdsrc(struct llentry *ln, union l3addr *src)
arp_llinfo_output(struct ifnet *ifp, __unused const union l3addr *daddr,
const union l3addr *taddr, const uint8_t *tlladdr,
const union l3addr *hsrc)
arp_llinfo_missed(struct ifnet *ifp, const union l3addr *taddr,
static union l3addr *arp_llinfo_holdsrc(struct llentry *, union l3addr *);
static void arp_llinfo_output(struct ifnet *, const union l3addr *,
const union l3addr *, const uint8_t *, const union l3addr *);
static void arp_llinfo_missed(struct ifnet *, const union l3addr *,
in_lltable_rtcheck(struct ifnet *ifp, u_int flags, const struct sockaddr *l3addr,
memcmp(rt->rt_gateway->sa_data, l3addr->sa_data,
addr = (const char *)l3addr;
len = ((const struct sockaddr_in *)l3addr)->sin_len;
inet_ntoa(((const struct sockaddr_in *)l3addr)->sin_addr));
const struct sockaddr *l3addr)
const struct sockaddr_in *sin = (const struct sockaddr_in *)l3addr;
KASSERTMSG(l3addr->sa_family == AF_INET,
"sin_family %d", l3addr->sa_family);
sockaddr_format(l3addr, buf, sizeof(buf));
sockaddr_format(l3addr, buf, sizeof(buf));
in_lltable_create(struct lltable *llt, u_int flags, const struct sockaddr *l3addr,
const struct sockaddr_in *sin = (const struct sockaddr_in *)l3addr;
KASSERTMSG(l3addr->sa_family == AF_INET,
"sin_family %d", l3addr->sa_family);
in_lltable_rtcheck(ifp, flags, l3addr, rt) != 0)
in_lltable_lookup(struct lltable *llt, u_int flags, const struct sockaddr *l3addr)
const struct sockaddr_in *sin = (const struct sockaddr_in *)l3addr;
KASSERTMSG(l3addr->sa_family == AF_INET,
"sin_family %d", l3addr->sa_family);
const struct sockaddr *l3addr, const struct rtentry *rt)
ifa = ifaof_ifpforaddr(l3addr, ifp);
&((const struct sockaddr_in6 *)l3addr)->sin6_addr));
const struct sockaddr *l3addr)
const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)l3addr;
KASSERTMSG(l3addr->sa_family == AF_INET6,
"sin_family %d", l3addr->sa_family);
sockaddr_format(l3addr, buf, sizeof(buf));
sockaddr_format(l3addr, buf, sizeof(buf));
const struct sockaddr *l3addr, const struct rtentry *rt)
const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)l3addr;
KASSERTMSG(l3addr->sa_family == AF_INET6,
"sin_family %d", l3addr->sa_family);
in6_lltable_rtcheck(ifp, flags, l3addr, rt) != 0)
const struct sockaddr *l3addr)
const struct sockaddr_in6 *sin6 = (const struct sockaddr_in6 *)l3addr;
KASSERTMSG(l3addr->sa_family == AF_INET6,
"sin_family %d", l3addr->sa_family);
static union l3addr *nd6_llinfo_holdsrc(struct llentry *, union l3addr *);
static void nd6_llinfo_output(struct ifnet *, const union l3addr *,
const union l3addr *, const uint8_t *, const union l3addr *);
static void nd6_llinfo_missed(struct ifnet *, const union l3addr *,
static union l3addr *
nd6_llinfo_holdsrc(struct llentry *ln, union l3addr *src)
nd6_llinfo_output(struct ifnet *ifp, const union l3addr *daddr,
const union l3addr *taddr, __unused const uint8_t *tlladdr,
const union l3addr *hsrc)
nd6_llinfo_missed(struct ifnet *ifp, const union l3addr *taddr,