|
|
@ -687,6 +687,12 @@ static void nl80211_do_mgmt_probe_request_event(struct nl80211_wlan_handle* wlan
|
|
|
|
|
|
|
|
|
|
|
|
if (nl80211_wlan_send_frame((wifi_wlan_handle)wlanhandle, &wlan_params)) {
|
|
|
|
if (nl80211_wlan_send_frame((wifi_wlan_handle)wlanhandle, &wlan_params)) {
|
|
|
|
capwap_logging_warning("Unable to send IEEE802.11 Probe Response");
|
|
|
|
capwap_logging_warning("Unable to send IEEE802.11 Probe Response");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* If enable Split Mac send the probe request message to AC */
|
|
|
|
|
|
|
|
if (wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_SPLIT) {
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -703,6 +709,12 @@ static void nl80211_do_mgmt_authentication_event(struct nl80211_wlan_handle* wla
|
|
|
|
struct wlan_send_frame_params wlan_params;
|
|
|
|
struct wlan_send_frame_params wlan_params;
|
|
|
|
struct nl80211_station* station;
|
|
|
|
struct nl80211_station* station;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->authetication));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Ignore authentication packet from same AP */
|
|
|
|
/* Ignore authentication packet from same AP */
|
|
|
|
if (!memcmp(mgmt->sa, wlanhandle->address, ETH_ALEN)) {
|
|
|
|
if (!memcmp(mgmt->sa, wlanhandle->address, ETH_ALEN)) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -714,12 +726,6 @@ static void nl80211_do_mgmt_authentication_event(struct nl80211_wlan_handle* wla
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->authetication));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Parsing Information Elements */
|
|
|
|
/* Parsing Information Elements */
|
|
|
|
if (wifi_retrieve_information_elements_position(&ieitems, &mgmt->authetication.ie[0], ielength)) {
|
|
|
|
if (wifi_retrieve_information_elements_position(&ieitems, &mgmt->authetication.ie[0], ielength)) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -747,29 +753,38 @@ static void nl80211_do_mgmt_authentication_event(struct nl80211_wlan_handle* wla
|
|
|
|
responsestatuscode = IEEE80211_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
|
|
|
|
responsestatuscode = IEEE80211_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Create authentication packet */
|
|
|
|
/* */
|
|
|
|
memset(&ieee80211_params, 0, sizeof(struct ieee80211_authentication_params));
|
|
|
|
if (wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_LOCAL) {
|
|
|
|
memcpy(ieee80211_params.bssid, wlanhandle->address, ETH_ALEN);
|
|
|
|
/* Create authentication packet */
|
|
|
|
memcpy(ieee80211_params.station, mgmt->sa, ETH_ALEN);
|
|
|
|
memset(&ieee80211_params, 0, sizeof(struct ieee80211_authentication_params));
|
|
|
|
ieee80211_params.algorithm = algorithm;
|
|
|
|
memcpy(ieee80211_params.bssid, wlanhandle->address, ETH_ALEN);
|
|
|
|
ieee80211_params.transactionseqnumber = transactionseqnumber + 1;
|
|
|
|
memcpy(ieee80211_params.station, mgmt->sa, ETH_ALEN);
|
|
|
|
ieee80211_params.statuscode = responsestatuscode;
|
|
|
|
ieee80211_params.algorithm = algorithm;
|
|
|
|
|
|
|
|
ieee80211_params.transactionseqnumber = transactionseqnumber + 1;
|
|
|
|
|
|
|
|
ieee80211_params.statuscode = responsestatuscode;
|
|
|
|
|
|
|
|
|
|
|
|
responselength = ieee80211_create_authentication_response(g_bufferIEEE80211, sizeof(g_bufferIEEE80211), &ieee80211_params);
|
|
|
|
responselength = ieee80211_create_authentication_response(g_bufferIEEE80211, sizeof(g_bufferIEEE80211), &ieee80211_params);
|
|
|
|
if (responselength < 0) {
|
|
|
|
if (responselength < 0) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Send authentication response */
|
|
|
|
/* Send authentication response */
|
|
|
|
memset(&wlan_params, 0, sizeof(struct wlan_send_frame_params));
|
|
|
|
memset(&wlan_params, 0, sizeof(struct wlan_send_frame_params));
|
|
|
|
wlan_params.packet = g_bufferIEEE80211;
|
|
|
|
wlan_params.packet = g_bufferIEEE80211;
|
|
|
|
wlan_params.length = responselength;
|
|
|
|
wlan_params.length = responselength;
|
|
|
|
wlan_params.frequency = wlanhandle->devicehandle->currentfrequency.frequency;
|
|
|
|
wlan_params.frequency = wlanhandle->devicehandle->currentfrequency.frequency;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (nl80211_wlan_send_frame((wifi_wlan_handle)wlanhandle, &wlan_params)) {
|
|
|
|
|
|
|
|
capwap_logging_warning("Unable to send IEEE802.11 Authentication Response");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!nl80211_wlan_send_frame((wifi_wlan_handle)wlanhandle, &wlan_params)) {
|
|
|
|
|
|
|
|
wlanhandle->last_cookie = wlan_params.cookie;
|
|
|
|
wlanhandle->last_cookie = wlan_params.cookie;
|
|
|
|
} else {
|
|
|
|
|
|
|
|
capwap_logging_warning("Unable to send IEEE802.11 Authentication Response");
|
|
|
|
/* Notify authentication message also to AC */
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, 0);
|
|
|
|
|
|
|
|
} else if ((wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_SPLIT) && (responsestatuscode == IEEE80211_STATUS_SUCCESS)) {
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -850,6 +865,39 @@ static int nl80211_set_station_information(struct nl80211_wlan_handle* wlanhandl
|
|
|
|
return IEEE80211_STATUS_SUCCESS;
|
|
|
|
return IEEE80211_STATUS_SUCCESS;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
|
|
|
|
static void nl80211_do_mgmt_disassociation_event(struct nl80211_wlan_handle* wlanhandle, const struct ieee80211_header_mgmt* mgmt, int mgmtlength) {
|
|
|
|
|
|
|
|
int ielength;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->disassociation));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Notify disassociation message also to AC */
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, ((wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_LOCAL) ? 0 : 1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
|
|
|
|
static void nl80211_do_mgmt_reassociation_request_event(struct nl80211_wlan_handle* wlanhandle, const struct ieee80211_header_mgmt* mgmt, int mgmtlength) {
|
|
|
|
|
|
|
|
int ielength;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->reassociationrequest));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO */
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
/* */
|
|
|
|
static void nl80211_do_mgmt_association_request_event(struct nl80211_wlan_handle* wlanhandle, const struct ieee80211_header_mgmt* mgmt, int mgmtlength) {
|
|
|
|
static void nl80211_do_mgmt_association_request_event(struct nl80211_wlan_handle* wlanhandle, const struct ieee80211_header_mgmt* mgmt, int mgmtlength) {
|
|
|
|
int ielength;
|
|
|
|
int ielength;
|
|
|
@ -860,6 +908,12 @@ static void nl80211_do_mgmt_association_request_event(struct nl80211_wlan_handle
|
|
|
|
struct nl80211_station* station;
|
|
|
|
struct nl80211_station* station;
|
|
|
|
uint16_t resultstatuscode = IEEE80211_STATUS_SUCCESS;
|
|
|
|
uint16_t resultstatuscode = IEEE80211_STATUS_SUCCESS;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->associationrequest));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Get station reference */
|
|
|
|
/* Get station reference */
|
|
|
|
station = nl80211_station_get(wlanhandle, mgmt->sa);
|
|
|
|
station = nl80211_station_get(wlanhandle, mgmt->sa);
|
|
|
|
if (!station || !(station->flags & NL80211_STATION_FLAGS_AUTHENTICATED)) {
|
|
|
|
if (!station || !(station->flags & NL80211_STATION_FLAGS_AUTHENTICATED)) {
|
|
|
@ -868,52 +922,69 @@ static void nl80211_do_mgmt_association_request_event(struct nl80211_wlan_handle
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->associationrequest));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Parsing Information Elements */
|
|
|
|
/* Parsing Information Elements */
|
|
|
|
if (wifi_retrieve_information_elements_position(&ieitems, &mgmt->associationrequest.ie[0], ielength)) {
|
|
|
|
if (wifi_retrieve_information_elements_position(&ieitems, &mgmt->associationrequest.ie[0], ielength)) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
|
|
|
|
resultstatuscode = nl80211_set_station_information(wlanhandle, mgmt, &ieitems, station);
|
|
|
|
resultstatuscode = nl80211_set_station_information(wlanhandle, mgmt, &ieitems, station);
|
|
|
|
|
|
|
|
|
|
|
|
/* Create association response packet */
|
|
|
|
/* */
|
|
|
|
memset(&ieee80211_params, 0, sizeof(struct ieee80211_authentication_params));
|
|
|
|
if (wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_LOCAL) {
|
|
|
|
memcpy(ieee80211_params.bssid, wlanhandle->address, ETH_ALEN);
|
|
|
|
if (resultstatuscode == IEEE80211_STATUS_SUCCESS) {
|
|
|
|
memcpy(ieee80211_params.station, mgmt->sa, ETH_ALEN);
|
|
|
|
if (wifi_aid_create(wlanhandle->aidbitfield, &station->aid)) {
|
|
|
|
ieee80211_params.capability = nl80211_wlan_check_capability(wlanhandle, wlanhandle->capability);
|
|
|
|
resultstatuscode = IEEE80211_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
|
|
|
|
ieee80211_params.statuscode = resultstatuscode;
|
|
|
|
}
|
|
|
|
ieee80211_params.aid = IEEE80211_AID_FIELD | station->aid;
|
|
|
|
}
|
|
|
|
memcpy(ieee80211_params.supportedrates, wlanhandle->devicehandle->supportedrates, wlanhandle->devicehandle->supportedratescount);
|
|
|
|
|
|
|
|
ieee80211_params.supportedratescount = wlanhandle->devicehandle->supportedratescount;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
responselength = ieee80211_create_associationresponse_response(g_bufferIEEE80211, sizeof(g_bufferIEEE80211), &ieee80211_params);
|
|
|
|
/* Create association response packet */
|
|
|
|
if (responselength < 0) {
|
|
|
|
memset(&ieee80211_params, 0, sizeof(struct ieee80211_authentication_params));
|
|
|
|
return;
|
|
|
|
memcpy(ieee80211_params.bssid, wlanhandle->address, ETH_ALEN);
|
|
|
|
}
|
|
|
|
memcpy(ieee80211_params.station, mgmt->sa, ETH_ALEN);
|
|
|
|
|
|
|
|
ieee80211_params.capability = nl80211_wlan_check_capability(wlanhandle, wlanhandle->capability);
|
|
|
|
|
|
|
|
ieee80211_params.statuscode = resultstatuscode;
|
|
|
|
|
|
|
|
ieee80211_params.aid = IEEE80211_AID_FIELD | station->aid;
|
|
|
|
|
|
|
|
memcpy(ieee80211_params.supportedrates, wlanhandle->devicehandle->supportedrates, wlanhandle->devicehandle->supportedratescount);
|
|
|
|
|
|
|
|
ieee80211_params.supportedratescount = wlanhandle->devicehandle->supportedratescount;
|
|
|
|
|
|
|
|
|
|
|
|
/* Send authentication response */
|
|
|
|
responselength = ieee80211_create_associationresponse_response(g_bufferIEEE80211, sizeof(g_bufferIEEE80211), &ieee80211_params);
|
|
|
|
memset(&wlan_params, 0, sizeof(struct wlan_send_frame_params));
|
|
|
|
if (responselength < 0) {
|
|
|
|
wlan_params.packet = g_bufferIEEE80211;
|
|
|
|
return;
|
|
|
|
wlan_params.length = responselength;
|
|
|
|
}
|
|
|
|
wlan_params.frequency = wlanhandle->devicehandle->currentfrequency.frequency;
|
|
|
|
|
|
|
|
|
|
|
|
/* Send authentication response */
|
|
|
|
|
|
|
|
memset(&wlan_params, 0, sizeof(struct wlan_send_frame_params));
|
|
|
|
|
|
|
|
wlan_params.packet = g_bufferIEEE80211;
|
|
|
|
|
|
|
|
wlan_params.length = responselength;
|
|
|
|
|
|
|
|
wlan_params.frequency = wlanhandle->devicehandle->currentfrequency.frequency;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (nl80211_wlan_send_frame((wifi_wlan_handle)wlanhandle, &wlan_params)) {
|
|
|
|
|
|
|
|
capwap_logging_warning("Unable to send IEEE802.11 Association Response");
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!nl80211_wlan_send_frame((wifi_wlan_handle)wlanhandle, &wlan_params)) {
|
|
|
|
|
|
|
|
wlanhandle->last_cookie = wlan_params.cookie;
|
|
|
|
wlanhandle->last_cookie = wlan_params.cookie;
|
|
|
|
} else {
|
|
|
|
|
|
|
|
capwap_logging_warning("Unable to send IEEE802.11 Association Response");
|
|
|
|
/* Notify association request message also to AC */
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, 0);
|
|
|
|
|
|
|
|
} else if ((wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_SPLIT) && (resultstatuscode == IEEE80211_STATUS_SUCCESS)) {
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
/* */
|
|
|
|
static void nl80211_do_mgmt_deauthentication_event(struct nl80211_wlan_handle* wlanhandle, const struct ieee80211_header_mgmt* mgmt, int mgmtlength) {
|
|
|
|
static void nl80211_do_mgmt_deauthentication_event(struct nl80211_wlan_handle* wlanhandle, const struct ieee80211_header_mgmt* mgmt, int mgmtlength) {
|
|
|
|
|
|
|
|
int ielength;
|
|
|
|
struct nl80211_station* station;
|
|
|
|
struct nl80211_station* station;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* TODO */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Information Elements packet length */
|
|
|
|
|
|
|
|
ielength = mgmtlength - (sizeof(struct ieee80211_header) + sizeof(mgmt->deauthetication));
|
|
|
|
|
|
|
|
if (ielength < 0) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Get station reference */
|
|
|
|
/* Get station reference */
|
|
|
|
station = nl80211_station_get(wlanhandle, mgmt->sa);
|
|
|
|
station = nl80211_station_get(wlanhandle, mgmt->sa);
|
|
|
|
if (!station) {
|
|
|
|
if (!station) {
|
|
|
@ -922,6 +993,9 @@ static void nl80211_do_mgmt_deauthentication_event(struct nl80211_wlan_handle* w
|
|
|
|
|
|
|
|
|
|
|
|
/* Free station */
|
|
|
|
/* Free station */
|
|
|
|
nl80211_station_delete(wlanhandle, mgmt->sa);
|
|
|
|
nl80211_station_delete(wlanhandle, mgmt->sa);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Notify deauthentication message also to AC */
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe(wlanhandle->send_mgmtframe_to_ac_cbparam, mgmt, mgmtlength, ((wlanhandle->macmode == CAPWAP_ADD_WLAN_MACMODE_LOCAL) ? 0 : 1));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
/* */
|
|
|
@ -955,12 +1029,12 @@ static void nl80211_do_mgmt_frame_event(struct nl80211_wlan_handle* wlanhandle,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
case IEEE80211_FRAMECONTROL_MGMT_SUBTYPE_REASSOCIATION_REQUEST: {
|
|
|
|
case IEEE80211_FRAMECONTROL_MGMT_SUBTYPE_REASSOCIATION_REQUEST: {
|
|
|
|
/* TODO */
|
|
|
|
nl80211_do_mgmt_reassociation_request_event(wlanhandle, mgmt, mgmtlength);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
case IEEE80211_FRAMECONTROL_MGMT_SUBTYPE_DISASSOCIATION: {
|
|
|
|
case IEEE80211_FRAMECONTROL_MGMT_SUBTYPE_DISASSOCIATION: {
|
|
|
|
/* TODO */
|
|
|
|
nl80211_do_mgmt_disassociation_event(wlanhandle, mgmt, mgmtlength);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -2285,6 +2359,8 @@ static int nl80211_wlan_startap(wifi_wlan_handle handle, struct wlan_startap_par
|
|
|
|
wlanhandle->authenticationtype = ((params->authmode == CAPWAP_ADD_WLAN_AUTHTYPE_WEP) ? NL80211_AUTHTYPE_SHARED_KEY : NL80211_AUTHTYPE_OPEN_SYSTEM);
|
|
|
|
wlanhandle->authenticationtype = ((params->authmode == CAPWAP_ADD_WLAN_AUTHTYPE_WEP) ? NL80211_AUTHTYPE_SHARED_KEY : NL80211_AUTHTYPE_OPEN_SYSTEM);
|
|
|
|
wlanhandle->macmode = params->macmode;
|
|
|
|
wlanhandle->macmode = params->macmode;
|
|
|
|
wlanhandle->tunnelmode = params->tunnelmode;
|
|
|
|
wlanhandle->tunnelmode = params->tunnelmode;
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe = params->send_mgmtframe;
|
|
|
|
|
|
|
|
wlanhandle->send_mgmtframe_to_ac_cbparam = params->send_mgmtframe_to_ac_cbparam;
|
|
|
|
|
|
|
|
|
|
|
|
/* Set beacon */
|
|
|
|
/* Set beacon */
|
|
|
|
if (nl80211_wlan_setbeacon(wlanhandle)) {
|
|
|
|
if (nl80211_wlan_setbeacon(wlanhandle)) {
|
|
|
|