SELinux安全操作系统---给API函数移植钩子函数

在此声明:给系统添加的钩子函数众多,移植困难重重,每个函数添加,都需要搞清楚里面的各种参数和权限的关系,在此只列举钩子函数的声明部分,具体的添加钩子函数,需要在系统的每个函数的实现中进行调用,关于钩子函数调用接口部分,代码众多,在此不做阐述!

/*
 * RTEMS security.h
 *
 */

#ifndef __RTEMS_SECURITY_H
#define __RTEMS_SECURITY_H

#include <rtems.h>
#include <rtems/fs.h>
#include <rtems/imfs.h>

/* Max size of security context. */
#define MAX_CONTEXT_SIZE	48

struct security_operations *security_ops;	/* Initialized to NULL */
 
int sertems_init(void);
int sertems_set_context(char *con, size_t count);
int sertems_get_context(Thread_Control * p, char * con, size_t len);

struct security_operations {
	int (*object_getobject) (Objects_Control *obj, Objects_APIs the_api, uint16_t the_class);
	int (*object_ident) (Objects_Control *obj, Objects_APIs the_api, uint16_t the_class);
	int (*object_setname) (Objects_Control *obj, Objects_APIs the_api, uint16_t the_class);

	int (*task_create)(int security_level);
	int (*task_alloc_security) (Thread_Control * p, int security_level);
	void (*task_free_security) (Thread_Control * p);
	int (*task_set_context) (Thread_Control * p, int security_level);
	int (*task_start) (Thread_Control * p);
	int (*task_restart) (Thread_Control * p);
	int (*task_delete) (Thread_Control * p);
	int (*task_suspend) (Thread_Control * p);
	int (*task_resume) (Thread_Control * p);
	int (*task_getstat) (Thread_Control * p);
	int (*task_setprio) (Thread_Control * p);
	int (*task_setmode) (void);
	int (*task_getapi) (Thread_Control * p);
	int (*task_setapi) (Thread_Control * p);
	int (*task_addvar) (Thread_Control * p);
	int (*task_getvar) (Thread_Control * p);
	int (*task_delvar) (Thread_Control * p);
	int (*task_wake) (void);
	int (*task_setsched) (Thread_Control * p);
	int (*task_getsched) (Thread_Control * p);
	int (*task_setaffinity) (Thread_Control * p);
	int (*task_getaffinity) (Thread_Control * p);
	int (*task_kill) (Thread_Control * p, int sig);

	int (*sem_alloc_security) (CORE_semaphore_Control * sma);
	void (*sem_free_security) (CORE_semaphore_Control * sma);
	int (*sem_associate) (CORE_semaphore_Control * sma);
	int (*sem_delete) (CORE_semaphore_Control * sma);
	int (*sem_obtain) (CORE_semaphore_Control * sma);
	int (*sem_release) (CORE_semaphore_Control * sma);
	int (*sem_flush) (CORE_semaphore_Control * sma);

	int (*mutex_alloc_security) (CORE_mutex_Control * mutex);
	void (*mutex_free_security) (CORE_mutex_Control * mutex);
	int (*mutex_delete) (CORE_mutex_Control * mutex);
	int (*mutex_obtain) (CORE_mutex_Control * mutex);
	int (*mutex_release) (CORE_mutex_Control * mutex);
	int (*mutex_flush) (CORE_mutex_Control * mutex);
	int (*mutex_setprio) (CORE_mutex_Control * mutex);
	int (*mutex_getprio) (CORE_mutex_Control * mutex);

#ifdef RTEMS_NETWORKING
	int (*socket_create) (int domain, int type, int protocol);
	int (*socket_post_create) (struct socket * sock, int domain,
				    int type, int protocol);
	void (*socket_free_security) (struct socket * sock);
	int (*socket_bind) (struct socket * sock,
			    struct sockaddr * address, int addrlen);
	int (*socket_connect) (struct socket * sock,
			       struct sockaddr * address, int addrlen);
	int (*socket_listen) (struct socket * sock, int backlog);
	int (*socket_accept) (struct socket * sock, struct socket * newsock);
	int (*socket_sendmsg) (struct socket * sock);
	int (*socket_recvmsg) (struct socket * sock);
	int (*socket_getpeersockname) (struct socket * sock);
	int (*socket_getsockopt) (struct socket * sock, int level, int optname);
	int (*socket_setsockopt) (struct socket * sock, int level, int optname);
	int (*socket_shutdown) (struct socket * sock, int how);
#endif

