WPS ER: Fix Op-Code for WSC_{ACK,NACK,Done}
When using UPnP transport, the Op-Code is not included, but the WPS frame processing will need this. Generate a matching Op-Code based on the message type.
This commit is contained in:
parent
ed835e539b
commit
7ec2e26ddf
1 changed files with 21 additions and 6 deletions
|
@ -847,13 +847,13 @@ static void wps_er_sta_send_msg(struct wps_er_sta *sta, struct wpabuf *msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void wps_er_sta_process(struct wps_er_sta *sta, struct wpabuf *msg)
|
static void wps_er_sta_process(struct wps_er_sta *sta, struct wpabuf *msg,
|
||||||
|
enum wsc_op_code op_code)
|
||||||
{
|
{
|
||||||
enum wps_process_res res;
|
enum wps_process_res res;
|
||||||
|
|
||||||
res = wps_process_msg(sta->wps, WSC_MSG, msg);
|
res = wps_process_msg(sta->wps, op_code, msg);
|
||||||
if (res == WPS_CONTINUE) {
|
if (res == WPS_CONTINUE) {
|
||||||
enum wsc_op_code op_code;
|
|
||||||
struct wpabuf *next = wps_get_msg(sta->wps, &op_code);
|
struct wpabuf *next = wps_get_msg(sta->wps, &op_code);
|
||||||
if (next)
|
if (next)
|
||||||
wps_er_sta_send_msg(sta, next);
|
wps_er_sta_send_msg(sta, next);
|
||||||
|
@ -877,7 +877,7 @@ static void wps_er_sta_start(struct wps_er_sta *sta, struct wpabuf *msg)
|
||||||
if (sta->wps == NULL)
|
if (sta->wps == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wps_er_sta_process(sta, msg);
|
wps_er_sta_process(sta, msg, WSC_MSG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -902,8 +902,23 @@ static void wps_er_process_wlanevent_eap(struct wps_er_ap *ap, const u8 *addr,
|
||||||
|
|
||||||
if (attr.msg_type && *attr.msg_type == WPS_M1)
|
if (attr.msg_type && *attr.msg_type == WPS_M1)
|
||||||
wps_er_sta_start(sta, msg);
|
wps_er_sta_start(sta, msg);
|
||||||
else if (sta->wps)
|
else if (sta->wps) {
|
||||||
wps_er_sta_process(sta, msg);
|
enum wsc_op_code op_code = WSC_MSG;
|
||||||
|
if (attr.msg_type) {
|
||||||
|
switch (*attr.msg_type) {
|
||||||
|
case WPS_WSC_ACK:
|
||||||
|
op_code = WSC_ACK;
|
||||||
|
break;
|
||||||
|
case WPS_WSC_NACK:
|
||||||
|
op_code = WSC_NACK;
|
||||||
|
break;
|
||||||
|
case WPS_WSC_DONE:
|
||||||
|
op_code = WSC_Done;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wps_er_sta_process(sta, msg, op_code);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue