summaryrefslogtreecommitdiff
path: root/include/service.h
blob: 958e7fd1a0146e1d65d6f0891b9e893112fc0dee (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
/*
 *
 *  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>

#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);
struct connman_service *connman_service_lookup_from_identifier(const char* identifier);

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

#ifdef __cplusplus
}
#endif

#endif /* __CONNMAN_SERVICE_H */