[ASan] Disable sanitization for _connection_libnet_set_type_changed_cb
[platform/core/api/connection.git] / include / net_connection_private.h
1 /*
2  * Copyright (c) 2011-2013 Samsung Electronics Co., Ltd All Rights Reserved
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 #ifndef __NET_CONNECTION_PRIVATE_H__
18 #define __NET_CONNECTION_PRIVATE_H__
19
20 #include <dlog.h>
21 #include <network-cm-intf.h>
22 #include <network-wifi-intf.h>
23
24 #include "net_connection.h"
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* __cplusplus */
29
30 #undef LOG_TAG
31 #define LOG_TAG "CAPI_NETWORK_CONNECTION"
32
33 #define CONNECTION_INFO         1
34 #define CONNECTION_ERROR        2
35 #define CONNECTION_WARN         3
36
37 #define CONNECTION_MAC_INFO_LENGTH      17
38 #define ETHERNET_MAC_INFO_FILE          "/sys/class/net/eth0/address"
39 #define WIFI_MAC_INFO_FILE                      "/sys/class/net/wlan0/address"
40
41 #define TELEPHONY_FEATURE                       "http://tizen.org/feature/network.telephony"
42 #define WIFI_FEATURE                            "http://tizen.org/feature/network.wifi"
43 #define TETHERING_BLUETOOTH_FEATURE     "http://tizen.org/feature/network.tethering.bluetooth"
44 #define ETHERNET_FEATURE                        "http://tizen.org/feature/network.ethernet"
45
46 #ifdef ADDRESS_SANITIZER
47 #define NO_SANITIZE                                                            \
48   __attribute__((optimize(2))) __attribute__((no_sanitize_address))
49 #else
50 #define NO_SANITIZE
51 #endif
52
53 typedef enum {
54         CONNECTION_CELLULAR_SUBSCRIBER_1 = 0x00,
55         CONNECTION_CELLULAR_SUBSCRIBER_2 = 0x01,
56 } connection_cellular_subscriber_id_e;
57
58 typedef enum {
59         CONNECTION_SUPPORTED_FEATURE_TELEPHONY,
60         CONNECTION_SUPPORTED_FEATURE_WIFI,
61         CONNECTION_SUPPORTED_FEATURE_TETHERING_BLUETOOTH,
62         CONNECTION_SUPPORTED_FEATURE_ETHERNET,
63         CONNECTION_SUPPORTED_FEATURE_MAX,
64 } connection_supported_feature_e;
65
66 #define CHECK_FEATURE_SUPPORTED(...) \
67         do { \
68                 int rv = _connection_check_feature_supported(__VA_ARGS__, NULL); \
69                 if (rv != CONNECTION_ERROR_NONE) \
70                         return rv; \
71         } while (0)
72
73 #define DEPRECATED_LOG(origin, substitution) \
74         do { \
75                 LOGW("DEPRECATION WARNING: %s() is deprecated and will be removed " \
76                                 "from next release. Use %s() instead", origin, substitution); \
77         } while (0)
78
79 #define CONNECTION_LOG(log_level, format, args...) \
80         do { \
81                 switch (log_level) { \
82                 case CONNECTION_ERROR: \
83                         LOGE(format, ## args); \
84                         break; \
85                 case CONNECTION_WARN: \
86                         LOGW(format, ## args); \
87                         break; \
88                 default: \
89                         LOGI(format, ## args); \
90                 } \
91         } while (0)
92
93 #define SECURE_CONNECTION_LOG(log_level, format, args...) \
94         do { \
95                 switch (log_level) { \
96                 case CONNECTION_ERROR: \
97                         SECURE_LOGE(format, ## args); \
98                         break; \
99                 case CONNECTION_WARN: \
100                         SECURE_LOGW(format, ## args); \
101                         break; \
102                 default: \
103                         SECURE_LOGI(format, ## args); \
104                 } \
105         } while (0)
106
107 #define VCONF_TELEPHONY_DEFAULT_DATA_SERVICE \
108                         "db/telephony/dualsim/default_data_service"
109
110 typedef struct _connection_handle_s {
111         connection_type_changed_cb type_changed_callback;
112         connection_address_changed_cb ip_changed_callback;
113         connection_address_changed_cb proxy_changed_callback;
114         connection_ethernet_cable_state_changed_cb ethernet_cable_state_changed_callback;
115         void *type_changed_user_data;
116         void *ip_changed_user_data;
117         void *proxy_changed_user_data;
118         void *ethernet_cable_state_changed_user_data;
119 } connection_handle_s;
120
121 typedef void(*libnet_ethernet_cable_state_changed_cb)
122                 (connection_ethernet_cable_state_e state);
123
124 typedef void(*libnet_type_changed_cb) (int type);
125
126 typedef void(*libnet_ip_changed_cb) (connection_address_family_e addr_family,
127                                                                          char *ip_addr);
128
129 typedef void(*libnet_proxy_changed_cb) (char *proxy_addr);
130
131 bool _connection_is_created(void);
132
133 int _connection_libnet_init(void);
134 bool _connection_libnet_deinit(void);
135 void _connection_set_cs_tid(int tid);
136 void _connection_unset_cs_tid(int tid);
137 int _connection_libnet_get_metered_state(bool* is_metered);
138 int _connection_libnet_get_wifi_state(connection_wifi_state_e *state);
139 int _connection_libnet_get_ethernet_state(connection_ethernet_state_e *state);
140 int _connection_libnet_get_ethernet_cable_state(connection_ethernet_cable_state_e* state);
141 int _connection_libnet_set_ethernet_cable_state_changed_cb(
142                                 libnet_ethernet_cable_state_changed_cb callback);
143 int _connection_libnet_get_bluetooth_state(connection_bt_state_e* state);
144 bool _connection_libnet_check_profile_validity(connection_profile_h profile);
145 bool _connection_libnet_check_profile_cb_validity(connection_profile_h profile);
146 int _connection_libnet_get_profile_iterator(connection_iterator_type_e type,
147                                 connection_profile_iterator_h *profile_iterator);
148 bool _connection_libnet_iterator_has_next(connection_profile_iterator_h profile_iterator);
149 int _connection_libnet_get_iterator_next(connection_profile_iterator_h profile_iter_h, connection_profile_h *profile);
150 int _connection_libnet_destroy_iterator(connection_profile_iterator_h profile_iter_h);
151 int _connection_libnet_get_current_profile(connection_profile_h *profile);
152 int _connection_libnet_reset_profile(connection_reset_option_e type, connection_cellular_subscriber_id_e id, connection_reset_cb callback, void *user_data);
153 int _connection_libnet_open_profile(connection_profile_h profile, connection_opened_cb callback, void *user_data);
154 int _connection_libnet_get_cellular_service_profile(connection_cellular_service_type_e type, connection_profile_h *profile);
155 int _connection_libnet_set_cellular_service_profile_sync(connection_cellular_service_type_e type, connection_profile_h profile);
156 int _connection_libnet_set_cellular_service_profile_async(connection_cellular_service_type_e type,
157                         connection_profile_h profile, connection_set_default_cb callback, void* user_data);
158 int _connection_libnet_close_profile(connection_profile_h profile, connection_closed_cb callback, void *user_data);
159 int _connection_libnet_add_route(const char *interface_name, const char *host_address);
160 int _connection_libnet_remove_route(const char *interface_name, const char *host_address);
161 int _connection_libnet_add_route_ipv6(const char *interface_name, const char *host_address, const char * gateway);
162 int _connection_libnet_remove_route_ipv6(const char *interface_name, const char *host_address, const char * gateway);
163 int _connection_libnet_add_route_entry(connection_address_family_e address_family, const char *interface_name, const char *host_address, const char * gateway);
164 int _connection_libnet_remove_route_entry(connection_address_family_e address_family, const char *interface_name, const char *host_address, const char * gateway);
165 void _connection_libnet_add_to_profile_list(connection_profile_h profile);
166 void _connection_libnet_remove_from_profile_list(connection_profile_h profile);
167 bool _connection_libnet_add_to_profile_cb_list(connection_profile_h profile,
168                 connection_profile_state_changed_cb callback, void *user_data);
169 bool _connection_libnet_remove_from_profile_cb_list(connection_profile_h profile);
170 int _connection_libnet_set_statistics(net_device_t device_type, net_statistics_type_e statistics_type);
171 int _connection_libnet_get_statistics(net_statistics_type_e statistics_type, unsigned long long *size);
172 int _connection_libnet_check_get_privilege();
173 int _connection_libnet_check_profile_privilege();
174
175 int _connection_check_feature_supported(const char *feature_name, ...);
176
177 guint _connection_callback_add(GSourceFunc func, gpointer user_data);
178 void _connection_callback_cleanup(void);
179
180 connection_cellular_service_type_e _profile_convert_to_connection_cellular_service_type(net_service_type_t svc_type);
181 connection_profile_state_e _profile_convert_to_cp_state(net_state_type_t state);
182 net_service_type_t _connection_profile_convert_to_libnet_cellular_service_type(connection_cellular_service_type_e svc_type);
183 net_state_type_t _connection_profile_convert_to_net_state(connection_profile_state_e state);
184
185 int _connection_libnet_set_cellular_subscriber_id(connection_profile_h profile, connection_cellular_subscriber_id_e sim_id);
186
187 int _connection_libnet_start_tcpdump(void);
188 int _connection_libnet_stop_tcpdump(void);
189 int _connection_libnet_get_tcpdump_state(gboolean *tcpdump_state);
190
191 void _connection_libnet_set_type_changed_cb(libnet_type_changed_cb callback) NO_SANITIZE;
192 void _connection_libnet_set_ip_changed_cb(libnet_ip_changed_cb callback);
193 void _connection_libnet_set_proxy_changed_cb(libnet_proxy_changed_cb callback);
194
195 #ifdef __cplusplus
196 }
197 #endif /* __cplusplus */
198
199 #endif