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 18struct 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_DBUS_BSSID_FORMAT "%02x%02x%02x%02x%02x%02x" 78 79struct wpa_global; 80struct wpa_supplicant; 81 82struct ctrl_iface_dbus_priv * 83wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global); 84void wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface); 85void wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s); 86void wpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s); 87void wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s, 88 wpa_states new_state, 89 wpa_states old_state); 90void wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s, 91 const struct wps_credential *cred); 92 93char * wpas_dbus_decompose_object_path(const char *path, char **network, 94 char **bssid); 95 96int wpas_dbus_register_iface(struct wpa_supplicant *wpa_s); 97int wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s); 98 99 100/* Methods internal to the dbus control interface */ 101u32 wpa_supplicant_dbus_next_objid(struct ctrl_iface_dbus_priv *iface); 102 103int wpa_supplicant_set_dbus_path(struct wpa_supplicant *wpa_s, 104 const char *path); 105const char *wpa_supplicant_get_dbus_path(struct wpa_supplicant *wpa_s); 106struct wpa_supplicant * wpa_supplicant_get_iface_by_dbus_path( 107 struct wpa_global *global, const char *path); 108 109DBusMessage * wpas_dbus_new_invalid_iface_error(DBusMessage *message); 110DBusMessage * wpas_dbus_new_invalid_network_error(DBusMessage *message); 111 112#else /* CONFIG_CTRL_IFACE_DBUS */ 113 114static inline struct ctrl_iface_dbus_priv * 115wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global) 116{ 117 return (struct ctrl_iface_dbus_priv *) 1; 118} 119 120static inline void 121wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface) 122{ 123} 124 125static inline void 126wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s) 127{ 128} 129 130static inline void 131wpa_supplicant_dbus_notify_scanning(struct wpa_supplicant *wpa_s) 132{ 133} 134 135static inline void 136wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s, 137 wpa_states new_state, 138 wpa_states old_state) 139{ 140} 141 142static inline void 143wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s, 144 const struct wps_credential *cred) 145{ 146} 147 148static inline int 149wpas_dbus_register_iface(struct wpa_supplicant *wpa_s) 150{ 151 return 0; 152} 153 154static inline int 155wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s) 156{ 157 return 0; 158} 159 160#endif /* CONFIG_CTRL_IFACE_DBUS */ 161 162#endif /* CTRL_IFACE_DBUS_H */ 163