2006-08-05 10:17:57 +04:00
/*
* SELinux interface to the NetLabel subsystem
*
2011-08-01 15:10:33 +04:00
* Author : Paul Moore < paul @ paul - moore . com >
2006-08-05 10:17:57 +04:00
*
*/
/*
* ( 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
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*
*/
# ifndef _SELINUX_NETLABEL_H_
# define _SELINUX_NETLABEL_H_
2006-08-30 04:56:04 +04:00
# include <linux/types.h>
# include <linux/fs.h>
# include <linux/net.h>
# include <linux/skbuff.h>
# include <net/sock.h>
2009-03-28 00:10:34 +03:00
# include <net/request_sock.h>
2006-08-30 04:56:04 +04:00
# include "avc.h"
# include "objsec.h"
2006-08-05 10:17:57 +04:00
# ifdef CONFIG_NETLABEL
void selinux_netlbl_cache_invalidate ( void ) ;
2007-02-28 23:14:22 +03:00
2008-10-10 18:16:31 +04:00
void selinux_netlbl_err ( struct sk_buff * skb , int error , int gateway ) ;
2010-04-07 23:08:46 +04:00
void selinux_netlbl_sk_security_free ( struct sk_security_struct * sksec ) ;
void selinux_netlbl_sk_security_reset ( struct sk_security_struct * sksec ) ;
2007-02-28 23:14:22 +03:00
2008-01-29 16:38:04 +03:00
int selinux_netlbl_skbuff_getsid ( struct sk_buff * skb ,
u16 family ,
2008-01-29 16:38:23 +03:00
u32 * type ,
2008-01-29 16:38:04 +03:00
u32 * sid ) ;
2008-10-10 18:16:32 +04:00
int selinux_netlbl_skbuff_setsid ( struct sk_buff * skb ,
u16 family ,
u32 sid ) ;
2007-02-28 23:14:22 +03:00
2009-03-28 00:10:34 +03:00
int selinux_netlbl_inet_conn_request ( struct request_sock * req , u16 family ) ;
void selinux_netlbl_inet_csk_clone ( struct sock * sk , u16 family ) ;
int selinux_netlbl_socket_post_create ( struct sock * sk , u16 family ) ;
2007-02-28 23:14:22 +03:00
int selinux_netlbl_sock_rcv_skb ( struct sk_security_struct * sksec ,
struct sk_buff * skb ,
2008-01-29 16:38:04 +03:00
u16 family ,
2009-07-14 20:14:09 +04:00
struct common_audit_data * ad ) ;
2006-10-31 02:22:15 +03:00
int selinux_netlbl_socket_setsockopt ( struct socket * sock ,
int level ,
int optname ) ;
2008-10-10 18:16:33 +04:00
int selinux_netlbl_socket_connect ( struct sock * sk , struct sockaddr * addr ) ;
2006-08-05 10:17:57 +04:00
# else
static inline void selinux_netlbl_cache_invalidate ( void )
{
return ;
}
2008-10-10 18:16:31 +04:00
static inline void selinux_netlbl_err ( struct sk_buff * skb ,
int error ,
int gateway )
{
return ;
}
2008-10-10 18:16:33 +04:00
static inline void selinux_netlbl_sk_security_free (
2010-04-07 23:08:46 +04:00
struct sk_security_struct * sksec )
2008-10-10 18:16:33 +04:00
{
return ;
}
2007-02-28 23:14:22 +03:00
static inline void selinux_netlbl_sk_security_reset (
2010-04-07 23:08:46 +04:00
struct sk_security_struct * sksec )
2006-11-18 01:38:54 +03:00
{
2007-02-28 23:14:22 +03:00
return ;
2006-11-18 01:38:54 +03:00
}
2006-08-05 10:17:57 +04:00
2007-02-28 23:14:22 +03:00
static inline int selinux_netlbl_skbuff_getsid ( struct sk_buff * skb ,
2008-01-29 16:38:04 +03:00
u16 family ,
2008-01-29 16:38:23 +03:00
u32 * type ,
2007-02-28 23:14:22 +03:00
u32 * sid )
2006-08-05 10:17:57 +04:00
{
2008-01-29 16:38:23 +03:00
* type = NETLBL_NLTYPE_NONE ;
2007-02-28 23:14:22 +03:00
* sid = SECSID_NULL ;
2006-08-05 10:17:57 +04:00
return 0 ;
}
2008-10-10 18:16:32 +04:00
static inline int selinux_netlbl_skbuff_setsid ( struct sk_buff * skb ,
u16 family ,
u32 sid )
{
return 0 ;
}
2006-08-05 10:17:57 +04:00
2008-10-10 18:16:33 +04:00
static inline int selinux_netlbl_conn_setsid ( struct sock * sk ,
struct sockaddr * addr )
{
return 0 ;
}
2009-03-28 00:10:34 +03:00
static inline int selinux_netlbl_inet_conn_request ( struct request_sock * req ,
u16 family )
2006-08-30 04:53:48 +04:00
{
2009-03-28 00:10:34 +03:00
return 0 ;
2006-08-30 04:53:48 +04:00
}
2009-03-28 00:10:34 +03:00
static inline void selinux_netlbl_inet_csk_clone ( struct sock * sk , u16 family )
2006-08-30 04:53:48 +04:00
{
2009-03-28 00:10:34 +03:00
return ;
2006-08-30 04:53:48 +04:00
}
2009-03-28 00:10:34 +03:00
static inline int selinux_netlbl_socket_post_create ( struct sock * sk ,
u16 family )
2006-08-05 10:17:57 +04:00
{
return 0 ;
}
2007-02-28 23:14:22 +03:00
static inline int selinux_netlbl_sock_rcv_skb ( struct sk_security_struct * sksec ,
struct sk_buff * skb ,
2008-01-29 16:38:04 +03:00
u16 family ,
2009-07-14 20:14:09 +04:00
struct common_audit_data * ad )
2007-02-28 23:14:22 +03:00
{
return 0 ;
}
2006-10-31 02:22:15 +03:00
static inline int selinux_netlbl_socket_setsockopt ( struct socket * sock ,
int level ,
int optname )
{
return 0 ;
}
2008-10-10 18:16:33 +04:00
static inline int selinux_netlbl_socket_connect ( struct sock * sk ,
struct sockaddr * addr )
{
return 0 ;
}
2006-08-05 10:17:57 +04:00
# endif /* CONFIG_NETLABEL */
# endif