]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/smack-util.h
label: Rename to label-util.h
[thirdparty/systemd.git] / src / shared / smack-util.h
CommitLineData
db9ecf05 1/* SPDX-License-Identifier: LGPL-2.1-or-later */
8552b176
AK
2#pragma once
3
4/***
96b2fb93 5 Copyright © 2013 Intel Corporation
8552b176
AK
6
7 Author: Auke Kok <auke-jan.h.kok@intel.com>
8552b176
AK
8***/
9
10#include <stdbool.h>
11c3a366 11#include <sys/types.h>
8552b176 12
0690160e 13#include "label-util.h"
5ab58c20
WC
14#include "macro.h"
15
c02e7b1e
SW
16#define SMACK_FLOOR_LABEL "_"
17#define SMACK_STAR_LABEL "*"
18
5ab58c20 19typedef enum SmackAttr {
08c84981
LP
20 SMACK_ATTR_ACCESS,
21 SMACK_ATTR_EXEC,
22 SMACK_ATTR_MMAP,
23 SMACK_ATTR_TRANSMUTE,
24 SMACK_ATTR_IPIN,
25 SMACK_ATTR_IPOUT,
5ab58c20 26 _SMACK_ATTR_MAX,
2d93c20e 27 _SMACK_ATTR_INVALID = -EINVAL,
5ab58c20
WC
28} SmackAttr;
29
6baa7db0 30bool mac_smack_use(void);
b9c1bc28 31
03bc11d1 32int mac_smack_fix_full(int atfd, const char *inode_path, const char *label_path, LabelFixFlags flags);
c3151977 33static inline int mac_smack_fix(const char *path, LabelFixFlags flags) {
03bc11d1 34 return mac_smack_fix_full(AT_FDCWD, path, path, flags);
c3151977
TM
35}
36
5ab58c20
WC
37const char* smack_attr_to_string(SmackAttr i) _const_;
38SmackAttr smack_attr_from_string(const char *s) _pure_;
39int mac_smack_read(const char *path, SmackAttr attr, char **label);
40int mac_smack_read_fd(int fd, SmackAttr attr, char **label);
9dcb8923
DDM
41int mac_smack_apply_at(int dir_fd, const char *path, SmackAttr attr, const char *label);
42static inline int mac_smack_apply(const char *path, SmackAttr attr, const char *label) {
43 return mac_smack_apply_at(AT_FDCWD, path, attr, label);
44}
5ab58c20 45int mac_smack_apply_fd(int fd, SmackAttr attr, const char *label);
2ca620c4 46int mac_smack_apply_pid(pid_t pid, const char *label);
ba056b73 47int mac_smack_copy(const char *dest, const char *src);
ce0458be 48
9dcb8923
DDM
49int renameat_and_apply_smack_floor_label(int fdf, const char *from, int fdt, const char *to);
50static inline int rename_and_apply_smack_floor_label(const char *from, const char *to) {
51 return renameat_and_apply_smack_floor_label(AT_FDCWD, from, AT_FDCWD, to);
52}