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