コード例 #1
0
static void svc_scan_results_cb(json_rpc_t *json_rpc, void *arg) {
    struct wpa_supplicant *wpa_s=arg;
    char *reply;
    const int reply_size = 4096;
    reply = os_malloc(reply_size);
    wpa_supplicant_scan_results(wpa_s,json_rpc, reply, reply_size);
}
コード例 #2
0
ファイル: wpa_supplicant.c プロジェクト: alhazred/onarm
/*
 * wpa_event_handler - report a driver event for wpa_supplicant
 * @wpa_s: pointer to wpa_supplicant data; this is the @ctx variable registered
 *	with wpa_driver_events_init()
 * @event: event type (defined above)
 *
 * Driver wrapper code should call this function whenever an event is received
 * from the driver.
 */
void
wpa_event_handler(void *cookie, wpa_event_type event)
{
	struct wpa_supplicant *wpa_s = cookie;
	uint8_t bssid[IEEE80211_ADDR_LEN];

	switch (event) {
	case EVENT_ASSOC:
		wpa_s->wpa_state = WPA_ASSOCIATED;
		wpa_printf(MSG_DEBUG, "\nAssociation event - clear replay "
		    "counter\n");
		(void) memset(wpa_s->rx_replay_counter, 0,
		    WPA_REPLAY_COUNTER_LEN);
		wpa_s->rx_replay_counter_set = 0;
		wpa_s->renew_snonce = 1;
		if (wpa_s->driver->get_bssid(wpa_s->linkid,
		    (char *)bssid) >= 0 &&
		    memcmp(bssid, wpa_s->bssid, IEEE80211_ADDR_LEN) != 0) {
			wpa_printf(MSG_DEBUG, "Associated to a new BSS: "
			    "BSSID=" MACSTR, MAC2STR(bssid));
			(void) memcpy(wpa_s->bssid, bssid, IEEE80211_ADDR_LEN);
			if (wpa_s->key_mgmt != WPA_KEY_MGMT_NONE)
				wpa_clear_keys(wpa_s, bssid);
		}

		wpa_s->eapol_received = 0;
		if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE) {
			wpa_supplicant_cancel_auth_timeout(wpa_s);
		} else {
			/* Timeout for receiving the first EAPOL packet */
			wpa_supplicant_req_auth_timeout(wpa_s, 10, 0);
		}
		break;
	case EVENT_DISASSOC:
		if (wpa_s->wpa_state >= WPA_ASSOCIATED)
			wpa_supplicant_req_scan(wpa_s, 0, 100000);
		wpa_supplicant_mark_disassoc(wpa_s);
		wpa_printf(MSG_DEBUG, "Disconnect event - remove keys");
		if (wpa_s->key_mgmt != WPA_KEY_MGMT_NONE)
			wpa_clear_keys(wpa_s, wpa_s->bssid);
		break;
	case EVENT_SCAN_RESULTS:
		wpa_supplicant_scan_results(wpa_s);
		break;
	default:
		wpa_printf(MSG_INFO, "Unknown event %d", event);
		break;
	}
}