5 #include <netlink/genl/genl.h>
6 #include <netlink/genl/family.h>
7 #include <netlink/genl/ctrl.h>
8 #include <netlink/msg.h>
9 #include <netlink/attr.h>
14 static int handle_name(struct nl80211_state
*state
,
17 int argc
, char **argv
)
22 NLA_PUT_STRING(msg
, NL80211_ATTR_WIPHY_NAME
, *argv
);
28 COMMAND(set
, name
, "<new name>", NL80211_CMD_SET_WIPHY
, 0, CIB_PHY
, handle_name
,
29 "Rename this wireless device.");
31 static int handle_freqchan(struct nl_msg
*msg
, bool chan
,
32 int argc
, char **argv
)
38 { .name
= "HT20", .val
= NL80211_CHAN_HT20
, },
39 { .name
= "HT40+", .val
= NL80211_CHAN_HT40PLUS
, },
40 { .name
= "HT40-", .val
= NL80211_CHAN_HT40MINUS
, },
42 unsigned int htval
= NL80211_CHAN_NO_HT
;
46 if (!argc
|| argc
> 2)
50 for (i
= 0; i
< ARRAY_SIZE(htmap
); i
++) {
51 if (strcasecmp(htmap
[i
].name
, argv
[1]) == 0) {
56 if (htval
== NL80211_CHAN_NO_HT
)
60 freq
= strtoul(argv
[0], NULL
, 10);
62 freq
= ieee80211_channel_to_frequency(freq
);
64 NLA_PUT_U32(msg
, NL80211_ATTR_WIPHY_FREQ
, freq
);
65 NLA_PUT_U32(msg
, NL80211_ATTR_WIPHY_CHANNEL_TYPE
, htval
);
72 static int handle_freq(struct nl80211_state
*state
,
73 struct nl_cb
*cb
, struct nl_msg
*msg
,
74 int argc
, char **argv
)
76 return handle_freqchan(msg
, false, argc
, argv
);
78 COMMAND(set
, freq
, "<freq> [HT20|HT40+|HT40-]",
79 NL80211_CMD_SET_WIPHY
, 0, CIB_PHY
, handle_freq
,
80 "Set frequency/channel the hardware is using, including HT\n"
82 COMMAND(set
, freq
, "<freq> [HT20|HT40+|HT40-]",
83 NL80211_CMD_SET_WIPHY
, 0, CIB_NETDEV
, handle_freq
, NULL
);
85 static int handle_chan(struct nl80211_state
*state
,
86 struct nl_cb
*cb
, struct nl_msg
*msg
,
87 int argc
, char **argv
)
89 return handle_freqchan(msg
, true, argc
, argv
);
91 COMMAND(set
, channel
, "<channel> [HT20|HT40+|HT40-]",
92 NL80211_CMD_SET_WIPHY
, 0, CIB_PHY
, handle_chan
, NULL
);
93 COMMAND(set
, channel
, "<channel> [HT20|HT40+|HT40-]",
94 NL80211_CMD_SET_WIPHY
, 0, CIB_NETDEV
, handle_chan
, NULL
);