P2PS: Reduce indentation in p2p_process_prov_disc_req()

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
Ilan Peer 2015-09-24 20:37:59 +03:00 committed by Jouni Malinen
parent f8a80e39b3
commit 20324d47f9

View file

@ -448,6 +448,8 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
u16 allowed_config_methods = WPS_CONFIG_DISPLAY | WPS_CONFIG_KEYPAD; u16 allowed_config_methods = WPS_CONFIG_DISPLAY | WPS_CONFIG_KEYPAD;
struct p2ps_feature_capab resp_fcap = { 0, 0 }; struct p2ps_feature_capab resp_fcap = { 0, 0 };
struct p2ps_feature_capab *req_fcap; struct p2ps_feature_capab *req_fcap;
u8 remote_conncap;
u16 method;
if (p2p_parse(data, len, &msg)) if (p2p_parse(data, len, &msg))
return; return;
@ -546,10 +548,11 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
* p2ps_feature_capab is extended to include additional fields and it * p2ps_feature_capab is extended to include additional fields and it
* affects the structure size. * affects the structure size.
*/ */
if (msg.adv_id && msg.session_id && msg.session_mac && msg.adv_mac && if (!msg.adv_id || !msg.session_id || !msg.session_mac ||
msg.feature_cap && msg.feature_cap_len >= sizeof(*req_fcap) && !msg.adv_mac || !msg.feature_cap ||
(msg.status || msg.conn_cap)) { msg.feature_cap_len < sizeof(*req_fcap) ||
u8 remote_conncap; !(msg.status || msg.conn_cap))
goto out;
req_fcap = (struct p2ps_feature_capab *) msg.feature_cap; req_fcap = (struct p2ps_feature_capab *) msg.feature_cap;
@ -570,20 +573,17 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
if (p2ps_adv) { if (p2ps_adv) {
auto_accept = p2ps_adv->auto_accept; auto_accept = p2ps_adv->auto_accept;
conncap = p2p->cfg->p2ps_group_capability( conncap = p2p->cfg->p2ps_group_capability(p2p->cfg->cb_ctx,
p2p->cfg->cb_ctx, conncap, auto_accept); conncap, auto_accept);
p2p_dbg(p2p, "Conncap: local:%d remote:%d result:%d", p2p_dbg(p2p, "Conncap: local:%d remote:%d result:%d",
auto_accept, remote_conncap, conncap); auto_accept, remote_conncap, conncap);
resp_fcap.cpt = resp_fcap.cpt = p2ps_own_preferred_cpt(p2ps_adv->cpt_priority,
p2ps_own_preferred_cpt(p2ps_adv->cpt_priority,
req_fcap->cpt); req_fcap->cpt);
p2p_dbg(p2p, p2p_dbg(p2p, "cpt: service:0x%x remote:0x%x result:0x%x",
"cpt: service:0x%x remote:0x%x result:0x%x", p2ps_adv->cpt_mask, req_fcap->cpt, resp_fcap.cpt);
p2ps_adv->cpt_mask, req_fcap->cpt,
resp_fcap.cpt);
if (!resp_fcap.cpt) { if (!resp_fcap.cpt) {
p2p_dbg(p2p, p2p_dbg(p2p,
@ -613,13 +613,10 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
if (auto_accept || reject != P2P_SC_SUCCESS) { if (auto_accept || reject != P2P_SC_SUCCESS) {
struct p2ps_provision *tmp; struct p2ps_provision *tmp;
if (reject == P2P_SC_SUCCESS && !conncap) { if (reject == P2P_SC_SUCCESS && !conncap)
reject = reject = P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
}
if (p2ps_setup_p2ps_prov( if (p2ps_setup_p2ps_prov(p2p, adv_id, session_id,
p2p, adv_id, session_id,
msg.wps_config_methods, msg.wps_config_methods,
session_mac, adv_mac) < 0) { session_mac, adv_mac) < 0) {
reject = P2P_SC_FAIL_UNABLE_TO_ACCOMMODATE; reject = P2P_SC_FAIL_UNABLE_TO_ACCOMMODATE;
@ -663,64 +660,58 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
tmp->status = reject; tmp->status = reject;
} }
if (msg.status) { /* Not a P2PS Follow-on PD */
if (*msg.status && if (!msg.status)
*msg.status != P2P_SC_SUCCESS_DEFERRED) { goto out;
reject = *msg.status;
} else if (*msg.status == P2P_SC_SUCCESS_DEFERRED &&
p2p->p2ps_prov) {
u16 method = p2p->p2ps_prov->method;
conncap = p2p->cfg->p2ps_group_capability( if (*msg.status && *msg.status != P2P_SC_SUCCESS_DEFERRED) {
p2p->cfg->cb_ctx, remote_conncap, reject = *msg.status;
goto out;
}
if (*msg.status != P2P_SC_SUCCESS_DEFERRED || !p2p->p2ps_prov)
goto out;
method = p2p->p2ps_prov->method;
conncap = p2p->cfg->p2ps_group_capability(p2p->cfg->cb_ctx,
remote_conncap,
p2p->p2ps_prov->conncap); p2p->p2ps_prov->conncap);
p2p_dbg(p2p, p2p_dbg(p2p, "Conncap: local:%d remote:%d result:%d",
"Conncap: local:%d remote:%d result:%d", p2p->p2ps_prov->conncap, remote_conncap, conncap);
p2p->p2ps_prov->conncap,
remote_conncap, conncap);
resp_fcap.cpt = p2ps_own_preferred_cpt( resp_fcap.cpt = p2ps_own_preferred_cpt(p2p->p2ps_prov->cpt_priority,
p2p->p2ps_prov->cpt_priority,
req_fcap->cpt); req_fcap->cpt);
p2p_dbg(p2p, p2p_dbg(p2p, "cpt: local:0x%x remote:0x%x result:0x%x",
"cpt: local:0x%x remote:0x%x result:0x%x", p2p->p2ps_prov->cpt_mask, req_fcap->cpt, resp_fcap.cpt);
p2p->p2ps_prov->cpt_mask,
req_fcap->cpt, resp_fcap.cpt);
/* /*
* Ensure that if we asked for PIN originally, * Ensure that if we asked for PIN originally, our method is consistent
* our method is consistent with original * with original request.
* request.
*/ */
if (method & WPS_CONFIG_DISPLAY) if (method & WPS_CONFIG_DISPLAY)
method = WPS_CONFIG_KEYPAD; method = WPS_CONFIG_KEYPAD;
else if (method & WPS_CONFIG_KEYPAD) else if (method & WPS_CONFIG_KEYPAD)
method = WPS_CONFIG_DISPLAY; method = WPS_CONFIG_DISPLAY;
if (!conncap || if (!conncap || !(msg.wps_config_methods & method)) {
!(msg.wps_config_methods & method)) {
/* /*
* Reject this "Deferred Accept* * Reject this "Deferred Accept*
* if incompatible conncap or method * if incompatible conncap or method
*/ */
reject = reject = P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
} else if (!resp_fcap.cpt) { } else if (!resp_fcap.cpt) {
p2p_dbg(p2p, p2p_dbg(p2p,
"Incompatible P2PS feature capability CPT bitmask"); "Incompatible P2PS feature capability CPT bitmask");
reject = reject = P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
P2P_SC_FAIL_INCOMPATIBLE_PARAMS;
} else { } else {
reject = P2P_SC_SUCCESS; reject = P2P_SC_SUCCESS;
} }
p2p->p2ps_prov->status = reject; p2p->p2ps_prov->status = reject;
p2p->p2ps_prov->conncap = conncap; p2p->p2ps_prov->conncap = conncap;
}
}
}
out: out:
if (reject == P2P_SC_SUCCESS || if (reject == P2P_SC_SUCCESS ||