	int (*msg_alloc_security) (CORE_message_queue_Buffer_control *the_message);
	int (*msg_free_security) (CORE_message_queue_Buffer_control *the_message);
	int (*msgq_create_security) (CORE_message_queue_Control * the_message_queue);
	int (*msgq_delete) (CORE_message_queue_Control * the_message_queue);
	void(*msgq_free_security) (CORE_message_queue_Control * the_message_queue);
	int(*msgq_flush) (CORE_message_queue_Control * the_message_queue);
	int(*msgq_send) (CORE_message_queue_Control *the_message_queue,
				    CORE_message_queue_Buffer_control *the_message);
	int(*msgq_receive) (CORE_message_queue_Control *the_message_queue,
				    CORE_message_queue_Buffer_control *the_message);
	int(*msgq_broadcast) (CORE_message_queue_Control * the_message_queue);
	int(*msgq_associate) (CORE_message_queue_Control * the_message_queue);
	int(*msgq_setattr) (CORE_message_queue_Control * the_message_queue);
	int(*msgq_getattr) (CORE_message_queue_Control * the_message_queue);

	int (*mt_alloc_security) (rtems_filesystem_mount_table_entry_t *mt_entry);
	void (*mt_free_security) (rtems_filesystem_mount_table_entry_t *mt_entry);
	int (*mt_kern_mount) (rtems_filesystem_mount_table_entry_t *mt_entry);
	//int (*mt_mount) (char *dev_name, struct nameidata * nd,
			 //char *type, unsigned long flags, void *data);
	int (*mt_statvfs) (rtems_filesystem_mount_table_entry_t *mt_entry);	
	int (*mt_umount) (rtems_filesystem_mount_table_entry_t *mt_entry);	

	int (*inode_alloc_security) (IMFS_jnode_t *inode);	
	void (*inode_free_security) (IMFS_jnode_t *inode);
	int (*inode_create) (rtems_filesystem_mount_table_entry_t *mt_entry,
				IMFS_jnode_t *dir, int mode);
	int (*inode_post_create) (rtems_filesystem_mount_table_entry_t *mt_entry,
			  IMFS_jnode_t *dir,
			  IMFS_jnode_t *inode);
	int (*inode_link) (IMFS_jnode_t *dir, IMFS_jnode_t *old_inode);
	int (*inode_remove) (IMFS_jnode_t *dir, IMFS_jnode_t *inode);
	int (*inode_rename) (IMFS_jnode_t *inode, IMFS_jnode_t *old_dir,
                                IMFS_jnode_t *new_dir);
	int (*inode_readlink) (IMFS_jnode_t *inode);
	int (*inode_chmod) (IMFS_jnode_t *inode);
	int (*inode_chown) (IMFS_jnode_t *inode);
	int (*inode_read) (IMFS_jnode_t *inode);
	int (*inode_write) (rtems_libio_t *iop, IMFS_jnode_t *inode);

	int (*libio_alloc_security) (rtems_libio_t *iop);
	void (*libio_free_security) (rtems_libio_t *iop);
	int (*libio_use) (rtems_libio_t *iop);
};

extern inline int security_object_getobject(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class);

extern inline int security_object_ident(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class);

extern inline int security_object_setname(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class);

extern inline int security_task_create(int security_level);

extern inline int security_task_alloc (Thread_Control *p, int security_level);

extern inline void security_task_free(Thread_Control *p);

extern inline int security_task_setcon (Thread_Control *p, int security_level);

extern inline int security_task_start(Thread_Control *p);

extern inline int security_task_restart(Thread_Control *p);

extern inline int security_task_delete(Thread_Control *p);

extern inline int security_task_suspend(Thread_Control *p);

extern inline int security_task_resume(Thread_Control *p);

extern inline int security_task_getstat(Thread_Control *p);

extern inline int security_task_setprio(Thread_Control *p);

extern int security_task_setmode();

extern inline int security_task_getapi(Thread_Control *p);

extern inline int security_task_setapi(Thread_Control *p);

extern inline int security_task_addvar(Thread_Control *p);

extern inline int security_task_getvar(Thread_Control *p);

extern inline int security_task_delvar(Thread_Control *p);

extern inline int security_task_wake();

extern inline int security_task_setsched(Thread_Control *p);

extern inline int security_task_getsched(Thread_Control *p);

extern inline int security_task_setaffinity(Thread_Control *p);

extern inline int security_task_getaffinity(Thread_Control *p);

extern inline int security_task_kill(Thread_Control *p, int sig);

