]>
Commit | Line | Data |
---|---|---|
fd37ccaf MT |
1 | /*############################################################################# |
2 | # # | |
3 | # Pakfire - The IPFire package management system # | |
4 | # Copyright (C) 2022 Pakfire development team # | |
5 | # # | |
6 | # This program is free software: you can redistribute it and/or modify # | |
7 | # it under the terms of the GNU General Public License as published by # | |
8 | # the Free Software Foundation, either version 3 of the License, or # | |
9 | # (at your option) any later version. # | |
10 | # # | |
11 | # This program is distributed in the hope that it will be useful, # | |
12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of # | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # | |
14 | # GNU General Public License for more details. # | |
15 | # # | |
16 | # You should have received a copy of the GNU General Public License # | |
17 | # along with this program. If not, see <http://www.gnu.org/licenses/>. # | |
18 | # # | |
19 | #############################################################################*/ | |
20 | ||
21 | #ifndef PAKFIRE_JAIL_H | |
22 | #define PAKFIRE_JAIL_H | |
23 | ||
fd37ccaf MT |
24 | #include <pakfire/pakfire.h> |
25 | ||
26 | struct pakfire_jail; | |
27 | ||
db4f234f | 28 | enum pakfire_jail_flags { |
00ba1d9a | 29 | PAKFIRE_JAIL_NONE = 0, |
00ba1d9a MT |
30 | }; |
31 | ||
d639929b | 32 | int pakfire_jail_create(struct pakfire_jail** jail, struct pakfire* pakfire, int flags); |
fd37ccaf MT |
33 | |
34 | struct pakfire_jail* pakfire_jail_ref(struct pakfire_jail* jail); | |
35 | struct pakfire_jail* pakfire_jail_unref(struct pakfire_jail* jail); | |
36 | ||
cc6e2264 MT |
37 | // Mountpoints |
38 | int pakfire_jail_bind(struct pakfire_jail* jail, | |
39 | const char* source, const char* target, int flags); | |
40 | ||
cf440db8 MT |
41 | // Resource Limits |
42 | int pakfire_jail_nice(struct pakfire_jail* jail, int nice); | |
43 | ||
32d5f21d MT |
44 | // Environment |
45 | const char* pakfire_jail_get_env(struct pakfire_jail* jail, const char* key); | |
46 | int pakfire_jail_set_env(struct pakfire_jail* jail, const char* key, const char* value); | |
939025e7 | 47 | int pakfire_jail_import_env(struct pakfire_jail* jail, const char* env[]); |
32d5f21d | 48 | |
9f50bf71 | 49 | // Execute |
2015cb92 MT |
50 | typedef int (*pakfire_jail_communicate_in) |
51 | (struct pakfire* pakfire, void* data, int fd); | |
52 | typedef int (*pakfire_jail_communicate_out) | |
53 | (struct pakfire* pakfire, void* data, int priority, const char* line, const size_t length); | |
54 | ||
ccdd2e95 | 55 | int pakfire_jail_exec( |
2015cb92 MT |
56 | struct pakfire_jail* jail, |
57 | const char* argv[], | |
58 | pakfire_jail_communicate_in callback_in, | |
59 | pakfire_jail_communicate_out callback_out, | |
60 | void* data); | |
61 | ||
6ce56f90 MT |
62 | #ifdef PAKFIRE_PRIVATE |
63 | ||
15503538 MT |
64 | #include <pakfire/cgroup.h> |
65 | ||
ccdd2e95 MT |
66 | // Capture |
67 | int pakfire_jail_capture_stdout(struct pakfire* pakfire, void* data, | |
68 | int priority, const char* line, size_t length); | |
69 | ||
15503538 MT |
70 | // Resource limits |
71 | int pakfire_jail_set_cgroup(struct pakfire_jail* jail, struct pakfire_cgroup* cgroup); | |
72 | ||
82df3c77 | 73 | // Convenience functions |
12b9b39f | 74 | int pakfire_jail_run(struct pakfire* pakfire, const char* argv[], int flags, char** output); |
4f688bd8 | 75 | int pakfire_jail_run_script(struct pakfire* pakfire, |
49a9babc | 76 | const char* script, const size_t length, const char* argv[], int flags); |
82df3c77 | 77 | |
464a5794 MT |
78 | int pakfire_jail_exec_script(struct pakfire_jail* jail, |
79 | const char* script, | |
80 | const size_t size, | |
81 | const char* args[], | |
82 | pakfire_jail_communicate_in callback_in, | |
83 | pakfire_jail_communicate_out callback_out, | |
84 | void* data); | |
85 | ||
5f6e42a2 | 86 | int pakfire_jail_shell(struct pakfire_jail* jail); |
e43489f7 MT |
87 | int pakfire_jail_ldconfig(struct pakfire* pakfire); |
88 | ||
6ce56f90 | 89 | #endif /* PAKFIRE_PRIVATE */ |
fd37ccaf MT |
90 | |
91 | #endif /* PAKFIRE_JAIL_H */ |