* Johannes Berg <[EMAIL PROTECTED]> 2006-09-14 12:53
> This is some preliminary code how I'm currently thinking (and that might
> change radically :) ) configuration might look like.
>
> It uses the patch I previously posted to make genetlink attributes
> custom-definable.
>
> --- wireless-dev.orig/include/linux/nl80211.h 2006-09-13 22:06:10.539647141
> +0200
> +++ wireless-dev/include/linux/nl80211.h 2006-09-13 22:06:11.919647141
> +0200
> @@ -45,6 +45,47 @@ enum {
> /* get list of all interfaces belonging to a wiphy */
> NL80211_CMD_NEW_INTERFACES,
>
> + /* configure device */
> + NL80211_CMD_CONFIGURE,
> +
> + /* request configuration */
> + NL80211_CMD_GET_CONFIG,
> +
> + /* configuration sent from kernel */
> + NL80211_CMD_CONFIGURATION,
I think I brought this up already, it's a lot easier to understand
things if you keep it symmetric, i.e. NL80211_CMD_GET_CONFIG triggers
sending a NL80211_CMD_NEW_CONFIG.
> +static int check_information_element(struct nlattr *nla)
> +{
> + int len = nla_len(nla);
> + u8 *data = nla_data(nla);
> + int elementlen;
> +
> + while (len >= 2) {
> + /* 1 byte ID, 1 byte len, `len' bytes data */
> + elementlen = *(data+1) + 2;
> + data += elementlen;
> + len -= elementlen;
> + }
> + return len ? -EINVAL : 0;
> +}
> +
> static struct nla_policy nl80211_policy[NL80211_ATTR_MAX+1] __read_mostly = {
> [NL80211_ATTR_IFINDEX] = { .type = NLA_U32 },
> [NL80211_ATTR_WIPHY] = { .type = NLA_U32 },
> @@ -33,6 +49,17 @@ static struct nla_policy nl80211_policy[
> .len = NL80211_MAX_FRAME_LEN },
> [NL80211_ATTR_IFNAME] = { .type = NLA_NUL_STRING, .len = IFNAMSIZ-1 },
> [NL80211_ATTR_IFTYPE] = { .type = NLA_U32 },
> + [NL80211_ATTR_NETWORK_ID] = { .type = NLA_U16 },
> + [NL80211_ATTR_CHANNEL] = { .type = NLA_U32 },
> + [NL80211_ATTR_RX_SENSITIVITY] = { .type = NLA_U32 },
> + [NL80211_ATTR_BSSID] = { .len = 6 },
> + [NL80211_ATTR_SSID] = { .type = NLA_STRING, .len = 32 },
> + [NL80211_ATTR_TRANSMIT_POWER] = { .type = NLA_U32 },
> + [NL80211_ATTR_FRAG_THRESHOLD] = { .type = NLA_U32 },
> + [NL80211_ATTR_INFORMATION_ELEMENT] = { .type = NLA_CUSTOM_CHECK,
> + .check =
> check_information_element },
Just use a nested attribute here, this new array format you introduce
having 1 byte ID, 1 byte len is equivalent to using a set of nested
attributes with nla_type=id, nla_len=len.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html