blob: a07673647e4009c5af30c7ad53d242d001e2599b [file] [log] [blame]
Elly Jonescd7a9042011-07-22 13:56:51 -04001/* libminijail-private.h
2 * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 *
6 * Values shared between libminijailpreload and libminijail, but not visible to
7 * the outside world.
8 */
9
10#ifndef LIBMINIJAIL_PRIVATE_H
11#define LIBMINIJAIL_PRIVATE_H
12
Will Drewry2f54b6a2011-09-16 13:45:31 -050013static const char *kFdEnvVar = "__MINIJAIL_FD";
Ben Chan541c7e52011-08-26 14:55:53 -070014static const char *kLdPreloadEnvVar = "LD_PRELOAD";
Elly Jonescd7a9042011-07-22 13:56:51 -040015
Will Drewry32ac9f52011-08-18 21:36:27 -050016#define MINIJAIL_MAX_SECCOMP_FILTER_LINE 512
17
Will Drewryf89aef52011-09-16 16:48:57 -050018struct minijail;
Elly Jonese1749eb2011-10-07 13:54:59 -040019
20/* minijail_size: returns the size (in bytes) of @j if marshalled
21 * @j jail to compute size of
22 *
23 * Returns 0 on error.
Will Drewry2ddaad02011-09-16 11:36:08 -050024 */
25extern size_t minijail_size(const struct minijail *j);
Elly Jonese1749eb2011-10-07 13:54:59 -040026
27/* minijail_marshal: serializes @j to @buf
28 * @j minijail to serialize
29 * @buf buffer to serialize to
30 * @size size of @buf
31 *
32 * Returns 0 on success.
33 *
Will Drewry2ddaad02011-09-16 11:36:08 -050034 * Writes |j| to |buf| such that it can be reparsed by the same
35 * library on the same architecture. This is meant to be used
36 * by minijail0.c and libminijailpreload.c. minijail flags that
37 * require minijail_run() will be excluded.
38 *
39 * The marshalled data is not robust to differences between the child
40 * and parent process (personality, etc).
Will Drewry2ddaad02011-09-16 11:36:08 -050041 */
42extern int minijail_marshal(const struct minijail *j,
43 char *buf,
Elly Jonese1749eb2011-10-07 13:54:59 -040044 size_t size);
45
46/* minijail_unmarshal: initializes @j from @serialized
47 * @j minijail to initialize
48 * @serialized serialized jail buffer
49 * @length length of buffer
50 *
51 * Returns 0 on success.
52 */
Will Drewry2ddaad02011-09-16 11:36:08 -050053extern int minijail_unmarshal(struct minijail *j,
54 char *serialized,
55 size_t length);
Elly Jonese1749eb2011-10-07 13:54:59 -040056
57/* minijail_from_fd: builds @j from @fd
58 * @j minijail to initialize
59 * @fd fd to initialize from
60 *
61 * Returns 0 on success.
62 */
Will Drewryfe4a3722011-09-16 14:50:50 -050063extern int minijail_from_fd(int fd, struct minijail *j);
Elly Jonese1749eb2011-10-07 13:54:59 -040064
65/* minijail_to_fd: sends @j over @fd
66 * @j minijail to send
67 * @fd fd to send over
68 *
69 * Returns 0 on success.
70 */
Will Drewryfe4a3722011-09-16 14:50:50 -050071extern int minijail_to_fd(struct minijail *j, int fd);
Elly Jonese1749eb2011-10-07 13:54:59 -040072
73/* minijail_preexec: strips @j of all options handled by minijail_enter()
74 * @j jail to strip
75 */
Will Drewryfe4a3722011-09-16 14:50:50 -050076extern void minijail_preexec(struct minijail *j);
Elly Jonese1749eb2011-10-07 13:54:59 -040077
78/* minijail_preenter: strips @j of all options handled by minijail_run()
79 * @j jail to strip
80 */
Will Drewry2ddaad02011-09-16 11:36:08 -050081extern void minijail_preenter(struct minijail *j);
82
Elly Jonescd7a9042011-07-22 13:56:51 -040083#endif /* !LIBMINIJAIL_PRIVATE_H */