pktinfo
struct in_pktinfo *pktinfo;
pktinfo = cmsg2pktinfo(cmsgptr);
to->sin_addr = pktinfo->ipi_addr;
struct in6_pktinfo *pktinfo;
pktinfo = cmsg2pktinfo6(cmsgptr);
to->sin6_addr = pktinfo->ipi6_addr;
auxaddr->ipv6_ifindex = pktinfo->ipi6_ifindex;
char cmsg[CMSG_SPACE(sizeof(union pktinfo))];
char cbuf[CMSG_SPACE(sizeof(union pktinfo))];
(void *)&pktinfo, sizeof(pktinfo)))
memcpy(cmsg_pktinfo, &pktinfo, sizeof(pktinfo));
struct in6_pktinfo *pktinfo = NULL;
if ((pktinfo = get_rcvpktinfo(mhdr)) == NULL) {
dstsa.sin6_scope_id = pktinfo->ipi6_ifindex;
dstsa.sin6_addr = pktinfo->ipi6_addr;
struct in6_pktinfo pktinfo;
memset(&pktinfo, 0, sizeof(pktinfo));
if ((pktinfo.ipi6_ifindex = if_nametoindex(ifname)) == 0)
struct in6_pktinfo *pktinfo;
pktinfo = (struct in6_pktinfo *)CMSG_DATA(cm);
if (!IN6_IS_ADDR_V4MAPPED(&pktinfo->ipi6_addr) &&
!IN6_IS_ADDR_UNSPECIFIED(&pktinfo->ipi6_addr))
if (pktinfo->ipi6_ifindex) {
ifp = ifnet_byindex(pktinfo->ipi6_ifindex);
if (ifp != NULL && !IN6_IS_ADDR_UNSPECIFIED(&pktinfo->ipi6_addr)) {
ia.s_addr = pktinfo->ipi6_addr.s6_addr32[3];
src->sin_addr.s_addr = pktinfo->ipi6_addr.s6_addr32[3];
struct in6_pktinfo *pktinfo;
pktinfo = (struct in6_pktinfo *)buf;
pktinfo->ipi6_ifindex == 0 &&
IN6_IS_ADDR_UNSPECIFIED(&pktinfo->ipi6_addr)) {
sticky && !IN6_IS_ADDR_UNSPECIFIED(&pktinfo->ipi6_addr)) {
if (IN6_IS_ADDR_MULTICAST(&pktinfo->ipi6_addr))
if (pktinfo->ipi6_ifindex) {
ifp = ifnet_byindex(pktinfo->ipi6_ifindex);
!IN6_IS_ADDR_UNSPECIFIED(&pktinfo->ipi6_addr)) {
in6_setscope(&pktinfo->ipi6_addr, ifp, NULL);
ia = in6ifa_ifpwithaddr(ifp, &pktinfo->ipi6_addr);
opt->ip6po_pktinfo = malloc(sizeof(*pktinfo),
bcopy(pktinfo, opt->ip6po_pktinfo, sizeof(*pktinfo));