1845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project/*
2845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * WPA Supplicant / dbus-based control interface
3845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc.
4845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project *
5845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * This program is free software; you can redistribute it and/or modify
6845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * it under the terms of the GNU General Public License version 2 as
7845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * published by the Free Software Foundation.
8845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project *
9845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * Alternatively, this software may be distributed under the terms of BSD
10845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * license.
11845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project *
12845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * See README and COPYING for more details.
13845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project */
14845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
15845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifndef CTRL_IFACE_DBUS_H
16845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define CTRL_IFACE_DBUS_H
17845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
18845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifdef CONFIG_CTRL_IFACE_DBUS
19845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
20845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifndef SIGPOLL
21845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#ifdef SIGIO
22845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project/*
23845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * If we do not have SIGPOLL, try to use SIGIO instead. This is needed for
24845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project * FreeBSD.
25845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project */
26845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define SIGPOLL SIGIO
27845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif
28845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif
29845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
30845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#include <dbus/dbus.h>
31845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
32845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_OBJECT_PATH_MAX 150
33845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
34845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_SERVICE	"fi.epitest.hostap.WPASupplicant"
35845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_PATH		"/fi/epitest/hostap/WPASupplicant"
36845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_INTERFACE	"fi.epitest.hostap.WPASupplicant"
37845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
38845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_PATH_INTERFACES	WPAS_DBUS_PATH "/Interfaces"
39845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_IFACE_INTERFACE	WPAS_DBUS_INTERFACE ".Interface"
40845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
41845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_NETWORKS_PART "Networks"
42845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_IFACE_NETWORK	WPAS_DBUS_INTERFACE ".Network"
43845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
44845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_BSSIDS_PART	"BSSIDs"
45845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_IFACE_BSSID	WPAS_DBUS_INTERFACE ".BSSID"
46845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
47845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
48845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project/* Errors */
49845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_INVALID_NETWORK \
50845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_IFACE_INTERFACE ".InvalidNetwork"
51845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_INVALID_BSSID \
52845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_IFACE_INTERFACE ".InvalidBSSID"
53845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
54845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_INVALID_OPTS \
55845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_INTERFACE ".InvalidOptions"
56845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_INVALID_IFACE \
57845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_INTERFACE ".InvalidInterface"
58845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
59845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_ADD_ERROR \
60845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_INTERFACE ".AddError"
61845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_EXISTS_ERROR \
62845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_INTERFACE ".ExistsError"
63845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_REMOVE_ERROR \
64845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_INTERFACE ".RemoveError"
65845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
66845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_SCAN_ERROR \
67845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_IFACE_INTERFACE ".ScanError"
68845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_ADD_NETWORK_ERROR \
69845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_IFACE_INTERFACE ".AddNetworkError"
70845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_INTERNAL_ERROR \
71845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_IFACE_INTERFACE ".InternalError"
72845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_ERROR_REMOVE_NETWORK_ERROR \
73845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	WPAS_DBUS_IFACE_INTERFACE ".RemoveNetworkError"
74845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
75845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#define WPAS_DBUS_BSSID_FORMAT "%02x%02x%02x%02x%02x%02x"
76845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
77845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct wpa_global;
78845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct wpa_supplicant;
79845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
80845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct ctrl_iface_dbus_priv *
81845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global);
82845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectvoid wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface);
83845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectvoid wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s);
84845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectvoid wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
85845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project					     wpa_states new_state,
86845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project					     wpa_states old_state);
87845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
88845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectchar * wpas_dbus_decompose_object_path(const char *path, char **network,
89845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project                                       char **bssid);
90845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
91845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectint wpas_dbus_register_iface(struct wpa_supplicant *wpa_s);
92845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectint wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s);
93845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
94845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
95845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project/* Methods internal to the dbus control interface */
96845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectu32 wpa_supplicant_dbus_next_objid(struct ctrl_iface_dbus_priv *iface);
97845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
98845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectint wpa_supplicant_set_dbus_path(struct wpa_supplicant *wpa_s,
99845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project				 const char *path);
100845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectconst char *wpa_supplicant_get_dbus_path(struct wpa_supplicant *wpa_s);
101845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstruct wpa_supplicant * wpa_supplicant_get_iface_by_dbus_path(
102845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	struct wpa_global *global, const char *path);
103845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
104845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source ProjectDBusMessage * wpas_dbus_new_invalid_iface_error(DBusMessage *message);
105845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source ProjectDBusMessage * wpas_dbus_new_invalid_network_error(DBusMessage *message);
106845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
107845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#else /* CONFIG_CTRL_IFACE_DBUS */
108845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
109845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstatic inline struct ctrl_iface_dbus_priv *
110845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global)
111845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project{
112845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	return (struct ctrl_iface_dbus_priv *) 1;
113845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project}
114845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
115845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstatic inline void
116845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface)
117845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project{
118845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project}
119845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
120845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstatic inline void
121845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s)
122845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project{
123845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project}
124845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
125845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstatic inline void
126845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
127845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project					wpa_states new_state,
128845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project					wpa_states old_state)
129845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project{
130845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project}
131845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
132845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstatic inline int
133845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpas_dbus_register_iface(struct wpa_supplicant *wpa_s)
134845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project{
135845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	return 0;
136845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project}
137845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
138845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectstatic inline int
139845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Projectwpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s)
140845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project{
141845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project	return 0;
142845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project}
143845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
144845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif /* CONFIG_CTRL_IFACE_DBUS */
145845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project
146845e0124d42b67ef926fbae32a7f61d2e5109ebdThe Android Open Source Project#endif /* CTRL_IFACE_DBUS_H */
147