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