Defines | Functions | Variables

wpa.c File Reference

#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"
Include dependency graph for wpa.c:

Go to the source code of this file.

Defines

#define DBUS_API_SUBJECT_TO_CHANGE
#define WLANCOND_AUTH_WPA_VERSION_DISABLED   0x00000001
#define WLANCOND_AUTH_WPA_VERSION_WPA   0x00000002
#define WLANCOND_AUTH_WPA_VERSION_WPA2   0x00000004
#define WLANCOND_AUTH_KEY_MGMT_802_1X   1
#define WLANCOND_AUTH_KEY_MGMT_PSK   2

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)
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)
gint nl80211_encryption_method (guint32 encryption, struct wlan_status_t *wlan_status)

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 }

Detailed Description

Copyright (C) 2004-2010 Nokia Corporation. All rights reserved.

Author:
Janne Ylälehto <janne.ylalehto@nokia.com>

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.


Function Documentation

static int generate_wpa2_ie ( guint32  encryption,
struct wlan_status_t wlan_status 
) [static]

Generate WPA2 Information Element.

Parameters:
encryption encryption settings.
wlan_status wlan status information.
Returns:
status.

Definition at line 246 of file wpa.c.

References find_pmkid_from_pmk_cache(), and update_own_ie().

Here is the call graph for this function:

static int generate_wpa_ie ( guint32  encryption,
struct wlan_status_t wlan_status 
) [static]

Generate WPA1 Information Element.

Parameters:
encryption encryption settings.
wlan_status wlan status information.
Returns:
status.

Definition at line 139 of file wpa.c.

References update_own_ie().

Here is the call graph for this function:

int handle_mic_failure ( gboolean  key_type,
unsigned char *  bssid 
)

Handle MIC failure.

Parameters:
key_type Key type (pairwise/group).
Returns:
status.

Definition at line 465 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 print_netlink_event_token().

Here is the call graph for this function:

gboolean is_ap_in_black_list ( unsigned char *  bssid  ) 

Check if access point is in the black list.

Parameters:
bssid BSSID.
Returns:
TRUE if in the list.

Definition at line 418 of file wpa.c.

Referenced by find_connection().

static gboolean mic_failure_running_cb ( void *  data  )  [static]

Mic failure running timer callback.

Parameters:
data callback data.
Returns:
status.

Definition at line 437 of file wpa.c.

References remove_ap_from_black_list().

Referenced by handle_mic_failure().

Here is the call graph for this function:

static gboolean mic_failure_timer_cb ( void *  data  )  [static]

Mic failure timer callback.

Parameters:
data callback data.
Returns:
status.

Definition at line 397 of file wpa.c.

References remove_ap_from_black_list().

Referenced by handle_mic_failure().

Here is the call graph for this function:

int parse_rsn_ie ( unsigned char *  wpa_ie,
unsigned int  wpa_ie_len,
struct ap_info_t ap_info 
)

Parse RSN IE.

Parameters:
wpa_ie WPA IE.
wpa_ie_len WPA IE length.
ap_info AP Information pointer.
Returns:
status.

Definition at line 518 of file wpa.c.

Referenced by nl80211_parse_ies().

int parse_wpa_ie ( unsigned char *  wpa_ie,
unsigned int  wpa_ie_len,
struct ap_info_t ap_info 
)

Parse WPA IE.

Parameters:
wpa_ie WPA IE.
wpa_ie_len WPA IE length.
ap_info AP Information pointer.
Returns:
status.

Definition at line 627 of file wpa.c.

Referenced by nl80211_parse_ies().

static void remove_ap_from_black_list ( unsigned char *  bssid  )  [static]

Remove access point from the black list.

Parameters:
bssid BSSID.

Definition at line 373 of file wpa.c.

Referenced by mic_failure_running_cb(), and mic_failure_timer_cb().