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