Apply device policy for wifi and wifi profile
[platform/core/connectivity/libnet-client.git] / src / include / network-internal.h
1 /*
2  * Network Client Library
3  *
4  * Copyright 2012 Samsung Electronics Co., Ltd
5  *
6  * Licensed under the Flora License, Version 1.1 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.tizenopensource.org/license
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #ifndef __NETWORK_INTERNAL_H__
21 #define __NETWORK_INTERNAL_H__
22
23 #include <dlog.h>
24 #include <glib.h>
25 #include <stdlib.h>
26 #include <gio/gio.h>
27 #include <glib-object.h>
28
29 #include "network-cm-intf.h"
30 #include "network-wifi-intf.h"
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 /*****************************************************************************
37  *      Macros and Typedefs
38  *****************************************************************************/
39
40 /** Maximum Profile Count */
41 #define NET_PROFILE_LIST_MAX 512
42
43 #define NET_TECH_LENGTH_MAX 64
44
45 #define CONNMAN_MAX_BUFLEN 512
46
47 #define CONNMAN_STATE_STRLEN 16
48
49 #define NET_MEMFREE(x)  {if(x != NULL) free(x); x = NULL;}
50
51 #define CONNMAN_SERVICE                 "net.connman"
52 #define CONNMAN_MANAGER_INTERFACE               CONNMAN_SERVICE ".Manager"
53 #define CONNMAN_TECHNOLOGY_INTERFACE    CONNMAN_SERVICE ".Technology"
54 #define CONNMAN_SERVICE_INTERFACE               CONNMAN_SERVICE ".Service"
55 #define CONNMAN_PROFILE_INTERFACE               CONNMAN_SERVICE ".Profile"
56 #define CONNMAN_COUNTER_INTERFACE               CONNMAN_SERVICE ".Counter"
57 #define CONNMAN_ERROR_INTERFACE                 CONNMAN_SERVICE ".Error"
58 #define CONNMAN_AGENT_INTERFACE                 CONNMAN_SERVICE ".Agent"
59
60 #define CONNMAN_MANAGER_PATH                    "/"
61 #define CONNMAN_PATH                                    "/net/connman"
62 #define CONNMAN_TECHNOLOGY_PATH                 "/net/connman/technology"
63
64 #define NETCONFIG_SERVICE                               "net.netconfig"
65 #define NETCONFIG_NETWORK_INTERFACE             NETCONFIG_SERVICE ".network"
66 #define NETCONFIG_WIFI_INTERFACE                NETCONFIG_SERVICE ".wifi"
67 #define NETCONFIG_STATISTICS_INTERFACE  NETCONFIG_SERVICE ".network_statistics"
68
69 #define NETCONFIG_NETWORK_PATH                  "/net/netconfig/network"
70 #define NETCONFIG_WIFI_PATH                             "/net/netconfig/wifi"
71 #define NETCONFIG_STATISTICS_PATH               "/net/netconfig/network_statistics"
72
73 #if defined TIZEN_TV
74 #define NETCONFIG_TV_PROFILE_INTERFACE  NETCONFIG_SERVICE ".tv_profile"
75 #endif
76
77 #define TELEPHONY_SERVICE                               "com.tcore.ps"
78 #define TELEPHONY_MASTER_INTERFACE              TELEPHONY_SERVICE ".master"
79 #define TELEPHONY_MODEM_INTERFACE               TELEPHONY_SERVICE ".modem"
80 #define TELEPHONY_NETWORK_INTERFACE             TELEPHONY_SERVICE ".network"
81 #define TELEPHONY_PROFILE_INTERFACE             TELEPHONY_SERVICE ".context"
82
83 #define TELEPHONY_MASTER_PATH                   "/"
84 #define TELEPHONY_MODEM_PATH                    "/qmimodem0"
85
86 #define SUPPLICANT_SERVICE                              "fi.w1.wpa_supplicant1"
87 #define SUPPLICANT_INTERFACE                    "fi.w1.wpa_supplicant1"
88 #define SUPPLICANT_IFACE_INTERFACE              SUPPLICANT_INTERFACE ".Interface"
89 #define SUPPLICANT_IFACE_BSS                    SUPPLICANT_INTERFACE ".BSS"
90 #define SUPPLICANT_PATH                                 "/fi/w1/wpa_supplicant1"
91
92 #define DBUS_PROPERTIES_INTERFACE               "org.freedesktop.DBus.Properties"
93
94 #define CONNMAN_MANAGER_SIGNAL_FILTER \
95                                                 "type='signal',interface='net.connman.Manager'"
96 #define CONNMAN_SERVICE_SIGNAL_FILTER \
97                                                 "type='signal',interface='net.connman.Service'"
98 #define NETCONFIG_WIFI_FILTER \
99                                                 "type='signal',interface='net.netconfig.wifi'"
100 #define SUPPLICANT_INTERFACE_SIGNAL_FILTER \
101                         "type='signal',interface='fi.w1.wpa_supplicant1.Interface'"
102
103 #define SIGNAL_PROPERTY_CHANGED         "PropertyChanged"
104 #define SIGNAL_PROPERTIES_CHANGED       "PropertiesChanged"
105 #define SIGNAL_TECHNOLOGY_ADDED         "TechnologyAdded"
106 #define SIGNAL_TECHNOLOGY_REMOVED       "TechnologyRemoved"
107 #define SIGNAL_SERVICES_CHANGED         "ServicesChanged"
108 #define SIGNAL_SCAN_DONE                        "ScanDone"
109
110 #define CONNMAN_CELLULAR_TECHNOLOGY_PREFIX \
111                                                                         CONNMAN_PATH "/technology/cellular"
112 #define CONNMAN_WIFI_TECHNOLOGY_PREFIX \
113                                                                         CONNMAN_PATH "/technology/wifi"
114 #define CONNMAN_ETHERNET_TECHNOLOGY_PREFIX \
115                                                                         CONNMAN_PATH "/technology/ethernet"
116 #define CONNMAN_BLUETOOTH_TECHNOLOGY_PREFIX \
117                                                                         CONNMAN_PATH "/technology/bluetooth"
118
119 #define CONNMAN_CELLULAR_SERVICE_PROFILE_PREFIX \
120                                                                         CONNMAN_PATH "/service/cellular_"
121 #define CONNMAN_WIFI_SERVICE_PROFILE_PREFIX \
122                                                                         CONNMAN_PATH "/service/wifi_"
123 #define CONNMAN_ETHERNET_SERVICE_PROFILE_PREFIX \
124                                                                         CONNMAN_PATH "/service/ethernet_"
125 #define CONNMAN_BLUETOOTH_SERVICE_PROFILE_PREFIX \
126                                                                         CONNMAN_PATH "/service/bluetooth_"
127
128 /** Network related Daemon Signals */
129 #define NETCONFIG_SIGNAL_POWERON_COMPLETED      "PowerOnCompleted"
130 #define NETCONFIG_SIGNAL_POWEROFF_COMPLETED     "PowerOffCompleted"
131 #define NETCONFIG_SIGNAL_SPECIFIC_SCAN_DONE     "SpecificScanCompleted"
132 #define NETCONFIG_SIGNAL_WPS_SCAN_DONE          "WpsScanCompleted"
133 #define NETCONFIG_SIGNAL_ETHERNET_CABLE_STATE   "EthernetCableState"
134 #define NETCONFIG_SIGNAL_TDLS_CONNECTED         "TDLSConnect"
135 #define NETCONFIG_SIGNAL_TDLS_DISCONNECTED      "TDLSDisconnect"
136 #define NETCONFIG_SIGNAL_TDLS_PEER_FOUND        "TDLSPeerFound"
137 #define NETCONFIG_SIGNAL_WIFI_CONNECT_FAIL      "WiFiConnectFail"
138 #define NETCONFIG_SIGNAL_DPM_WIFI                       "DPMWifi"
139 #define NETCONFIG_SIGNAL_DPM_WIFI_PROFILE       "DPMWifiProfile"
140
141 #undef  LOG_TAG
142 #define LOG_TAG         "NET_CLIENT"
143
144 #define NETWORK_LOW                     1
145 #define NETWORK_HIGH            2
146 #define NETWORK_ERROR           3
147
148 #define NETWORK_LOG(log_level, format, args...) \
149         do { \
150                 switch (log_level) { \
151                 case NETWORK_ERROR: \
152                         SLOGE(format, ##args); \
153                         break; \
154                 case NETWORK_HIGH: \
155                         SLOGI(format, ##args); \
156                         break; \
157                 default: \
158                         SLOGD(format, ##args); \
159                 } \
160         } while(0)
161
162 #define SECURE_NETWORK_LOG(log_level, format, args...) \
163         do { \
164                 switch (log_level) { \
165                 case NETWORK_ERROR: \
166                         SECURE_SLOGE(format, ##args); \
167                         break; \
168                 case NETWORK_HIGH: \
169                         SECURE_SLOGI(format, ##args); \
170                         break; \
171                 default: \
172                         SECURE_SLOGD(format, ##args); \
173                 } \
174         } while(0)
175
176 #define NERWORK_LOG_RED "\033[0;31m"
177 #define NERWORK_LOG_GREEN "\033[0;32m"
178 #define NERWORK_LOG_BROWN "\033[0;33m"
179 #define NERWORK_LOG_BLUE "\033[0;34m"
180 #define NERWORK_LOG_END "\033[0;m"
181 #define __NETWORK_FUNC_ENTER__ /*NETWORK_LOG(NETWORK_LOW, NERWORK_LOG_GREEN"Entering (%s)" NERWORK_LOG_END, __func__);*/
182 #define __NETWORK_FUNC_EXIT__  /*NETWORK_LOG(NETWORK_LOW, NERWORK_LOG_RED"Quit (%s)" NERWORK_LOG_END, __func__);*/
183
184
185 /*****************************************************************************
186  *      Global Enums
187  *****************************************************************************/
188
189 typedef enum
190 {
191         NETWORK_REQUEST_TYPE_SCAN = 0x00,
192         NETWORK_REQUEST_TYPE_OPEN_CONNECTION,
193         NETWORK_REQUEST_TYPE_CLOSE_CONNECTION,
194         NETWORK_REQUEST_TYPE_WIFI_POWER,
195         NETWORK_REQUEST_TYPE_ENROLL_WPS,
196         NETWORK_REQUEST_TYPE_SPECIFIC_SCAN,
197         NETWORK_REQUEST_TYPE_WPS_SCAN,
198         NETWORK_REQUEST_TYPE_SET_DEFAULT,
199         NETWORK_REQUEST_TYPE_RESET_DEFAULT,
200         NETWORK_REQUEST_TYPE_MAX
201 } network_async_request_type_t;
202
203 typedef struct
204 {
205         int flag;
206         char ProfileName[NET_PROFILE_NAME_LEN_MAX+1];
207 } network_request_table_t;
208
209 /*****************************************************************************
210  *      Global Structures
211  *****************************************************************************/
212 typedef struct
213 {
214         int num_of_services;
215         char* ProfileName[NET_PROFILE_LIST_MAX];
216 } network_services_list_t;
217
218 typedef struct {
219         net_wifi_state_t wifi_state;
220         net_event_cb_t ClientEventCb;
221         void* user_data;
222         net_event_cb_t ClientEventCb_conn;
223         void* user_data_conn;
224         net_event_cb_t ClientEventCb_wifi;
225         void* user_data_wifi;
226         int ref_count;
227         guint handler_id;
228 } network_info_t;
229
230 typedef struct
231 {
232         char technology[NET_TECH_LENGTH_MAX];
233         char AvailableTechnology;
234         char EnabledTechnology;
235         char ConnectedTechnology;
236         char DefaultTechnology;
237         /* Connman 1.x */
238         unsigned char Connected;
239         unsigned char Powered;
240 } network_tech_state_info_t;
241
242 /**
243  * This is the profile structure exposed from modman.
244  */
245 typedef struct
246 {
247         /** Profile name(path) */
248         char ProfileName[NET_PROFILE_NAME_LEN_MAX+1];
249         /** Service type of this profile context */
250         net_service_type_t ServiceType;
251         /** Pdn type of this profile context */
252         net_pdn_type_e PdnType;
253         /** Roam Pdn type of this profile context */
254         net_pdn_type_e RoamPdnType;
255         /** Network Access Point Name */
256         char Apn[NET_PDP_APN_LEN_MAX+1];
257         /** Authentication info of the PDP profile */
258         net_auth_info_t AuthInfo;
259         /**Proxy address */
260         char ProxyAddr[NET_PROXY_LEN_MAX+1];
261         /** Browser Home URL or MMS server URL */
262         char HomeURL[NET_HOME_URL_LEN_MAX+1];
263         char Keyword[NET_PDP_APN_LEN_MAX+1];
264         char Hidden;
265         char Editable;
266         char DefaultConn;
267 } net_telephony_profile_info_t;
268
269 /*****************************************************************************
270  *      Global Functions
271  *****************************************************************************/
272 net_device_t _net_get_tech_type_from_path(const char *profile_name);
273 int _net_get_tech_state(GVariant *iter, network_tech_state_info_t* tech_state);
274 char* _net_print_error(net_err_t error);
275 int _net_is_valid_service_type(net_service_type_t service_type);
276 int _net_open_connection_with_wifi_info(const net_wifi_connection_info_t* wifi_info);
277 int _net_check_profile_name(const char* ProfileName);
278 int _net_get_profile_list(net_device_t device_type, net_profile_info_t** profile_info, int* profile_count);
279 void _net_client_callback(net_event_info_t *event_data);
280 int _net_get_service_profile(net_service_type_t service_type, net_profile_name_t *profile_name);
281 int _net_get_default_profile_info(net_profile_info_t *profile_info);
282 net_wifi_state_t _net_get_wifi_state(net_err_t *net_error);
283 void _net_clear_request_table(void);
284
285 guint _net_client_callback_add(GSourceFunc func, gpointer user_data);
286 void _net_client_callback_cleanup(void);
287
288 gboolean _net_dbus_is_pending_call_used(void);
289 void _net_dbus_pending_call_ref(void);
290 void _net_dbus_pending_call_unref(void);
291 int _net_dbus_create_gdbus_call(void);
292 int _net_dbus_close_gdbus_call(void);
293 GDBusConnection *_net_dbus_get_gdbus_conn(void);
294 GCancellable *_net_dbus_get_gdbus_cancellable(void);
295
296 #ifdef __cplusplus
297 }
298 #endif
299
300 #endif /* __NETWORK_INTERNAL_H__ */