tizen 2.3 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         {
328                 connection_destroy(ad->connection);
329                 connection_profile_destroy(ad->profile);
330                 ad->connection = NULL;
331                 ad->profile = NULL;
332         }
333
334         //evas_object_smart_callback_del(ad->genlist, "realized", __gl_realized_cb);
335         setting_security_firewall_data_end_list();
336         elm_naviframe_item_pop(ad->navi_bar);
337         //setting_security_firewall_data_end_list();
338         setting_view_security_firewall.is_create = 0;
339
340         return SETTING_RETURN_SUCCESS;
341 }
342
343 static int setting_security_firewall_update(void *cb)
344 {
345         SETTING_TRACE_BEGIN;
346         /* error check */
347         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
348
349         return SETTING_RETURN_SUCCESS;
350 }
351
352 static int setting_security_firewall_cleanup(void *cb)
353 {
354         SETTING_TRACE_BEGIN;
355         /* error check */
356         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
357
358         SettingSecurityUG *ad = (SettingSecurityUG *) cb;
359         return setting_security_firewall_destroy(ad);
360 }
361
362 /* ***************************************************
363  **
364  **call back func
365  **
366  ****************************************************/
367
368 static void __toggle_automatic_chk(void* data, int chk_status, char* keyStr)
369 {
370         SETTING_TRACE_BEGIN;
371         SettingSecurityUG *ad = (SettingSecurityUG *) data;
372
373         if (chk_status) {
374                 // TOGGLE ON
375                 if (!safeStrCmp(Keystr_BlockIP, keyStr)){
376                         setting_enable_genlist_item(ad->data_blocked_ip_list->item);
377                         SETTING_TRACE_DEBUG("Keystr_BlockIP");
378                         setting_security_system_command("20",NULL);
379                 }else if(!safeStrCmp(Keystr_BlockURL, keyStr)){
380
381                         setting_enable_genlist_item(ad->data_blocked_url_list->item);
382                         SETTING_TRACE_DEBUG("Keystr_BlockURL");
383                         setting_security_system_command("24",NULL);
384                 }else if(!safeStrCmp(Keystr_BlockPort,keyStr)){
385                         setting_enable_genlist_item(ad->data_blocked_port_list->item);
386                         SETTING_TRACE_DEBUG("Keystr_BlockPort");
387                         setting_security_system_command("21",NULL);
388                 }
389         } else {
390                 // TOGGLE OFF
391                 if (!safeStrCmp(Keystr_BlockIP, keyStr)){
392                         setting_disable_genlist_item(ad->data_blocked_ip_list->item);
393
394                         SETTING_TRACE_DEBUG("Keystr_BlockIP - off");
395                         setting_security_system_command("25",NULL);
396                 }else if(!safeStrCmp(Keystr_BlockURL, keyStr)){
397                         setting_disable_genlist_item(ad->data_blocked_url_list->item);
398                         SETTING_TRACE_DEBUG("Keystr_BlockURL - off");
399                         setting_security_system_command("29",NULL);
400                 }else if(!safeStrCmp(Keystr_BlockPort, keyStr)){
401                         setting_disable_genlist_item(ad->data_blocked_port_list->item);
402                         SETTING_TRACE_DEBUG("Keystr_BlockURL - off");
403                         setting_security_system_command("26",NULL);
404                 }
405         }
406         return;
407 }
408
409 static void
410 setting_security_firewall_chk_btn_cb(void *data, Evas_Object *obj,
411                                                void *event_info)
412 {
413         SETTING_TRACE_BEGIN;
414         /* error check */
415         retm_if(data == NULL, "Data parameter is NULL");
416         Setting_GenGroupItem_Data *list_item =
417             (Setting_GenGroupItem_Data *) data;
418         SettingSecurityUG *ad = list_item->userdata;
419         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
420
421         // enable /disable toggle button
422         __toggle_automatic_chk(ad,list_item->chk_status, list_item->keyStr);
423         return;
424 }
425
426
427 static Eina_Bool
428 setting_security_firewall_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info)
429 {
430         /* error check */
431         retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
432
433         SettingSecurityUG *ad = (SettingSecurityUG *) data;
434
435         setting_view_change(&setting_view_security_firewall, &setting_view_security_main, ad);
436         return EINA_TRUE;
437 }
438
439
440 static void
441 setting_security_firewall_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
442                                                void *event_info)
443 {
444         SETTING_TRACE_BEGIN;
445         /* error check */
446         setting_retm_if(data == NULL, "Data parameter is NULL");
447         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
448
449         SettingSecurityUG *ad = data;
450
451         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
452         elm_genlist_item_selected_set(item, 0);
453         Setting_GenGroupItem_Data *list_item =
454             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
455
456         setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
457
458         // enable /disable toggle button
459         if (!safeStrCmp(Keystr_BlockIP, list_item->keyStr)) {
460                 __toggle_automatic_chk(ad,list_item->chk_status, list_item->keyStr);
461         }else if (!safeStrCmp(Keystr_BlockedIPList, list_item->keyStr)) {
462                 /* set block type */
463                 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_IP;
464                 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
465         }
466
467         if (!safeStrCmp(Keystr_BlockURL, list_item->keyStr)) {
468                 __toggle_automatic_chk(ad,list_item->chk_status, list_item->keyStr);
469         }else if (!safeStrCmp(Keystr_BlockedURLList, list_item->keyStr)) {
470                 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_URL;
471                 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
472         }
473
474         if (!safeStrCmp(Keystr_BlockPort, list_item->keyStr)) {
475                 __toggle_automatic_chk(ad,list_item->chk_status, list_item->keyStr);
476         }else if (!safeStrCmp(Keystr_BlockedPortList, list_item->keyStr)) {
477                 ad->firewall_block_type = SETTING_SEC_FIREWALL_BLOCK_PORT;
478                 setting_view_change(&setting_view_security_firewall, &setting_view_security_blocked_list, ad);
479         }
480         return;
481 }
482
483 static void
484 setting_security_firewall_click_softkey_delete_cb(void *data, Evas_Object *obj,
485                                             void *event_info)
486 {
487         SETTING_TRACE_BEGIN;
488         /* error check */
489         retm_if(data == NULL, "[Setting > Security] Data parameter is NULL");
490
491         SettingSecurityUG *ad = (SettingSecurityUG *) data;
492
493
494         /* to do */
495         /* change to select list */
496
497         SETTING_TRACE_END;
498 }
499
500 static bool __get_user_selected_profile(void *data)
501 {
502         SETTING_TRACE_BEGIN;
503         setting_retvm_if(data == NULL, -1, "Data parameter is NULL");
504         //Setting_GenGroupItem_Data *list_item = data;
505         SettingSecurityUG *ad = (SettingSecurityUG *) data;
506         setting_retvm_if(ad == NULL, -1, "ad parameter is NULL");
507
508         connection_profile_iterator_h profile_iter = NULL;
509         connection_profile_h profile_h = NULL;
510         connection_cellular_service_type_e service_type = CONNECTION_CELLULAR_SERVICE_TYPE_UNKNOWN;
511         char *profile_name = NULL;
512
513         int rv = connection_get_current_profile(ad->connection, &profile_h);
514         if (rv != CONNECTION_ERROR_NONE) {
515                 SETTING_TRACE_ERROR("Fail to get current profile [%d]", rv);
516                 return false;
517         }
518         if (connection_profile_get_name(profile_h, &profile_name) != CONNECTION_ERROR_NONE) {
519                 SETTING_TRACE_ERROR("Fail to get profile name");
520                 return false;
521         }
522         if (connection_get_default_cellular_service_profile(ad->connection, CONNECTION_CELLULAR_SERVICE_TYPE_INTERNET, &(ad->profile)) != CONNECTION_ERROR_NONE
523                 && connection_get_default_cellular_service_profile(ad->connection, CONNECTION_CELLULAR_SERVICE_TYPE_PREPAID_INTERNET, &(ad->profile)) != CONNECTION_ERROR_NONE) {
524                 SETTING_TRACE_ERROR("Fail to get service_type");
525                 return false;
526         }
527
528         ad->interface_name = NULL;
529         if (connection_profile_get_network_interface_name(ad->profile, &(ad->interface_name)) != CONNECTION_ERROR_NONE){
530                 SETTING_TRACE("Fail to get interface name!");
531                 return false;
532         }
533         else {
534                 SETTING_TRACE("get profile !! Interface name : [%s], profile name [%s]", ad->interface_name, profile_name);
535                 if(ad->interface_name == NULL)
536                         return false;
537                 else
538                         return true;
539         }
540
541         SETTING_TRACE_END;
542 }
543
544
545 void __sub_list_sel_cb(void *data, Evas_Object *obj, void *event_info)
546 {
547         SETTING_TRACE_BEGIN;
548         /* error check */
549         SettingSecurityUG *ad = (SettingSecurityUG *) data;
550         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
551         Elm_Object_Item *subitem = (Elm_Object_Item *) event_info;
552         Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subitem);
553         elm_genlist_item_selected_set(subitem, 0);
554         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subitem);
555         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      /* parent data */
556         ret_if(NULL == data_subItem || NULL == data_parentItem);
557
558         int err = IPTABLES_ERROR_NONE;
559         if (!safeStrCmp(Keystr_BlockedNetworkType, data_parentItem->keyStr))
560         {
561                 bool isInterface = false;
562                 if(!__get_user_selected_profile(ad))    //get interface from profile for pdp!!
563                 {
564                         SETTING_TRACE_DEBUG("__get_user_selected_profile failed");
565                         isInterface = false;
566                 }
567                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr))
568                 {
569                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0){
570                                 err = setting_security_system_command("16",ad->interface_name);         //allow, interface name as pdp0, pdp1,...
571                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d",err);
572                         }
573                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0){
574                                 err = setting_security_system_command("17","wlan+");    //allow
575                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d",err);
576                         }
577                 }
578                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, data_subItem->keyStr))
579                 {
580                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0){
581                                 err = setting_security_system_command("16",ad->interface_name);         //allow
582                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d",err);
583                         }
584                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0){
585                                 err = setting_security_system_command("8","wlan+");
586                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d",err);
587                         }
588                 }
589                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, data_subItem->keyStr))
590                 {
591                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0){
592                                 err = setting_security_system_command("17","wlan+");    //allow
593                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d",err);
594                         }
595                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0){
596                                 if(!isInterface){
597                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
598                                         return;
599                                 }
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                 }
606                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr))
607                 {
608                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0){
609                                 if(!isInterface){
610                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
611                                         return;
612                                 }
613                                 else{
614                                         err = setting_security_system_command("7",ad->interface_name);
615                                         if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d",err);
616                                 }
617                         }
618                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0){
619                                 err = setting_security_system_command("8","wlan+");
620                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d",err);
621                         }
622                 }
623         }
624         else if(!safeStrCmp(Keystr_BlockedProtocolType, data_parentItem->keyStr))
625         {
626                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr))
627                 {
628                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0){
629                                 err = setting_security_system_command("14","TCP");              //allow
630                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d",err);
631                         }
632                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0){
633                                 err = setting_security_system_command("15","UDP");      //allow
634                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d",err);
635                         }
636                 }
637                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, data_subItem->keyStr))
638                 {
639                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0){
640                                 err = setting_security_system_command("15","UDP");      //allow
641                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d",err);
642                         }
643                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0){
644                                 err = setting_security_system_command("5","TCP");
645                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d",err);
646                         }
647                 }
648                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, data_subItem->keyStr))
649                 {
650                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0){
651                                 err = setting_security_system_command("14","TCP");      //allow
652                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d",err);
653                         }
654                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0){
655                                 err = setting_security_system_command("6","UDP");
656                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d",err);
657                         }
658                 }
659                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr))
660                 {
661                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0){
662                                 err = setting_security_system_command("5","TCP");
663                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d",err);
664                         }
665                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0){
666                                 err = setting_security_system_command("6","UDP");
667                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d",err);
668                         }
669                 }
670         }
671
672         elm_radio_value_set(data_subItem->rgd, data_subItem->chk_status);
673         data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
674         elm_object_item_data_set(data_parentItem->item, data_parentItem);
675         elm_genlist_item_update(data_parentItem->item);
676 }
677
678 void __sub_list_rd_change(void *data, Evas_Object *obj, void *event_info)
679 {
680         SETTING_TRACE_BEGIN;
681         retm_if(data == NULL, "Data parameter is NULL");
682         Setting_GenGroupItem_Data *list_item =
683             (Setting_GenGroupItem_Data *) data;
684         list_item->chk_status = elm_radio_value_get(obj);       /*  for update */
685
686         SettingSecurityUG *ad = list_item->userdata;
687         setting_retm_if(ad == NULL, "ad parameter is NULL");
688
689         Elm_Object_Item *subItem = list_item->item;
690         Elm_Object_Item *parentItem = elm_genlist_item_parent_get(subItem);
691
692         Setting_GenGroupItem_Data *data_subItem = elm_object_item_data_get(subItem);    /* subItem data */
693         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);
694         ret_if(NULL == data_subItem || NULL == data_parentItem);
695
696         int err = IPTABLES_ERROR_NONE;
697         if (!safeStrCmp(Keystr_BlockedNetworkType, data_parentItem->keyStr))
698         {
699                 bool isInterface = false;
700                 if(!__get_user_selected_profile(ad))    //get interface from profile for pdp!!
701                 {
702                         SETTING_TRACE_DEBUG("__get_user_selected_profile failed");
703                         isInterface = false;
704                 }
705                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr))
706                 {
707                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0){
708                                 err = setting_security_system_command("16",ad->interface_name);         //allow, interface name as pdp0, pdp1,...
709                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d",err);
710                         }
711                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0){
712                                 err = setting_security_system_command("17","wlan+");    //allow
713                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d",err);
714                         }
715                 }
716                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, data_subItem->keyStr))
717                 {
718                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0){
719                                 err = setting_security_system_command("16",ad->interface_name);         //allow
720                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp allow : err = %d",err);
721                         }
722                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0){
723                                 err = setting_security_system_command("8","wlan+");
724                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d",err);
725                         }
726                 }
727                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, data_subItem->keyStr))
728                 {
729                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0){
730                                 err = setting_security_system_command("17","wlan+");    //allow
731                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan allow : err = %d",err);
732                         }
733                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0){
734                                 if(!isInterface){
735                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
736                                         return;
737                                 }
738                                 else{
739                                         err = setting_security_system_command("7",ad->interface_name);
740                                         if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d",err);
741                                 }
742                         }
743                 }
744                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr))
745                 {
746                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0){
747                                 if(!isInterface){
748                                         setting_create_simple_popup(ad, ad->win_get, NULL, _(POP_MSG_NETWORK_INTERFACE_FAILED));
749                                         return;
750                                 }
751                                 else{
752                                         err = setting_security_system_command("7",ad->interface_name);
753                                         if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command pdp block : err = %d",err);
754                                 }
755                         }
756                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0){
757                                 err = setting_security_system_command("8","wlan+");
758                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command wlan block : err = %d",err);
759                         }
760                 }
761         }
762         else if(!safeStrCmp(Keystr_BlockedProtocolType, data_parentItem->keyStr))
763         {
764                 if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, data_subItem->keyStr))
765                 {
766                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0){
767                                 err = setting_security_system_command("14","TCP");              //allow
768                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d",err);
769                         }
770                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0){
771                                 err = setting_security_system_command("15","UDP");      //allow
772                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d",err);
773                         }
774                 }
775                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, data_subItem->keyStr))
776                 {
777                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0){
778                                 err = setting_security_system_command("15","UDP");      //allow
779                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP allow : err = %d",err);
780                         }
781                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0){
782                                 err = setting_security_system_command("5","TCP");
783                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d",err);
784                         }
785                 }
786                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, data_subItem->keyStr))
787                 {
788                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0){
789                                 err = setting_security_system_command("14","TCP");      //allow
790                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP allow : err = %d",err);
791                         }
792                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0){
793                                 err = setting_security_system_command("6","UDP");
794                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d",err);
795                         }
796                 }
797                 else if (!safeStrCmp(SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, data_subItem->keyStr))
798                 {
799                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0){
800                                 err = setting_security_system_command("5","TCP");
801                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command TCP block : err = %d",err);
802                         }
803                         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0){
804                                 err = setting_security_system_command("6","UDP");
805                                 if(err!=IPTABLES_ERROR_NONE) SETTING_TRACE_ERROR("setting_security_system_command UDP block : err = %d",err);
806                         }
807                 }
808         }
809
810         data_parentItem->sub_desc = (char *)g_strdup(_(data_subItem->keyStr));
811         elm_object_item_data_set(data_parentItem->item, data_parentItem);
812         elm_genlist_item_update(data_parentItem->item);
813 }
814
815 int
816 __check_network_block_mode()
817 {
818         SETTING_TRACE_BEGIN;
819         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0 &&
820                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0)
821         {
822                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_ALLOW_ALL;
823         }
824         else if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0 &&
825                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) != 0)
826         {
827                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_3G;
828         }
829         else if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) != 0 &&
830                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0)
831         {
832                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_WIFI;
833         }
834         else if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_3G) == 0 &&
835                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_WIFI) == 0)
836         {
837                 return SETTING_SEC_FIREWALL_NETWORK_BLOCK_ALL;
838         }
839         return -1;
840 }
841
842 int
843 __check_protocol_block_mode()
844 {
845         SETTING_TRACE_BEGIN;
846         if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0 &&
847                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0)
848         {
849                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_ALLOW_ALL;
850         }
851         else if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0 &&
852                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) != 0)
853         {
854                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_TCP;
855         }
856         else if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) != 0 &&
857                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0)
858         {
859                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_UDP;
860         }
861         else if(setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_TCP) == 0 &&
862                 setting_security_firewall_data_isTurnOn(SETTING_SEC_FIREWALL_BLOCK_UDP) == 0)
863         {
864                 return SETTING_SEC_FIREWALL_PROTOCOL_BLOCK_ALL;
865         }
866         return -1;
867 }
868
869 static void
870 __setting_security_firewall_exp_cb(void *data, Evas_Object * obj, void *event_info)
871 {
872         ret_if(NULL == data || NULL == event_info);
873         SETTING_TRACE_BEGIN;
874         SettingSecurityUG *ad = (SettingSecurityUG *) data;
875         Elm_Object_Item *parentItem = event_info;       //parent item
876         Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem);      //parent data
877         Evas_Object *scroller = elm_object_item_widget_get(parentItem);
878
879         Evas_Object *rgd;
880         Setting_GenGroupItem_Data *list_item = NULL;
881         if (data_parentItem == ad->data_block_network_type /* <- name */) {
882                 rgd = elm_radio_add(scroller);
883                 elm_radio_value_set(rgd, -1);
884                 int net_block = __check_network_block_mode();
885                 elm_radio_value_set(rgd, net_block);
886
887                 //elm_object_item_signal_emit(parentItem, "elm,state,top", "");
888
889                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
890                                                      &(itc_1icon_1text_sub),
891                                                      __sub_list_sel_cb, ad, parentItem,
892                                                      SWALLOW_Type_1RADIO, rgd,
893                                                          0,
894                                                      SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_ALLOW_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
895                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
896
897                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
898                                                      &(itc_1icon_1text_sub),
899                                                      __sub_list_sel_cb, ad, parentItem,
900                                                      SWALLOW_Type_1RADIO, rgd,
901                                                          1,
902                                                      SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_WIFI, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
903                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
904
905                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
906                                                      &(itc_1icon_1text_sub),
907                                                      __sub_list_sel_cb, ad, parentItem,
908                                                      SWALLOW_Type_1RADIO, rgd,
909                                                          2,
910                                                      SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_MOBILE_NETWORK, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
911
912                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
913                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
914                                                      &(itc_1icon_1text_sub),
915                                                      __sub_list_sel_cb, ad, parentItem,
916                                                      SWALLOW_Type_1RADIO, rgd,
917                                                          3,
918                                                      SETTING_SECURITY_FIREWALL_NETWORK_BLOCK_TYPE_BLOCK_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_BOTTOM);
919                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_BOTTOM);
920         }
921         else if (data_parentItem == ad->data_block_protocol_type /* <- name */) {
922                 rgd = elm_radio_add(scroller);
923                 elm_radio_value_set(rgd, -1);
924                 int proto_block = __check_protocol_block_mode();
925                 elm_radio_value_set(rgd, proto_block);
926
927                 //elm_object_item_signal_emit(parentItem, "elm,state,top", "");
928
929                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
930                                                      &(itc_1icon_1text_sub),
931                                                      __sub_list_sel_cb, ad, parentItem,
932                                                      SWALLOW_Type_1RADIO, rgd,
933                                                          0,
934                                                      SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_ALLOW_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
935                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
936
937                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
938                                                      &(itc_1icon_1text_sub),
939                                                      __sub_list_sel_cb, ad, parentItem,
940                                                      SWALLOW_Type_1RADIO, rgd,
941                                                          1,
942                                                      SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_TCP, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
943                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
944
945                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
946                                                      &(itc_1icon_1text_sub),
947                                                      __sub_list_sel_cb, ad, parentItem,
948                                                      SWALLOW_Type_1RADIO, rgd,
949                                                          2,
950                                                      SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_UDP, __sub_list_rd_change, SETTING_GROUP_STYLE_CENTER);
951                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_CENTER);
952
953                 list_item = setting_create_Gendial_exp_sub_field_with_group_style(scroller,
954                                                      &(itc_1icon_1text_sub),
955                                                      __sub_list_sel_cb, ad, parentItem,
956                                                      SWALLOW_Type_1RADIO, rgd,
957                                                          3,
958                                                      SETTING_SECURITY_FIREWALL_PROTOCOL_BLOCK_TYPE_BLOCK_ALL, __sub_list_rd_change, SETTING_GROUP_STYLE_BOTTOM);
959
960                 setting_genlist_item_groupstyle_set(list_item, SETTING_GROUP_STYLE_BOTTOM);
961         }
962 }