[PATCH] linux-user: add TARGET_SO_{DOMAIN,PROTOCOL}

Jason A. Donenfeld posted 1 patch 3 years, 3 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210204153925.2030606-1-Jason@zx2c4.com
Maintainers: Laurent Vivier <laurent@vivier.eu>
linux-user/generic/sockbits.h | 3 +++
linux-user/mips/sockbits.h    | 2 ++
linux-user/syscall.c          | 6 ++++++
3 files changed, 11 insertions(+)
[PATCH] linux-user: add TARGET_SO_{DOMAIN,PROTOCOL}
Posted by Jason A. Donenfeld 3 years, 3 months ago
These were defined for other platforms but mistakenly left out of mips
and generic, so this commit adds them to the places missing. Then it
makes them be translated in getsockopt.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
---
 linux-user/generic/sockbits.h | 3 +++
 linux-user/mips/sockbits.h    | 2 ++
 linux-user/syscall.c          | 6 ++++++
 3 files changed, 11 insertions(+)

diff --git a/linux-user/generic/sockbits.h b/linux-user/generic/sockbits.h
index e44733c601..b3b4a8e44c 100644
--- a/linux-user/generic/sockbits.h
+++ b/linux-user/generic/sockbits.h
@@ -55,4 +55,7 @@
 #define TARGET_SO_ACCEPTCONN           30
 
 #define TARGET_SO_PEERSEC              31
+
+#define TARGET_SO_PROTOCOL             38
+#define TARGET_SO_DOMAIN               39
 #endif
diff --git a/linux-user/mips/sockbits.h b/linux-user/mips/sockbits.h
index 0f022cd598..562cad88e2 100644
--- a/linux-user/mips/sockbits.h
+++ b/linux-user/mips/sockbits.h
@@ -40,6 +40,8 @@
 #define TARGET_SO_SNDTIMEO     0x1005  /* send timeout */
 #define TARGET_SO_RCVTIMEO     0x1006  /* receive timeout */
 #define TARGET_SO_ACCEPTCONN   0x1009
+#define TARGET_SO_PROTOCOL     0x1028  /* protocol type */
+#define TARGET_SO_DOMAIN       0x1029  /* domain/socket family */
 
 /* linux-specific, might as well be the same as on i386 */
 #define TARGET_SO_NO_CHECK     11
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 34760779c8..264b3265b1 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -2832,6 +2832,12 @@ get_timeout:
         case TARGET_SO_ACCEPTCONN:
             optname = SO_ACCEPTCONN;
             goto int_case;
+        case TARGET_SO_PROTOCOL:
+            optname = SO_PROTOCOL;
+            goto int_case;
+        case TARGET_SO_DOMAIN:
+            optname = SO_DOMAIN;
+            goto int_case;
         default:
             goto int_case;
         }
-- 
2.30.0


