linux-user: Add missing IPV6 sockopts
When running ssh over IPv6 with linux-user I faced this warning: Unsupported setsockopt level=41 optname=67 setsockopt IPV6_TCLASS 32: Protocol not available: This patch adds code to the linux-user emulatation for setting and retrieving of a few missing IPV6 options, including IPV6_TCLASS. Signed-off-by: Helge Deller <deller@gmx.de> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
parent
68a7b9724f
commit
b9cce6d756
@ -1864,6 +1864,28 @@ static abi_long do_setsockopt(int sockfd, int level, int optname,
|
||||
case IPV6_RECVHOPLIMIT:
|
||||
case IPV6_2292HOPLIMIT:
|
||||
case IPV6_CHECKSUM:
|
||||
case IPV6_ADDRFORM:
|
||||
case IPV6_2292PKTINFO:
|
||||
case IPV6_RECVTCLASS:
|
||||
case IPV6_RECVRTHDR:
|
||||
case IPV6_2292RTHDR:
|
||||
case IPV6_RECVHOPOPTS:
|
||||
case IPV6_2292HOPOPTS:
|
||||
case IPV6_RECVDSTOPTS:
|
||||
case IPV6_2292DSTOPTS:
|
||||
case IPV6_TCLASS:
|
||||
#ifdef IPV6_RECVPATHMTU
|
||||
case IPV6_RECVPATHMTU:
|
||||
#endif
|
||||
#ifdef IPV6_TRANSPARENT
|
||||
case IPV6_TRANSPARENT:
|
||||
#endif
|
||||
#ifdef IPV6_FREEBIND
|
||||
case IPV6_FREEBIND:
|
||||
#endif
|
||||
#ifdef IPV6_RECVORIGDSTADDR
|
||||
case IPV6_RECVORIGDSTADDR:
|
||||
#endif
|
||||
val = 0;
|
||||
if (optlen < sizeof(uint32_t)) {
|
||||
return -TARGET_EINVAL;
|
||||
@ -2358,6 +2380,28 @@ static abi_long do_getsockopt(int sockfd, int level, int optname,
|
||||
case IPV6_RECVHOPLIMIT:
|
||||
case IPV6_2292HOPLIMIT:
|
||||
case IPV6_CHECKSUM:
|
||||
case IPV6_ADDRFORM:
|
||||
case IPV6_2292PKTINFO:
|
||||
case IPV6_RECVTCLASS:
|
||||
case IPV6_RECVRTHDR:
|
||||
case IPV6_2292RTHDR:
|
||||
case IPV6_RECVHOPOPTS:
|
||||
case IPV6_2292HOPOPTS:
|
||||
case IPV6_RECVDSTOPTS:
|
||||
case IPV6_2292DSTOPTS:
|
||||
case IPV6_TCLASS:
|
||||
#ifdef IPV6_RECVPATHMTU
|
||||
case IPV6_RECVPATHMTU:
|
||||
#endif
|
||||
#ifdef IPV6_TRANSPARENT
|
||||
case IPV6_TRANSPARENT:
|
||||
#endif
|
||||
#ifdef IPV6_FREEBIND
|
||||
case IPV6_FREEBIND:
|
||||
#endif
|
||||
#ifdef IPV6_RECVORIGDSTADDR
|
||||
case IPV6_RECVORIGDSTADDR:
|
||||
#endif
|
||||
if (get_user_u32(len, optlen))
|
||||
return -TARGET_EFAULT;
|
||||
if (len < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user