* [Qemu-devel] [PATCH] linux-user: Implement setsockopt SOL_SOCKET/SO_LINGER
@ 2018-02-05 11:40 Andreas Schwab
2018-02-15 14:04 ` Laurent Vivier
0 siblings, 1 reply; 2+ messages in thread
From: Andreas Schwab @ 2018-02-05 11:40 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Andreas Schwab <schwab@suse.de>
---
linux-user/syscall.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ff89016adc..82848fd97d 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -3130,6 +3130,29 @@ set_timeout:
unlock_user (dev_ifname, optval_addr, 0);
return ret;
}
+ case TARGET_SO_LINGER:
+ {
+ struct linger {
+ int l_onoff;
+ int l_linger;
+ } linger;
+
+ optname = SO_LINGER;
+
+ if (optlen != sizeof(linger)) {
+ return -TARGET_EINVAL;
+ }
+ if (copy_from_user(&linger, optval_addr, optlen)) {
+ return -TARGET_EFAULT;
+ }
+
+ linger.l_onoff = tswap32(linger.l_onoff);
+ linger.l_linger = tswap32(linger.l_linger);
+
+ ret = get_errno(setsockopt(sockfd, SOL_SOCKET, optname,
+ &linger, sizeof(linger)));
+ return ret;
+ }
/* Options with 'int' argument. */
case TARGET_SO_DEBUG:
optname = SO_DEBUG;
--
2.16.1
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Qemu-devel] [PATCH] linux-user: Implement setsockopt SOL_SOCKET/SO_LINGER
2018-02-05 11:40 [Qemu-devel] [PATCH] linux-user: Implement setsockopt SOL_SOCKET/SO_LINGER Andreas Schwab
@ 2018-02-15 14:04 ` Laurent Vivier
0 siblings, 0 replies; 2+ messages in thread
From: Laurent Vivier @ 2018-02-15 14:04 UTC (permalink / raw)
To: Andreas Schwab, qemu-devel
Cc: Carlo Marcelo Arenas Belón, Chen Gang, Riku Voipio,
Richard Henderson
Le 05/02/2018 à 12:40, Andreas Schwab a écrit :
> Signed-off-by: Andreas Schwab <schwab@suse.de>
> ---
> linux-user/syscall.c | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index ff89016adc..82848fd97d 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -3130,6 +3130,29 @@ set_timeout:
> unlock_user (dev_ifname, optval_addr, 0);
> return ret;
> }
> + case TARGET_SO_LINGER:
> + {
> + struct linger {
> + int l_onoff;
> + int l_linger;
> + } linger;
> +
> + optname = SO_LINGER;
> +
> + if (optlen != sizeof(linger)) {
> + return -TARGET_EINVAL;
> + }
> + if (copy_from_user(&linger, optval_addr, optlen)) {
> + return -TARGET_EFAULT;
> + }
> +
> + linger.l_onoff = tswap32(linger.l_onoff);
> + linger.l_linger = tswap32(linger.l_linger);
> +
> + ret = get_errno(setsockopt(sockfd, SOL_SOCKET, optname,
> + &linger, sizeof(linger)));
> + return ret;
> + }
> /* Options with 'int' argument. */
> case TARGET_SO_DEBUG:
> optname = SO_DEBUG;
>
I think this series gives a more complete solution to the problem:
https://patchwork.ozlabs.org/project/qemu-devel/list/?series=3985
[1/3] linux-user: fix TARGET_SO_LINGER for sparc
[2/3] linux-user: add SO_LINGER to setsockopt
[3/3] linux-user: add SO_LINGER to getsockopt
but it needs some updates.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-02-15 14:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-05 11:40 [Qemu-devel] [PATCH] linux-user: Implement setsockopt SOL_SOCKET/SO_LINGER Andreas Schwab
2018-02-15 14:04 ` Laurent Vivier
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.