2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #include "stc-manager.h"
20 #include "stc-manager-plugin-firewall.h"
22 static gboolean stc_plugin_enabled = FALSE;
23 static void *handle_plugin;
24 static stc_plugin_firewall_s *stc_plugin;
27 int stc_plugin_firewall_init(void)
29 __STC_LOG_FUNC_ENTER__;
31 handle_plugin = dlopen(STC_PLUGIN_FIREWALL_FILEPATH, RTLD_NOW);
33 STC_LOGE("Can't load %s: %s", STC_PLUGIN_FIREWALL_FILEPATH, dlerror());
34 __STC_LOG_FUNC_EXIT__;
35 return STC_ERROR_UNINITIALIZED;
38 stc_plugin = dlsym(handle_plugin, "stc_plugin_firewall");
40 STC_LOGE("Can't load symbol: %s", dlerror());
41 dlclose(handle_plugin);
42 __STC_LOG_FUNC_EXIT__;
43 return STC_ERROR_UNINITIALIZED;
46 stc_plugin->initialize_plugin();
47 stc_plugin_enabled = TRUE;
49 __STC_LOG_FUNC_EXIT__;
50 return STC_ERROR_NONE;
53 int stc_plugin_firewall_deinit(void)
55 __STC_LOG_FUNC_ENTER__;
57 if (!stc_plugin_enabled)
58 return STC_ERROR_UNINITIALIZED;
60 stc_plugin->deinitialize_plugin();
61 stc_plugin_enabled = FALSE;
62 dlclose(handle_plugin);
64 __STC_LOG_FUNC_EXIT__;
65 return STC_ERROR_NONE;
68 int stc_plugin_firewall_lock(void)
70 if (!stc_plugin_enabled) {
72 STC_LOGE("Plugin wasn't enabled");
73 return STC_ERROR_UNINITIALIZED;
78 STC_LOGE("Plugin wasn't loaded");
79 return STC_ERROR_UNINITIALIZED;
82 return stc_plugin->lock_firewall();
85 int stc_plugin_firewall_unlock(void)
87 if (!stc_plugin_enabled) {
89 STC_LOGE("Plugin wasn't enabled");
90 return STC_ERROR_UNINITIALIZED;
95 STC_LOGE("Plugin wasn't loaded");
96 return STC_ERROR_UNINITIALIZED;
99 return stc_plugin->unlock_firewall();
103 int stc_plugin_firewall_get_lock(int *state)
105 if (!stc_plugin_enabled) {
107 STC_LOGE("Plugin wasn't enabled");
108 return STC_ERROR_UNINITIALIZED;
113 STC_LOGE("Plugin wasn't loaded");
114 return STC_ERROR_UNINITIALIZED;
117 return stc_plugin->get_lock_firewall(state);
120 API int stc_plugin_firewall_update(void)
122 if (!stc_plugin_enabled) {
124 STC_LOGE("Plugin wasn't enabled");
125 return STC_ERROR_UNINITIALIZED;
130 STC_LOGE("Plugin wasn't loaded");
131 return STC_ERROR_UNINITIALIZED;
134 return stc_plugin->update_firewall();
137 int stc_plugin_firewall_add_chain(char *chain)
139 if (!stc_plugin_enabled) {
141 STC_LOGE("Plugin wasn't enabled");
142 return STC_ERROR_UNINITIALIZED;
147 STC_LOGE("Plugin wasn't loaded");
148 return STC_ERROR_UNINITIALIZED;
151 return stc_plugin->add_chain(chain);
154 int stc_plugin_firewall_remove_chain(char *chain)
156 if (!stc_plugin_enabled) {
158 STC_LOGE("Plugin wasn't enabled");
159 return STC_ERROR_UNINITIALIZED;
164 STC_LOGE("Plugin wasn't loaded");
165 return STC_ERROR_UNINITIALIZED;
168 return stc_plugin->remove_chain(chain);
171 int stc_plugin_firewall_flush_chain(char *chain)
173 if (!stc_plugin_enabled) {
175 STC_LOGE("Plugin wasn't enabled");
176 return STC_ERROR_UNINITIALIZED;
181 STC_LOGE("Plugin wasn't loaded");
182 return STC_ERROR_UNINITIALIZED;
185 return stc_plugin->flush_chain(chain);
188 int stc_plugin_firewall_get_all_chain(GVariantBuilder *builder)
190 if (!stc_plugin_enabled) {
192 STC_LOGE("Plugin wasn't enabled");
193 return STC_ERROR_UNINITIALIZED;
198 STC_LOGE("Plugin wasn't loaded");
199 return STC_ERROR_UNINITIALIZED;
202 return stc_plugin->get_all_chain(builder);
205 int stc_plugin_firewall_set_chain(char *chain, uint target)
207 if (!stc_plugin_enabled) {
209 STC_LOGE("Plugin wasn't enabled");
210 return STC_ERROR_UNINITIALIZED;
215 STC_LOGE("Plugin wasn't loaded");
216 return STC_ERROR_UNINITIALIZED;
219 return stc_plugin->set_chain(chain, target);
222 int stc_plugin_firewall_unset_chain(char *chain)
224 if (!stc_plugin_enabled) {
226 STC_LOGE("Plugin wasn't enabled");
227 return STC_ERROR_UNINITIALIZED;
232 STC_LOGE("Plugin wasn't loaded");
233 return STC_ERROR_UNINITIALIZED;
236 return stc_plugin->unset_chain(chain);
239 int stc_plugin_firewall_add_rule(GVariant *params)
241 if (!stc_plugin_enabled) {
243 STC_LOGE("Plugin wasn't enabled");
244 return STC_ERROR_UNINITIALIZED;
249 STC_LOGE("Plugin wasn't loaded");
250 return STC_ERROR_UNINITIALIZED;
253 return stc_plugin->add_rule(params);
256 int stc_plugin_firewall_remove_rule(GVariant *params)
258 if (!stc_plugin_enabled) {
260 STC_LOGE("Plugin wasn't enabled");
261 return STC_ERROR_UNINITIALIZED;
266 STC_LOGE("Plugin wasn't loaded");
267 return STC_ERROR_UNINITIALIZED;
270 return stc_plugin->remove_rule(params);
273 int stc_plugin_firewall_update_rule(GVariant *params)
275 if (!stc_plugin_enabled) {
277 STC_LOGE("Plugin wasn't enabled");
278 return STC_ERROR_UNINITIALIZED;
283 STC_LOGE("Plugin wasn't loaded");
284 return STC_ERROR_UNINITIALIZED;
287 return stc_plugin->update_rule(params);
290 int stc_plugin_firewall_get_all_rule(GVariantBuilder *builder)
292 if (!stc_plugin_enabled) {
294 STC_LOGE("Plugin wasn't enabled");
295 return STC_ERROR_UNINITIALIZED;
300 STC_LOGE("Plugin wasn't loaded");
301 return STC_ERROR_UNINITIALIZED;
304 return stc_plugin->get_all_rule(builder);