1.1 --- a/libfsclient/include/fsclient/client.h Fri Jul 30 00:45:24 2021 +0200
1.2 +++ b/libfsclient/include/fsclient/client.h Sun Aug 01 00:07:00 2021 +0200
1.3 @@ -29,8 +29,8 @@
1.4
1.5 /* Filesystem access operations. */
1.6
1.7 -l4_cap_idx_t client_open_for_user(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask);
1.8 -l4_cap_idx_t client_open_for_user_using(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask, l4_cap_idx_t server);
1.9 +l4_cap_idx_t client_open_for_user(user_t user);
1.10 +l4_cap_idx_t client_open_for_user_using(user_t user, l4_cap_idx_t server);
1.11
1.12 /* Opening and closing operations. */
1.13
2.1 --- a/libfsclient/include/fsclient/file.h Fri Jul 30 00:45:24 2021 +0200
2.2 +++ b/libfsclient/include/fsclient/file.h Sun Aug 01 00:07:00 2021 +0200
2.3 @@ -24,6 +24,7 @@
2.4 #include <l4/sys/types.h>
2.5
2.6 #include <systypes/base.h>
2.7 +#include <systypes/user.h>
2.8
2.9
2.10
2.11 @@ -77,8 +78,7 @@
2.12
2.13 /* Filesystem operations. */
2.14
2.15 -long file_open_for_user(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask,
2.16 - l4_cap_idx_t server, l4_cap_idx_t *opener);
2.17 +long file_open_for_user(user_t user, l4_cap_idx_t server, l4_cap_idx_t *opener);
2.18
2.19 /* File operations. */
2.20
3.1 --- a/libfsclient/lib/src/client.cc Fri Jul 30 00:45:24 2021 +0200
3.2 +++ b/libfsclient/lib/src/client.cc Sun Aug 01 00:07:00 2021 +0200
3.3 @@ -144,22 +144,22 @@
3.4
3.5 /* Open a file opening object. */
3.6
3.7 -l4_cap_idx_t client_open_for_user(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask)
3.8 +l4_cap_idx_t client_open_for_user(user_t user)
3.9 {
3.10 l4_cap_idx_t server = l4re_env_get_cap("server");
3.11
3.12 - return client_open_for_user_using(uid, gid, umask, server);
3.13 + return client_open_for_user_using(user, server);
3.14 }
3.15
3.16 /* Open a file opening object via a named capability. */
3.17
3.18 -l4_cap_idx_t client_open_for_user_using(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask, l4_cap_idx_t server)
3.19 +l4_cap_idx_t client_open_for_user_using(user_t user, l4_cap_idx_t server)
3.20 {
3.21 if (l4_is_invalid_cap(server))
3.22 return L4_INVALID_CAP;
3.23
3.24 l4_cap_idx_t opener;
3.25 - long err = file_open_for_user(uid, gid, umask, server, &opener);
3.26 + long err = file_open_for_user(user, server, &opener);
3.27
3.28 if (err)
3.29 return L4_INVALID_CAP;
4.1 --- a/libfsclient/lib/src/file.cc Fri Jul 30 00:45:24 2021 +0200
4.2 +++ b/libfsclient/lib/src/file.cc Sun Aug 01 00:07:00 2021 +0200
4.3 @@ -64,12 +64,11 @@
4.4
4.5 /* Obtain a reference to a file opener for the given user. */
4.6
4.7 -long file_open_for_user(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask,
4.8 - l4_cap_idx_t server, l4_cap_idx_t *opener)
4.9 +long file_open_for_user(user_t user, l4_cap_idx_t server, l4_cap_idx_t *opener)
4.10 {
4.11 client_Filesystem filesystem(server);
4.12
4.13 - return filesystem.open_for_user(uid, gid, umask, opener);
4.14 + return filesystem.open_for_user(user, opener);
4.15 }
4.16
4.17
5.1 --- a/libfsserver/include/fsserver/ext2_filesystem.h Fri Jul 30 00:45:24 2021 +0200
5.2 +++ b/libfsserver/include/fsserver/ext2_filesystem.h Sun Aug 01 00:07:00 2021 +0200
5.3 @@ -43,8 +43,10 @@
5.4
5.5 /* Filesystem interface methods. */
5.6
5.7 - virtual long open_for_user(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask,
5.8 - l4_cap_idx_t *opener);
5.9 + virtual long open_for_user(ipc_varg_sys_uid_t uid, ipc_varg_sys_gid_t gid,
5.10 + ipc_varg_sys_mode_t umask, l4_cap_idx_t *opener);
5.11 +
5.12 + virtual long open_for_user(user_t user, l4_cap_idx_t *opener);
5.13 };
5.14
5.15 // vim: tabstop=4 expandtab shiftwidth=4
6.1 --- a/libfsserver/include/fsserver/filesystem_resource.h Fri Jul 30 00:45:24 2021 +0200
6.2 +++ b/libfsserver/include/fsserver/filesystem_resource.h Sun Aug 01 00:07:00 2021 +0200
6.3 @@ -22,14 +22,15 @@
6.4 #pragma once
6.5
6.6 #include <fsserver/file_paging.h>
6.7 -#include <fsserver/filesystem_interface.h>
6.8 +#include <fsserver/filesystem_object_interface.h>
6.9 #include <fsserver/resource.h>
6.10
6.11
6.12
6.13 /* Support for providing access to user-specific filesystems. */
6.14
6.15 -class FilesystemResource : public Resource, public FilePaging, public Filesystem
6.16 +class FilesystemResource : public Resource, public FilePaging,
6.17 + public FilesystemObject
6.18 {
6.19 public:
6.20 explicit FilesystemResource(Pages *pages);
6.21 @@ -45,8 +46,10 @@
6.22
6.23 /* Filesystem interface methods. */
6.24
6.25 - virtual long open_for_user(sys_uid_t uid, sys_gid_t gid, sys_mode_t umask,
6.26 - l4_cap_idx_t *opener) = 0;
6.27 + virtual long open_for_user(ipc_varg_sys_uid_t uid, ipc_varg_sys_gid_t gid,
6.28 + ipc_varg_sys_mode_t umask, l4_cap_idx_t *opener) = 0;
6.29 +
6.30 + virtual long open_for_user(user_t user, l4_cap_idx_t *opener) = 0;
6.31 };
6.32
6.33 // vim: tabstop=4 expandtab shiftwidth=4
7.1 --- a/libfsserver/lib/Makefile Fri Jul 30 00:45:24 2021 +0200
7.2 +++ b/libfsserver/lib/Makefile Sun Aug 01 00:07:00 2021 +0200
7.3 @@ -15,6 +15,9 @@
7.4
7.5 # Compound interfaces.
7.6
7.7 +filesystem_object_NAME = FilesystemObject
7.8 +filesystem_object_INTERFACES = filesystem filesystem_factory
7.9 +
7.10 mapped_file_object_NAME = MappedFileObject
7.11 mapped_file_object_INTERFACES = dataspace file flush mapped_file notification
7.12
7.13 @@ -24,13 +27,13 @@
7.14 pipe_object_NAME = PipeObject
7.15 pipe_object_INTERFACES = dataspace flush notification pipe
7.16
7.17 -COMP_INTERFACES_CC = mapped_file_object opener_context_object pipe_object
7.18 +COMP_INTERFACES_CC = filesystem_object mapped_file_object opener_context_object pipe_object
7.19
7.20 # Individual interfaces.
7.21
7.22 CLIENT_INTERFACES_CC = notifier
7.23
7.24 -SERVER_INTERFACES_CC = filesystem opener pipe_opener $(call common_interfaces,$(COMP_INTERFACES_CC))
7.25 +SERVER_INTERFACES_CC = opener pipe_opener $(call common_interfaces,$(COMP_INTERFACES_CC))
7.26
7.27 # Generated and plain source files.
7.28
8.1 --- a/libfsserver/lib/files/ext2_filesystem.cc Fri Jul 30 00:45:24 2021 +0200
8.2 +++ b/libfsserver/lib/files/ext2_filesystem.cc Sun Aug 01 00:07:00 2021 +0200
8.3 @@ -35,12 +35,20 @@
8.4 delete _ops;
8.5 }
8.6
8.7 +/* Return a file opener object for the given user details. */
8.8 +
8.9 +long Ext2Filesystem::open_for_user(ipc_varg_sys_uid_t uid, ipc_varg_sys_gid_t gid,
8.10 + ipc_varg_sys_mode_t umask, l4_cap_idx_t *ref)
8.11 +{
8.12 + user_t user = (user_t) {uid.value, gid.value, umask.value};
8.13 +
8.14 + return open_for_user(user, ref);
8.15 +}
8.16 +
8.17 /* Return a file opener object for the given user. */
8.18
8.19 -long Ext2Filesystem::open_for_user(sys_uid_t uid, sys_gid_t gid,
8.20 - sys_mode_t umask, l4_cap_idx_t *ref)
8.21 +long Ext2Filesystem::open_for_user(user_t user, l4_cap_idx_t *ref)
8.22 {
8.23 - user_t user = (user_t) {uid, gid, umask};
8.24 Resource *resource = new Ext2FileOpener(this, _ops, user);
8.25
8.26 /* Complete the initialisation and start a server in a new thread.
9.1 --- a/libfsserver/lib/files/filesystem_resource.cc Fri Jul 30 00:45:24 2021 +0200
9.2 +++ b/libfsserver/lib/files/filesystem_resource.cc Sun Aug 01 00:07:00 2021 +0200
9.3 @@ -19,7 +19,7 @@
9.4 * Boston, MA 02110-1301, USA
9.5 */
9.6
9.7 -#include "filesystem_server.h"
9.8 +#include "filesystem_object_server.h"
9.9 #include "filesystem_resource.h"
9.10
9.11 /* Support for providing access to user-specific filesystems. */
9.12 @@ -31,12 +31,12 @@
9.13
9.14 int FilesystemResource::expected_items()
9.15 {
9.16 - return Filesystem_expected_items;
9.17 + return FilesystemObject_expected_items;
9.18 }
9.19
9.20 ipc_server_handler_type FilesystemResource::handler()
9.21 {
9.22 - return (ipc_server_handler_type) handle_Filesystem;
9.23 + return (ipc_server_handler_type) handle_FilesystemObject;
9.24 }
9.25
9.26 // vim: tabstop=4 expandtab shiftwidth=4
10.1 --- a/tests/dstest_block_client_simple.cc Fri Jul 30 00:45:24 2021 +0200
10.2 +++ b/tests/dstest_block_client_simple.cc Sun Aug 01 00:07:00 2021 +0200
10.3 @@ -47,7 +47,7 @@
10.4
10.5 if (uid)
10.6 {
10.7 - l4_cap_idx_t opener = client_open_for_user(uid, uid, 0022);
10.8 + l4_cap_idx_t opener = client_open_for_user((user_t) {uid, uid, 0022});
10.9
10.10 if (l4_is_invalid_cap(opener))
10.11 {
11.1 --- a/tests/dstest_file_client.cc Fri Jul 30 00:45:24 2021 +0200
11.2 +++ b/tests/dstest_file_client.cc Sun Aug 01 00:07:00 2021 +0200
11.3 @@ -149,7 +149,7 @@
11.4
11.5 if (uid)
11.6 {
11.7 - l4_cap_idx_t opener = client_open_for_user(uid, uid, 0022);
11.8 + l4_cap_idx_t opener = client_open_for_user((user_t) {uid, uid, 0022});
11.9
11.10 if (l4_is_invalid_cap(opener))
11.11 {