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