git: cf312f799a86 - main - linux(4): Handle SO_DOMAIN in getsockopt syscall.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 11 Apr 2022 20:32:51 UTC
The branch main has been updated by dchagin:
URL: https://cgit.FreeBSD.org/src/commit/?id=cf312f799a867b4b1beef0536a162062659659a6
commit cf312f799a867b4b1beef0536a162062659659a6
Author: Dmitry Chagin <dchagin@FreeBSD.org>
AuthorDate: 2022-04-11 20:31:28 +0000
Commit: Dmitry Chagin <dchagin@FreeBSD.org>
CommitDate: 2022-04-11 20:31:28 +0000
linux(4): Handle SO_DOMAIN in getsockopt syscall.
Differential revision: https://reviews.freebsd.org/D34714
---
sys/compat/linux/linux_socket.c | 13 +++++++++++++
sys/compat/linux/linux_socket.h | 1 +
2 files changed, 14 insertions(+)
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index 935d07ecb7e0..4ba023daaba2 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -553,6 +553,8 @@ linux_to_bsd_so_sockopt(int opt)
return (SO_ACCEPTCONN);
case LINUX_SO_PROTOCOL:
return (SO_PROTOCOL);
+ case LINUX_SO_DOMAIN:
+ return (SO_DOMAIN);
}
return (-1);
}
@@ -2008,6 +2010,17 @@ linux_getsockopt(struct thread *td, struct linux_getsockopt_args *args)
newval = -bsd_to_linux_errno(newval);
return (copyout(&newval, PTRIN(args->optval), len));
/* NOTREACHED */
+ case SO_DOMAIN:
+ len = sizeof(newval);
+ error = kern_getsockopt(td, args->s, level,
+ name, &newval, UIO_SYSSPACE, &len);
+ if (error != 0)
+ return (error);
+ newval = bsd_to_linux_domain(newval);
+ if (newval == -1)
+ return (ENOPROTOOPT);
+ return (copyout(&newval, PTRIN(args->optval), len));
+ /* NOTREACHED */
default:
break;
}
diff --git a/sys/compat/linux/linux_socket.h b/sys/compat/linux/linux_socket.h
index 9c37d8c97c3d..4decb24236bb 100644
--- a/sys/compat/linux/linux_socket.h
+++ b/sys/compat/linux/linux_socket.h
@@ -199,6 +199,7 @@ int linux_accept(struct thread *td, struct linux_accept_args *args);
#define LINUX_SO_SNDBUFFORCE 32
#define LINUX_SO_RCVBUFFORCE 33
#define LINUX_SO_PROTOCOL 38
+#define LINUX_SO_DOMAIN 39
#define LINUX_SO_PEERGROUPS 59
/* Socket options */