dbus: Share common initialization code for both old and new interface
[libeap.git] / wpa_supplicant / dbus / dbus.h
1 /*
2  * WPA Supplicant / dbus-based control interface
3  * Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation.
8  *
9  * Alternatively, this software may be distributed under the terms of BSD
10  * license.
11  *
12  * See README and COPYING for more details.
13  */
14
15 #ifndef CTRL_IFACE_DBUS_H
16 #define CTRL_IFACE_DBUS_H
17
18 struct wps_credential;
19
20 #ifdef CONFIG_CTRL_IFACE_DBUS
21
22 #ifndef SIGPOLL
23 #ifdef SIGIO
24 /*
25  * If we do not have SIGPOLL, try to use SIGIO instead. This is needed for
26  * FreeBSD.
27  */
28 #define SIGPOLL SIGIO
29 #endif
30 #endif
31
32 #include <dbus/dbus.h>
33
34 #define WPAS_DBUS_OBJECT_PATH_MAX 150
35
36 #define WPAS_DBUS_SERVICE       "fi.epitest.hostap.WPASupplicant"
37 #define WPAS_DBUS_PATH          "/fi/epitest/hostap/WPASupplicant"
38 #define WPAS_DBUS_INTERFACE     "fi.epitest.hostap.WPASupplicant"
39
40 #define WPAS_DBUS_PATH_INTERFACES       WPAS_DBUS_PATH "/Interfaces"
41 #define WPAS_DBUS_IFACE_INTERFACE       WPAS_DBUS_INTERFACE ".Interface"
42
43 #define WPAS_DBUS_NETWORKS_PART "Networks"
44 #define WPAS_DBUS_IFACE_NETWORK WPAS_DBUS_INTERFACE ".Network"
45
46 #define WPAS_DBUS_BSSIDS_PART   "BSSIDs"
47 #define WPAS_DBUS_IFACE_BSSID   WPAS_DBUS_INTERFACE ".BSSID"
48
49
50 /* Errors */
51 #define WPAS_ERROR_INVALID_NETWORK \
52         WPAS_DBUS_IFACE_INTERFACE ".InvalidNetwork"
53 #define WPAS_ERROR_INVALID_BSSID \
54         WPAS_DBUS_IFACE_INTERFACE ".InvalidBSSID"
55
56 #define WPAS_ERROR_INVALID_OPTS \
57         WPAS_DBUS_INTERFACE ".InvalidOptions"
58 #define WPAS_ERROR_INVALID_IFACE \
59         WPAS_DBUS_INTERFACE ".InvalidInterface"
60
61 #define WPAS_ERROR_ADD_ERROR \
62         WPAS_DBUS_INTERFACE ".AddError"
63 #define WPAS_ERROR_EXISTS_ERROR \
64         WPAS_DBUS_INTERFACE ".ExistsError"
65 #define WPAS_ERROR_REMOVE_ERROR \
66         WPAS_DBUS_INTERFACE ".RemoveError"
67
68 #define WPAS_ERROR_SCAN_ERROR \
69         WPAS_DBUS_IFACE_INTERFACE ".ScanError"
70 #define WPAS_ERROR_ADD_NETWORK_ERROR \
71         WPAS_DBUS_IFACE_INTERFACE ".AddNetworkError"
72 #define WPAS_ERROR_INTERNAL_ERROR \
73         WPAS_DBUS_IFACE_INTERFACE ".InternalError"
74 #define WPAS_ERROR_REMOVE_NETWORK_ERROR \
75         WPAS_DBUS_IFACE_INTERFACE ".RemoveNetworkError"
76
77 #define WPAS_ERROR_WPS_PBC_ERROR \
78         WPAS_DBUS_IFACE_INTERFACE ".WpsPbcError"
79 #define WPAS_ERROR_WPS_PIN_ERROR \
80         WPAS_DBUS_IFACE_INTERFACE ".WpsPinError"
81 #define WPAS_ERROR_WPS_REG_ERROR \
82         WPAS_DBUS_IFACE_INTERFACE ".WpsRegError"
83
84 #define WPAS_DBUS_BSSID_FORMAT "%02x%02x%02x%02x%02x%02x"
85
86 struct wpa_global;
87 struct wpa_supplicant;
88
89 int wpa_supplicant_dbus_ctrl_iface_init(struct wpas_dbus_priv *iface);
90 void wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s);
91 void wpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s);
92 void wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
93                                              enum wpa_states new_state,
94                                              enum wpa_states old_state);
95 void wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s,
96                                          const struct wps_credential *cred);
97
98 char * wpas_dbus_decompose_object_path(const char *path, char **network,
99                                        char **bssid);
100
101 int wpas_dbus_register_iface(struct wpa_supplicant *wpa_s);
102 int wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s);
103
104
105 /* Methods internal to the dbus control interface */
106 int wpa_supplicant_set_dbus_path(struct wpa_supplicant *wpa_s,
107                                  const char *path);
108 const char *wpa_supplicant_get_dbus_path(struct wpa_supplicant *wpa_s);
109 struct wpa_supplicant * wpa_supplicant_get_iface_by_dbus_path(
110         struct wpa_global *global, const char *path);
111
112 DBusMessage * wpas_dbus_new_invalid_iface_error(DBusMessage *message);
113 DBusMessage * wpas_dbus_new_invalid_network_error(DBusMessage *message);
114
115 #else /* CONFIG_CTRL_IFACE_DBUS */
116
117 static inline struct ctrl_iface_dbus_priv *
118 wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global)
119 {
120         return (struct ctrl_iface_dbus_priv *) 1;
121 }
122
123 static inline void
124 wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface)
125 {
126 }
127
128 static inline void
129 wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s)
130 {
131 }
132
133 static inline void
134 wpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s)
135 {
136 }
137
138 #define wpa_supplicant_dbus_notify_state_change(w,n,o) do { } while (0)
139
140 static inline void
141 wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s,
142                                     const struct wps_credential *cred)
143 {
144 }
145
146 static inline int
147 wpas_dbus_register_iface(struct wpa_supplicant *wpa_s)
148 {
149         return 0;
150 }
151
152 static inline int
153 wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s)
154 {
155         return 0;
156 }
157
158 #endif /* CONFIG_CTRL_IFACE_DBUS */
159
160 #endif /* CTRL_IFACE_DBUS_H */