|
|
|
@ -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; |
|
|
|
|