Fix a bug by wrong declaration
[platform/core/connectivity/stc-manager.git] / src / stc-manager-plugin-firewall.c
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <dlfcn.h>
18
19 #include "stc-manager.h"
20 #include "stc-manager-plugin-firewall.h"
21
22 static gboolean stc_plugin_enabled = FALSE;
23 static void *handle_plugin;
24 static stc_plugin_firewall_s *stc_plugin;
25
26 //LCOV_EXCL_START
27 int stc_plugin_firewall_init(void)
28 {
29         __STC_LOG_FUNC_ENTER__;
30
31         handle_plugin = dlopen(STC_PLUGIN_FIREWALL_FILEPATH, RTLD_NOW);
32         if (!handle_plugin) {
33                 STC_LOGE("Can't load %s: %s", STC_PLUGIN_FIREWALL_FILEPATH, dlerror());
34                 __STC_LOG_FUNC_EXIT__;
35                 return STC_ERROR_UNINITIALIZED;
36         }
37
38         stc_plugin = dlsym(handle_plugin, "stc_plugin_firewall");
39         if (!stc_plugin) {
40                 STC_LOGE("Can't load symbol: %s", dlerror());
41                 dlclose(handle_plugin);
42                 __STC_LOG_FUNC_EXIT__;
43                 return STC_ERROR_UNINITIALIZED;
44         }
45
46         stc_plugin->initialize_plugin();
47         stc_plugin_enabled = TRUE;
48
49         __STC_LOG_FUNC_EXIT__;
50         return STC_ERROR_NONE;
51 }
52
53 int stc_plugin_firewall_deinit(void)
54 {
55         __STC_LOG_FUNC_ENTER__;
56
57         if (!stc_plugin_enabled)
58                 return STC_ERROR_UNINITIALIZED;
59
60         stc_plugin->deinitialize_plugin();
61         stc_plugin_enabled = FALSE;
62         dlclose(handle_plugin);
63
64         __STC_LOG_FUNC_EXIT__;
65         return STC_ERROR_NONE;
66 }
67
68 int stc_plugin_firewall_lock(void)
69 {
70         if (!stc_plugin_enabled) {
71                 if (STC_DEBUG_LOG)
72                         STC_LOGE("Plugin wasn't enabled");
73                 return STC_ERROR_UNINITIALIZED;
74         }
75
76         if (!stc_plugin) {
77                 if (STC_DEBUG_LOG)
78                         STC_LOGE("Plugin wasn't loaded");
79                 return STC_ERROR_UNINITIALIZED;
80         }
81
82         return stc_plugin->lock_firewall();
83 }
84
85 int stc_plugin_firewall_unlock(void)
86 {
87         if (!stc_plugin_enabled) {
88                 if (STC_DEBUG_LOG)
89                         STC_LOGE("Plugin wasn't enabled");
90                 return STC_ERROR_UNINITIALIZED;
91         }
92
93         if (!stc_plugin) {
94                 if (STC_DEBUG_LOG)
95                         STC_LOGE("Plugin wasn't loaded");
96                 return STC_ERROR_UNINITIALIZED;
97         }
98
99         return stc_plugin->unlock_firewall();
100 }
101
102
103 int stc_plugin_firewall_get_lock(int *state)
104 {
105         if (!stc_plugin_enabled) {
106                 if (STC_DEBUG_LOG)
107                         STC_LOGE("Plugin wasn't enabled");
108                 return STC_ERROR_UNINITIALIZED;
109         }
110
111         if (!stc_plugin) {
112                 if (STC_DEBUG_LOG)
113                         STC_LOGE("Plugin wasn't loaded");
114                 return STC_ERROR_UNINITIALIZED;
115         }
116
117         return stc_plugin->get_lock_firewall(state);
118 }
119
120 API int stc_plugin_firewall_update(void)
121 {
122         if (!stc_plugin_enabled) {
123                 if (STC_DEBUG_LOG)
124                         STC_LOGE("Plugin wasn't enabled");
125                 return STC_ERROR_UNINITIALIZED;
126         }
127
128         if (!stc_plugin) {
129                 if (STC_DEBUG_LOG)
130                         STC_LOGE("Plugin wasn't loaded");
131                 return STC_ERROR_UNINITIALIZED;
132         }
133
134         return stc_plugin->update_firewall();
135 }
136
137 int stc_plugin_firewall_add_chain(char *chain)
138 {
139         if (!stc_plugin_enabled) {
140                 if (STC_DEBUG_LOG)
141                         STC_LOGE("Plugin wasn't enabled");
142                 return STC_ERROR_UNINITIALIZED;
143         }
144
145         if (!stc_plugin) {
146                 if (STC_DEBUG_LOG)
147                         STC_LOGE("Plugin wasn't loaded");
148                 return STC_ERROR_UNINITIALIZED;
149         }
150
151         return stc_plugin->add_chain(chain);
152 }
153
154 int stc_plugin_firewall_remove_chain(char *chain)
155 {
156         if (!stc_plugin_enabled) {
157                 if (STC_DEBUG_LOG)
158                         STC_LOGE("Plugin wasn't enabled");
159                 return STC_ERROR_UNINITIALIZED;
160         }
161
162         if (!stc_plugin) {
163                 if (STC_DEBUG_LOG)
164                         STC_LOGE("Plugin wasn't loaded");
165                 return STC_ERROR_UNINITIALIZED;
166         }
167
168         return stc_plugin->remove_chain(chain);
169 }
170
171 int stc_plugin_firewall_flush_chain(char *chain)
172 {
173         if (!stc_plugin_enabled) {
174                 if (STC_DEBUG_LOG)
175                         STC_LOGE("Plugin wasn't enabled");
176                 return STC_ERROR_UNINITIALIZED;
177         }
178
179         if (!stc_plugin) {
180                 if (STC_DEBUG_LOG)
181                         STC_LOGE("Plugin wasn't loaded");
182                 return STC_ERROR_UNINITIALIZED;
183         }
184
185         return stc_plugin->flush_chain(chain);
186 }
187
188 int stc_plugin_firewall_get_all_chain(GVariantBuilder *builder)
189 {
190         if (!stc_plugin_enabled) {
191                 if (STC_DEBUG_LOG)
192                         STC_LOGE("Plugin wasn't enabled");
193                 return STC_ERROR_UNINITIALIZED;
194         }
195
196         if (!stc_plugin) {
197                 if (STC_DEBUG_LOG)
198                         STC_LOGE("Plugin wasn't loaded");
199                 return STC_ERROR_UNINITIALIZED;
200         }
201
202         return stc_plugin->get_all_chain(builder);
203 }
204
205 int stc_plugin_firewall_set_chain(char *chain, uint target)
206 {
207         if (!stc_plugin_enabled) {
208                 if (STC_DEBUG_LOG)
209                         STC_LOGE("Plugin wasn't enabled");
210                 return STC_ERROR_UNINITIALIZED;
211         }
212
213         if (!stc_plugin) {
214                 if (STC_DEBUG_LOG)
215                         STC_LOGE("Plugin wasn't loaded");
216                 return STC_ERROR_UNINITIALIZED;
217         }
218
219         return stc_plugin->set_chain(chain, target);
220 }
221
222 int stc_plugin_firewall_unset_chain(char *chain)
223 {
224         if (!stc_plugin_enabled) {
225                 if (STC_DEBUG_LOG)
226                         STC_LOGE("Plugin wasn't enabled");
227                 return STC_ERROR_UNINITIALIZED;
228         }
229
230         if (!stc_plugin) {
231                 if (STC_DEBUG_LOG)
232                         STC_LOGE("Plugin wasn't loaded");
233                 return STC_ERROR_UNINITIALIZED;
234         }
235
236         return stc_plugin->unset_chain(chain);
237 }
238
239 int stc_plugin_firewall_add_rule(GVariant *params)
240 {
241         if (!stc_plugin_enabled) {
242                 if (STC_DEBUG_LOG)
243                         STC_LOGE("Plugin wasn't enabled");
244                 return STC_ERROR_UNINITIALIZED;
245         }
246
247         if (!stc_plugin) {
248                 if (STC_DEBUG_LOG)
249                         STC_LOGE("Plugin wasn't loaded");
250                 return STC_ERROR_UNINITIALIZED;
251         }
252
253         return stc_plugin->add_rule(params);
254 }
255
256 int stc_plugin_firewall_remove_rule(GVariant *params)
257 {
258         if (!stc_plugin_enabled) {
259                 if (STC_DEBUG_LOG)
260                         STC_LOGE("Plugin wasn't enabled");
261                 return STC_ERROR_UNINITIALIZED;
262         }
263
264         if (!stc_plugin) {
265                 if (STC_DEBUG_LOG)
266                         STC_LOGE("Plugin wasn't loaded");
267                 return STC_ERROR_UNINITIALIZED;
268         }
269
270         return stc_plugin->remove_rule(params);
271 }
272
273 int stc_plugin_firewall_update_rule(GVariant *params)
274 {
275         if (!stc_plugin_enabled) {
276                 if (STC_DEBUG_LOG)
277                         STC_LOGE("Plugin wasn't enabled");
278                 return STC_ERROR_UNINITIALIZED;
279         }
280
281         if (!stc_plugin) {
282                 if (STC_DEBUG_LOG)
283                         STC_LOGE("Plugin wasn't loaded");
284                 return STC_ERROR_UNINITIALIZED;
285         }
286
287         return stc_plugin->update_rule(params);
288 }
289
290 int stc_plugin_firewall_get_all_rule(GVariantBuilder *builder)
291 {
292         if (!stc_plugin_enabled) {
293                 if (STC_DEBUG_LOG)
294                         STC_LOGE("Plugin wasn't enabled");
295                 return STC_ERROR_UNINITIALIZED;
296         }
297
298         if (!stc_plugin) {
299                 if (STC_DEBUG_LOG)
300                         STC_LOGE("Plugin wasn't loaded");
301                 return STC_ERROR_UNINITIALIZED;
302         }
303
304         return stc_plugin->get_all_rule(builder);
305 }
306 //LCOV_EXCL_STOP