netlabel.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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, u16 family, u32 *type,
  28. u32 *sid);
  29. int selinux_netlbl_skbuff_setsid(struct sk_buff *skb, u16 family, u32 sid);
  30. int selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
  31. struct sk_buff *skb);
  32. int selinux_netlbl_inet_conn_request(struct request_sock *req, u16 family);
  33. void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family);
  34. void selinux_netlbl_sctp_sk_clone(struct sock *sk, struct sock *newsk);
  35. int selinux_netlbl_socket_post_create(struct sock *sk, u16 family);
  36. int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec,
  37. struct sk_buff *skb, u16 family,
  38. struct common_audit_data *ad);
  39. int selinux_netlbl_socket_setsockopt(struct socket *sock, int level,
  40. int optname);
  41. int selinux_netlbl_socket_connect(struct sock *sk, struct sockaddr *addr);
  42. int selinux_netlbl_socket_connect_locked(struct sock *sk,
  43. struct sockaddr *addr);
  44. #else
  45. static inline void selinux_netlbl_cache_invalidate(void)
  46. {
  47. return;
  48. }
  49. static inline void selinux_netlbl_err(struct sk_buff *skb, u16 family,
  50. int error, int gateway)
  51. {
  52. return;
  53. }
  54. static inline void
  55. selinux_netlbl_sk_security_free(struct sk_security_struct *sksec)
  56. {
  57. return;
  58. }
  59. static inline void
  60. selinux_netlbl_sk_security_reset(struct sk_security_struct *sksec)
  61. {
  62. return;
  63. }
  64. static inline int selinux_netlbl_skbuff_getsid(struct sk_buff *skb, u16 family,
  65. u32 *type, u32 *sid)
  66. {
  67. *type = NETLBL_NLTYPE_NONE;
  68. *sid = SECSID_NULL;
  69. return 0;
  70. }
  71. static inline int selinux_netlbl_skbuff_setsid(struct sk_buff *skb, u16 family,
  72. u32 sid)
  73. {
  74. return 0;
  75. }
  76. static inline int
  77. selinux_netlbl_sctp_assoc_request(struct sctp_association *asoc,
  78. struct sk_buff *skb)
  79. {
  80. return 0;
  81. }
  82. static inline int selinux_netlbl_inet_conn_request(struct request_sock *req,
  83. u16 family)
  84. {
  85. return 0;
  86. }
  87. static inline void selinux_netlbl_inet_csk_clone(struct sock *sk, u16 family)
  88. {
  89. return;
  90. }
  91. static inline void selinux_netlbl_sctp_sk_clone(struct sock *sk,
  92. struct sock *newsk)
  93. {
  94. return;
  95. }
  96. static inline int selinux_netlbl_socket_post_create(struct sock *sk, u16 family)
  97. {
  98. return 0;
  99. }
  100. static inline int selinux_netlbl_sock_rcv_skb(struct sk_security_struct *sksec,
  101. struct sk_buff *skb, u16 family,
  102. struct common_audit_data *ad)
  103. {
  104. return 0;
  105. }
  106. static inline int selinux_netlbl_socket_setsockopt(struct socket *sock,
  107. int level, int optname)
  108. {
  109. return 0;
  110. }
  111. static inline int selinux_netlbl_socket_connect(struct sock *sk,
  112. struct sockaddr *addr)
  113. {
  114. return 0;
  115. }
  116. static inline int selinux_netlbl_socket_connect_locked(struct sock *sk,
  117. struct sockaddr *addr)
  118. {
  119. return 0;
  120. }
  121. #endif /* CONFIG_NETLABEL */
  122. #endif