netlabel.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /* SPDX-License-Identifier: GPL-2.0-or-later */
  2. /*
  3. * SELinux interface to the NetLabel subsystem
  4. *
  5. * Author: Paul Moore <paul@paul-moore.com>
  6. */
  7. /*
  8. * (c) Copyright Hewlett-Packard Development Company, L.P., 2006
  9. */
  10. #ifndef _SELINUX_NETLABEL_H_
  11. #define _SELINUX_NETLABEL_H_
  12. #include <linux/types.h>
  13. #include <linux/fs.h>
  14. #include <linux/net.h>
  15. #include <linux/skbuff.h>
  16. #include <net/sock.h>
  17. #include <net/request_sock.h>
  18. #include <net/sctp/structs.h>
  19. #include "avc.h"
  20. #include "objsec.h"
  21. #ifdef CONFIG_NETLABEL
  22. void selinux_netlbl_cache_invalidate(void);
  23. void selinux_netlbl_err(struct sk_buff *skb, u16 family, int error,
  24. int gateway);
  25. void selinux_netlbl_sk_security_free(struct sk_security_struct *sksec);
  26. void selinux_netlbl_sk_security_reset(struct sk_security_struct *sksec);
  27. int selinux_netlbl_skbuff_getsid(struct sk_buff *skb,
  28. u16 family,
  29. u32 *type,
  30. u32 *sid);
  31. int selinux_netlbl_skbuff_setsid(struct sk_buff *skb,
  32. u16 family,
  33. u32 sid);
  34. int selinux_netlbl_sctp_assoc_request(struct sctp_endpoint *ep,
  35. struct sk_buff *skb);
  36. int selinux_netlbl_inet_conn_request(struct request_sock *req, u16 family);
  37. void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family);
  38. void selinux_netlbl_sctp_sk_clone(struct sock *sk, struct sock *newsk);
  39. int selinux_netlbl_socket_post_create(struct sock *sk, u16 family);
  40. int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec,
  41. struct sk_buff *skb,
  42. u16 family,
  43. struct common_audit_data *ad);
  44. int selinux_netlbl_socket_setsockopt(struct socket *sock,
  45. int level,
  46. int optname);
  47. int selinux_netlbl_socket_connect(struct sock *sk, struct sockaddr *addr);
  48. int selinux_netlbl_socket_connect_locked(struct sock *sk,
  49. struct sockaddr *addr);
  50. #else
  51. static inline void selinux_netlbl_cache_invalidate(void)
  52. {
  53. return;
  54. }
  55. static inline void selinux_netlbl_err(struct sk_buff *skb,
  56. u16 family,
  57. int error,
  58. int gateway)
  59. {
  60. return;
  61. }
  62. static inline void selinux_netlbl_sk_security_free(
  63. struct sk_security_struct *sksec)
  64. {
  65. return;
  66. }
  67. static inline void selinux_netlbl_sk_security_reset(
  68. struct sk_security_struct *sksec)
  69. {
  70. return;
  71. }
  72. static inline int selinux_netlbl_skbuff_getsid(struct sk_buff *skb,
  73. u16 family,
  74. u32 *type,
  75. u32 *sid)
  76. {
  77. *type = NETLBL_NLTYPE_NONE;
  78. *sid = SECSID_NULL;
  79. return 0;
  80. }
  81. static inline int selinux_netlbl_skbuff_setsid(struct sk_buff *skb,
  82. u16 family,
  83. u32 sid)
  84. {
  85. return 0;
  86. }
  87. static inline int selinux_netlbl_sctp_assoc_request(struct sctp_endpoint *ep,
  88. struct sk_buff *skb)
  89. {
  90. return 0;
  91. }
  92. static inline int selinux_netlbl_inet_conn_request(struct request_sock *req,
  93. u16 family)
  94. {
  95. return 0;
  96. }
  97. static inline void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family)
  98. {
  99. return;
  100. }
  101. static inline void selinux_netlbl_sctp_sk_clone(struct sock *sk,
  102. struct sock *newsk)
  103. {
  104. return;
  105. }
  106. static inline int selinux_netlbl_socket_post_create(struct sock *sk,
  107. u16 family)
  108. {
  109. return 0;
  110. }
  111. static inline int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec,
  112. struct sk_buff *skb,
  113. u16 family,
  114. struct common_audit_data *ad)
  115. {
  116. return 0;
  117. }
  118. static inline int selinux_netlbl_socket_setsockopt(struct socket *sock,
  119. int level,
  120. int optname)
  121. {
  122. return 0;
  123. }
  124. static inline int selinux_netlbl_socket_connect(struct sock *sk,
  125. struct sockaddr *addr)
  126. {
  127. return 0;
  128. }
  129. static inline int selinux_netlbl_socket_connect_locked(struct sock *sk,
  130. struct sockaddr *addr)
  131. {
  132. return 0;
  133. }
  134. #endif /* CONFIG_NETLABEL */
  135. #endif