summaryrefslogtreecommitdiff
path: root/include/service.h
blob: ff296138fb99944a5d437e203e7c193eddd18d48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/*
 *
 *  Connection Manager
 *
 *  Copyright (C) 2007-2014  Intel Corporation. All rights reserved.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 */

#ifndef __CONNMAN_SERVICE_H
#define __CONNMAN_SERVICE_H

#include <stdbool.h>

#if defined TIZEN_EXT
#include <glib.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif

/**
 * SECTION:service
 * @title: Service premitives
 * @short_description: Functions for handling services
 */

enum connman_service_type {
	CONNMAN_SERVICE_TYPE_UNKNOWN   = 0,
	CONNMAN_SERVICE_TYPE_SYSTEM    = 1,
	CONNMAN_SERVICE_TYPE_ETHERNET  = 2,
	CONNMAN_SERVICE_TYPE_WIFI      = 3,
	CONNMAN_SERVICE_TYPE_BLUETOOTH = 4,
	CONNMAN_SERVICE_TYPE_CELLULAR  = 5,
	CONNMAN_SERVICE_TYPE_GPS       = 6,
	CONNMAN_SERVICE_TYPE_VPN       = 7,
	CONNMAN_SERVICE_TYPE_GADGET    = 8,
	CONNMAN_SERVICE_TYPE_P2P       = 9,
};
#define	MAX_CONNMAN_SERVICE_TYPES        10


enum connman_service_security {
	CONNMAN_SERVICE_SECURITY_UNKNOWN = 0,
	CONNMAN_SERVICE_SECURITY_NONE    = 1,
	CONNMAN_SERVICE_SECURITY_WEP     = 2,
	CONNMAN_SERVICE_SECURITY_PSK     = 3,
	CONNMAN_SERVICE_SECURITY_8021X   = 4,
	CONNMAN_SERVICE_SECURITY_WPA     = 8,
	CONNMAN_SERVICE_SECURITY_RSN     = 9,
};

enum connman_service_state {
	CONNMAN_SERVICE_STATE_UNKNOWN       = 0,
	CONNMAN_SERVICE_STATE_IDLE          = 1,
	CONNMAN_SERVICE_STATE_ASSOCIATION   = 2,
	CONNMAN_SERVICE_STATE_CONFIGURATION = 3,
	CONNMAN_SERVICE_STATE_READY         = 4,
	CONNMAN_SERVICE_STATE_ONLINE        = 5,
	CONNMAN_SERVICE_STATE_DISCONNECT    = 6,
	CONNMAN_SERVICE_STATE_FAILURE       = 7,
};

enum connman_service_error {
	CONNMAN_SERVICE_ERROR_UNKNOWN        = 0,
	CONNMAN_SERVICE_ERROR_OUT_OF_RANGE   = 1,
	CONNMAN_SERVICE_ERROR_PIN_MISSING    = 2,
	CONNMAN_SERVICE_ERROR_DHCP_FAILED    = 3,
	CONNMAN_SERVICE_ERROR_CONNECT_FAILED = 4,
	CONNMAN_SERVICE_ERROR_LOGIN_FAILED  = 5,
	CONNMAN_SERVICE_ERROR_AUTH_FAILED    = 6,
	CONNMAN_SERVICE_ERROR_INVALID_KEY    = 7,
	CONNMAN_SERVICE_ERROR_BLOCKED        = 8,
};

enum connman_service_proxy_method {
	CONNMAN_SERVICE_PROXY_METHOD_UNKNOWN     = 0,
	CONNMAN_SERVICE_PROXY_METHOD_DIRECT      = 1,
	CONNMAN_SERVICE_PROXY_METHOD_MANUAL      = 2,
	CONNMAN_SERVICE_PROXY_METHOD_AUTO        = 3,
};

enum connman_service_connect_reason {
	CONNMAN_SERVICE_CONNECT_REASON_NONE	= 0,
	CONNMAN_SERVICE_CONNECT_REASON_AUTO	= 1,
	CONNMAN_SERVICE_CONNECT_REASON_USER	= 2,
	CONNMAN_SERVICE_CONNECT_REASON_SESSION	= 3,
};

struct connman_service;
struct connman_network;

struct connman_service *connman_service_create(void);

#define connman_service_ref(service) \
	connman_service_ref_debug(service, __FILE__, __LINE__, __func__)

#define connman_service_unref(service) \
	connman_service_unref_debug(service, __FILE__, __LINE__, __func__)

struct connman_service *
connman_service_ref_debug(struct connman_service *service,
			const char *file, int line, const char *caller);
void connman_service_unref_debug(struct connman_service *service,
			const char *file, int line, const char *caller);

enum connman_service_type connman_service_get_type(struct connman_service *service);
char *connman_service_get_interface(struct connman_service *service);

const char *connman_service_get_domainname(struct connman_service *service);
char **connman_service_get_nameservers(struct connman_service *service);
char **connman_service_get_timeservers_config(struct connman_service *service);
char **connman_service_get_timeservers(struct connman_service *service);
void connman_service_set_proxy_method(struct connman_service *service, enum connman_service_proxy_method method);
enum connman_service_proxy_method connman_service_get_proxy_method(struct connman_service *service);
char **connman_service_get_proxy_servers(struct connman_service *service);
char **connman_service_get_proxy_excludes(struct connman_service *service);
const char *connman_service_get_proxy_url(struct connman_service *service);
const char *connman_service_get_proxy_autoconfig(struct connman_service *service);
bool connman_service_get_favorite(struct connman_service *service);
bool connman_service_get_autoconnect(struct connman_service *service);

struct connman_service *connman_service_lookup_from_network(struct connman_network *network);

void connman_service_create_ip4config(struct connman_service *service,
								int index);
void connman_service_create_ip6config(struct connman_service *service,
								int index);

#if defined TIZEN_EXT
/*
 * Description: TIZEN implements system global connection management.
 *              It's only for PDP (cellular) bearer. Wi-Fi is managed by ConnMan automatically.
 *              Reference count can help to manage open/close connection requests by each application.
 */

/*
 * Increase reference count of user-initiated packet data network connection
 */
void connman_service_user_pdn_connection_ref(struct connman_service *service);

/*
 * Decrease reference count of user initiated packet data network connection
 * and return TRUE if counter is zero.
 */
gboolean connman_service_user_pdn_connection_unref_and_test(
					struct connman_service *service);

/*
 * Test reference count of user initiated packet data network connection
 * and return TRUE if counter is zero. No impact to reference count
 */
gboolean connman_service_is_no_ref_user_pdn_connection(
					struct connman_service *service);
#endif

#if defined TIZEN_EXT
struct connman_service *connman_service_get_default_connection(void);

/*
 * Description: telephony plug-in requires manual PROXY setting
 */
int connman_service_set_proxy(struct connman_service *service,
					const char *proxy, gboolean active);
#endif

#ifdef __cplusplus
}
#endif

#endif /* __CONNMAN_SERVICE_H */