aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMasashi Honma <masashi.honma@gmail.com>2016-08-05 08:35:29 (GMT)
committerJouni Malinen <j@w1.fi>2016-08-18 17:37:38 (GMT)
commit4ffb3f870d912d1ac625e5ab2f61b07728ecd19d (patch)
tree74317eeaa6d0df425d688799265fc1876e52b9e9 /src
parenta1431ef8df30eb7ede9a0a95693f17c45ca5fd39 (diff)
downloadhostap-4ffb3f870d912d1ac625e5ab2f61b07728ecd19d.zip
hostap-4ffb3f870d912d1ac625e5ab2f61b07728ecd19d.tar.gz
hostap-4ffb3f870d912d1ac625e5ab2f61b07728ecd19d.tar.bz2
mesh: Do NL80211_MESHCONF_* setting in single function
Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/drivers/driver_nl80211.c54
1 files changed, 33 insertions, 21 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index f27b149..cbbcf66 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -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,28 +8489,8 @@ 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)
- 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");
+ if (nl80211_put_mesh_config(msg, &params->conf) < 0)
goto fail;
- }
-
- nla_nest_end(msg, container);
ret = send_and_recv_msgs(drv, msg, NULL, NULL);
msg = NULL;