• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * access_tokenid.h
4  *
5  * Copyright (C) 2022-2023 Huawei Technologies Co., Ltd. All rights reserved.
6  *
7  */
8 
9 #ifndef _ACCESS_TOKEN_ID_H
10 #define _ACCESS_TOKEN_ID_H
11 
12 #include <linux/ioctl.h>
13 #include <linux/types.h>
14 
15 #define	ACCESS_TOKEN_ID_IOCTL_BASE	'A'
16 #define MAX_PERM_GROUP_NUM 64
17 
18 enum {
19 	GET_TOKEN_ID = 1,
20 	SET_TOKEN_ID,
21 	GET_FTOKEN_ID,
22 	SET_FTOKEN_ID,
23 	ADD_PERMISSIONS,
24 	REMOVE_PERMISSIONS,
25 	GET_PERMISSION,
26 	SET_PERMISSION,
27 	ACCESS_TOKENID_MAX_NR
28 };
29 
30 typedef struct {
31 	unsigned int token_uniqueid : 20;
32 	unsigned int res : 5;
33 	unsigned int render_flag : 1;
34 	unsigned int dlp_flag : 1;
35 	unsigned int type : 2;
36 	unsigned int version : 3;
37 } access_tokenid_inner;
38 
39 typedef struct {
40 	uint32_t token;
41 	uint32_t op_code;
42 	bool is_granted;
43 } ioctl_set_get_perm_data;
44 
45 typedef struct {
46 	uint32_t token;
47 	uint32_t perm[MAX_PERM_GROUP_NUM];
48 } ioctl_add_perm_data;
49 
50 struct token_perm_node {
51 	ioctl_add_perm_data perm_data;
52 	struct token_perm_node *left;
53 	struct token_perm_node *right;
54 };
55 
56 #define	ACCESS_TOKENID_GET_TOKENID \
57 	_IOR(ACCESS_TOKEN_ID_IOCTL_BASE, GET_TOKEN_ID, unsigned long long)
58 #define	ACCESS_TOKENID_SET_TOKENID \
59 	_IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_TOKEN_ID, unsigned long long)
60 #define	ACCESS_TOKENID_GET_FTOKENID \
61 	_IOR(ACCESS_TOKEN_ID_IOCTL_BASE, GET_FTOKEN_ID, unsigned long long)
62 #define	ACCESS_TOKENID_SET_FTOKENID \
63 	_IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_FTOKEN_ID, unsigned long long)
64 #define	ACCESS_TOKENID_ADD_PERMISSIONS \
65 	_IOW(ACCESS_TOKEN_ID_IOCTL_BASE, ADD_PERMISSIONS, ioctl_add_perm_data)
66 #define	ACCESS_TOKENID_REMOVE_PERMISSIONS \
67 	_IOW(ACCESS_TOKEN_ID_IOCTL_BASE, REMOVE_PERMISSIONS, uint32_t)
68 #define	ACCESS_TOKENID_GET_PERMISSION \
69 	_IOW(ACCESS_TOKEN_ID_IOCTL_BASE, GET_PERMISSION, ioctl_set_get_perm_data)
70 #define	ACCESS_TOKENID_SET_PERMISSION \
71 	_IOW(ACCESS_TOKEN_ID_IOCTL_BASE, SET_PERMISSION, ioctl_set_get_perm_data)
72 
73 #endif /* _ACCESS_TOKEN_ID_H */
74