|
@@ -6669,6 +6669,21 @@ static int nl80211_join_mesh(struct sk_buff *skb, struct genl_info *info)
|
|
|
nla_get_u32(info->attrs[NL80211_ATTR_MCAST_RATE])))
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ if (info->attrs[NL80211_ATTR_BEACON_INTERVAL]) {
|
|
|
+ setup.beacon_interval =
|
|
|
+ nla_get_u32(info->attrs[NL80211_ATTR_BEACON_INTERVAL]);
|
|
|
+ if (setup.beacon_interval < 10 ||
|
|
|
+ setup.beacon_interval > 10000)
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (info->attrs[NL80211_ATTR_DTIM_PERIOD]) {
|
|
|
+ setup.dtim_period =
|
|
|
+ nla_get_u32(info->attrs[NL80211_ATTR_DTIM_PERIOD]);
|
|
|
+ if (setup.dtim_period < 1 || setup.dtim_period > 100)
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
if (info->attrs[NL80211_ATTR_MESH_SETUP]) {
|
|
|
/* parse additional setup parameters if given */
|
|
|
err = nl80211_parse_mesh_setup(info, &setup);
|