2006-08-05 10:17:57 +04:00
/*
* SELinux interface to the NetLabel subsystem
*
* Author : Paul Moore < paul . moore @ hp . com >
*
*/
/*
* ( 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>
# 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 ) ;
2008-10-10 18:16:33 +04:00
void selinux_netlbl_sk_security_free ( struct sk_security_struct * ssec ) ;
2006-11-18 01:38:53 +03:00
void selinux_netlbl_sk_security_reset ( struct sk_security_struct * ssec ,
int family ) ;
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
2008-10-10 18:16:33 +04:00
void selinux_netlbl_inet_conn_established ( struct sock * sk , u16 family ) ;
2007-02-28 23:14:22 +03:00
int selinux_netlbl_socket_post_create ( struct socket * sock ) ;
2006-08-30 04:55:38 +04:00
int selinux_netlbl_inode_permission ( struct inode * inode , int mask ) ;
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 ,
2007-02-28 23:14:22 +03:00
struct avc_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 (
struct sk_security_struct * ssec )
{
return ;
}
2007-02-28 23:14:22 +03:00
static inline void selinux_netlbl_sk_security_reset (
2008-04-23 01:46:09 +04:00
struct sk_security_struct * ssec ,
2007-02-28 23:14:22 +03:00
int family )
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 ;
}
static inline void selinux_netlbl_inet_conn_established ( struct sock * sk ,
u16 family )
2006-08-30 04:53:48 +04:00
{
return ;
}
2007-02-28 23:14:22 +03:00
static inline int selinux_netlbl_socket_post_create ( struct socket * sock )
2006-08-30 04:53:48 +04:00
{
2007-02-28 23:14:22 +03:00
return 0 ;
2006-08-30 04:53:48 +04:00
}
2006-08-05 10:17:57 +04:00
static inline int selinux_netlbl_inode_permission ( struct inode * inode ,
int mask )
{
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 ,
2007-02-28 23:14:22 +03:00
struct avc_audit_data * ad )
{
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