2 * Copyright (c) 2016 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef __STC_MANAGER_H__
18 #define __STC_MANAGER_H__
20 #include "stc-error.h"
21 #include "stc-manager-util.h"
23 #define NET_RELEASE_AGENT "/usr/bin/net-cls-release"
24 #define NET_CLS_SUBSYS "net_cls"
26 #define STC_BACKGROUND_APP_SUFFIX "_BACKGROUND"
27 #define STC_TETHERING_APP_SUFFIX "_TETHERING"
28 #define STC_TOTAL_BACKGROUND "TOTAL_BACKGROUND"
29 #define STC_TOTAL_DATACALL "TOTAL_DATACALL"
30 #define STC_TOTAL_WIFI "TOTAL_WIFI"
31 #define STC_TOTAL_BLUETOOTH "TOTAL_BLUETOOTH"
32 #define STC_TOTAL_IPV4 "TOTAL_IPV4"
33 #define STC_TOTAL_IPV6 "TOTAL_IPV6"
34 #define STC_TOTAL_TETHERING "TOTAL_TETHERING"
36 #define STC_IPTABLES "/usr/sbin/iptables"
37 #define STC_IP6TABLES "/usr/sbin/ip6tables"
39 #define STC_CMD_INSERT "-I"
40 #define STC_CMD_SIZE 256
42 #define STC_DEBUG_LOG (stc_util_get_log_state(DEBUG_LOG_INFO))
43 #define STC_STAT_LOG (stc_util_get_log_state(STAT_LOG_INFO))
44 #define STC_RSTN_LOG (stc_util_get_log_state(RSTN_LOG_INFO))
45 #define STC_FW_LOG (stc_util_get_log_state(FW_LOG_INFO))
46 #define STC_PCAP_LOG (stc_util_get_log_state(PCAP_LOG_INFO))
49 STC_CANCEL = 0, /**< cancel */
50 STC_CONTINUE = 1, /**< continue */
57 STC_CMD_SET_APP_LAUNCHED,
58 STC_CMD_SET_SERVICE_LAUNCHED,
59 STC_CMD_SET_TERMINATED,
64 STC_FW_DIRECTION_NONE,
73 } stc_fw_family_type_e;
98 } stc_fw_protocol_type_e;
101 STC_FW_CHAIN_TARGET_NONE,
102 STC_FW_CHAIN_TARGET_INPUT,
103 STC_FW_CHAIN_TARGET_OUTPUT,
104 STC_FW_CHAIN_TARGET_MAX
105 } stc_fw_chain_target_e;
108 STC_FW_RULE_TARGET_NONE,
109 STC_FW_RULE_TARGET_ACCEPT,
110 STC_FW_RULE_TARGET_DROP,
111 STC_FW_RULE_TARGET_LOG,
112 STC_FW_RULE_TARGET_NFLOG,
113 STC_FW_RULE_TARGET_MAX
114 } stc_fw_rule_target_e;
117 * @brief Monitored application types
123 STC_APP_TYPE_SERVICE,
127 STC_APP_TYPE_TETHERING,
132 * @brief State of the statisticsed process
135 STC_APP_STATE_UNKNOWN,
136 STC_APP_STATE_FOREGROUND, /** < foreground state */
137 STC_APP_STATE_BACKGROUND, /** < background state */
138 STC_APP_STATE_LAST_ELEM
142 * @brief Network restriction states
145 STC_RSTN_STATE_UNKNOWN,
146 STC_RSTN_STATE_ACTIVATED,
147 STC_RSTN_STATE_DEACTIVATED,
148 STC_RSTN_STATE_LAST_ELEM
152 * @brief Network restriction types
155 STC_RSTN_TYPE_UNKNOWN,
156 STC_RSTN_TYPE_ACCEPT,
158 STC_RSTN_TYPE_LAST_ELEM
162 * @brief Network interface types
165 STC_IFACE_UNKNOWN, /**< undefined iface */
166 STC_IFACE_DATACALL, /**< mobile data */
167 STC_IFACE_WIFI, /**< wifi data */
168 STC_IFACE_WIRED, /**< wired interface */
169 STC_IFACE_BLUETOOTH, /**< bluetooth interface */
170 STC_IFACE_IPV4, /**< ipv4 interface */
171 STC_IFACE_IPV6, /**< ipv6 interface */
172 STC_IFACE_USB, /**< usb interface */
173 STC_IFACE_P2P, /**< p2p interface */
174 STC_IFACE_ALL, /**< enumerate all network interface types */
179 * @brief Network roaming type
182 STC_ROAMING_DISABLE, /**< not in roaming */
183 STC_ROAMING_ENABLE, /**< in roaming */
184 } stc_roaming_type_e;
187 * @brief Hardware network protocol types
190 STC_PROTOCOL_UNKNOWN, /**< Network unknown */
191 STC_PROTOCOL_DATACALL_NOSVC, /**< Network no service */
192 STC_PROTOCOL_DATACALL_EMERGENCY, /**< Network emergency */
193 STC_PROTOCOL_DATACALL_SEARCH, /**< Network search 1900 */
194 STC_PROTOCOL_DATACALL_2G, /**< Network 2G */
195 STC_PROTOCOL_DATACALL_2_5G, /**< Network 2.5G */
196 STC_PROTOCOL_DATACALL_2_5G_EDGE, /**< Network EDGE */
197 STC_PROTOCOL_DATACALL_3G, /**< Network UMTS */
198 STC_PROTOCOL_DATACALL_HSDPA, /**< Network HSDPA */
199 STC_PROTOCOL_DATACALL_LTE, /**< Network LTE */
200 STC_PROTOCOL_MAX_ELEM
201 } stc_hw_net_protocol_type_e;
204 * @desc Description of the boolean option for enabling/disabling
205 * network interfaces and enabling/disabling some behaviar
209 STC_DB_OPTION_ENABLE,
210 STC_DB_OPTION_DISABLE
211 } stc_option_state_e;
214 * @desc Set of the options.
215 * wifi - enable/disable wifi, STC_DB_OPTION_UNDEF to leave option as is
216 * datacall - enable/disable datacall, STC_DB_OPTION_UNDEF to leave option as is
217 * datausage_timer - set period of the updating data from the kernel,
218 * 0 to leave option as is
219 * datacall_logging - enable/disable datacall_logging,
220 * STC_DB_OPTION_UNDEF to leave option as is
223 stc_option_state_e wifi;
224 stc_option_state_e datacall;
225 time_t datausage_timer;
226 stc_option_state_e datacall_logging;
230 * @brief datausage in bytes
233 long long int in_bytes; /**< incoming bytes */
234 long long int out_bytes; /**< outgoing bytes */
235 } stc_data_counter_s;
238 GMainLoop *main_loop;
241 gboolean ondemand_mode;
243 gpointer statistics_obj;
244 gpointer restriction_obj;
245 gpointer firewall_obj;
247 gpointer manager_obj;
249 GDBusObjectManagerServer *obj_mgr;
250 GDBusConnection *connection;
251 guint gdbus_owner_id;
253 void *system; /* stc_system_s */
254 struct counter_arg *carg;
257 stc_s *stc_get_manager(void);
258 void stc_stop_manager(void);
259 int stc_commit_iptables(char *cmd, int *err_num, char **err_str);
260 void stc_set_keep_alive(gboolean keep_alive);
262 #endif /* __STC_MANAGER__ */