aboutsummaryrefslogtreecommitdiffstats
path: root/net/netlabel/netlabel_mgmt.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/netlabel/netlabel_mgmt.c')
-rw-r--r--net/netlabel/netlabel_mgmt.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/net/netlabel/netlabel_mgmt.c b/net/netlabel/netlabel_mgmt.c
index e00fc219c72b..5315dacc5222 100644
--- a/net/netlabel/netlabel_mgmt.c
+++ b/net/netlabel/netlabel_mgmt.c
@@ -42,6 +42,10 @@
42#include "netlabel_user.h" 42#include "netlabel_user.h"
43#include "netlabel_mgmt.h" 43#include "netlabel_mgmt.h"
44 44
45/* NetLabel configured protocol count */
46static DEFINE_SPINLOCK(netlabel_mgmt_protocount_lock);
47static u32 netlabel_mgmt_protocount = 0;
48
45/* Argument struct for netlbl_domhsh_walk() */ 49/* Argument struct for netlbl_domhsh_walk() */
46struct netlbl_domhsh_walk_arg { 50struct netlbl_domhsh_walk_arg {
47 struct netlink_callback *nl_cb; 51 struct netlink_callback *nl_cb;
@@ -67,6 +71,67 @@ static const struct nla_policy netlbl_mgmt_genl_policy[NLBL_MGMT_A_MAX + 1] = {
67}; 71};
68 72
69/* 73/*
74 * NetLabel Misc Managment Functions
75 */
76
77/**
78 * netlbl_mgmt_protocount_inc - Increment the configured labeled protocol count
79 *
80 * Description:
81 * Increment the number of labeled protocol configurations in the current
82 * NetLabel configuration. Keep track of this for use in determining if
83 * NetLabel label enforcement should be active/enabled or not in the LSM.
84 *
85 */
86void netlbl_mgmt_protocount_inc(void)
87{
88 rcu_read_lock();
89 spin_lock(&netlabel_mgmt_protocount_lock);
90 netlabel_mgmt_protocount++;
91 spin_unlock(&netlabel_mgmt_protocount_lock);
92 rcu_read_unlock();
93}
94
95/**
96 * netlbl_mgmt_protocount_dec - Decrement the configured labeled protocol count
97 *
98 * Description:
99 * Decrement the number of labeled protocol configurations in the current
100 * NetLabel configuration. Keep track of this for use in determining if
101 * NetLabel label enforcement should be active/enabled or not in the LSM.
102 *
103 */
104void netlbl_mgmt_protocount_dec(void)
105{
106 rcu_read_lock();
107 spin_lock(&netlabel_mgmt_protocount_lock);
108 if (netlabel_mgmt_protocount > 0)
109 netlabel_mgmt_protocount--;
110 spin_unlock(&netlabel_mgmt_protocount_lock);
111 rcu_read_unlock();
112}
113
114/**
115 * netlbl_mgmt_protocount_value - Return the number of configured protocols
116 *
117 * Description:
118 * Return the number of labeled protocols in the current NetLabel
119 * configuration. This value is useful in determining if NetLabel label
120 * enforcement should be active/enabled or not in the LSM.
121 *
122 */
123u32 netlbl_mgmt_protocount_value(void)
124{
125 u32 val;
126
127 rcu_read_lock();
128 val = netlabel_mgmt_protocount;
129 rcu_read_unlock();
130
131 return val;
132}
133
134/*
70 * NetLabel Command Handlers 135 * NetLabel Command Handlers
71 */ 136 */
72 137