Commit | Line | Data |
---|---|---|
60b6c79c MD |
1 | #ifndef _RUNAS_H |
2 | #define _RUNAS_H | |
3 | ||
4 | /* | |
ab5be9fa MJ |
5 | * Copyright (C) 2011 David Goulet <david.goulet@polymtl.ca> |
6 | * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
60b6c79c | 7 | * |
ab5be9fa | 8 | * SPDX-License-Identifier: GPL-2.0-only |
60b6c79c | 9 | * |
60b6c79c MD |
10 | */ |
11 | ||
0ef03255 | 12 | #include <stdint.h> |
3446f606 | 13 | #include <sys/types.h> |
60b6c79c MD |
14 | #include <unistd.h> |
15 | ||
2912cead | 16 | #include <common/macros.h> |
c73f064a | 17 | #include <common/sessiond-comm/sessiond-comm.h> |
2912cead | 18 | |
929f71ec JG |
19 | /* |
20 | * The run-as process is launched by forking without an exec*() call. This means | |
21 | * that any resource allocated before the run-as worker is launched should be | |
22 | * cleaned-up after the fork(). This callback allows the user to perform this | |
23 | * clean-up. | |
24 | * | |
25 | * Note that the callback will _not_ be invoked if the LTTNG_DEBUG_NOCLONE | |
26 | * environment variable is set as the clean-up is not needed (and may not be | |
27 | * expected). | |
28 | * | |
29 | * A negative return value will cause the run-as process to exit with a non-zero | |
30 | * value. | |
31 | */ | |
32 | typedef int (*post_fork_cleanup_cb)(void *user_data); | |
33 | ||
c18250f2 | 34 | LTTNG_HIDDEN |
e11d277b | 35 | int run_as_mkdir_recursive(const char *path, mode_t mode, uid_t uid, gid_t gid); |
c18250f2 | 36 | LTTNG_HIDDEN |
18710679 JG |
37 | int run_as_mkdirat_recursive(int dirfd, const char *path, mode_t mode, |
38 | uid_t uid, gid_t gid); | |
39 | LTTNG_HIDDEN | |
e11d277b | 40 | int run_as_mkdir(const char *path, mode_t mode, uid_t uid, gid_t gid); |
c18250f2 | 41 | LTTNG_HIDDEN |
18710679 JG |
42 | int run_as_mkdirat(int dirfd, const char *path, mode_t mode, |
43 | uid_t uid, gid_t gid); | |
44 | LTTNG_HIDDEN | |
e11d277b | 45 | int run_as_open(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid); |
c18250f2 | 46 | LTTNG_HIDDEN |
2912cead JG |
47 | int run_as_openat(int dirfd, const char *filename, int flags, mode_t mode, |
48 | uid_t uid, gid_t gid); | |
49 | LTTNG_HIDDEN | |
4628484a | 50 | int run_as_unlink(const char *path, uid_t uid, gid_t gid); |
c18250f2 | 51 | LTTNG_HIDDEN |
2912cead JG |
52 | int run_as_unlinkat(int dirfd, const char *filename, uid_t uid, gid_t gid); |
53 | LTTNG_HIDDEN | |
93bed9fe JG |
54 | int run_as_rmdir(const char *path, uid_t uid, gid_t gid); |
55 | LTTNG_HIDDEN | |
f75c5439 | 56 | int run_as_rmdir_recursive(const char *path, uid_t uid, gid_t gid, int flags); |
241e0a5a | 57 | LTTNG_HIDDEN |
93bed9fe JG |
58 | int run_as_rmdirat(int dirfd, const char *path, uid_t uid, gid_t gid); |
59 | LTTNG_HIDDEN | |
f75c5439 | 60 | int run_as_rmdirat_recursive(int dirfd, const char *path, uid_t uid, gid_t gid, int flags); |
93bed9fe JG |
61 | LTTNG_HIDDEN |
62 | int run_as_rename(const char *old, const char *new, uid_t uid, gid_t gid); | |
63 | LTTNG_HIDDEN | |
64 | int run_as_renameat(int old_dirfd, const char *old, | |
65 | int new_dirfd, const char *new, uid_t uid, gid_t gid); | |
66 | LTTNG_HIDDEN | |
241e0a5a FD |
67 | int run_as_extract_elf_symbol_offset(int fd, const char* function, |
68 | uid_t uid, gid_t gid, uint64_t *offset); | |
c18250f2 | 69 | LTTNG_HIDDEN |
0ef03255 FD |
70 | int run_as_extract_sdt_probe_offsets(int fd, const char *provider_name, |
71 | const char* probe_name, uid_t uid, gid_t gid, | |
72 | uint64_t **offsets, uint32_t *num_offset); | |
73 | LTTNG_HIDDEN | |
c73f064a | 74 | int run_as_generate_filter_bytecode(const char *filter_expression, |
58daac01 | 75 | const struct lttng_credentials *creds, |
c73f064a JR |
76 | struct lttng_filter_bytecode **bytecode); |
77 | LTTNG_HIDDEN | |
929f71ec JG |
78 | int run_as_create_worker(const char *procname, |
79 | post_fork_cleanup_cb clean_up_func, void *clean_up_user_data); | |
c18250f2 | 80 | LTTNG_HIDDEN |
7567352f | 81 | void run_as_destroy_worker(void); |
9ef70f87 | 82 | |
60b6c79c | 83 | #endif /* _RUNAS_H */ |