#include <sys/types.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <linux/if_ether.h>
#include <iwlib.h>
#include <wireless.h>
#include <dbus/dbus.h>
#include <wlancond.h>
#include "common.h"
Go to the source code of this file.
Defines | |
#define | DBUS_API_SUBJECT_TO_CHANGE |
#define | CLEAR 1 |
#define | SET 2 |
#define | ETOOMANYREGISTRARS -500 |
#define | ETOOWEAKAP -2 |
#define | ESUPPLICANT -5 |
Functions | |
void | init_dbus_handlers (DBusConnection *connection) |
void | destroy_dbus_handlers (DBusConnection *connection) |
int | socket_open (void) |
void | init_iwreq (struct iwreq *req) |
gboolean | ask_scan_results (int ifindex) |
void | set_wlan_state (int new_state, int send_signal, force_t force) |
guint | get_wlan_state (void) |
void | set_scan_state (guint new_state) |
guint | get_scan_state (void) |
int | init_dbus_handler (void) |
int | clean_dbus_handler (void) |
void | clear_wpa_mode (void) |
int | wpa_ie_push (unsigned char *ap_mac_addr, unsigned char *ap_wpa_ie, int ap_wpa_ie_len, char *ssid, int ssid_len, unsigned int authentication_type) |
gboolean | get_wpa_mode (void) |
int | set_interface_state (int sock, int dir, short flags) |
void | clear_wpa_keys (unsigned char *bssid) |
void | clean_roam_cache (void) |
guint | get_mode (void) |
gboolean | set_real_power_state (guint new_state, int sock) |
int | scan (gchar *ssid, int ssid_len, gboolean add_timer) |
void | update_own_ie (unsigned char *wpa_ie, guint wpa_ie_len) |
gboolean | set_power_state (guint state, int sock) |
guint | get_encryption_info (void) |
void | remove_connect_timer (void) |
int | disassociate_eap (void) |
int | check_pmksa_cache (unsigned char *own_mac, int own_mac_len, unsigned char *bssid, int bssid_len, uint32_t authentication_type, uint32_t pairwise_key_cipher_suite, uint32_t group_key_cipher_suite, int *status) |
void | set_call_type (const char *type) |
int | context_parser (DBusMessageIter *actit) |
void | handle_policy_actions (DBusMessage *msg) |
int | wpa_mic_failure_event (dbus_bool_t key_type, dbus_bool_t is_fatal) |
int | get_we_device_name (void) |
gboolean | remove_from_pmksa_cache (unsigned char *mac) |
int | find_pmkid_from_pmk_cache (unsigned char *mac, unsigned char **pmkid) |
DBusHandlerResult | wlancond_req_handler (DBusConnection *connection, DBusMessage *message, void *user_data) |
int | associate (struct scan_results_t *scan_results) |
gboolean | remove_from_roam_cache (unsigned char *bssid) |
struct scan_results_t * | find_connection (GSList *scan_list, struct connect_params_t *conn, gboolean update_roam_cache) |
void | remove_roam_scan_timer (void) |
void | remove_scan_timer (void) |
int | associate_supplicant (void) |
int | set_bssid (unsigned char *bssid) |
int | set_essid (char *essid, int essid_len) |
int | find_connection_and_associate (GSList *scan_results, gboolean update_roam_cache, gboolean create_new_adhoc, gboolean autoconnect) |
int | scan_results_ioctl (int ifindex, GSList **scan_results_save) |
void | set_wlan_signal (gboolean high_or_low) |
gboolean | decrease_signal_in_roam_cache (unsigned char *bssid) |
int | mlme_command (guchar *addr, guint16 cmd, guint16 reason_code) |
void | schedule_scan (guint seconds) |
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Definition in file dbus-handler.h.
gboolean ask_scan_results | ( | int | ifindex | ) |
Scan results request.
ifindex | Interface index. |
Definition at line 3173 of file dbus-handler.c.
References clean_roam_cache(), clean_scan_results(), connect_from_scan_results(), get_scan_state(), get_wlan_state(), network_compare(), scan_results_ioctl(), send_dbus_scan_results(), set_interface_state(), set_scan_state(), set_wlan_state(), and socket_open().
Referenced by print_event_token().
int associate | ( | struct scan_results_t * | scan_results | ) |
Associate function to associate to selected access point.
scan_results | Scan results. |
Definition at line 2302 of file dbus-handler.c.
References clear_wpa_keys(), get_wpa_mode(), set_bssid(), set_encryption_method(), set_essid(), set_freq(), set_wep_keys(), update_algorithms(), wlan_connect_timer_cb(), and wpa_ie_push().
Referenced by find_connection_and_associate().
int associate_supplicant | ( | void | ) |
Associate EAP D-BUS request.
Definition at line 3798 of file dbus-handler.c.
Referenced by handle_wap_event().
int check_pmksa_cache | ( | unsigned char * | own_mac, | |
int | own_mac_len, | |||
unsigned char * | bssid, | |||
int | bssid_len, | |||
uint32_t | authentication_type, | |||
uint32_t | pairwise_key_cipher_suite, | |||
uint32_t | group_key_cipher_suite, | |||
int * | status | |||
) |
Checks the PMKSA cache status from the EAP daemon.
own_mac | Our own mac address. | |
own_mac_len | The length of the address(usually ETH_ALEN) | |
bssid | The mac address of the access point. | |
bssid_len | The length of the address(usually ETH_ALEN) | |
authentication_type | The authentication type used. | |
pairwise_key_cipher_suite | The cipher suite to be used | |
group_key_cipher_suite | The cipher suite to be used | |
status | TRUE if the key exists in the cache. On errors this value won't be set. |
Definition at line 3906 of file dbus-handler.c.
Referenced by find_pmkid_from_pmk_cache().
int clean_dbus_handler | ( | void | ) |
Helper function for cleaning handler.
Definition at line 296 of file dbus-handler.c.
void clean_roam_cache | ( | void | ) |
Clean roaming cache.
Definition at line 1739 of file dbus-handler.c.
References clean_scan_results().
Referenced by ask_scan_results(), find_connection(), and set_wlan_state().
void clear_wpa_keys | ( | unsigned char * | bssid | ) |
Clear WPA keys.
bssid | optional BSSID which keys to remove. |
Definition at line 1978 of file dbus-handler.c.
References init_iwreq(), and socket_open().
Referenced by associate(), clear_wpa_mode(), disassociate_request(), and handle_wap_event().
void clear_wpa_mode | ( | void | ) |
Clear WPA mode related stuff.
Definition at line 1746 of file dbus-handler.c.
References clear_wpa_keys().
Referenced by set_wlan_state().
gboolean decrease_signal_in_roam_cache | ( | unsigned char * | bssid | ) |
Give penalty to failed AP.
bssid | BSSID. |
Definition at line 2615 of file dbus-handler.c.
Referenced by handle_wap_event().
void destroy_dbus_handlers | ( | DBusConnection * | connection | ) |
Free memory allocated to handlers
connection | D-Bus connection |
connection | DBUS connection. |
Definition at line 4301 of file dbus-handler.c.
Referenced by main().
int disassociate_eap | ( | void | ) |
Disassociate EAP D-BUS request.
Definition at line 3865 of file dbus-handler.c.
References disassociate_cb().
Referenced by handle_wap_event().
struct scan_results_t* find_connection | ( | GSList * | ap_list, | |
struct connect_params_t * | conn, | |||
gboolean | update_roam_cache | |||
) | [read] |
Find connection.
ap_list | List of access points. | |
conn | Connection parameters. | |
update_roam_cache | Update roaming cache or not. |
Definition at line 2779 of file dbus-handler.c.
References add_to_roam_cache(), check_capabilities(), clean_roam_cache(), and is_ap_in_black_list().
Referenced by find_connection_and_associate().
int find_connection_and_associate | ( | GSList * | scan_results, | |
gboolean | update_roam_cache, | |||
gboolean | create_new_adhoc, | |||
gboolean | autoconnect | |||
) |
Find connection and associate.
scan_results | Scan results. |
Definition at line 2894 of file dbus-handler.c.
References associate(), find_adhoc_channel(), and find_connection().
Referenced by connect_from_scan_results(), handle_wap_event(), settings_and_connect_request(), and wlan_connect_timer_cb().
int find_pmkid_from_pmk_cache | ( | unsigned char * | mac, | |
unsigned char ** | pmkid | |||
) |
Find entry from PMKSA cache.
mac | MAC address to identify the entry. | |
pmkid | This pointer will be set to point the pmkid. This won't be set on errors. |
Definition at line 1860 of file dbus-handler.c.
References check_pmksa_cache(), and remove_from_pmksa_cache().
Referenced by generate_wpa2_ie().
guint get_encryption_info | ( | void | ) |
Get encryption info.
Definition at line 276 of file dbus-handler.c.
Referenced by handle_wap_event().
guint get_mode | ( | void | ) |
Helper function for getting the wlan mode.
Definition at line 1420 of file dbus-handler.c.
Referenced by icd_check_signal_dbus(), and status_request().
guint get_scan_state | ( | void | ) |
Helper function for getting the scan state.
Definition at line 1412 of file dbus-handler.c.
Referenced by ask_scan_results(), handle_wap_event(), print_event_token(), scan(), and scan_request().
int get_we_device_name | ( | void | ) |
Find the name of the wireless device, needed in all ioctl calls. Save the result so that we don't need to find it in every ioctl call.
Definition at line 1579 of file dbus-handler.c.
References set_we_name(), and socket_open().
Referenced by main().
guint get_wlan_state | ( | void | ) |
Helper function for getting the wlan state.
Definition at line 1379 of file dbus-handler.c.
Referenced by ask_scan_results(), connect_from_scan_results(), connection_status_request(), disassociate_request(), handle_custom_event(), handle_wap_event(), icd_check_signal_dbus(), init_if(), rescan(), scan_request(), set_powersave_request(), set_wlan_state(), status_request(), wlan_connect_timer_cb(), and wlan_if_down_cb().
gboolean get_wpa_mode | ( | void | ) |
Check if WPA mode is in use.
Definition at line 1766 of file dbus-handler.c.
Referenced by associate(), disassociate_request(), handle_wap_event(), and set_wlan_state().
int init_dbus_handler | ( | void | ) |
Helper function for initializing handler structs
Definition at line 943 of file dbus-handler.c.
References check_bt_status(), get_own_mac(), get_setting_bool(), and handle_country().
Referenced by main().
void init_dbus_handlers | ( | DBusConnection * | connection | ) |
Bind functions to corresponding D-Bus messages
connection | D-Bus connection |
connection | DBUS connection. |
Definition at line 4271 of file dbus-handler.c.
Referenced by main().
void init_iwreq | ( | struct iwreq * | req | ) |
Helper function for initializing the iwreq.
Definition at line 136 of file dbus-handler.c.
Referenced by clear_wpa_keys(), mlme_command(), scan(), scan_results_ioctl(), set_bssid(), set_encryption_method_helper(), set_essid(), set_freq(), set_mode(), set_real_power_state(), set_tx_power(), set_wep_keys(), set_wpa_ie(), and status_request().
int mlme_command | ( | guchar * | addr, | |
guint16 | cmd, | |||
guint16 | reason_code | |||
) |
MLME command.
addr | Access point MAC address. | |
cmd | Command. | |
reason_code | Reason for leaving. |
Definition at line 1096 of file dbus-handler.c.
References init_iwreq(), and socket_open().
Referenced by disassociate_request(), handle_mic_failure(), and set_wlan_state().
gboolean remove_from_pmksa_cache | ( | unsigned char * | mac | ) |
Removes an entry with the given mac address from the PMKSA cache.
mac | The mac address to be removed. |
Definition at line 1834 of file dbus-handler.c.
Referenced by find_pmkid_from_pmk_cache().
gboolean remove_from_roam_cache | ( | unsigned char * | bssid | ) |
Remove from roam cache.
bssid | BSSID to remove. |
Definition at line 2587 of file dbus-handler.c.
Referenced by wlan_connect_timer_cb().
int scan | ( | gchar * | ssid, | |
int | ssid_len, | |||
gboolean | add_timer | |||
) |
Helper function for scanning.
ssid | SSID to scan. | |
ssid_len | SSID length. |
Definition at line 1907 of file dbus-handler.c.
References get_scan_state(), init_iwreq(), set_scan_state(), socket_open(), and wlan_scan_cb().
Referenced by disassociate_request(), handle_wap_event(), rescan(), scan_request(), settings_and_connect_request(), and wlan_connect_timer_cb().
int scan_results_ioctl | ( | int | ifindex, | |
GSList ** | scan_results_save | |||
) |
Get scan results from mac80211.
ifindex | Interface index. | |
scan_results_save | Scan results to save. |
Definition at line 3032 of file dbus-handler.c.
References get_interface_data(), init_iwreq(), print_event_token(), save_scan_results(), and socket_open().
Referenced by ask_scan_results(), and settings_and_connect_request().
void schedule_scan | ( | guint | seconds | ) |
Schedule scan.
seconds | Delay scan for this many seconds. |
Definition at line 2711 of file dbus-handler.c.
Referenced by handle_custom_event(), and reschedule_scan().
int set_bssid | ( | unsigned char * | bssid | ) |
Helper function for setting the BSSID.
bssid | BSSID. |
Definition at line 1245 of file dbus-handler.c.
References init_iwreq(), and socket_open().
Referenced by associate(), handle_wap_event(), and set_wlan_state().
int set_essid | ( | char * | essid, | |
int | essid_len | |||
) |
Helper function for setting the ESSID.
essid | ESSID. | |
essid_len | ESSID length. |
Definition at line 1222 of file dbus-handler.c.
References init_iwreq(), and socket_open().
Referenced by associate(), handle_wap_event(), and set_wlan_state().
int set_interface_state | ( | int | sock, | |
int | dir, | |||
short | flags | |||
) |
Set interface state.
socket | socket. | |
dir | direction. | |
flags | settings flags. |
Definition at line 1599 of file dbus-handler.c.
Referenced by ask_scan_results(), init_if(), and set_wlan_state().
gboolean set_power_state | ( | guint | new_state, | |
int | sock | |||
) |
Request WLAN power state.
state | New power state. | |
sock | socket. |
Definition at line 1493 of file dbus-handler.c.
References set_real_power_state().
Referenced by icd_check_signal_dbus(), init_if(), set_powersave_request(), set_wlan_state(), and settings_and_connect_request().
gboolean set_real_power_state | ( | guint | new_state, | |
int | sock | |||
) |
Sets the real WLAN hardware power state.
state | New power state. | |
sock | socket. |
Definition at line 1431 of file dbus-handler.c.
References get_gconf_int(), and init_iwreq().
Referenced by set_power_state().
void set_scan_state | ( | guint | new_state | ) |
Helper function for setting new scan state.
new_state | New scan state. |
Definition at line 1388 of file dbus-handler.c.
References send_dbus_scan_results().
Referenced by ask_scan_results(), del_interface_data(), disconnect_request(), scan(), set_wlan_state(), and settings_and_connect_request().
void set_wlan_state | ( | int | new_state, | |
int | send_signal, | |||
force_t | force | |||
) |
Helper function for setting new wlan state
new_state | New state for WLAN. | |
send_signal | Should signal be sent. | |
force | If shutdown is forced or not. |
Definition at line 1270 of file dbus-handler.c.
References clean_roam_cache(), clear_wpa_mode(), disconnected_signal(), get_wlan_state(), get_wpa_mode(), mlme_command(), set_bssid(), set_essid(), set_interface_state(), set_power_state(), set_scan_state(), socket_open(), and wlan_if_down_cb().
Referenced by ask_scan_results(), connect_from_scan_results(), del_interface_data(), disassociate_request(), disconnect_request(), handle_mic_failure(), handle_wap_event(), icd_check_signal_dbus(), init_if(), main(), mode_change(), print_event_token(), rescan(), scan_request(), set_powersave_request(), settings_and_connect_request(), wlan_connect_timer_cb(), wlan_if_down_cb(), wlan_scan_cb(), and wpa_ie_push_cb().
int socket_open | ( | void | ) |
Helper function for socket opening.
Definition at line 121 of file dbus-handler.c.
Referenced by ask_scan_results(), clear_wpa_keys(), get_interface_data(), get_own_mac(), get_we_device_name(), icd_check_signal_dbus(), mlme_command(), scan(), scan_request(), scan_results_ioctl(), set_bssid(), set_encryption_method_helper(), set_essid(), set_freq(), set_mode(), set_powersave_request(), set_wep_keys(), set_wlan_state(), set_wpa_ie(), settings_and_connect_request(), and status_request().
void update_own_ie | ( | unsigned char * | wpa_ie, | |
guint | wpa_ie_len | |||
) |
Update our Information Element.
wpa_ie | WPA Information Element. | |
wpa_ie_len | WPA Information Element length. |
Definition at line 266 of file dbus-handler.c.
Referenced by generate_wpa2_ie(), and generate_wpa_ie().
DBusHandlerResult wlancond_req_handler | ( | DBusConnection * | connection, | |
DBusMessage * | message, | |||
void * | user_data | |||
) |
Generic handler for D-Bus requests.
message | DBUS message. | |
connection | DBUS connection. |
Definition at line 4187 of file dbus-handler.c.
References bluez_check_adapter_signal_dbus(), bluez_check_headset_signal_dbus(), csd_check_signal_dbus(), and icd_check_signal_dbus().
int wpa_ie_push | ( | unsigned char * | ap_mac_addr, | |
unsigned char * | ap_wpa_ie, | |||
int | ap_wpa_ie_len, | |||
char * | ssid, | |||
int | ssid_len, | |||
unsigned int | authentication_type | |||
) |
WPA IE D-BUS push.
ap_mac_addr | Access point MAC address. | |
ap_wpa_ie | Pointer to access point WPA IE. | |
ap_wpa_ie_len | Access point WPA IE length. | |
authentication_type | authentication type. |
Definition at line 3697 of file dbus-handler.c.
References wpa_ie_push_cb().
Referenced by associate().
int wpa_mic_failure_event | ( | dbus_bool_t | key_type, | |
dbus_bool_t | is_fatal | |||
) |
WPA MIC failure event D-BUS request.
key_type | Key type, Unicast/Broadcast key. | |
is_fatal | Error is fatal if true. |
Definition at line 3754 of file dbus-handler.c.
Referenced by handle_mic_failure().