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