Commit | Line | Data |
---|---|---|
d15c345f PM |
1 | /* |
2 | * NetLabel NETLINK Interface | |
3 | * | |
4 | * This file defines the NETLINK interface 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_USER_H | |
32 | #define _NETLABEL_USER_H | |
33 | ||
7a0e1d60 | 34 | #include <linux/types.h> |
d15c345f PM |
35 | #include <linux/skbuff.h> |
36 | #include <linux/capability.h> | |
32f50cde | 37 | #include <linux/audit.h> |
7a0e1d60 | 38 | #include <net/netlink.h> |
d15c345f | 39 | #include <net/genetlink.h> |
7a0e1d60 | 40 | #include <net/netlabel.h> |
d15c345f PM |
41 | |
42 | /* NetLabel NETLINK helper functions */ | |
43 | ||
d15c345f PM |
44 | /** |
45 | * netlbl_netlink_hdr_put - Write the NETLINK buffers into a sk_buff | |
46 | * @skb: the packet | |
47 | * @pid: the PID of the receipient | |
48 | * @seq: the sequence number | |
49 | * @type: the generic NETLINK message family type | |
50 | * @cmd: command | |
51 | * | |
52 | * Description: | |
53 | * Write both a NETLINK nlmsghdr structure and a Generic NETLINK genlmsghdr | |
54 | * struct to the packet. Returns a pointer to the start of the payload buffer | |
55 | * on success or NULL on failure. | |
56 | * | |
57 | */ | |
58 | static inline void *netlbl_netlink_hdr_put(struct sk_buff *skb, | |
59 | u32 pid, | |
60 | u32 seq, | |
61 | int type, | |
fcd48280 | 62 | int flags, |
d15c345f PM |
63 | u8 cmd) |
64 | { | |
65 | return genlmsg_put(skb, | |
66 | pid, | |
67 | seq, | |
68 | type, | |
69 | 0, | |
fcd48280 | 70 | flags, |
d15c345f PM |
71 | cmd, |
72 | NETLBL_PROTO_VERSION); | |
73 | } | |
74 | ||
95d4e6be PM |
75 | /** |
76 | * netlbl_netlink_auditinfo - Fetch the audit information from a NETLINK msg | |
77 | * @skb: the packet | |
78 | * @audit_info: NetLabel audit information | |
79 | */ | |
80 | static inline void netlbl_netlink_auditinfo(struct sk_buff *skb, | |
81 | struct netlbl_audit *audit_info) | |
82 | { | |
83 | audit_info->secid = NETLINK_CB(skb).sid; | |
84 | audit_info->loginuid = NETLINK_CB(skb).loginuid; | |
85 | } | |
86 | ||
d15c345f PM |
87 | /* NetLabel NETLINK I/O functions */ |
88 | ||
89 | int netlbl_netlink_init(void); | |
d15c345f | 90 | |
32f50cde PM |
91 | /* NetLabel Audit Functions */ |
92 | ||
95d4e6be PM |
93 | struct audit_buffer *netlbl_audit_start_common(int type, |
94 | struct netlbl_audit *audit_info); | |
32f50cde | 95 | |
d15c345f | 96 | #endif |