aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant/events.c
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2014-03-11 04:07:01 (GMT)
committerJouni Malinen <j@w1.fi>2014-10-25 14:45:31 (GMT)
commit5f92659d88f17ba8cd11210a70e17ba664a62d53 (patch)
treec591ea2b1b609fec3702f9f758fd142d167af4fe /wpa_supplicant/events.c
parente45e898970e29f5f21e2815a2c75714129d7ae20 (diff)
downloadhostap-5f92659d88f17ba8cd11210a70e17ba664a62d53.zip
hostap-5f92659d88f17ba8cd11210a70e17ba664a62d53.tar.gz
hostap-5f92659d88f17ba8cd11210a70e17ba664a62d53.tar.bz2
mesh: Add mesh peering manager
The mesh peering manager establishes and maintains links among mesh peers, tracking each peer link via a finite state machine. This implementation supports open mesh peerings. [assorted fixes from Yu Niiro <yu.niiro@gmail.com>] [more fixes from Masashi Honma <masashi.honma@gmail.com>] Signed-off-by: Javier Lopez <jlopex@gmail.com> Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: Ashok Nagarajan <ashok.dragon@gmail.com> Signed-off-by: Jason Mobarak <x@jason.mobarak.name> Signed-hostap: Bob Copeland <me@bobcopeland.com>
Diffstat (limited to 'wpa_supplicant/events.c')
-rw-r--r--wpa_supplicant/events.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 34d8226..189dacd 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -43,6 +43,7 @@
#include "offchannel.h"
#include "interworking.h"
#include "mesh.h"
+#include "mesh_mpm.h"
#ifndef CONFIG_NO_SCAN_PROCESSING
@@ -2840,6 +2841,8 @@ static void wpas_event_rx_mgmt_action(struct wpa_supplicant *wpa_s,
wpas_p2p_rx_action(wpa_s, mgmt->da, mgmt->sa, mgmt->bssid,
category, payload, plen, freq);
+ if (wpa_s->ifmsh)
+ mesh_mpm_action_rx(wpa_s, mgmt, len);
}
@@ -3209,7 +3212,9 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
}
#endif /* CONFIG_P2P */
#ifdef CONFIG_IBSS_RSN
- if (stype == WLAN_FC_STYPE_AUTH &&
+ if (wpa_s->current_ssid &&
+ wpa_s->current_ssid->mode == WPAS_MODE_IBSS &&
+ stype == WLAN_FC_STYPE_AUTH &&
data->rx_mgmt.frame_len >= 30) {
wpa_supplicant_event_ibss_auth(wpa_s, data);
break;
@@ -3224,6 +3229,11 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
break;
}
+ if (wpa_s->ifmsh) {
+ mesh_mpm_mgmt_rx(wpa_s, &data->rx_mgmt);
+ break;
+ }
+
wpa_dbg(wpa_s, MSG_DEBUG, "AP: ignore received "
"management frame in non-AP mode");
break;