• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #ifdef CONFIG_CTRL_IFACE_DBUS
19 
20 #ifndef SIGPOLL
21 #ifdef SIGIO
22 /*
23  * If we do not have SIGPOLL, try to use SIGIO instead. This is needed for
24  * FreeBSD.
25  */
26 #define SIGPOLL SIGIO
27 #endif
28 #endif
29 
30 #include <dbus/dbus.h>
31 
32 #define WPAS_DBUS_OBJECT_PATH_MAX 150
33 
34 #define WPAS_DBUS_SERVICE	"fi.epitest.hostap.WPASupplicant"
35 #define WPAS_DBUS_PATH		"/fi/epitest/hostap/WPASupplicant"
36 #define WPAS_DBUS_INTERFACE	"fi.epitest.hostap.WPASupplicant"
37 
38 #define WPAS_DBUS_PATH_INTERFACES	WPAS_DBUS_PATH "/Interfaces"
39 #define WPAS_DBUS_IFACE_INTERFACE	WPAS_DBUS_INTERFACE ".Interface"
40 
41 #define WPAS_DBUS_NETWORKS_PART "Networks"
42 #define WPAS_DBUS_IFACE_NETWORK	WPAS_DBUS_INTERFACE ".Network"
43 
44 #define WPAS_DBUS_BSSIDS_PART	"BSSIDs"
45 #define WPAS_DBUS_IFACE_BSSID	WPAS_DBUS_INTERFACE ".BSSID"
46 
47 
48 /* Errors */
49 #define WPAS_ERROR_INVALID_NETWORK \
50 	WPAS_DBUS_IFACE_INTERFACE ".InvalidNetwork"
51 #define WPAS_ERROR_INVALID_BSSID \
52 	WPAS_DBUS_IFACE_INTERFACE ".InvalidBSSID"
53 
54 #define WPAS_ERROR_INVALID_OPTS \
55 	WPAS_DBUS_INTERFACE ".InvalidOptions"
56 #define WPAS_ERROR_INVALID_IFACE \
57 	WPAS_DBUS_INTERFACE ".InvalidInterface"
58 
59 #define WPAS_ERROR_ADD_ERROR \
60 	WPAS_DBUS_INTERFACE ".AddError"
61 #define WPAS_ERROR_EXISTS_ERROR \
62 	WPAS_DBUS_INTERFACE ".ExistsError"
63 #define WPAS_ERROR_REMOVE_ERROR \
64 	WPAS_DBUS_INTERFACE ".RemoveError"
65 
66 #define WPAS_ERROR_SCAN_ERROR \
67 	WPAS_DBUS_IFACE_INTERFACE ".ScanError"
68 #define WPAS_ERROR_ADD_NETWORK_ERROR \
69 	WPAS_DBUS_IFACE_INTERFACE ".AddNetworkError"
70 #define WPAS_ERROR_INTERNAL_ERROR \
71 	WPAS_DBUS_IFACE_INTERFACE ".InternalError"
72 #define WPAS_ERROR_REMOVE_NETWORK_ERROR \
73 	WPAS_DBUS_IFACE_INTERFACE ".RemoveNetworkError"
74 
75 #define WPAS_DBUS_BSSID_FORMAT "%02x%02x%02x%02x%02x%02x"
76 
77 struct wpa_global;
78 struct wpa_supplicant;
79 
80 struct ctrl_iface_dbus_priv *
81 wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global);
82 void wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface);
83 void wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s);
84 void wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
85 					     wpa_states new_state,
86 					     wpa_states old_state);
87 
88 char * wpas_dbus_decompose_object_path(const char *path, char **network,
89                                        char **bssid);
90 
91 int wpas_dbus_register_iface(struct wpa_supplicant *wpa_s);
92 int wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s);
93 
94 
95 /* Methods internal to the dbus control interface */
96 u32 wpa_supplicant_dbus_next_objid(struct ctrl_iface_dbus_priv *iface);
97 
98 int wpa_supplicant_set_dbus_path(struct wpa_supplicant *wpa_s,
99 				 const char *path);
100 const char *wpa_supplicant_get_dbus_path(struct wpa_supplicant *wpa_s);
101 struct wpa_supplicant * wpa_supplicant_get_iface_by_dbus_path(
102 	struct wpa_global *global, const char *path);
103 
104 DBusMessage * wpas_dbus_new_invalid_iface_error(DBusMessage *message);
105 DBusMessage * wpas_dbus_new_invalid_network_error(DBusMessage *message);
106 
107 #else /* CONFIG_CTRL_IFACE_DBUS */
108 
109 static inline struct ctrl_iface_dbus_priv *
wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global * global)110 wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global)
111 {
112 	return (struct ctrl_iface_dbus_priv *) 1;
113 }
114 
115 static inline void
wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv * iface)116 wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface)
117 {
118 }
119 
120 static inline void
wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant * wpa_s)121 wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s)
122 {
123 }
124 
125 static inline void
wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant * wpa_s,wpa_states new_state,wpa_states old_state)126 wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
127 					wpa_states new_state,
128 					wpa_states old_state)
129 {
130 }
131 
132 static inline int
wpas_dbus_register_iface(struct wpa_supplicant * wpa_s)133 wpas_dbus_register_iface(struct wpa_supplicant *wpa_s)
134 {
135 	return 0;
136 }
137 
138 static inline int
wpas_dbus_unregister_iface(struct wpa_supplicant * wpa_s)139 wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s)
140 {
141 	return 0;
142 }
143 
144 #endif /* CONFIG_CTRL_IFACE_DBUS */
145 
146 #endif /* CTRL_IFACE_DBUS_H */
147