mesh: Do NL80211_MESHCONF_* setting in single function

Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
This commit is contained in:
Masashi Honma 2016-08-05 17:35:29 +09:00 committed by Jouni Malinen
parent a1431ef8df
commit 4ffb3f870d

View File

@ -8413,6 +8413,38 @@ static int nl80211_put_mesh_id(struct nl_msg *msg, const u8 *mesh_id,
}
static int nl80211_put_mesh_config(struct nl_msg *msg,
struct wpa_driver_mesh_bss_params *params)
{
struct nlattr *container;
container = nla_nest_start(msg, NL80211_ATTR_MESH_CONFIG);
if (!container)
return -1;
if (nla_put_u32(msg, NL80211_MESHCONF_AUTO_OPEN_PLINKS,
!!(params->flags &
WPA_DRIVER_MESH_CONF_FLAG_AUTO_PLINKS)) ||
nla_put_u16(msg, NL80211_MESHCONF_MAX_PEER_LINKS,
params->max_peer_links))
return -1;
/*
* Set NL80211_MESHCONF_PLINK_TIMEOUT even if user mpm is used because
* the timer could disconnect stations even in that case.
*/
if (nla_put_u32(msg, NL80211_MESHCONF_PLINK_TIMEOUT,
params->peer_link_timeout)) {
wpa_printf(MSG_ERROR, "nl80211: Failed to set PLINK_TIMEOUT");
return -1;
}
nla_nest_end(msg, container);
return 0;
}
static int nl80211_join_mesh(struct i802_bss *bss,
struct wpa_driver_mesh_join_params *params)
{
@ -8457,29 +8489,9 @@ static int nl80211_join_mesh(struct i802_bss *bss,
goto fail;
nla_nest_end(msg, container);
container = nla_nest_start(msg, NL80211_ATTR_MESH_CONFIG);
if (!container)
if (nl80211_put_mesh_config(msg, &params->conf) < 0)
goto fail;
if (!(params->conf.flags & WPA_DRIVER_MESH_CONF_FLAG_AUTO_PLINKS) &&
nla_put_u32(msg, NL80211_MESHCONF_AUTO_OPEN_PLINKS, 0))
goto fail;
if (nla_put_u16(msg, NL80211_MESHCONF_MAX_PEER_LINKS,
params->conf.max_peer_links))
goto fail;
/*
* Set NL80211_MESHCONF_PLINK_TIMEOUT even if user mpm is used because
* the timer could disconnect stations even in that case.
*/
if (nla_put_u32(msg, NL80211_MESHCONF_PLINK_TIMEOUT,
params->conf.peer_link_timeout)) {
wpa_printf(MSG_ERROR, "nl80211: Failed to set PLINK_TIMEOUT");
goto fail;
}
nla_nest_end(msg, container);
ret = send_and_recv_msgs(drv, msg, NULL, NULL);
msg = NULL;
if (ret) {