|
|
|
|
@ -287,6 +287,7 @@ forward:
|
|
|
|
|
mh.msg_name = &sin;
|
|
|
|
|
mh.msg_namelen = sizeof(sin);
|
|
|
|
|
|
|
|
|
|
ipv4_src:
|
|
|
|
|
ch->cmsg_len = CMSG_LEN(sizeof(*pi));
|
|
|
|
|
ch->cmsg_level = IPPROTO_IP;
|
|
|
|
|
ch->cmsg_type = IP_PKTINFO;
|
|
|
|
|
@ -307,6 +308,9 @@ forward:
|
|
|
|
|
mh.msg_name = &sin6;
|
|
|
|
|
mh.msg_namelen = sizeof(sin6);
|
|
|
|
|
|
|
|
|
|
if (IN6_IS_ADDR_V4MAPPED(&sin6.sin6_addr))
|
|
|
|
|
goto ipv4_src;
|
|
|
|
|
|
|
|
|
|
ch->cmsg_len = CMSG_LEN(sizeof(*pi6));
|
|
|
|
|
ch->cmsg_level = IPPROTO_IPV6;
|
|
|
|
|
ch->cmsg_type = IPV6_PKTINFO;
|
|
|
|
|
|