11ccea77eSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2c60475bfSPaul Moore /*
3c60475bfSPaul Moore * SELinux interface to the NetLabel subsystem
4c60475bfSPaul Moore *
582c21bfaSPaul Moore * Author: Paul Moore <paul@paul-moore.com>
6c60475bfSPaul Moore */
7c60475bfSPaul Moore
8c60475bfSPaul Moore /*
9c60475bfSPaul Moore * (c) Copyright Hewlett-Packard Development Company, L.P., 2006
10c60475bfSPaul Moore */
11c60475bfSPaul Moore
12c60475bfSPaul Moore #ifndef _SELINUX_NETLABEL_H_
13c60475bfSPaul Moore #define _SELINUX_NETLABEL_H_
14c60475bfSPaul Moore
15c60475bfSPaul Moore #include <linux/types.h>
16c60475bfSPaul Moore #include <linux/fs.h>
17c60475bfSPaul Moore #include <linux/net.h>
18c60475bfSPaul Moore #include <linux/skbuff.h>
19c60475bfSPaul Moore #include <net/sock.h>
20389fb800SPaul Moore #include <net/request_sock.h>
21d452930fSRichard Haines #include <net/sctp/structs.h>
22c60475bfSPaul Moore
23c60475bfSPaul Moore #include "avc.h"
24c60475bfSPaul Moore #include "objsec.h"
25c60475bfSPaul Moore
26c60475bfSPaul Moore #ifdef CONFIG_NETLABEL
27c60475bfSPaul Moore void selinux_netlbl_cache_invalidate(void);
28c60475bfSPaul Moore
29a04e71f6SHuw Davies void selinux_netlbl_err(struct sk_buff *skb, u16 family, int error,
30a04e71f6SHuw Davies int gateway);
31dfaebe98SPaul Moore
32dd3e7836SEric Paris void selinux_netlbl_sk_security_free(struct sk_security_struct *sksec);
33dd3e7836SEric Paris void selinux_netlbl_sk_security_reset(struct sk_security_struct *sksec);
34c60475bfSPaul Moore
3575e22910SPaul Moore int selinux_netlbl_skbuff_getsid(struct sk_buff *skb,
3675e22910SPaul Moore u16 family,
37220deb96SPaul Moore u32 *type,
3875e22910SPaul Moore u32 *sid);
39948bf85cSPaul Moore int selinux_netlbl_skbuff_setsid(struct sk_buff *skb,
40948bf85cSPaul Moore u16 family,
41948bf85cSPaul Moore u32 sid);
42*c081d53fSXin Long int selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
43d452930fSRichard Haines struct sk_buff *skb);
44389fb800SPaul Moore int selinux_netlbl_inet_conn_request(struct request_sock *req, u16 family);
45389fb800SPaul Moore void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family);
46d452930fSRichard Haines void selinux_netlbl_sctp_sk_clone(struct sock *sk, struct sock *newsk);
47389fb800SPaul Moore int selinux_netlbl_socket_post_create(struct sock *sk, u16 family);
48c60475bfSPaul Moore int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec,
49c60475bfSPaul Moore struct sk_buff *skb,
5075e22910SPaul Moore u16 family,
512bf49690SThomas Liu struct common_audit_data *ad);
52c60475bfSPaul Moore int selinux_netlbl_socket_setsockopt(struct socket *sock,
53c60475bfSPaul Moore int level,
54c60475bfSPaul Moore int optname);
55014ab19aSPaul Moore int selinux_netlbl_socket_connect(struct sock *sk, struct sockaddr *addr);
56d452930fSRichard Haines int selinux_netlbl_socket_connect_locked(struct sock *sk,
57d452930fSRichard Haines struct sockaddr *addr);
58014ab19aSPaul Moore
59c60475bfSPaul Moore #else
selinux_netlbl_cache_invalidate(void)60c60475bfSPaul Moore static inline void selinux_netlbl_cache_invalidate(void)
61c60475bfSPaul Moore {
62c60475bfSPaul Moore return;
63c60475bfSPaul Moore }
64c60475bfSPaul Moore
selinux_netlbl_err(struct sk_buff * skb,u16 family,int error,int gateway)65dfaebe98SPaul Moore static inline void selinux_netlbl_err(struct sk_buff *skb,
66a04e71f6SHuw Davies u16 family,
67dfaebe98SPaul Moore int error,
68dfaebe98SPaul Moore int gateway)
69dfaebe98SPaul Moore {
70dfaebe98SPaul Moore return;
71dfaebe98SPaul Moore }
72dfaebe98SPaul Moore
selinux_netlbl_sk_security_free(struct sk_security_struct * sksec)736c5b3fc0SPaul Moore static inline void selinux_netlbl_sk_security_free(
74dd3e7836SEric Paris struct sk_security_struct *sksec)
756c5b3fc0SPaul Moore {
766c5b3fc0SPaul Moore return;
776c5b3fc0SPaul Moore }
786c5b3fc0SPaul Moore
selinux_netlbl_sk_security_reset(struct sk_security_struct * sksec)79c60475bfSPaul Moore static inline void selinux_netlbl_sk_security_reset(
80dd3e7836SEric Paris struct sk_security_struct *sksec)
81c60475bfSPaul Moore {
82c60475bfSPaul Moore return;
83c60475bfSPaul Moore }
84c60475bfSPaul Moore
selinux_netlbl_skbuff_getsid(struct sk_buff * skb,u16 family,u32 * type,u32 * sid)85c60475bfSPaul Moore static inline int selinux_netlbl_skbuff_getsid(struct sk_buff *skb,
8675e22910SPaul Moore u16 family,
87220deb96SPaul Moore u32 *type,
88c60475bfSPaul Moore u32 *sid)
89c60475bfSPaul Moore {
90220deb96SPaul Moore *type = NETLBL_NLTYPE_NONE;
91c60475bfSPaul Moore *sid = SECSID_NULL;
92c60475bfSPaul Moore return 0;
93c60475bfSPaul Moore }
selinux_netlbl_skbuff_setsid(struct sk_buff * skb,u16 family,u32 sid)94948bf85cSPaul Moore static inline int selinux_netlbl_skbuff_setsid(struct sk_buff *skb,
95948bf85cSPaul Moore u16 family,
96948bf85cSPaul Moore u32 sid)
97948bf85cSPaul Moore {
98948bf85cSPaul Moore return 0;
99948bf85cSPaul Moore }
100c60475bfSPaul Moore
selinux_netlbl_sctp_assoc_request(struct sctp_association * asoc,struct sk_buff * skb)101*c081d53fSXin Long static inline int selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
102d452930fSRichard Haines struct sk_buff *skb)
103d452930fSRichard Haines {
104d452930fSRichard Haines return 0;
105d452930fSRichard Haines }
selinux_netlbl_inet_conn_request(struct request_sock * req,u16 family)106389fb800SPaul Moore static inline int selinux_netlbl_inet_conn_request(struct request_sock *req,
107014ab19aSPaul Moore u16 family)
108c60475bfSPaul Moore {
109c60475bfSPaul Moore return 0;
110c60475bfSPaul Moore }
selinux_netlbl_inet_csk_clone(struct sock * sk,u16 family)111389fb800SPaul Moore static inline void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family)
112389fb800SPaul Moore {
113389fb800SPaul Moore return;
114389fb800SPaul Moore }
selinux_netlbl_sctp_sk_clone(struct sock * sk,struct sock * newsk)1152572f5b4SArnd Bergmann static inline void selinux_netlbl_sctp_sk_clone(struct sock *sk,
1162572f5b4SArnd Bergmann struct sock *newsk)
117d452930fSRichard Haines {
118d452930fSRichard Haines return;
119d452930fSRichard Haines }
selinux_netlbl_socket_post_create(struct sock * sk,u16 family)120389fb800SPaul Moore static inline int selinux_netlbl_socket_post_create(struct sock *sk,
121389fb800SPaul Moore u16 family)
122c60475bfSPaul Moore {
123c60475bfSPaul Moore return 0;
124c60475bfSPaul Moore }
selinux_netlbl_sock_rcv_skb(struct sk_security_struct * sksec,struct sk_buff * skb,u16 family,struct common_audit_data * ad)125c60475bfSPaul Moore static inline int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec,
126c60475bfSPaul Moore struct sk_buff *skb,
12775e22910SPaul Moore u16 family,
1282bf49690SThomas Liu struct common_audit_data *ad)
129c60475bfSPaul Moore {
130c60475bfSPaul Moore return 0;
131c60475bfSPaul Moore }
selinux_netlbl_socket_setsockopt(struct socket * sock,int level,int optname)132c60475bfSPaul Moore static inline int selinux_netlbl_socket_setsockopt(struct socket *sock,
133c60475bfSPaul Moore int level,
134c60475bfSPaul Moore int optname)
135c60475bfSPaul Moore {
136c60475bfSPaul Moore return 0;
137c60475bfSPaul Moore }
selinux_netlbl_socket_connect(struct sock * sk,struct sockaddr * addr)138014ab19aSPaul Moore static inline int selinux_netlbl_socket_connect(struct sock *sk,
139014ab19aSPaul Moore struct sockaddr *addr)
140014ab19aSPaul Moore {
141014ab19aSPaul Moore return 0;
142014ab19aSPaul Moore }
selinux_netlbl_socket_connect_locked(struct sock * sk,struct sockaddr * addr)143d452930fSRichard Haines static inline int selinux_netlbl_socket_connect_locked(struct sock *sk,
144d452930fSRichard Haines struct sockaddr *addr)
145d452930fSRichard Haines {
146d452930fSRichard Haines return 0;
147d452930fSRichard Haines }
148c60475bfSPaul Moore #endif /* CONFIG_NETLABEL */
149c60475bfSPaul Moore
150c60475bfSPaul Moore #endif
151