e_connman_private.h
Go to the documentation of this file.
1#ifdef HAVE_CONFIG_H
2#include "config.h"
3#endif
4
5#ifdef HAVE_ALLOCA_H
6# include <alloca.h>
7#elif defined __GNUC__
8# define alloca __builtin_alloca
9#elif defined _AIX
10# define alloca __alloca
11#elif defined _MSC_VER
12# include <malloc.h>
13# define alloca _alloca
14#else
15# include <stddef.h>
16# ifdef __cplusplus
17extern "C"
18# endif
19void * alloca (size_t);
20#endif
21
22#include <stdio.h>
23
24#include <Eina.h>
25#include <eina_safety_checks.h>
26
27#define E_CONNMAN_I_KNOW_THIS_API_IS_SUBJECT_TO_CHANGE 1
28#include "E_Connman.h"
29
32{
33 int type;
34 Eina_Array *array;
35};
36
37static const char manager_path[] = "/";
38
39extern const char *e_connman_iface_manager;
40extern const char *e_connman_iface_profile;
41extern const char *e_connman_iface_service;
42extern const char *e_connman_iface_connection;
43extern const char *e_connman_iface_technology;
44
45extern const char *e_connman_prop_ipv4;
46extern const char *e_connman_prop_ipv4_configuration;
47extern const char *e_connman_prop_ethernet;
48extern const char *e_connman_prop_interface;
49extern const char *e_connman_prop_speed;
50extern const char *e_connman_prop_duplex;
51extern const char *e_connman_prop_method;
52extern const char *e_connman_prop_address;
53extern const char *e_connman_prop_gateway;
54extern const char *e_connman_prop_netmask;
55extern const char *e_connman_prop_mtu;
56extern const char *e_connman_prop_name;
57extern const char *e_connman_prop_offline_mode;
58extern const char *e_connman_prop_profiles;
59extern const char *e_connman_prop_profile_active;
60extern const char *e_connman_prop_services;
61extern const char *e_connman_prop_technologies;
62extern const char *e_connman_prop_state;
63extern const char *e_connman_prop_strength;
64extern const char *e_connman_prop_type;
65extern const char *e_connman_prop_error;
66extern const char *e_connman_prop_security;
67extern const char *e_connman_prop_passphrase;
68extern const char *e_connman_prop_passphrase_required;
69extern const char *e_connman_prop_favorite;
70extern const char *e_connman_prop_immutable;
71extern const char *e_connman_prop_auto_connect;
72extern const char *e_connman_prop_roaming;
73extern const char *e_connman_prop_technology_default;
77extern const char *e_connman_prop_login_required;
78extern const char *e_connman_prop_nameservers;
80extern const char *e_connman_prop_domains;
82extern const char *e_connman_prop_proxy;
83extern const char *e_connman_prop_proxy_configuration;
84extern const char *e_connman_prop_url;
85extern const char *e_connman_prop_servers;
86extern const char *e_connman_prop_excludes;
87
89
90#ifndef EINA_LOG_DEFAULT_COLOR
91#define EINA_LOG_DEFAULT_COLOR EINA_COLOR_CYAN
92#endif
93
94#undef DBG
95#undef INF
96#undef WRN
97#undef ERR
98
99#define DBG(...) EINA_LOG_DOM_DBG(_e_dbus_connman_log_dom, __VA_ARGS__)
100#define INF(...) EINA_LOG_DOM_INFO(_e_dbus_connman_log_dom, __VA_ARGS__)
101#define WRN(...) EINA_LOG_DOM_WARN(_e_dbus_connman_log_dom, __VA_ARGS__)
102#define ERR(...) EINA_LOG_DOM_ERR(_e_dbus_connman_log_dom, __VA_ARGS__)
103
104static inline Eina_Bool
105_dbus_callback_check_and_init(DBusMessage *msg, DBusMessageIter *itr, DBusError *err)
106{
107 if (!msg)
108 {
109 if (err && (err->name[0] == 'C'))
110 return EINA_FALSE;
111 if (err)
112 {
113 /* dont keep reporting the same err again and again */
114 static char perr[256] = {0};
115
116 if (!(!strncmp(perr, err->name, sizeof(perr) - 1)))
117 {
118 ERR("an error was reported by server: "
119 "name=\"%s\", message=\"%s\"",
120 err->name, err->message);
121 strncpy(perr, err->name, sizeof(perr) - 1);
122 perr[sizeof(perr) - 1] = 0;
123 }
124 }
125 else
126 ERR("callback without message arguments!");
127
128 return EINA_FALSE;
129 }
130
131 if (!dbus_message_iter_init(msg, itr))
132 {
133 ERR("could not init iterator.");
134 return EINA_FALSE;
135 }
136
137 return EINA_TRUE;
138}
139
140static inline Eina_Bool
141__dbus_iter_type_check(int type, int expected, const char *expected_name)
142{
143 if (type == expected)
144 return EINA_TRUE;
145
146 ERR("expected type %s (%c) but got %c instead!",
147 expected_name, expected, type);
148
149 return EINA_FALSE;
150}
151
152#define _dbus_iter_type_check(t, e) __dbus_iter_type_check(t, e, # e)
153
155
156const char * e_connman_system_bus_name_get(void);
157
159
160void e_connman_elements_init(void);
162
163E_Connman_Element * e_connman_element_register(const char *path, const char *interface);
165
166Eina_Bool e_connman_element_objects_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count, E_Connman_Element ***elements);
167Eina_Bool e_connman_element_strings_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count, const char ***strings);
168unsigned char * e_connman_element_bytes_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count);
169
170Eina_Bool e_connman_element_message_send(E_Connman_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, DBusMessage *msg, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
171
172Eina_Bool e_connman_element_call_full(E_Connman_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
173Eina_Bool e_connman_element_call_with_path(E_Connman_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
174Eina_Bool e_connman_element_call_with_string(E_Connman_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data);
const char * e_connman_prop_technologies
Definition: e_connman.c:42
const char * e_connman_iface_connection
Definition: e_connman.c:23
Eina_Bool e_connman_element_strings_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count, const char ***strings)
Definition: e_connman_element.c:831
const char * e_connman_prop_gateway
Definition: e_connman.c:34
#define ERR(...)
Definition: e_connman_private.h:102
const char * e_connman_prop_proxy_configuration
Definition: e_connman.c:64
Eina_Bool e_connman_element_call_with_path(E_Connman_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_connman_element.c:1687
const char * e_connman_prop_state
Definition: e_connman.c:43
const char * e_connman_prop_domains_configuration
Definition: e_connman.c:62
void e_connman_elements_init(void)
Definition: e_connman_element.c:2467
void * alloca(size_t)
const char * e_connman_prop_nameservers_configuration
Definition: e_connman.c:60
const char * e_connman_prop_profile_active
Definition: e_connman.c:40
unsigned char * e_connman_element_bytes_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count)
Definition: e_connman_element.c:724
E_Connman_Element * e_connman_element_register(const char *path, const char *interface)
Definition: e_connman_element.c:2371
const char * e_connman_prop_technologies_available
Definition: e_connman.c:56
const char * e_connman_prop_duplex
Definition: e_connman.c:31
const char * e_connman_prop_method
Definition: e_connman.c:32
const char * e_connman_prop_speed
Definition: e_connman.c:30
void e_connman_elements_shutdown(void)
Definition: e_connman_element.c:2476
const char * e_connman_prop_error
Definition: e_connman.c:46
const char * e_connman_prop_nameservers
Definition: e_connman.c:59
const char * e_connman_prop_ipv4
Definition: e_connman.c:26
const char * e_connman_iface_manager
Definition: e_connman.c:20
const char * e_connman_prop_technologies_enabled
Definition: e_connman.c:57
const char * e_connman_prop_technology_default
Definition: e_connman.c:55
void e_connman_element_unregister(E_Connman_Element *element)
Definition: e_connman_element.c:2434
const char * e_connman_prop_excludes
Definition: e_connman.c:67
int _e_dbus_connman_log_dom
Definition: e_connman.c:69
const char * e_connman_prop_login_required
Definition: e_connman.c:50
const char * e_connman_iface_technology
Definition: e_connman.c:24
const char * e_connman_prop_passphrase
Definition: e_connman.c:48
const char * e_connman_prop_proxy
Definition: e_connman.c:63
const char * e_connman_prop_name
Definition: e_connman.c:37
const char * e_connman_prop_services
Definition: e_connman.c:41
const char * e_connman_iface_service
Definition: e_connman.c:22
void e_connman_manager_clear_elements(void)
Definition: e_connman_element.c:2454
const char * e_connman_prop_domains
Definition: e_connman.c:61
const char * e_connman_prop_interface
Definition: e_connman.c:29
const char * e_connman_prop_immutable
Definition: e_connman.c:52
const char * e_connman_prop_type
Definition: e_connman.c:45
const char * e_connman_iface_profile
Definition: e_connman.c:21
Eina_Bool e_connman_element_objects_array_get_stringshared(const E_Connman_Element *element, const char *property, unsigned int *count, E_Connman_Element ***elements)
Definition: e_connman_element.c:765
Eina_Bool e_connman_element_message_send(E_Connman_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, DBusMessage *msg, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_connman_element.c:1122
Eina_Bool e_connman_element_call_with_string(E_Connman_Element *element, const char *method_name, const char *string, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_connman_element.c:1712
const char * e_connman_prop_technologies_connected
Definition: e_connman.c:58
const char * e_connman_prop_passphrase_required
Definition: e_connman.c:49
const char * e_connman_prop_url
Definition: e_connman.c:65
const char * e_connman_prop_auto_connect
Definition: e_connman.c:53
const char * e_connman_prop_netmask
Definition: e_connman.c:35
const char * e_connman_prop_offline_mode
Definition: e_connman.c:38
E_DBus_Connection * e_connman_conn
Definition: e_connman.c:12
const char * e_connman_prop_ethernet
Definition: e_connman.c:28
const char * e_connman_prop_favorite
Definition: e_connman.c:51
const char * e_connman_prop_roaming
Definition: e_connman.c:54
const char * e_connman_prop_profiles
Definition: e_connman.c:39
const char * e_connman_prop_ipv4_configuration
Definition: e_connman.c:27
const char * e_connman_prop_strength
Definition: e_connman.c:44
const char * e_connman_prop_mtu
Definition: e_connman.c:36
const char * e_connman_prop_servers
Definition: e_connman.c:66
Eina_Bool e_connman_element_call_full(E_Connman_Element *element, const char *method_name, E_DBus_Method_Return_Cb cb, Eina_Inlist **pending, E_DBus_Method_Return_Cb user_cb, const void *user_data)
Definition: e_connman_element.c:1177
const char * e_connman_prop_security
Definition: e_connman.c:47
const char * e_connman_system_bus_name_get(void)
Definition: e_connman.c:72
const char * e_connman_prop_address
Definition: e_connman.c:33
void(* E_DBus_Method_Return_Cb)(void *data, DBusMessage *msg, DBusError *error)
Definition: E_DBus.h:124
Definition: e_dbus_private.h:19
Definition: e_connman_private.h:32
int type
Definition: e_connman_private.h:33
Eina_Array * array
Definition: e_connman_private.h:34
Definition: E_Connman.h:42