Re: [PATCH] linux-user: add TARGET_SO_{DOMAIN,PROTOCOL}
Posted by Laurent Vivier 3 years, 2 months ago
Le 04/02/2021 à 16:39, Jason A. Donenfeld a écrit :
> These were defined for other platforms but mistakenly left out of mips
> and generic, so this commit adds them to the places missing. Then it
> makes them be translated in getsockopt.
> 
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> ---
>  linux-user/generic/sockbits.h | 3 +++
>  linux-user/mips/sockbits.h    | 2 ++
>  linux-user/syscall.c          | 6 ++++++
>  3 files changed, 11 insertions(+)
> 
> diff --git a/linux-user/generic/sockbits.h b/linux-user/generic/sockbits.h
> index e44733c601..b3b4a8e44c 100644
> --- a/linux-user/generic/sockbits.h
> +++ b/linux-user/generic/sockbits.h
> @@ -55,4 +55,7 @@
>  #define TARGET_SO_ACCEPTCONN           30
>  
>  #define TARGET_SO_PEERSEC              31
> +
> +#define TARGET_SO_PROTOCOL             38
> +#define TARGET_SO_DOMAIN               39
>  #endif
> diff --git a/linux-user/mips/sockbits.h b/linux-user/mips/sockbits.h
> index 0f022cd598..562cad88e2 100644
> --- a/linux-user/mips/sockbits.h
> +++ b/linux-user/mips/sockbits.h
> @@ -40,6 +40,8 @@
>  #define TARGET_SO_SNDTIMEO     0x1005  /* send timeout */
>  #define TARGET_SO_RCVTIMEO     0x1006  /* receive timeout */
>  #define TARGET_SO_ACCEPTCONN   0x1009
> +#define TARGET_SO_PROTOCOL     0x1028  /* protocol type */
> +#define TARGET_SO_DOMAIN       0x1029  /* domain/socket family */
>  
>  /* linux-specific, might as well be the same as on i386 */
>  #define TARGET_SO_NO_CHECK     11
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 34760779c8..264b3265b1 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -2832,6 +2832,12 @@ get_timeout:
>          case TARGET_SO_ACCEPTCONN:
>              optname = SO_ACCEPTCONN;
>              goto int_case;
> +        case TARGET_SO_PROTOCOL:
> +            optname = SO_PROTOCOL;
> +            goto int_case;
> +        case TARGET_SO_DOMAIN:
> +            optname = SO_DOMAIN;
> +            goto int_case;
>          default:
>              goto int_case;
>          }
> 

Reviewed-by: Laurent Vivier <laurent@vivier.eu>

Re: [PATCH] linux-user: add TARGET_SO_{DOMAIN,PROTOCOL}
Posted by Laurent Vivier 3 years, 2 months ago
Le 04/02/2021 à 16:39, Jason A. Donenfeld a écrit :
> These were defined for other platforms but mistakenly left out of mips
> and generic, so this commit adds them to the places missing. Then it
> makes them be translated in getsockopt.
> 
> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
> ---
>  linux-user/generic/sockbits.h | 3 +++
>  linux-user/mips/sockbits.h    | 2 ++
>  linux-user/syscall.c          | 6 ++++++
>  3 files changed, 11 insertions(+)
> 
> diff --git a/linux-user/generic/sockbits.h b/linux-user/generic/sockbits.h
> index e44733c601..b3b4a8e44c 100644
> --- a/linux-user/generic/sockbits.h
> +++ b/linux-user/generic/sockbits.h
> @@ -55,4 +55,7 @@
>  #define TARGET_SO_ACCEPTCONN           30
>  
>  #define TARGET_SO_PEERSEC              31
> +
> +#define TARGET_SO_PROTOCOL             38
> +#define TARGET_SO_DOMAIN               39
>  #endif
> diff --git a/linux-user/mips/sockbits.h b/linux-user/mips/sockbits.h
> index 0f022cd598..562cad88e2 100644
> --- a/linux-user/mips/sockbits.h
> +++ b/linux-user/mips/sockbits.h
> @@ -40,6 +40,8 @@
>  #define TARGET_SO_SNDTIMEO     0x1005  /* send timeout */
>  #define TARGET_SO_RCVTIMEO     0x1006  /* receive timeout */
>  #define TARGET_SO_ACCEPTCONN   0x1009
> +#define TARGET_SO_PROTOCOL     0x1028  /* protocol type */
> +#define TARGET_SO_DOMAIN       0x1029  /* domain/socket family */
>  
>  /* linux-specific, might as well be the same as on i386 */
>  #define TARGET_SO_NO_CHECK     11
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 34760779c8..264b3265b1 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -2832,6 +2832,12 @@ get_timeout:
>          case TARGET_SO_ACCEPTCONN:
>              optname = SO_ACCEPTCONN;
>              goto int_case;
> +        case TARGET_SO_PROTOCOL:
> +            optname = SO_PROTOCOL;
> +            goto int_case;
> +        case TARGET_SO_DOMAIN:
> +            optname = SO_DOMAIN;
> +            goto int_case;
>          default:
>              goto int_case;
>          }
> 

Applied to my linux-user-for-6.0 branch.

Thanks,
Laurent