extern inline int security_sem_alloc (CORE_semaphore_Control *sma);

extern inline void security_sem_free (CORE_semaphore_Control *sma);

extern inline int security_sem_associate (CORE_semaphore_Control *sma);

extern inline int security_sem_delete (CORE_semaphore_Control *sma);

extern inline int security_sem_obtain (CORE_semaphore_Control *sma);

extern inline int security_sem_release (CORE_semaphore_Control *sma);

extern inline int security_sem_flush (CORE_semaphore_Control *sma);


extern inline int security_mutex_alloc (CORE_mutex_Control *mutex);

extern inline void security_mutex_free (CORE_mutex_Control *mutex);

extern inline int security_mutex_delete (CORE_mutex_Control *mutex);

extern inline int security_mutex_obtain (CORE_mutex_Control *mutex);

extern inline int security_mutex_release (CORE_mutex_Control *mutex);

extern inline int security_mutex_flush (CORE_mutex_Control *mutex);

extern inline int security_mutex_setprio (CORE_mutex_Control *mutex);

extern inline int security_mutex_getprio (CORE_mutex_Control *mutex);

extern inline int security_socket_create (int domain, int type, int protocol);

extern inline int security_socket_post_create(struct socket * sock, 
					       int domain,
					       int type, 
					       int protocol);

extern inline void security_socket_free(struct socket * sock);

extern inline int security_socket_bind(struct socket * sock, 
				       struct sockaddr * address, 
				       int addrlen);

extern inline int security_socket_connect(struct socket * sock, 
					  struct sockaddr * address, 
					  int addrlen);

extern inline int security_socket_listen(struct socket * sock, int backlog);

extern inline int security_socket_accept(struct socket * sock, 
					 struct socket * newsock);

extern inline int security_socket_sendmsg(struct socket * sock);

extern inline int security_socket_recvmsg(struct socket * sock);

extern inline int security_socket_getpeersockname(struct socket * sock);

extern inline int security_socket_getsockopt(struct socket * sock, 
					     int level, int optname);

extern inline int security_socket_setsockopt(struct socket * sock, 
					     int level, int optname);

extern inline int security_socket_shutdown(struct socket * sock, int how);

extern inline int security_msg_alloc(CORE_message_queue_Buffer_control *the_message);
extern inline void security_msg_free(CORE_message_queue_Buffer_control *the_message);
extern inline int security_msgq_create(CORE_message_queue_Control *the_message_queue);
extern inline int security_msgq_delete(CORE_message_queue_Control *the_message_queue);
extern inline void security_msgq_free(CORE_message_queue_Control *the_message_queue);
extern inline int security_msgq_flush(CORE_message_queue_Control *the_message_queue);
extern inline int security_msgq_send(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message);
extern inline int security_msgq_receive(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message);
extern inline int security_msgq_broadcast(CORE_message_queue_Control *the_message_queue);
extern inline int security_msgq_associate(CORE_message_queue_Control *the_message_queue);
extern inline int security_msgq_setattr(CORE_message_queue_Control *the_message_queue);
extern inline int security_msgq_getattr(CORE_message_queue_Control *the_message_queue);

extern inline int security_mt_alloc (rtems_filesystem_mount_table_entry_t *mt_entry);

extern inline void security_mt_free (rtems_filesystem_mount_table_entry_t *mt_entry);

extern inline int security_mt_kern_mount (rtems_filesystem_mount_table_entry_t *mt_entry);

extern inline int security_mt_statvfs (rtems_filesystem_mount_table_entry_t *mt_entry);

extern inline int security_mt_umount (rtems_filesystem_mount_table_entry_t *mt_entry);

extern inline int security_inode_alloc (IMFS_jnode_t *inode);

extern inline void security_inode_free (IMFS_jnode_t *inode);

extern inline int security_inode_create (rtems_filesystem_mount_table_entry_t *mt_entry,
				IMFS_jnode_t *dir, int mode);

extern inline int security_inode_post_create (rtems_filesystem_mount_table_entry_t *mt_entry,
			  IMFS_jnode_t *dir,
			  IMFS_jnode_t *inode);

extern inline int security_inode_link (IMFS_jnode_t *dir,
		    IMFS_jnode_t *old_inode);

extern inline int security_inode_remove (IMFS_jnode_t *dir,
		    IMFS_jnode_t *inode);

extern inline int security_inode_rename (IMFS_jnode_t *inode, 
								IMFS_jnode_t *old_dir,
                                IMFS_jnode_t *new_dir);

extern inline int security_inode_readlink (IMFS_jnode_t *inode);

