tizen 2.3.1 release
[apps/home/settings.git] / setting-security / src / setting-security-firewall.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-common-data-type.h>
22 #include <setting-common-data-slp-setting.h>
23 #include <setting-common-draw-widget.h>
24 #include <setting-common-view.h>
25
26 #include <setting-security-firewall.h>
27 #include <setting-security-firewall-data.h>
28 #include <setting-security.h>
29 #include <setting-debug.h>
30 #include <security-server.h>
31
32 static int setting_security_firewall_create(void *cb);
33 static int setting_security_firewall_destroy(void *cb);
34 static int setting_security_firewall_update(void *cb);
35 static int setting_security_firewall_cleanup(void *cb);
36
37 setting_view setting_view_security_firewall = {
38         .create = setting_security_firewall_create,
39         .destroy = setting_security_firewall_destroy,
40         .update = setting_security_firewall_update,
41         .cleanup = setting_security_firewall_cleanup,
42 };
43
44 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_LEN 4
45 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL                          "IDS_ST_OPT_ALLOW_ALL"
46 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI                                               "IDS_ST_OPT_BLOCK_WI_FI"
47 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK             "IDS_ST_OPT_BLOCK_MOBILE_NETWORKS"
48 #define SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL                          "IDS_ST_OPT_BLOCK_ALL"
49
50 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_LEN 4
51 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL                         "IDS_ST_OPT_ALLOW_ALL"
52 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP                                               "IDS_ST_BODY_BLOCK_TCP"
53 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP                                               "IDS_ST_BODY_BLOCK_UDP"
54 #define SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL                         "IDS_ST_OPT_BLOCK_ALL"
55
56 static char *network_block_type[SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_LEN] = {
57         SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL,
58         SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI,
59         SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK,
60         SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL
61 };
62
63 static char *protocol_block_type[SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_LEN] = {
64         SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL,
65         SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP,
66         SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP,
67         SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL
68 };
69
70 static void __setting_security_firewall_exp_cb(void *data, Evas_Object *obj, void *event_info);
71 int __check_network_block_mode();
72 int __check_protocol_block_mode();
73
74 /* ***************************************************
75  **
76  **basic func
77  **
78  ****************************************************/
79
80 static int setting_security_firewall_create(void *cb)
81 {
82         SETTING_TRACE_BEGIN;
83         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
84
85         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
86         if (CONNECTION_ERROR_NONE != connection_create(&(ad->connection))) {
87                 SETTING_TRACE_ERROR("***Failed to connection_create.***");
88         }
89
90         Evas_Object *scroller;
91         Elm_Object_Item *item = NULL;
92
93         setting_security_firewall_data_init_list();
94
95         /* get vconf */
96         int value, err;
97         int ret = 0;
98
99         /* add basic layout */
100         char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
101         snprintf(setBtnStr, sizeof(setBtnStr), "%s",
102                  (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
103         /*setting_security_firewall_data_init_list(); */
104         setting_push_layout_navi_bar_genlist(ad->win_main_layout,
105                                              ad->win_get,
106                                              _(Keystr_Firewall),
107                                              setBtnStr, NULL,
108                                              setting_security_firewall_click_softkey_back_cb,
109                                              NULL, ad, &scroller, ad->navi_bar);
110
111         ad->genlist = scroller;
112         evas_object_smart_callback_add(ad->genlist, "realized", __gl_realized_cb, ad);
113
114         /* expandable disabled set */
115         SETTING_TRACE_DEBUG("expandable disabled set");
116         setting_enable_expandable_genlist(scroller, ad, __setting_security_firewall_exp_cb, NULL);
117
118         /* separator */
119         item = elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
120         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
121
122         /* 1) Block IP */
123         /* check ip ON/off */
124         SETTING_TRACE_DEBUG("start user_iptables_isTurnOn");
125
126         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_IP) == 0) {
127                 value = 1;
128         } else {
129                 value = 0;
130         }
131
132         SETTING_TRACE_DEBUG("end user_iptables_isTurnOn");
133         ad->data_block_ip =
134             setting_create_Gendial_field_def(scroller,
135                                              &(ad->itc_1text_1icon),
136                                              setting_security_firewall_mouse_up_Gendial_list_cb,
137                                              ad,
138                                              SWALLOW_Type_1TOGGLE, NULL,
139                                              NULL, value,
140                                              Keystr_BlockIP, NULL,
141                                              setting_security_firewall_chk_btn_cb);
142
143         if (ad->data_block_ip) {
144                 ad->data_block_ip->userdata = ad;
145                 ad->data_block_ip->group_style = SETTING_GROUP_STYLE_TOP;
146         } else {
147                 SETTING_TRACE_ERROR("ad->data_block_ip is NULL");
148         }
149
150         /* 1-1) Blocked IP list */
151         ad->data_blocked_ip_list =
152             setting_create_Gendial_field_def(scroller,
153                                              &(ad->itc_1text),
154                                              setting_security_firewall_mouse_up_Gendial_list_cb,
155                                              ad,
156                                              SWALLOW_Type_INVALID, NULL,
157                                              NULL, 0,
158                                              Keystr_BlockedIPList, NULL,
159                                              NULL);
160
161         if (ad->data_blocked_ip_list) {
162                 ad->data_blocked_ip_list->userdata = ad;
163                 ad->data_blocked_ip_list->group_style = SETTING_GROUP_STYLE_BOTTOM;
164                 if (!value) {
165                         setting_disable_genlist_item(ad->data_blocked_ip_list->item);
166                 }
167         }
168         /* 1-2) description */
169         ADD_GL_HELP(scroller, Keystr_BlockedIPDesc);
170         /* 2) Block URL */
171         /* check url ON/off */
172
173         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_URL) == 0) {
174                 value = 1;
175         } else {
176                 value = 0;
177         }
178
179         ad->data_block_url =
180             setting_create_Gendial_field_def(scroller,
181                                              &(ad->itc_1text_1icon),
182                                              setting_security_firewall_mouse_up_Gendial_list_cb,
183                                              ad,
184                                              SWALLOW_Type_1TOGGLE, NULL,
185                                              NULL, value,
186                                              Keystr_BlockURL, NULL,
187                                              setting_security_firewall_chk_btn_cb);
188
189         if (ad->data_block_url) {
190                 ad->data_block_url->userdata = ad;
191                 ad->data_block_url->group_style = SETTING_GROUP_STYLE_TOP;
192         } else {
193                 SETTING_TRACE_ERROR("ad->data_block_url is NULL");
194         }
195
196         /* 2-1) Blocked URL list */
197         ad->data_blocked_url_list =
198             setting_create_Gendial_field_def(scroller,
199                                              &(ad->itc_1text),
200                                              setting_security_firewall_mouse_up_Gendial_list_cb,
201                                              ad,
202                                              SWALLOW_Type_INVALID, NULL,
203                                              NULL, 0,
204                                              Keystr_BlockedURLList, NULL,
205                                              NULL);
206
207         if (ad->data_blocked_url_list) {
208                 ad->data_blocked_url_list->userdata = ad;
209                 ad->data_blocked_url_list->group_style = SETTING_GROUP_STYLE_BOTTOM;
210                 if (!value) {
211                         setting_disable_genlist_item(ad->data_blocked_url_list->item);
212                 }
213         }
214
215         /* 2-2) description */
216         ADD_GL_HELP(ad->enc_genlist, Keystr_BlockedURLDesc);
217
218         /* 3) Block Port */
219         /* check Port ON/off */
220         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_PORT) == 0) {
221                 value = 1;
222         } else {
223                 value = 0;
224         }
225
226         ad->data_block_port =
227             setting_create_Gendial_field_def(scroller,
228                                              &(ad->itc_1text_1icon),
229                                              setting_security_firewall_mouse_up_Gendial_list_cb,
230                                              ad,
231                                              SWALLOW_Type_1TOGGLE, NULL,
232                                              NULL, value,
233                                              Keystr_BlockPort, NULL,
234                                              setting_security_firewall_chk_btn_cb);
235
236         if (ad->data_block_port) {
237                 ad->data_block_port->userdata = ad;
238                 ad->data_block_port->group_style = SETTING_GROUP_STYLE_TOP;
239         } else {
240                 SETTING_TRACE_ERROR("ad->data_block_port is NULL");
241         }
242
243         /* 3-1) Blocked Port list */
244         ad->data_blocked_port_list =
245             setting_create_Gendial_field_def(scroller,
246                                              &(ad->itc_1text),
247                                              setting_security_firewall_mouse_up_Gendial_list_cb,
248                                              ad,
249                                              SWALLOW_Type_INVALID, NULL,
250                                              NULL, 0,
251                                              Keystr_BlockedPortList, NULL,
252                                              NULL);
253
254         if (ad->data_blocked_port_list) {
255                 ad->data_blocked_port_list->userdata = ad;
256                 ad->data_blocked_port_list->group_style = SETTING_GROUP_STYLE_BOTTOM;
257                 if (!value) {
258                         setting_disable_genlist_item(ad->data_blocked_port_list->item);
259                 }
260         }
261
262         /* 3-2) Blocked Port description */
263         ADD_GL_HELP(ad->enc_genlist, Keystr_BlockedPortDesc);
264
265         /* 4) Network type */
266         int network_block_type_value = __check_network_block_mode();
267
268         SETTING_TRACE_DEBUG("network_block_type_value: %s ", _(network_block_type[network_block_type_value]));
269
270         ad->data_block_network_type =
271             setting_create_Gendial_exp_parent_field(scroller,
272                                                     &(itc_2text_3_parent),
273                                                     NULL, NULL,
274                                                     SWALLOW_Type_INVALID,
275                                                     Keystr_BlockedNetworkType,
276                                                     _(network_block_type[network_block_type_value]),
277                                                     SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
278
279         if (ad->data_block_network_type) {
280                 ad->data_block_network_type->userdata = ad;
281         } else {
282                 SETTING_TRACE_ERROR("ad->data_block_network_type is NULL");
283                 return SETTING_RETURN_FAIL;
284         }
285
286         SETTING_TRACE_DEBUG("start expandable protocol");
287         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL),
288                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
289         /* 5) Protocol type */
290         int protocol_block_type_value = __check_protocol_block_mode();
291
292         SETTING_TRACE_DEBUG("protocol_block_type: %s ", _(protocol_block_type[protocol_block_type_value]));
293
294         ad->data_block_protocol_type =
295             setting_create_Gendial_exp_parent_field(scroller,
296                                                     &(itc_2text_3_parent),
297                                                     NULL, NULL,
298                                                     SWALLOW_Type_INVALID,
299                                                     Keystr_BlockedProtocolType,
300                                                     _(protocol_block_type[protocol_block_type_value]),
301                                                     SETTING_GROUP_STYLE_TOP, SETTING_GROUP_STYLE_NONE);
302
303         if (ad->data_block_protocol_type) {
304                 ad->data_block_protocol_type->userdata = ad;
305         } else {
306                 SETTING_TRACE_ERROR("ad->data_block_protocol_type is NULL");
307                 return SETTING_RETURN_FAIL;
308         }
309
310         elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL),
311                                          ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
312
313         /* update info */
314         setting_view_security_firewall.is_create = 1;
315         return SETTING_RETURN_SUCCESS;
316
317 }
318
319 static int setting_security_firewall_destroy(void *cb)
320 {
321         SETTING_TRACE_BEGIN;
322         /* error check */
323         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
324
325         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
326         if (ad->connection) {
327                 connection_destroy(ad->connection);
328                 connection_profile_destroy(ad->profile);
329                 ad->connection = NULL;
330                 ad->profile = NULL;
331         }
332
333         /*evas_object_smart_callback_del(ad->genlist, "realized", __gl_realized_cb); */
334         setting_security_firewall_data_end_list();
335         elm_naviframe_item_pop(ad->navi_bar);
336         /*setting_security_firewall_data_end_list(); */
337         setting_view_security_firewall.is_create = 0;
338
339         return SETTING_RETURN_SUCCESS;
340 }
341
342 static int setting_security_firewall_update(void *cb)
343 {
344         SETTING_TRACE_BEGIN;
345         /* error check */
346         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
347
348         return SETTING_RETURN_SUCCESS;
349 }
350
351 static int setting_security_firewall_cleanup(void *cb)
352 {
353         SETTING_TRACE_BEGIN;
354         /* error check */
355         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
356
357         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
358         return setting_security_firewall_destroy(ad);
359 }
360
361 /* ***************************************************
362  **
363  **call back func
364  **
365  ****************************************************/
366
367 static void __toggle_automatic_chk(void *data, int chk_status, char *keyStr)
368 {
369         SETTING_TRACE_BEGIN;
370         SettingSecurityUG *ad = (SettingSecurityUG *) data;
371
372         if (chk_status) {
373                 /* TOGGLE ON */
374                 if (!safeStrCmp(Keystr_BlockIP, keyStr)) {
375                         setting_enable_genlist_item(ad->data_blocked_ip_list->item);
376                         SETTING_TRACE_DEBUG("Keystr_BlockIP");
377                         setting_security_system_command("20", NULL);
378                 } else if (!safeStrCmp(Keystr_BlockURL, keyStr)) {
379
380                         setting_enable_genlist_item(ad->data_blocked_url_list->item);
381                         SETTING_TRACE_DEBUG("Keystr_BlockURL");
382                         setting_security_system_command("24", NULL);
383                 } else if (!safeStrCmp(Keystr_BlockPort, keyStr)) {
384                         setting_enable_genlist_item(ad->data_blocked_port_list->item);
385                         SETTING_TRACE_DEBUG("Keystr_BlockPort");
386                         setting_security_system_command("21", NULL);
387                 }
388         } else {
389                 /* TOGGLE OFF */
390                 if (!safeStrCmp(Keystr_BlockIP, keyStr)) {
391                         setting_disable_genlist_item(ad->data_blocked_ip_list->item);
392
393                         SETTING_TRACE_DEBUG("Keystr_BlockIP - off");
394                         setting_security_system_command("25", NULL);
395                 } else if (!safeStrCmp(Keystr_BlockURL, keyStr)) {
396                         setting_disable_genlist_item(ad->data_blocked_url_list->item);
397                         SETTING_TRACE_DEBUG("Keystr_BlockURL - off");
398                         setting_security_system_command("29", NULL);
399                 } else if (!safeStrCmp(Keystr_BlockPort, keyStr)) {
400                         setting_disable_genlist_item(ad->data_blocked_port_list->item);
401                         SETTING_TRACE_DEBUG("Keystr_BlockURL - off");
402                         setting_security_system_command("26", NULL);
403                 }
404         }
405         return;
406 }
407
408 static void
409 setting_security_firewall_chk_btn_cb(void *data, Evas_Object *obj,
410                                      void *event_info)
411 {
412         SETTING_TRACE_BEGIN;
413         /* error check */
414         retm_if(data == NULL, "Data parameter is NULL");
415         Setting_GenGroupItem_Data *list_item =
416             (Setting_GenGroupItem_Data *) data;
417         SettingSecurityUG *ad = list_item->userdata;
418         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
419
420         /* enable /disable toggle button */
421         __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
422         return;
423 }
424
425
426 static Eina_Bool
427 setting_security_firewall_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info)
428 {
429         /* error check */
430         retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
431
432         SettingSecurityUG *ad = (SettingSecurityUG *) data;
433
434         setting_view_change(&setting_view_security_firewall, &setting_view_security_main, ad);
435         return EINA_TRUE;
436 }
437
438
439 static void
440 setting_security_firewall_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
441                                                    void *event_info)
442 {
443         SETTING_TRACE_BEGIN;
444         /* error check */
445         setting_retm_if(data == NULL, "Data parameter is NULL");
446         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
447
448         SettingSecurityUG *ad = data;
449
450         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
451         elm_genlist_item_selected_set(item, 0);
452         Setting_GenGroupItem_Data *list_item =
453             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
454
455         setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
456
457         /* enable /disable toggle button */
458         if (!safeStrCmp(Keystr_BlockIP, list_item->keyStr)) {
459                 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
460         } else if (!safeStrCmp(Keystr_BlockedIPList, list_item->keyStr)) {
461                 /* set block type */
462                 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_IP;
463                 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
464         }
465
466         if (!safeStrCmp(Keystr_BlockURL, list_item->keyStr)) {
467                 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
468         } else if (!safeStrCmp(Keystr_BlockedURLList, list_item->keyStr)) {
469                 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_URL;
470                 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
471         }
472
473         if (!safeStrCmp(Keystr_BlockPort, list_item->keyStr)) {
474                 __toggle_automatic_chk(ad, list_item->chk_status, list_item->keyStr);
475         } else if (!safeStrCmp(Keystr_BlockedPortList, list_item->keyStr)) {
476                 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_PORT;
477                 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
478         }
479         return;
480 }
481
482 static void
483 setting_security_firewall_click_softkey_delete_cb(void *data, Evas_Object *obj,
484                                                   void *event_info)
485 {
486         SETTING_TRACE_BEGIN;
487         /* error check */
488         retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
489
490         SettingSecurityUG *ad = (SettingSecurityUG *) data;
491
492
493         /* to do */
494         /* change to select list */
495
496         SETTING_TRACE_END;
497 }
498
499 static bool __get_user_selected_profile(void *data)
500 {
501         SETTING_TRACE_BEGIN;
502         setting_retvm_if(data == NULL, -1, "Data parameter is NULL");
503         /*Setting_GenGroupItem_Data *list_item = data; */
504         SettingSecurityUG *ad = (SettingSecurityUG *) data;
505         setting_retvm_if(ad == NULL, -1, "ad parameter is NULL");
506
507         connection_profile_iterator_h profile_iter = NULL;
508         connection_profile_h profile_h = NULL;
509         connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
510         char *profile_name = NULL;
511
512         int rv = connection_get_current_profile(ad->connection, &profile_h);
513         if (rv != CONNECTION_ERROR_NONE) {
514                 SETTING_TRACE_ERROR("Fail to get current profile [%d]", rv);
515                 return false;
516         }
517         if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
518                 SETTING_TRACE_ERROR("Fail to get profile name");
519                 return false;
520         }
521         if (connection_get_default_cellular_service_profile(ad->connection, CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET, &(ad->profile)) != CONNECTION_ERROR_NONE
522             && connection_get_default_cellular_service_profile(ad->connection, CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET, &(ad->profile)) != CONNECTION_ERROR_NONE) {
523                 SETTING_TRACE_ERROR("Fail to get service_type");
524                 return false;
525         }
526
527         ad->interface_name = NULL;
528         if (connection_profile_get_network_interface_name(ad->profile, &(ad->interface_name)) != CONNECTION_ERROR_NONE) {
529                 SETTING_TRACE("Fail to get interface name!");
530                 return false;
531         } else {
532                 SETTING_TRACE("get profile !! Interface name : [%s], profile name [%s]", ad->interface_name, profile_name);
533                 if (ad->interface_name == NULL)
534                         return false;
535                 else
536                         return true;
537         }
538
539         SETTING_TRACE_END;
540 }
541
542
543 void __sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
544 {
545         SETTING_TRACE_BEGIN;
546         /* error check */
547         SettingSecurityUG *ad = (SettingSecurityUG *) data;
548         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
549         Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
550         Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
551         elm_genlist_item_selected_set(subitem, 0);
552         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
553         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
554         ret_if(NULL == data_subItem || NULL == data_parentItem);
555
556         int err = IPTABLES_ERROR_NONE;
557         if (!safeStrCmp(Keystr_BlockedNetworkType, data_parentItem->keyStr)) {
558                 bool isInterface = false;
559                 if (!__get_user_selected_profile(ad)) { /*get interface from profile for pdp!! */
560                         SETTING_TRACE_DEBUG("__get_user_selected_profile failed");
561                         isInterface = false;
562                 }
563                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
564                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
565                                 err = setting_security_system_command("16", ad->interface_name);                /*allow, interface name as pdp0, pdp1,... */
566                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
567                         }
568                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
569                                 err = setting_security_system_command("17", "wlan+");   /*allow */
570                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
571                         }
572                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, data_subItem->keyStr)) {
573                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
574                                 err = setting_security_system_command("16", ad->interface_name);                /*allow */
575                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
576                         }
577                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
578                                 err = setting_security_system_command("8", "wlan+");
579                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
580                         }
581                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, data_subItem->keyStr)) {
582                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
583                                 err = setting_security_system_command("17", "wlan+");   /*allow */
584                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
585                         }
586                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
587                                 if (!isInterface) {
588                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
589                                         return;
590                                 } else {
591                                         err = setting_security_system_command("7", ad->interface_name);
592                                         if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
593                                 }
594                         }
595                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
596                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
597                                 if (!isInterface) {
598                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
599                                         return;
600                                 } else {
601                                         err = setting_security_system_command("7", ad->interface_name);
602                                         if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
603                                 }
604                         }
605                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
606                                 err = setting_security_system_command("8", "wlan+");
607                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
608                         }
609                 }
610         } else if (!safeStrCmp(Keystr_BlockedProtocolType, data_parentItem->keyStr)) {
611                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
612                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
613                                 err = setting_security_system_command("14", "TCP");             /*allow */
614                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
615                         }
616                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
617                                 err = setting_security_system_command("15", "UDP");     /*allow */
618                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
619                         }
620                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, data_subItem->keyStr)) {
621                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
622                                 err = setting_security_system_command("15", "UDP");     /*allow */
623                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
624                         }
625                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
626                                 err = setting_security_system_command("5", "TCP");
627                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
628                         }
629                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, data_subItem->keyStr)) {
630                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
631                                 err = setting_security_system_command("14", "TCP");     /*allow */
632                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
633                         }
634                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
635                                 err = setting_security_system_command("6", "UDP");
636                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
637                         }
638                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
639                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
640                                 err = setting_security_system_command("5", "TCP");
641                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
642                         }
643                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
644                                 err = setting_security_system_command("6", "UDP");
645                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
646                         }
647                 }
648         }
649
650         elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
651         data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
652         elm_object_item_data_set(data_parentItem->item, data_parentItem);
653         elm_genlist_item_update(data_parentItem->item);
654 }
655
656 void __sub_list_rd_change(void *data, Evas_Object *obj, void *event_info)
657 {
658         SETTING_TRACE_BEGIN;
659         retm_if(data == NULL, "Data parameter is NULL");
660         Setting_GenGroupItem_Data *list_item =
661             (Setting_GenGroupItem_Data *) data;
662         list_item->chk_status = elm_radio_value_get(obj);       /*  for update */
663
664         SettingSecurityUG *ad = list_item->userdata;
665         setting_retm_if(ad == NULL, "ad parameter is NULL");
666
667         Elm_Object_Item *subItem = list_item->item;
668         Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subItem);
669
670         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subItem);    /* subItem data */
671         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);
672         ret_if(NULL == data_subItem || NULL == data_parentItem);
673
674         int err = IPTABLES_ERROR_NONE;
675         if (!safeStrCmp(Keystr_BlockedNetworkType, data_parentItem->keyStr)) {
676                 bool isInterface = false;
677                 if (!__get_user_selected_profile(ad)) { /*get interface from profile for pdp!! */
678                         SETTING_TRACE_DEBUG("__get_user_selected_profile failed");
679                         isInterface = false;
680                 }
681                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
682                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
683                                 err = setting_security_system_command("16", ad->interface_name);                /*allow, interface name as pdp0, pdp1,... */
684                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
685                         }
686                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
687                                 err = setting_security_system_command("17", "wlan+");   /*allow */
688                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
689                         }
690                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, data_subItem->keyStr)) {
691                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0) {
692                                 err = setting_security_system_command("16", ad->interface_name);                /*allow */
693                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d", err);
694                         }
695                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
696                                 err = setting_security_system_command("8", "wlan+");
697                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
698                         }
699                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, data_subItem->keyStr)) {
700                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
701                                 err = setting_security_system_command("17", "wlan+");   /*allow */
702                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d", err);
703                         }
704                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
705                                 if (!isInterface) {
706                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
707                                         return;
708                                 } else {
709                                         err = setting_security_system_command("7", ad->interface_name);
710                                         if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
711                                 }
712                         }
713                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
714                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0) {
715                                 if (!isInterface) {
716                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
717                                         return;
718                                 } else {
719                                         err = setting_security_system_command("7", ad->interface_name);
720                                         if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d", err);
721                                 }
722                         }
723                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
724                                 err = setting_security_system_command("8", "wlan+");
725                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d", err);
726                         }
727                 }
728         } else if (!safeStrCmp(Keystr_BlockedProtocolType, data_parentItem->keyStr)) {
729                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr)) {
730                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
731                                 err = setting_security_system_command("14", "TCP");             /*allow */
732                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
733                         }
734                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
735                                 err = setting_security_system_command("15", "UDP");     /*allow */
736                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
737                         }
738                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, data_subItem->keyStr)) {
739                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
740                                 err = setting_security_system_command("15", "UDP");     /*allow */
741                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d", err);
742                         }
743                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
744                                 err = setting_security_system_command("5", "TCP");
745                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
746                         }
747                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, data_subItem->keyStr)) {
748                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0) {
749                                 err = setting_security_system_command("14", "TCP");     /*allow */
750                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d", err);
751                         }
752                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
753                                 err = setting_security_system_command("6", "UDP");
754                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
755                         }
756                 } else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr)) {
757                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0) {
758                                 err = setting_security_system_command("5", "TCP");
759                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d", err);
760                         }
761                         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
762                                 err = setting_security_system_command("6", "UDP");
763                                 if (err != IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d", err);
764                         }
765                 }
766         }
767
768         data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
769         elm_object_item_data_set(data_parentItem->item, data_parentItem);
770         elm_genlist_item_update(data_parentItem->item);
771 }
772
773 int
774 __check_network_block_mode()
775 {
776         SETTING_TRACE_BEGIN;
777         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0 &&
778             setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
779                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_ALLOW_ALL;
780         } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0 &&
781                    setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0) {
782                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_3G;
783         } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0 &&
784                    setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
785                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_WIFI;
786         } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0 &&
787                    setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0) {
788                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_ALL;
789         }
790         return -1;
791 }
792
793 int
794 __check_protocol_block_mode()
795 {
796         SETTING_TRACE_BEGIN;
797         if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0 &&
798             setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
799                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_ALLOW_ALL;
800         } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0 &&
801                    setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0) {
802                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_TCP;
803         } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0 &&
804                    setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
805                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_UDP;
806         } else if (setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0 &&
807                    setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0) {
808                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_ALL;
809         }
810         return -1;
811 }
812
813 static void
814 __setting_security_firewall_exp_cb(void *data, Evas_Object *obj, void *event_info)
815 {
816         ret_if(NULL == data || NULL == event_info);
817         SETTING_TRACE_BEGIN;
818         SettingSecurityUG *ad = (SettingSecurityUG *) data;
819         Elm_Object_Item *parentItem = event_info;       /*parent item */
820         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /*parent data */
821         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
822
823         Evas_Object *rgd;
824         Setting_GenGroupItem_Data *list_item = NULL;
825         if (data_parentItem == ad->data_block_network_type /* <- name */) {
826                 rgd = elm_radio_add(scroller);
827                 elm_radio_value_set(rgd, -1);
828                 int net_block = __check_network_block_mode();
829                 elm_radio_value_set(rgd, net_block);
830
831                 /*elm_object_item_signal_emit(parentItem, "elm,state,top", ""); */
832
833                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
834                                                                                   &(itc_1icon_1text_sub),
835                                                                                   __sub_list_sel_cb, ad, parentItem,
836                                                                                   SWALLOW_Type_1RADIO, rgd,
837                                                                                   0,
838                                                                                   SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
839                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
840
841                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
842                                                                                   &(itc_1icon_1text_sub),
843                                                                                   __sub_list_sel_cb, ad, parentItem,
844                                                                                   SWALLOW_Type_1RADIO, rgd,
845                                                                                   1,
846                                                                                   SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
847                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
848
849                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
850                                                                                   &(itc_1icon_1text_sub),
851                                                                                   __sub_list_sel_cb, ad, parentItem,
852                                                                                   SWALLOW_Type_1RADIO, rgd,
853                                                                                   2,
854                                                                                   SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
855
856                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
857                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
858                                                                                   &(itc_1icon_1text_sub),
859                                                                                   __sub_list_sel_cb, ad, parentItem,
860                                                                                   SWALLOW_Type_1RADIO, rgd,
861                                                                                   3,
862                                                                                   SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_BOTTOM);
863                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_BOTTOM);
864         } else if (data_parentItem == ad->data_block_protocol_type /* <- name */) {
865                 rgd = elm_radio_add(scroller);
866                 elm_radio_value_set(rgd, -1);
867                 int proto_block = __check_protocol_block_mode();
868                 elm_radio_value_set(rgd, proto_block);
869
870                 /*elm_object_item_signal_emit(parentItem, "elm,state,top", ""); */
871
872                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
873                                                                                   &(itc_1icon_1text_sub),
874                                                                                   __sub_list_sel_cb, ad, parentItem,
875                                                                                   SWALLOW_Type_1RADIO, rgd,
876                                                                                   0,
877                                                                                   SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
878                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
879
880                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
881                                                                                   &(itc_1icon_1text_sub),
882                                                                                   __sub_list_sel_cb, ad, parentItem,
883                                                                                   SWALLOW_Type_1RADIO, rgd,
884                                                                                   1,
885                                                                                   SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
886                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
887
888                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
889                                                                                   &(itc_1icon_1text_sub),
890                                                                                   __sub_list_sel_cb, ad, parentItem,
891                                                                                   SWALLOW_Type_1RADIO, rgd,
892                                                                                   2,
893                                                                                   SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
894                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
895
896                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
897                                                                                   &(itc_1icon_1text_sub),
898                                                                                   __sub_list_sel_cb, ad, parentItem,
899                                                                                   SWALLOW_Type_1RADIO, rgd,
900                                                                                   3,
901                                                                                   SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_BOTTOM);
902
903                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_BOTTOM);
904         }
905 }