summaryrefslogtreecommitdiff
path: root/vll_sandbox.h
blob: 739cd7c44f0d8c766a9e0454b2a002bba17707bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
 * Copyright 2026, Vincent Douillet <vincent@vdouillet.fr>
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. Neither the name of the copyright holder nor the names of its contributors
 * may be used to endorse or promote products derived from this software without
 * specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef VLL_SANDBOX_H
#define VLL_SANDBOX_H

#define VLL_READ (0x1 << 2)
#define VLL_WRITE (0x1 << 1)

/*
 * Initialize a new landlock rule set, and returns its ID upon success.
 * Returns -1 upon error.
 */
int
vll_create_ruleset();

/*
 * Add a rule to a previously initialized rule set.
 * First parameter is the ID of the rule set.
 * Second parameter is a file or directory path.
 * Third parameter are the desired permission, currently VLL_READ and VLL_WRITE
 * constants are supported. They can be combined with a bitwise OR.
 * Returns 0 upon success or -1 upon error.
 */
int
vll_add_rule(int, const char *, const char);

/*
 * Applies a rule set. After calling this, whether it returns as success or
 * error, the rule set is destroyed and should not be used anymore.
 * First parameter is the rule set ID to apply
 * Returns 0 upon success or -1 upon error.
 */
int
vll_restrict_self(int);

#endif