extern inline int security_inode_chmod (IMFS_jnode_t *inode);

extern inline int security_inode_chown (IMFS_jnode_t *inode);

extern inline int security_inode_read (IMFS_jnode_t *inode);

extern inline int security_inode_write (rtems_libio_t *iop, IMFS_jnode_t *inode);

extern inline int security_libio_alloc (rtems_libio_t *iop);

extern inline void security_libio_free (rtems_libio_t *iop);

extern inline int security_libio_use (rtems_libio_t *iop);

#endif

钩子函数定义调用部分:

/*
 * RTEMS srtems_config.h
 *
 */

#ifndef __SERTEMS_CONFIG_H
#define __SERTEMS_CONFIG_H

#include <rtems/sertems/rtems_security.h>

/*
 * SERTEMS CONFIGURE
 */
#ifdef RTEMS_SERTEMS

  #if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_SEM)
    sertems_mac_sem = 1;
  #else
    sertems_mac_sem = 0;
  #endif

  #if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_MUTEX)
    sertems_mac_mutex = 1;
  #else
    sertems_mac_mutex = 0;
  #endif

  #if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_MSGQ)
    sertems_mac_msgq = 1;
  #else
    sertems_mac_msgq = 0;
  #endif

  #if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_FILE)
    sertems_mac_file = 1;
  #else
    sertems_mac_file = 0;
  #endif

#endif /* RTEMS_SERTEMS */

#ifdef RTEMS_SERTEMS
inline int security_object_getobject(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class)
{
	return security_ops->object_getobject (obj, the_api, the_class);
}

inline int security_object_ident(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class)
{
	return security_ops->object_ident (obj, the_api, the_class);
}

inline int security_object_setname(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class)
{
	return security_ops->object_setname (obj, the_api, the_class);
}

inline int security_task_create(int security_level)
{
	return security_ops->task_create (security_level);
}

inline int security_task_alloc (Thread_Control *p, int security_level)
{
	return security_ops->task_alloc_security (p, security_level);
}

inline void security_task_free(Thread_Control *p)
{
	security_ops->task_free_security (p);
}

inline int security_task_setcon (Thread_Control *p, int security_level)
{
	return security_ops->task_set_context (p, security_level);
}

inline int security_task_start(Thread_Control *p)
{
	return security_ops->task_start (p);
}

inline int security_task_restart(Thread_Control *p)
{
	return security_ops->task_restart (p);
}

inline int security_task_delete(Thread_Control *p)
{
	return security_ops->task_delete (p);
}

inline int security_task_suspend(Thread_Control *p)
{
	return security_ops->task_suspend (p);
}

inline int security_task_resume(Thread_Control *p)
{
	return security_ops->task_resume (p);
}

inline int security_task_getstat(Thread_Control *p)
{
	return security_ops->task_getstat (p);
}

inline int security_task_setprio(Thread_Control *p)
{
	return security_ops->task_setprio (p);
}

inline int security_task_setmode()
{
	return security_ops->task_setmode ();
}

inline int security_task_getapi(Thread_Control *p)
{
	return security_ops->task_getapi (p);
}

inline int security_task_setapi(Thread_Control *p)
{
	return security_ops->task_setapi (p);
}

inline int security_task_addvar(Thread_Control *p)
{
	return security_ops->task_addvar (p);
}

inline int security_task_getvar(Thread_Control *p)
{
	return security_ops->task_getvar (p);
}

inline int security_task_delvar(Thread_Control *p)
{
	return security_ops->task_delvar (p);
}

inline int security_task_wake()
{
	return security_ops->task_wake ();
}

inline int security_task_setsched(Thread_Control *p)
{
	return security_ops->task_setsched (p);
}

inline int security_task_getsched(Thread_Control *p)
{
	return security_ops->task_getsched (p);
}

inline int security_task_setaffinity(Thread_Control *p)
{
	return security_ops->task_setaffinity(p);
}

inline int security_task_getaffinity(Thread_Control *p)
{
	return security_ops->task_getaffinity (p);
}

inline int security_task_kill(Thread_Control *p, int sig)
{
	return security_ops->task_kill (p, sig);
}

#if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_SEM)
inline int security_sem_alloc (CORE_semaphore_Control *sma)
{
	return security_ops->sem_alloc_security (sma);
}

inline void security_sem_free (CORE_semaphore_Control *sma)
{
	security_ops->sem_free_security (sma);
}

inline int security_sem_associate (CORE_semaphore_Control *sma)
{
	return security_ops->sem_associate (sma);
}

