Blame view

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

fd3858554   Paul Moore   [NetLabel]: rewor...
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
  /* NetLabel Management attributes */
  enum {
  	NLBL_MGMT_A_UNSPEC,
  	NLBL_MGMT_A_DOMAIN,
  	/* (NLA_NUL_STRING)
  	 * the NULL terminated LSM domain string */
  	NLBL_MGMT_A_PROTOCOL,
  	/* (NLA_U32)
  	 * the NetLabel protocol type (defined by NETLBL_NLTYPE_*) */
  	NLBL_MGMT_A_VERSION,
  	/* (NLA_U32)
  	 * the NetLabel protocol version number (defined by
  	 * NETLBL_PROTO_VERSION) */
  	NLBL_MGMT_A_CV4DOI,
  	/* (NLA_U32)
  	 * the CIPSOv4 DOI value */
63c416887   Paul Moore   netlabel: Add net...
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
  	NLBL_MGMT_A_IPV6ADDR,
  	/* (NLA_BINARY, struct in6_addr)
  	 * an IPv6 address */
  	NLBL_MGMT_A_IPV6MASK,
  	/* (NLA_BINARY, struct in6_addr)
  	 * an IPv6 address mask */
  	NLBL_MGMT_A_IPV4ADDR,
  	/* (NLA_BINARY, struct in_addr)
  	 * an IPv4 address */
  	NLBL_MGMT_A_IPV4MASK,
  	/* (NLA_BINARY, struct in_addr)
  	 * and IPv4 address mask */
  	NLBL_MGMT_A_ADDRSELECTOR,
  	/* (NLA_NESTED)
  	 * an IP address selector, must contain an address, mask, and protocol
  	 * attribute plus any protocol specific attributes */
  	NLBL_MGMT_A_SELECTORLIST,
  	/* (NLA_NESTED)
  	 * the selector list, there must be at least one
  	 * NLBL_MGMT_A_ADDRSELECTOR attribute */
fd3858554   Paul Moore   [NetLabel]: rewor...
212
213
214
  	__NLBL_MGMT_A_MAX,
  };
  #define NLBL_MGMT_A_MAX (__NLBL_MGMT_A_MAX - 1)
d15c345fe   Paul Moore   [NetLabel]: core ...
215
216
  /* NetLabel protocol functions */
  int netlbl_mgmt_genl_init(void);
c783f1ce5   Paul Moore   NetLabel: Remove ...
217
218
  /* NetLabel configured protocol reference counter */
  extern atomic_t netlabel_mgmt_protocount;
23bcdc1ad   Paul Moore   SELinux: enable d...
219

d15c345fe   Paul Moore   [NetLabel]: core ...
220
  #endif