#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <sys/ioctl.h>
#include <glib.h>
#include <glib-object.h>
#include <unistd.h>
#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 <dbus/dbus.h>
#include <eap-dbus.h>
#include "wpa.h"
#include "common.h"
#include "dbus-handler.h"
#include "log.h"
Go to the source code of this file.
Functions | |
static guint | parse_rsn_cipher_suite (guint8 *suite) |
static guint | parse_rsn_key_mgmt_suite (guint8 *suite) |
static guint | parse_wpa_cipher_suite (guint8 *suite) |
static guint | parse_wpa_key_mgmt_suite (guint8 *suite) |
static int | generate_wpa_ie (guint32 encryption, struct wlan_status_t *wlan_status) |
static int | generate_wpa2_ie (guint32 encryption, struct wlan_status_t *wlan_status) |
int | set_wpa_ie (struct wlan_status_t *wlan_status) |
static guint32 | pairwise_encryption_to_cipher (guint32 encryption) |
static guint32 | group_encryption_to_cipher (guint32 encryption) |
static int | set_encryption_method_helper (gint index, guint32 value) |
int | set_countermeasures (guint on_off) |
gboolean | set_encryption_method (guint32 encryption, struct wlan_status_t *wlan_status) |
static gint | compare_bssid (gconstpointer a, gconstpointer b) |
static void | remove_ap_from_black_list (unsigned char *bssid) |
static gboolean | mic_failure_timer_cb (void *data) |
gboolean | is_ap_in_black_list (unsigned char *bssid) |
static gboolean | mic_failure_running_cb (void *data) |
static void | add_ap_to_black_list (unsigned char *bssid) |
static void | mic_destroy_cb (gpointer data) |
int | handle_mic_failure (gboolean key_type, unsigned char *bssid) |
int | parse_rsn_ie (unsigned char *wpa_ie, unsigned int wpa_ie_len, struct ap_info_t *ap_info) |
int | parse_wpa_ie (unsigned char *wpa_ie, unsigned int wpa_ie_len, struct ap_info_t *ap_info) |
Variables | |
static guint | mic_failure_timer_id = 0 |
static guint | mic_failure_running_timer_id = 0 |
static GSList * | ap_black_list = NULL |
static const guint8 | WPA_CIPHER_SUITE_NONE [] = {0x00, 0x50, 0xf2, 0} |
static const guint8 | WPA_CIPHER_SUITE_WEP40 [] = {0x00, 0x50, 0xf2, 1} |
static const guint8 | WPA_CIPHER_SUITE_TKIP [] = {0x00, 0x50, 0xf2, 2} |
static const guint8 | WPA_CIPHER_SUITE_CCMP [] = {0x00, 0x50, 0xf2, 4} |
static const guint8 | WPA_CIPHER_SUITE_WEP104 [] = {0x00, 0x50, 0xf2, 5} |
static const guint8 | RSN_CIPHER_SUITE_NONE [] = {0x00, 0x0f, 0xac, 0} |
static const guint8 | RSN_CIPHER_SUITE_WEP40 [] = {0x00, 0x0f, 0xac, 1} |
static const guint8 | RSN_CIPHER_SUITE_TKIP [] = {0x00, 0x0f, 0xac, 2} |
static const guint8 | RSN_CIPHER_SUITE_CCMP [] = {0x00, 0x0f, 0xac, 4} |
static const guint8 | RSN_CIPHER_SUITE_WEP104 [] = {0x00, 0x0f, 0xac, 5} |
static const guint8 | RSN_KEY_MGMT_802_1X [] = {0x00, 0x0f, 0xac, 1} |
static const guint8 | RSN_KEY_MGMT_PSK [] = {0x00, 0x0f, 0xac, 2} |
static const guint8 | WPA_KEY_MGMT_802_1X [] = {0x00, 0x50, 0xf2, 1} |
static const guint8 | WPA_KEY_MGMT_PSK [] = {0x00, 0x50, 0xf2, 2} |
static const guint8 | WPA_OUI [] = { 0x00, 0x50, 0xf2 } |
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 wpa.c.
static int generate_wpa2_ie | ( | guint32 | encryption, | |
struct wlan_status_t * | wlan_status | |||
) | [static] |
Generate WPA2 Information Element.
encryption | encryption settings. | |
wlan_status | wlan status information. |
Definition at line 223 of file wpa.c.
References find_pmkid_from_pmk_cache(), and update_own_ie().
Referenced by set_encryption_method().
static int generate_wpa_ie | ( | guint32 | encryption, | |
struct wlan_status_t * | wlan_status | |||
) | [static] |
Generate WPA1 Information Element.
encryption | encryption settings. | |
wlan_status | wlan status information. |
Definition at line 133 of file wpa.c.
References update_own_ie().
Referenced by set_encryption_method().
int handle_mic_failure | ( | gboolean | key_type, | |
unsigned char * | bssid | |||
) |
Handle MIC failure.
key_type | Key type (pairwise/group). |
Definition at line 608 of file wpa.c.
References mic_failure_running_cb(), mic_failure_timer_cb(), mlme_command(), set_wlan_state(), and wpa_mic_failure_event().
Referenced by handle_custom_event().
gboolean is_ap_in_black_list | ( | unsigned char * | bssid | ) |
Check if access point is in the black list.
bssid | BSSID. |
Definition at line 562 of file wpa.c.
Referenced by find_connection().
static gboolean mic_failure_running_cb | ( | void * | data | ) | [static] |
Mic failure running timer callback.
data | callback data. |
Definition at line 580 of file wpa.c.
References remove_ap_from_black_list().
Referenced by handle_mic_failure().
static gboolean mic_failure_timer_cb | ( | void * | data | ) | [static] |
Mic failure timer callback.
data | callback data. |
Definition at line 543 of file wpa.c.
References remove_ap_from_black_list().
Referenced by handle_mic_failure().
int parse_rsn_ie | ( | unsigned char * | wpa_ie, | |
unsigned int | wpa_ie_len, | |||
struct ap_info_t * | ap_info | |||
) |
Parse RSN IE.
wpa_ie | WPA IE. | |
wpa_ie_len | WPA IE length. | |
ap_info | AP Information pointer. |
Definition at line 662 of file wpa.c.
Referenced by handle_wpa_ie_event_binary().
int parse_wpa_ie | ( | unsigned char * | wpa_ie, | |
unsigned int | wpa_ie_len, | |||
struct ap_info_t * | ap_info | |||
) |
Parse WPA IE.
wpa_ie | WPA IE. | |
wpa_ie_len | WPA IE length. | |
ap_info | AP Information pointer. |
Definition at line 771 of file wpa.c.
Referenced by handle_wpa_ie_event_binary().
static void remove_ap_from_black_list | ( | unsigned char * | bssid | ) | [static] |
Remove access point from the black list.
bssid | BSSID. |
Definition at line 520 of file wpa.c.
Referenced by mic_failure_running_cb(), and mic_failure_timer_cb().
int set_countermeasures | ( | guint | on_off | ) |
Set WPA countermeasures.
onoff | On or Off. |
Definition at line 397 of file wpa.c.
References set_encryption_method_helper().
gboolean set_encryption_method | ( | guint32 | encryption, | |
struct wlan_status_t * | wlan_status | |||
) |
Set encryption settings.
encryption | Encryption settings. | |
wlan_status | WLAN status struct. |
Definition at line 409 of file wpa.c.
References generate_wpa2_ie(), generate_wpa_ie(), set_encryption_method_helper(), and set_wpa_ie().
Referenced by associate().
static int set_encryption_method_helper | ( | gint | index, | |
guint32 | value | |||
) | [static] |
Helper function for setting the encryption settings.
index | Setting to be modified. | |
value | New value. |
Definition at line 374 of file wpa.c.
References init_iwreq(), and socket_open().
Referenced by set_countermeasures(), and set_encryption_method().
int set_wpa_ie | ( | struct wlan_status_t * | wlan_status | ) |
Set WPA Information Element.
wpa_ie | WPA Information Element. | |
wpa_ie_len | WPA Information Element length. |
Definition at line 322 of file wpa.c.
References init_iwreq(), and socket_open().
Referenced by handle_wap_event(), and set_encryption_method().