e8fa6039f6
I've exported the methods wpsPbc, wpsReg and wpsPin (patch attached), so wpa_supplicant should be able to connect with WPS using the dbus interface. I couldn't test it well because the problem seems to be in my wireless card, a Broadcom BCM4328. At least it seems to do the same using both interfaces. With ndiswrapper driver the "wpsie" entry (thanks Dan!) didn't appear, and with the Broadcom wl driver it appears but I cannot associate using WPS.
165 lines
4.6 KiB
C
165 lines
4.6 KiB
C
/*
|
|
* WPA Supplicant / dbus-based control interface
|
|
* Copyright (c) 2006, Dan Williams <dcbw@redhat.com> and Red Hat, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* Alternatively, this software may be distributed under the terms of BSD
|
|
* license.
|
|
*
|
|
* See README and COPYING for more details.
|
|
*/
|
|
|
|
#ifndef CTRL_IFACE_DBUS_H
|
|
#define CTRL_IFACE_DBUS_H
|
|
|
|
struct wps_credential;
|
|
|
|
#ifdef CONFIG_CTRL_IFACE_DBUS
|
|
|
|
#ifndef SIGPOLL
|
|
#ifdef SIGIO
|
|
/*
|
|
* If we do not have SIGPOLL, try to use SIGIO instead. This is needed for
|
|
* FreeBSD.
|
|
*/
|
|
#define SIGPOLL SIGIO
|
|
#endif
|
|
#endif
|
|
|
|
#include <dbus/dbus.h>
|
|
|
|
#define WPAS_DBUS_OBJECT_PATH_MAX 150
|
|
|
|
#define WPAS_DBUS_SERVICE "fi.epitest.hostap.WPASupplicant"
|
|
#define WPAS_DBUS_PATH "/fi/epitest/hostap/WPASupplicant"
|
|
#define WPAS_DBUS_INTERFACE "fi.epitest.hostap.WPASupplicant"
|
|
|
|
#define WPAS_DBUS_PATH_INTERFACES WPAS_DBUS_PATH "/Interfaces"
|
|
#define WPAS_DBUS_IFACE_INTERFACE WPAS_DBUS_INTERFACE ".Interface"
|
|
|
|
#define WPAS_DBUS_NETWORKS_PART "Networks"
|
|
#define WPAS_DBUS_IFACE_NETWORK WPAS_DBUS_INTERFACE ".Network"
|
|
|
|
#define WPAS_DBUS_BSSIDS_PART "BSSIDs"
|
|
#define WPAS_DBUS_IFACE_BSSID WPAS_DBUS_INTERFACE ".BSSID"
|
|
|
|
|
|
/* Errors */
|
|
#define WPAS_ERROR_INVALID_NETWORK \
|
|
WPAS_DBUS_IFACE_INTERFACE ".InvalidNetwork"
|
|
#define WPAS_ERROR_INVALID_BSSID \
|
|
WPAS_DBUS_IFACE_INTERFACE ".InvalidBSSID"
|
|
|
|
#define WPAS_ERROR_INVALID_OPTS \
|
|
WPAS_DBUS_INTERFACE ".InvalidOptions"
|
|
#define WPAS_ERROR_INVALID_IFACE \
|
|
WPAS_DBUS_INTERFACE ".InvalidInterface"
|
|
|
|
#define WPAS_ERROR_ADD_ERROR \
|
|
WPAS_DBUS_INTERFACE ".AddError"
|
|
#define WPAS_ERROR_EXISTS_ERROR \
|
|
WPAS_DBUS_INTERFACE ".ExistsError"
|
|
#define WPAS_ERROR_REMOVE_ERROR \
|
|
WPAS_DBUS_INTERFACE ".RemoveError"
|
|
|
|
#define WPAS_ERROR_SCAN_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".ScanError"
|
|
#define WPAS_ERROR_ADD_NETWORK_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".AddNetworkError"
|
|
#define WPAS_ERROR_INTERNAL_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".InternalError"
|
|
#define WPAS_ERROR_REMOVE_NETWORK_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".RemoveNetworkError"
|
|
|
|
#ifdef CONFIG_WPS
|
|
#define WPAS_ERROR_WPS_PBC_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".WpsPbcError"
|
|
#define WPAS_ERROR_WPS_PIN_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".WpsPinError"
|
|
#define WPAS_ERROR_WPS_REG_ERROR \
|
|
WPAS_DBUS_IFACE_INTERFACE ".WpsRegError"
|
|
#endif /* CONFIG_WPS */
|
|
|
|
#define WPAS_DBUS_BSSID_FORMAT "%02x%02x%02x%02x%02x%02x"
|
|
|
|
struct wpa_global;
|
|
struct wpa_supplicant;
|
|
|
|
struct ctrl_iface_dbus_priv *
|
|
wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global);
|
|
void wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface);
|
|
void wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s);
|
|
void wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
|
|
wpa_states new_state,
|
|
wpa_states old_state);
|
|
void wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s,
|
|
const struct wps_credential *cred);
|
|
|
|
char * wpas_dbus_decompose_object_path(const char *path, char **network,
|
|
char **bssid);
|
|
|
|
int wpas_dbus_register_iface(struct wpa_supplicant *wpa_s);
|
|
int wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s);
|
|
|
|
|
|
/* Methods internal to the dbus control interface */
|
|
u32 wpa_supplicant_dbus_next_objid(struct ctrl_iface_dbus_priv *iface);
|
|
|
|
int wpa_supplicant_set_dbus_path(struct wpa_supplicant *wpa_s,
|
|
const char *path);
|
|
const char *wpa_supplicant_get_dbus_path(struct wpa_supplicant *wpa_s);
|
|
struct wpa_supplicant * wpa_supplicant_get_iface_by_dbus_path(
|
|
struct wpa_global *global, const char *path);
|
|
|
|
DBusMessage * wpas_dbus_new_invalid_iface_error(DBusMessage *message);
|
|
DBusMessage * wpas_dbus_new_invalid_network_error(DBusMessage *message);
|
|
|
|
#else /* CONFIG_CTRL_IFACE_DBUS */
|
|
|
|
static inline struct ctrl_iface_dbus_priv *
|
|
wpa_supplicant_dbus_ctrl_iface_init(struct wpa_global *global)
|
|
{
|
|
return (struct ctrl_iface_dbus_priv *) 1;
|
|
}
|
|
|
|
static inline void
|
|
wpa_supplicant_dbus_ctrl_iface_deinit(struct ctrl_iface_dbus_priv *iface)
|
|
{
|
|
}
|
|
|
|
static inline void
|
|
wpa_supplicant_dbus_notify_scan_results(struct wpa_supplicant *wpa_s)
|
|
{
|
|
}
|
|
|
|
static inline void
|
|
wpa_supplicant_dbus_notify_state_change(struct wpa_supplicant *wpa_s,
|
|
wpa_states new_state,
|
|
wpa_states old_state)
|
|
{
|
|
}
|
|
|
|
static inline void
|
|
wpa_supplicant_dbus_notify_wps_cred(struct wpa_supplicant *wpa_s,
|
|
const struct wps_credential *cred)
|
|
{
|
|
}
|
|
|
|
static inline int
|
|
wpas_dbus_register_iface(struct wpa_supplicant *wpa_s)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int
|
|
wpas_dbus_unregister_iface(struct wpa_supplicant *wpa_s)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
#endif /* CONFIG_CTRL_IFACE_DBUS */
|
|
|
|
#endif /* CTRL_IFACE_DBUS_H */
|