On Fri, 2014-10-10 at 20:55 +0300, Jouni Malinen wrote:

>   * @mac: MAC address of the station to remove or NULL to remove all stations
> + * @subtype: Management frame subtype to use for indicating removal
> + *   (0 = no guidance on whether to indicate the removal to the station is
> + *   provided, 10 = Disassociation, 12 = Deauthentication)
> + * @reason_code: Reason code for the Disassociation/Deauthentication frame
>   */
>  struct station_del_parameters {
>       const u8 *mac;
> +     u8 subtype;
> +     u16 reason_code;

the reason_code could end up being zero right now, if userspace doesn't
specify the attribute.

> +     if (info->attrs[NL80211_ATTR_MGMT_SUBTYPE]) {
> +             params.subtype =
> +                     nla_get_u8(info->attrs[NL80211_ATTR_MGMT_SUBTYPE]);
> +             if (params.subtype != IEEE80211_STYPE_DISASSOC >> 4 &&
> +                 params.subtype != IEEE80211_STYPE_DEAUTH >> 4)
> +                     return -EINVAL;
> +     }
> +
> +     if (info->attrs[NL80211_ATTR_REASON_CODE]) {
> +             params.reason_code =
> +                     nla_get_u16(info->attrs[NL80211_ATTR_REASON_CODE]);
> +             if (params.reason_code == 0)
> +                     return -EINVAL; /* 0 is reserved */
> +     }

I think you should probably force a reason code to be given when
specifying the subtype. And I'm thinking that defaulting to deauth/3
would be better than leaving it up to the driver(s)?

johannes

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to