1214501Srpaulo/*
2214501Srpaulo * WPA Supplicant / dbus-based control interface
3214501Srpaulo * Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc.
4214501Srpaulo *
5252190Srpaulo * This software may be distributed under the terms of the BSD license.
6252190Srpaulo * See README for more details.
7214501Srpaulo */
8214501Srpaulo
9214501Srpaulo#ifndef CTRL_IFACE_DBUS_H
10214501Srpaulo#define CTRL_IFACE_DBUS_H
11214501Srpaulo
12214501Srpaulostruct wps_credential;
13214501Srpaulo
14214501Srpaulo#ifdef CONFIG_CTRL_IFACE_DBUS
15214501Srpaulo
16214501Srpaulo#define WPAS_DBUS_OBJECT_PATH_MAX 150
17214501Srpaulo
18214501Srpaulo#define WPAS_DBUS_SERVICE	"fi.epitest.hostap.WPASupplicant"
19214501Srpaulo#define WPAS_DBUS_PATH		"/fi/epitest/hostap/WPASupplicant"
20214501Srpaulo#define WPAS_DBUS_INTERFACE	"fi.epitest.hostap.WPASupplicant"
21214501Srpaulo
22214501Srpaulo#define WPAS_DBUS_PATH_INTERFACES	WPAS_DBUS_PATH "/Interfaces"
23214501Srpaulo#define WPAS_DBUS_IFACE_INTERFACE	WPAS_DBUS_INTERFACE ".Interface"
24214501Srpaulo
25214501Srpaulo#define WPAS_DBUS_NETWORKS_PART "Networks"
26214501Srpaulo#define WPAS_DBUS_IFACE_NETWORK	WPAS_DBUS_INTERFACE ".Network"
27214501Srpaulo
28214501Srpaulo#define WPAS_DBUS_BSSIDS_PART	"BSSIDs"
29214501Srpaulo#define WPAS_DBUS_IFACE_BSSID	WPAS_DBUS_INTERFACE ".BSSID"
30214501Srpaulo
31214501Srpaulo
32214501Srpaulo/* Errors */
33214501Srpaulo#define WPAS_ERROR_INVALID_NETWORK \
34214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".InvalidNetwork"
35214501Srpaulo#define WPAS_ERROR_INVALID_BSSID \
36214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".InvalidBSSID"
37214501Srpaulo
38214501Srpaulo#define WPAS_ERROR_INVALID_OPTS \
39214501Srpaulo	WPAS_DBUS_INTERFACE ".InvalidOptions"
40214501Srpaulo#define WPAS_ERROR_INVALID_IFACE \
41214501Srpaulo	WPAS_DBUS_INTERFACE ".InvalidInterface"
42214501Srpaulo
43214501Srpaulo#define WPAS_ERROR_ADD_ERROR \
44214501Srpaulo	WPAS_DBUS_INTERFACE ".AddError"
45214501Srpaulo#define WPAS_ERROR_EXISTS_ERROR \
46214501Srpaulo	WPAS_DBUS_INTERFACE ".ExistsError"
47214501Srpaulo#define WPAS_ERROR_REMOVE_ERROR \
48214501Srpaulo	WPAS_DBUS_INTERFACE ".RemoveError"
49214501Srpaulo
50214501Srpaulo#define WPAS_ERROR_SCAN_ERROR \
51214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".ScanError"
52214501Srpaulo#define WPAS_ERROR_ADD_NETWORK_ERROR \
53214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".AddNetworkError"
54214501Srpaulo#define WPAS_ERROR_INTERNAL_ERROR \
55214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".InternalError"
56214501Srpaulo#define WPAS_ERROR_REMOVE_NETWORK_ERROR \
57214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".RemoveNetworkError"
58214501Srpaulo
59214501Srpaulo#define WPAS_ERROR_WPS_PBC_ERROR \
60214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".WpsPbcError"
61214501Srpaulo#define WPAS_ERROR_WPS_PIN_ERROR \
62214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".WpsPinError"
63214501Srpaulo#define WPAS_ERROR_WPS_REG_ERROR \
64214501Srpaulo	WPAS_DBUS_IFACE_INTERFACE ".WpsRegError"
65214501Srpaulo
66214501Srpaulo#define WPAS_DBUS_BSSID_FORMAT "%02x%02x%02x%02x%02x%02x"
67214501Srpaulo
68214501Srpaulostruct wpa_global;
69214501Srpaulostruct wpa_supplicant;
70214501Srpaulo
71214501Srpauloint wpa_supplicant_dbus_ctrl_iface_init(struct wpas_dbus_priv *iface);
72214501Srpaulovoid wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s);
73214501Srpaulovoid wpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s);
74214501Srpaulovoid wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
75214501Srpaulo					     enum wpa_states new_state,
76214501Srpaulo					     enum wpa_states old_state);
77214501Srpaulovoid wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s,
78214501Srpaulo					 const struct wps_credential *cred);
79252190Srpaulovoid wpa_supplicant_dbus_notify_certification(struct wpa_supplicant *wpa_s,
80252190Srpaulo					      int depth, const char *subject,
81252190Srpaulo					      const char *cert_hash,
82252190Srpaulo					      const struct wpabuf *cert);
83214501Srpaulo
84214501Srpaulochar * wpas_dbus_decompose_object_path(const char *path, char **network,
85214501Srpaulo                                       char **bssid);
86214501Srpaulo
87214501Srpauloint wpas_dbus_register_iface(struct wpa_supplicant *wpa_s);
88214501Srpauloint wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s);
89214501Srpaulo
90214501Srpaulo
91214501Srpaulo/* Methods internal to the dbus control interface */
92214501Srpaulostruct wpa_supplicant * wpa_supplicant_get_iface_by_dbus_path(
93214501Srpaulo	struct wpa_global *global, const char *path);
94214501Srpaulo
95214501Srpaulo#else /* CONFIG_CTRL_IFACE_DBUS */
96214501Srpaulo
97214501Srpaulostatic inline void
98214501Srpaulowpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s)
99214501Srpaulo{
100214501Srpaulo}
101214501Srpaulo
102214501Srpaulostatic inline void
103214501Srpaulowpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s)
104214501Srpaulo{
105214501Srpaulo}
106214501Srpaulo
107214501Srpaulo#define wpa_supplicant_dbus_notify_state_change(w,n,o) do { } while (0)
108214501Srpaulo
109214501Srpaulostatic inline void
110214501Srpaulowpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s,
111214501Srpaulo				    const struct wps_credential *cred)
112214501Srpaulo{
113214501Srpaulo}
114214501Srpaulo
115252190Srpaulostatic inline void
116252190Srpaulowpa_supplicant_dbus_notify_certification(struct wpa_supplicant *wpa_s,
117252190Srpaulo					      int depth, const char *subject,
118252190Srpaulo					      const char *cert_hash,
119252190Srpaulo					      const struct wpabuf *cert)
120252190Srpaulo{
121252190Srpaulo}
122252190Srpaulo
123214501Srpaulostatic inline int
124214501Srpaulowpas_dbus_register_iface(struct wpa_supplicant *wpa_s)
125214501Srpaulo{
126214501Srpaulo	return 0;
127214501Srpaulo}
128214501Srpaulo
129214501Srpaulostatic inline int
130214501Srpaulowpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s)
131214501Srpaulo{
132214501Srpaulo	return 0;
133214501Srpaulo}
134214501Srpaulo
135214501Srpaulo#endif /* CONFIG_CTRL_IFACE_DBUS */
136214501Srpaulo
137214501Srpaulo#endif /* CTRL_IFACE_DBUS_H */
138