1 /* 2 * NetLabel Management Support 3 * 4 * This file defines the management functions for the NetLabel system. The 5 * NetLabel system manages static and dynamic label mappings for network 6 * protocols such as CIPSO and RIPSO. 7 * 8 * Author: Paul Moore <paul.moore@hp.com> 9 * 10 */ 11 12 /* 13 * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 14 * 15 * This program is free software; you can redistribute it and/or modify 16 * it under the terms of the GNU General Public License as published by 17 * the Free Software Foundation; either version 2 of the License, or 18 * (at your option) any later version. 19 * 20 * This program is distributed in the hope that it will be useful, 21 * but WITHOUT ANY WARRANTY; without even the implied warranty of 22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 23 * the GNU General Public License for more details. 24 * 25 * You should have received a copy of the GNU General Public License 26 * along with this program; if not, write to the Free Software 27 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 28 * 29 */ 30 31 #ifndef _NETLABEL_MGMT_H 32 #define _NETLABEL_MGMT_H 33 34 #include <net/netlabel.h> 35 36 /* 37 * The following NetLabel payloads are supported by the management interface. 38 * 39 * o ADD: 40 * Sent by an application to add a domain mapping to the NetLabel system. 41 * 42 * Required attributes: 43 * 44 * NLBL_MGMT_A_DOMAIN 45 * NLBL_MGMT_A_PROTOCOL 46 * 47 * If using NETLBL_NLTYPE_CIPSOV4 the following attributes are required: 48 * 49 * NLBL_MGMT_A_CV4DOI 50 * 51 * If using NETLBL_NLTYPE_UNLABELED no other attributes are required. 52 * 53 * o REMOVE: 54 * Sent by an application to remove a domain mapping from the NetLabel 55 * system. 56 * 57 * Required attributes: 58 * 59 * NLBL_MGMT_A_DOMAIN 60 * 61 * o LISTALL: 62 * This message can be sent either from an application or by the kernel in 63 * response to an application generated LISTALL message. When sent by an 64 * application there is no payload and the NLM_F_DUMP flag should be set. 65 * The kernel should respond with a series of the following messages. 66 * 67 * Required attributes: 68 * 69 * NLBL_MGMT_A_DOMAIN 70 * NLBL_MGMT_A_PROTOCOL 71 * 72 * If using NETLBL_NLTYPE_CIPSOV4 the following attributes are required: 73 * 74 * NLBL_MGMT_A_CV4DOI 75 * 76 * If using NETLBL_NLTYPE_UNLABELED no other attributes are required. 77 * 78 * o ADDDEF: 79 * Sent by an application to set the default domain mapping for the NetLabel 80 * system. 81 * 82 * Required attributes: 83 * 84 * NLBL_MGMT_A_PROTOCOL 85 * 86 * If using NETLBL_NLTYPE_CIPSOV4 the following attributes are required: 87 * 88 * NLBL_MGMT_A_CV4DOI 89 * 90 * If using NETLBL_NLTYPE_UNLABELED no other attributes are required. 91 * 92 * o REMOVEDEF: 93 * Sent by an application to remove the default domain mapping from the 94 * NetLabel system, there is no payload. 95 * 96 * o LISTDEF: 97 * This message can be sent either from an application or by the kernel in 98 * response to an application generated LISTDEF message. When sent by an 99 * application there is no payload. On success the kernel should send a 100 * response using the following format. 101 * 102 * Required attributes: 103 * 104 * NLBL_MGMT_A_PROTOCOL 105 * 106 * If using NETLBL_NLTYPE_CIPSOV4 the following attributes are required: 107 * 108 * NLBL_MGMT_A_CV4DOI 109 * 110 * If using NETLBL_NLTYPE_UNLABELED no other attributes are required. 111 * 112 * o PROTOCOLS: 113 * Sent by an application to request a list of configured NetLabel protocols 114 * in the kernel. When sent by an application there is no payload and the 115 * NLM_F_DUMP flag should be set. The kernel should respond with a series of 116 * the following messages. 117 * 118 * Required attributes: 119 * 120 * NLBL_MGMT_A_PROTOCOL 121 * 122 * o VERSION: 123 * Sent by an application to request the NetLabel version. When sent by an 124 * application there is no payload. This message type is also used by the 125 * kernel to respond to an VERSION request. 126 * 127 * Required attributes: 128 * 129 * NLBL_MGMT_A_VERSION 130 * 131 */ 132 133 /* NetLabel Management commands */ 134 enum { 135 NLBL_MGMT_C_UNSPEC, 136 NLBL_MGMT_C_ADD, 137 NLBL_MGMT_C_REMOVE, 138 NLBL_MGMT_C_LISTALL, 139 NLBL_MGMT_C_ADDDEF, 140 NLBL_MGMT_C_REMOVEDEF, 141 NLBL_MGMT_C_LISTDEF, 142 NLBL_MGMT_C_PROTOCOLS, 143 NLBL_MGMT_C_VERSION, 144 __NLBL_MGMT_C_MAX, 145 }; 146 #define NLBL_MGMT_C_MAX (__NLBL_MGMT_C_MAX - 1) 147 148 /* NetLabel Management attributes */ 149 enum { 150 NLBL_MGMT_A_UNSPEC, 151 NLBL_MGMT_A_DOMAIN, 152 /* (NLA_NUL_STRING) 153 * the NULL terminated LSM domain string */ 154 NLBL_MGMT_A_PROTOCOL, 155 /* (NLA_U32) 156 * the NetLabel protocol type (defined by NETLBL_NLTYPE_*) */ 157 NLBL_MGMT_A_VERSION, 158 /* (NLA_U32) 159 * the NetLabel protocol version number (defined by 160 * NETLBL_PROTO_VERSION) */ 161 NLBL_MGMT_A_CV4DOI, 162 /* (NLA_U32) 163 * the CIPSOv4 DOI value */ 164 __NLBL_MGMT_A_MAX, 165 }; 166 #define NLBL_MGMT_A_MAX (__NLBL_MGMT_A_MAX - 1) 167 168 /* NetLabel protocol functions */ 169 int netlbl_mgmt_genl_init(void); 170 171 /* NetLabel misc management functions */ 172 void netlbl_mgmt_protocount_inc(void); 173 void netlbl_mgmt_protocount_dec(void); 174 u32 netlbl_mgmt_protocount_value(void); 175 176 #endif 177