On 1/20/21 5:00 PM, Laurent Vivier wrote: > Le 20/01/2021 à 13:16, Philippe Mathieu-Daudé a écrit : >> On 1/19/21 6:54 PM, Laurent Vivier wrote: >>> From: Shu-Chun Weng <[email protected]> >>> >>> IPV6_ADDR_PREFERENCES (RFC5014: Source address selection) was not supported. >>> >>> Signed-off-by: Shu-Chun Weng <[email protected]> >>> Reviewed-by: Laurent Vivier <[email protected]> >>> Message-Id: <[email protected]> >>> Signed-off-by: Laurent Vivier <[email protected]> >>> --- >>> linux-user/syscall.c | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/linux-user/syscall.c b/linux-user/syscall.c >>> index 969db2008104..70c61d15ebf8 100644 >>> --- a/linux-user/syscall.c >>> +++ b/linux-user/syscall.c >>> @@ -51,6 +51,7 @@ >>> #include <sys/sysinfo.h> >>> #include <sys/signalfd.h> >>> //#include <sys/user.h> >>> +#include <netinet/in.h> >>> #include <netinet/ip.h> >>> #include <netinet/tcp.h> >>> #include <netinet/udp.h> >>> @@ -2272,6 +2273,7 @@ static abi_long do_setsockopt(int sockfd, int level, >>> int optname, >>> case IPV6_RECVDSTOPTS: >>> case IPV6_2292DSTOPTS: >>> case IPV6_TCLASS: >>> + case IPV6_ADDR_PREFERENCES: >>> #ifdef IPV6_RECVPATHMTU >>> case IPV6_RECVPATHMTU: >>> #endif >>> @@ -2926,6 +2928,7 @@ get_timeout: >>> case IPV6_RECVDSTOPTS: >>> case IPV6_2292DSTOPTS: >>> case IPV6_TCLASS: >>> + case IPV6_ADDR_PREFERENCES: >>> #ifdef IPV6_RECVPATHMTU >>> case IPV6_RECVPATHMTU: >>> #endif >>> >> >> Building on Centos7: >> >> ../linux-user/syscall.c: In function 'do_setsockopt': >> ../linux-user/syscall.c:2276:14: error: 'IPV6_ADDR_PREFERENCES' >> undeclared (first use in this function) >> case IPV6_ADDR_PREFERENCES: >> ^ >> ../linux-user/syscall.c:2276:14: note: each undeclared identifier is >> reported only once for each function it appears in >> ../linux-user/syscall.c: In function 'do_getsockopt': >> ../linux-user/syscall.c:2931:14: error: 'IPV6_ADDR_PREFERENCES' >> undeclared (first use in this function) >> case IPV6_ADDR_PREFERENCES: >> ^ >> > > Strange... this is defined since kernel v2.6.26 in /usr/include/linux/in6.h > > 7cbca67c0732 [IPV6]: Support Source Address Selection API (RFC5014). > > Could try adding the include?
Yes, this fixed it, thanks: -- >8 -- diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 1f91aa0ed5e..34760779c8e 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -59,6 +59,7 @@ #include <linux/icmp.h> #include <linux/icmpv6.h> #include <linux/if_tun.h> +#include <linux/in6.h> #include <linux/errqueue.h> #include <linux/random.h> #ifdef CONFIG_TIMERFD ---