inline int security_sem_delete (CORE_semaphore_Control *sma)
{
	return security_ops->sem_delete (sma);
}

inline int security_sem_obtain (CORE_semaphore_Control *sma)
{
	return security_ops->sem_obtain (sma);
}

inline int security_sem_release (CORE_semaphore_Control *sma)
{
	return security_ops->sem_release (sma);
}

inline int security_sem_flush (CORE_semaphore_Control *sma)
{
	return security_ops->sem_flush (sma);
}

#else /* SERTEMS_SEM */

inline int security_sem_alloc (CORE_semaphore_Control *sma)
{
	return 0;
}

inline void security_sem_free (CORE_semaphore_Control *sma)
{ }

inline int security_sem_associate (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_delete (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_obtain (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_release (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_flush (CORE_semaphore_Control *sma)
{
	return 0;
}

#endif  /* SERTEMS_SEM */

#if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_MUTEX)
inline int security_mutex_alloc (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_alloc_security (mutex);
}

inline void security_mutex_free (CORE_mutex_Control *mutex)
{
	security_ops->mutex_free_security (mutex);
}

inline int security_mutex_delete (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_delete (mutex);
}

inline int security_mutex_obtain (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_obtain (mutex);
}

inline int security_mutex_release (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_release (mutex);
}

inline int security_mutex_flush (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_flush (mutex);
}

inline int security_mutex_setprio (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_setprio (mutex);
}

inline int security_mutex_getprio (CORE_mutex_Control *mutex)
{
	return security_ops->mutex_getprio (mutex);
}
#else
inline int security_mutex_alloc (CORE_mutex_Control *mutex)
{
	return 0;
}

inline void security_mutex_free (CORE_mutex_Control *mutex)
{ }

inline int security_mutex_delete (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_obtain (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_release (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_flush (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_setprio (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_getprio (CORE_mutex_Control *mutex)
{
	return 0;
}
#endif  /* SERTEMS_MUTEX */

#ifdef RTEMS_NETWORKING
#if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_SOCKET)
inline int security_socket_create (int domain, int type, int protocol)
{
	return security_ops->socket_create(domain, type, protocol);
}

inline int security_socket_post_create(struct socket * sock, 
					       int domain,
					       int type, 
					       int protocol)
{
	return security_ops->socket_post_create(sock, domain, type, protocol);
}

inline void security_socket_free(struct socket * sock)
{
	security_ops->socket_free_security (sock);
}

inline int security_socket_bind(struct socket * sock, 
				       struct sockaddr * address, 
				       int addrlen)
{
	return security_ops->socket_bind(sock, address, addrlen);
}

inline int security_socket_connect(struct socket * sock, 
					  struct sockaddr * address, 
					  int addrlen)
{
	return security_ops->socket_connect(sock, address, addrlen);
}

inline int security_socket_listen(struct socket * sock, int backlog)
{
	return security_ops->socket_listen(sock, backlog);
}

inline int security_socket_accept(struct socket * sock, 
					 struct socket * newsock)
{
	return security_ops->socket_accept(sock, newsock);
}

inline int security_socket_sendmsg(struct socket * sock)
{
	return security_ops->socket_sendmsg(sock);
}

inline int security_socket_recvmsg(struct socket * sock)
{
	return security_ops->socket_recvmsg(sock);
}

inline int security_socket_getpeersockname(struct socket * sock)
{
	return security_ops->socket_getpeersockname(sock);
}

inline int security_socket_getsockopt(struct socket * sock, 
					     int level, int optname)
{
	return security_ops->socket_getsockopt(sock, level, optname);
}

inline int security_socket_setsockopt(struct socket * sock, 
					     int level, int optname)
{
	return security_ops->socket_setsockopt(sock, level, optname);
}

inline int security_socket_shutdown(struct socket * sock, int how)
{
	return security_ops->socket_shutdown(sock, how);
}
#else
inline int security_socket_create (int domain, int type, int protocol)
{
	return 0;
}

inline int security_socket_post_create(struct socket * sock, 
					       int domain,
					       int type, 
					       int protocol)
{
	return 0;
}

inline void security_socket_free(struct socket * sock)
{ }

inline int security_socket_bind(struct socket * sock, 
				       struct sockaddr * address, 
				       int addrlen)
{
	return 0;
}

inline int security_socket_connect(struct socket * sock, 
					  struct sockaddr * address, 
					  int addrlen)
{
	return 0;
}

inline int security_socket_listen(struct socket * sock, int backlog)
{
	return 0;
}

inline int security_socket_accept(struct socket * sock, 
					 struct socket * newsock)
{
	return 0;
}

inline int security_socket_sendmsg(struct socket * sock)
{
	return 0;
}

inline int security_socket_recvmsg(struct socket * sock)
{
	return 0;
}

inline int security_socket_getsockopt(struct socket * sock, 
					     int level, int optname)
{
	return 0;
}

inline int security_socket_setsockopt(struct socket * sock, 
					     int level, int optname)
{
	return 0;
}

inline int security_socket_shutdown(struct socket * sock, int how)
{
	return 0;
}

inline int security_socket_getpeersockname(struct socket * sock)
{
	return 0;
}
#endif /* SERTEMS_SOCKET */
#endif /* RTEMS_NETWORKING */

#if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_MSGQ)
inline int security_msg_alloc(CORE_message_queue_Buffer_control *the_message)
{
	return security_ops->msg_alloc_security(the_message);
}
inline void security_msg_free(CORE_message_queue_Buffer_control *the_message)
{
	 security_ops->msg_free_security(the_message);
}
inline int security_msgq_create(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_create_security(the_message_queue);
}
inline int security_msgq_delete(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_delete(the_message_queue);
}
inline void security_msgq_free(CORE_message_queue_Control *the_message_queue)
{
	 security_ops->msgq_free_security(the_message_queue);
}
inline int security_msgq_flush(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_flush(the_message_queue);
}
inline int security_msgq_send(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message)
{
	return security_ops->msgq_send(the_message_queue,the_message);
}
inline int security_msgq_receive(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message)
{
	return security_ops->msgq_receive(the_message_queue,the_message);
}
inline int security_msgq_broadcast(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_broadcast(the_message_queue);
}
inline int security_msgq_associate(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_associate(the_message_queue);
}
inline int security_msgq_setattr(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_setattr(the_message_queue);
}
inline int security_msgq_getattr(CORE_message_queue_Control *the_message_queue)
{
	return security_ops->msgq_getattr(the_message_queue);
}
#else
inline int security_msg_alloc(CORE_message_queue_Buffer_control *the_message)
{
	return 0;
}
inline void security_msg_free(CORE_message_queue_Buffer_control *the_message)
{
}
inline int security_msgq_create(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_delete(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline void security_msgq_free(CORE_message_queue_Control *the_message_queue)
{}
inline int security_msgq_flush(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_send(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message)
{
	return 0;
}
inline int security_msgq_receive(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message)
{
	return 0;
}
inline int security_msgq_broadcast(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_associate(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_setattr(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_getattr(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
#endif /* SERTEMS_MSGQ */

#if defined(CONFIGURE_SERTEMS_ALL) || \
      defined(CONFIGURE_SERTEMS_BASE) || \
      defined(CONFIGURE_SERTEMS_FILE)
inline int security_mt_alloc (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return security_ops->mt_alloc_security (mt_entry);
}

inline void security_mt_free (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	security_ops->mt_free_security (mt_entry);
}

inline int security_mt_kern_mount (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return security_ops->mt_kern_mount (mt_entry);
}

inline int security_mt_statvfs (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return security_ops->mt_statvfs (mt_entry);
}

inline int security_mt_umount (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return security_ops->mt_umount (mt_entry);
}

inline int security_inode_alloc (IMFS_jnode_t *inode)
{
	return security_ops->inode_alloc_security (inode);
}

inline void security_inode_free (IMFS_jnode_t *inode)
{
	security_ops->inode_free_security (inode);
}

inline int security_inode_create (rtems_filesystem_mount_table_entry_t *mt_entry,
				IMFS_jnode_t *dir, int mode)
{
	return security_ops->inode_create (mt_entry, dir, mode);
}

inline int security_inode_post_create (rtems_filesystem_mount_table_entry_t *mt_entry,
			  IMFS_jnode_t *dir,
			  IMFS_jnode_t *inode)
{
	return security_ops->inode_post_create (mt_entry, dir, inode);
}

inline int security_inode_link (IMFS_jnode_t *dir,
		    IMFS_jnode_t *old_inode)
{
	return security_ops->inode_link (dir, old_inode);
}

inline int security_inode_remove (IMFS_jnode_t *dir,
		    IMFS_jnode_t *inode)
{
	return security_ops->inode_remove (dir, inode);
}

inline int security_inode_rename (IMFS_jnode_t *inode, 
								IMFS_jnode_t *old_dir,
                                IMFS_jnode_t *new_dir)
{
	return security_ops->inode_rename (inode, old_dir, new_dir);
}

inline int security_inode_readlink (IMFS_jnode_t *inode)
{
	return security_ops->inode_readlink (inode);
}

inline int security_inode_chmod (IMFS_jnode_t *inode)
{
	return security_ops->inode_chmod (inode);
}

inline int security_inode_chown (IMFS_jnode_t *inode)
{
	return security_ops->inode_chown (inode);
}

inline int security_inode_read (IMFS_jnode_t *inode)
{
	return security_ops->inode_read (inode);
}

inline int security_inode_write (rtems_libio_t *iop, IMFS_jnode_t *inode)
{
	return security_ops->inode_write (iop, inode);
}

inline int security_libio_alloc (rtems_libio_t *iop)
{
	return security_ops->libio_alloc_security (iop);
}

inline void security_libio_free (rtems_libio_t *iop)
{
	security_ops->libio_free_security (iop);
}

inline int security_libio_use (rtems_libio_t *iop)
{
	return security_ops->libio_use (iop);
}
#else

inline int security_mt_alloc (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline void security_mt_free (rtems_filesystem_mount_table_entry_t *mt_entry)
{ }

inline int security_mt_kern_mount (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline int security_mt_statvfs (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline int security_mt_umount (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline int security_inode_alloc (IMFS_jnode_t *inode)
{
	return 0;
}

inline void security_inode_free (IMFS_jnode_t *inode)
{ }

inline int security_inode_create (rtems_filesystem_mount_table_entry_t *mt_entry,
				IMFS_jnode_t *dir, int mode)
{
	return 0;
}

inline int security_inode_post_create (rtems_filesystem_mount_table_entry_t *mt_entry,
			  IMFS_jnode_t *dir,
			  IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_link (IMFS_jnode_t *dir,
		    IMFS_jnode_t *old_inode)
{
	return 0;
}

inline int security_inode_remove (IMFS_jnode_t *dir,
		    IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_rename (IMFS_jnode_t *inode, 
								IMFS_jnode_t *old_dir,
                                IMFS_jnode_t *new_dir)
{
	return 0;
}

inline int security_inode_readlink (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_chmod (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_chown (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_read (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_write (rtems_libio_t *iop, IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_libio_alloc (rtems_libio_t *iop)
{
	return 0;
}

inline void security_libio_free (rtems_libio_t *iop)
{ }

inline int security_libio_use (rtems_libio_t *iop)
{
	return 0;
}
#endif /* SERTEMS_FILE */

#else /* RTEMS_SERTEMS */

inline int security_object_getobject(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class)
{
	return 0;
}

inline int security_object_ident(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class)
{
	return 0;
}

inline int security_object_setname(Objects_Control *obj, Objects_APIs the_api, uint16_t the_class)
{
	return 0;
}

inline int security_task_create(int security_level)
{
	return 0;
}

inline int security_task_alloc (Thread_Control *p, int security_level)
{
	return 0;
}

inline void security_task_free(Thread_Control *p)
{ }

inline int security_task_setcon (Thread_Control *p, int security_level)
{
	return 0;
}

inline int security_task_start(Thread_Control *p)
{
	return 0;
}

inline int security_task_restart(Thread_Control *p)
{
	return 0;
}

inline int security_task_delete(Thread_Control *p)
{
	return 0;
}

inline int security_task_suspend(Thread_Control *p)
{
	return 0;
}

inline int security_task_resume(Thread_Control *p)
{
	return 0;
}

inline int security_task_getstat(Thread_Control *p)
{
	return 0;
}

inline int security_task_setprio(Thread_Control *p)
{
	return 0;
}

inline int security_task_setmode()
{
	return 0;
}

inline int security_task_getapi(Thread_Control *p)
{
	return 0;
}

inline int security_task_setapi(Thread_Control *p)
{
	return 0;
}

inline int security_task_addvar(Thread_Control *p)
{
	return 0;
}

inline int security_task_getvar(Thread_Control *p)
{
	return 0;
}

inline int security_task_delvar(Thread_Control *p)
{
	return 0;
}

inline int security_task_wake()
{
	return 0;
}

inline int security_task_setsched(Thread_Control *p)
{
	return 0;
}

inline int security_task_getsched(Thread_Control *p)
{
	return 0;
}

inline int security_task_setaffinity(Thread_Control *p)
{
	return 0;
}

inline int security_task_getaffinity(Thread_Control *p)
{
	return 0;
}

inline int security_task_kill(Thread_Control *p, int sig)
{
	return 0;
}

inline int security_sem_alloc (CORE_semaphore_Control *sma)
{
	return 0;
}

inline void security_sem_free (CORE_semaphore_Control *sma)
{ }

inline int security_sem_associate (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_delete (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_obtain (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_release (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_sem_flush (CORE_semaphore_Control *sma)
{
	return 0;
}

inline int security_mutex_alloc (CORE_mutex_Control *mutex)
{
	return 0;
}

inline void security_mutex_free (CORE_mutex_Control *mutex)
{ }

inline int security_mutex_delete (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_obtain (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_release (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_flush (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_setprio (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_mutex_getprio (CORE_mutex_Control *mutex)
{
	return 0;
}

inline int security_socket_create (int domain, int type, int protocol)
{
	return 0;
}

inline int security_socket_post_create(struct socket * sock, 
					       int domain,
					       int type, 
					       int protocol)
{
	return 0;
}

inline void security_socket_free(struct socket * sock)
{ }

inline int security_socket_bind(struct socket * sock, 
				       struct sockaddr * address, 
				       int addrlen)
{
	return 0;
}

inline int security_socket_connect(struct socket * sock, 
					  struct sockaddr * address, 
					  int addrlen)
{
	return 0;
}

inline int security_socket_listen(struct socket * sock, int backlog)
{
	return 0;
}

inline int security_socket_accept(struct socket * sock, 
					 struct socket * newsock)
{
	return 0;
}

inline int security_socket_sendmsg(struct socket * sock)
{
	return 0;
}

inline int security_socket_recvmsg(struct socket * sock)
{
	return 0;
}

inline int security_socket_getsockopt(struct socket * sock, 
					     int level, int optname)
{
	return 0;
}

inline int security_socket_setsockopt(struct socket * sock, 
					     int level, int optname)
{
	return 0;
}

inline int security_socket_shutdown(struct socket * sock, int how)
{
	return 0;
}

inline int security_socket_getpeersockname(struct socket * sock)
{
	return 0;
}
inline int security_msg_alloc(CORE_message_queue_Buffer_control *the_message)
{
	return 0;
}
inline void security_msg_free(CORE_message_queue_Buffer_control *the_message)
{
}
inline int security_msgq_create(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_delete(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline void security_msgq_free(CORE_message_queue_Control *the_message_queue)
{}
inline int security_msgq_flush(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_send(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message)
{
	return 0;
}
inline int security_msgq_receive(CORE_message_queue_Control *the_message_queue, 
				       CORE_message_queue_Buffer_control *the_message)
{
	return 0;
}
inline int security_msgq_broadcast(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_associate(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_setattr(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}
inline int security_msgq_getattr(CORE_message_queue_Control *the_message_queue)
{
	return 0;
}

inline int security_mt_alloc (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline void security_mt_free (rtems_filesystem_mount_table_entry_t *mt_entry)
{ }

inline int security_mt_kern_mount (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline int security_mt_statvfs (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline int security_mt_umount (rtems_filesystem_mount_table_entry_t *mt_entry)
{
	return 0;
}

inline int security_inode_alloc (IMFS_jnode_t *inode)
{
	return 0;
}

inline void security_inode_free (IMFS_jnode_t *inode)
{ }

inline int security_inode_create (rtems_filesystem_mount_table_entry_t *mt_entry,
				IMFS_jnode_t *dir, int mode)
{
	return 0;
}

inline int security_inode_post_create (rtems_filesystem_mount_table_entry_t *mt_entry,
			  IMFS_jnode_t *dir,
			  IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_link (IMFS_jnode_t *dir,
		    IMFS_jnode_t *old_inode)
{
	return 0;
}

inline int security_inode_remove (IMFS_jnode_t *dir,
		    IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_rename (IMFS_jnode_t *inode, 
								IMFS_jnode_t *old_dir,
                                IMFS_jnode_t *new_dir)
{
	return 0;
}

inline int security_inode_readlink (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_chmod (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_chown (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_read (IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_inode_write (rtems_libio_t *iop, IMFS_jnode_t *inode)
{
	return 0;
}

inline int security_libio_alloc (rtems_libio_t *iop)
{
	return 0;
}

inline void security_libio_free (rtems_libio_t *iop)
{ }

inline int security_libio_use (rtems_libio_t *iop)
{
	return 0;
}
#endif /* RTEMS_SERTEMS */

#endif /* __SERTEMS_CONFIG_H */

 

转载于:https://my.oschina.net/u/1466132/blog/815926

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值