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 nl_cb
*cb
,
16 int argc
, char **argv
)
21 NLA_PUT_STRING(msg
, NL80211_ATTR_WIPHY_NAME
, *argv
);
27 COMMAND(set
, name
, "<new name>", NL80211_CMD_SET_WIPHY
, 0, CIB_PHY
, handle_name
);
29 static int handle_freqchan(struct nl_msg
*msg
, bool chan
,
30 int argc
, char **argv
)
36 { .name
= "HT20", .val
= NL80211_SEC_CHAN_DISABLED
, },
37 { .name
= "HT40+", .val
= NL80211_SEC_CHAN_ABOVE
, },
38 { .name
= "HT40-", .val
= NL80211_SEC_CHAN_BELOW
, },
40 unsigned int htval
= NL80211_SEC_CHAN_NO_HT
;
44 if (!argc
|| argc
> 2)
48 for (i
= 0; i
< sizeof(htmap
)/sizeof(htmap
[0]); i
++) {
49 if (strcasecmp(htmap
[i
].name
, argv
[1]) == 0) {
54 if (htval
== NL80211_SEC_CHAN_NO_HT
)
58 freq
= strtoul(argv
[0], NULL
, 10);
60 freq
= ieee80211_channel_to_frequency(freq
);
62 NLA_PUT_U32(msg
, NL80211_ATTR_WIPHY_FREQ
, freq
);
63 NLA_PUT_U32(msg
, NL80211_ATTR_WIPHY_SEC_CHAN_OFFSET
, htval
);
70 static int handle_freq(struct nl_cb
*cb
, struct nl_msg
*msg
,
71 int argc
, char **argv
)
73 return handle_freqchan(msg
, false, argc
, argv
);
75 COMMAND(set
, freq
, "<freq> [HT20|HT40+|HT40-]",
76 NL80211_CMD_SET_WIPHY
, 0, CIB_PHY
, handle_freq
);
77 COMMAND(set
, freq
, "<freq> [HT20|HT40+|HT40-]",
78 NL80211_CMD_SET_WIPHY
, 0, CIB_NETDEV
, handle_freq
);
80 static int handle_chan(struct nl_cb
*cb
, struct nl_msg
*msg
,
81 int argc
, char **argv
)
83 return handle_freqchan(msg
, true, argc
, argv
);
85 COMMAND(set
, channel
, "<channel> [HT20|HT40+|HT40-]",
86 NL80211_CMD_SET_WIPHY
, 0, CIB_PHY
, handle_chan
);
87 COMMAND(set
, channel
, "<channel> [HT20|HT40+|HT40-]",
88 NL80211_CMD_SET_WIPHY
, 0, CIB_NETDEV
, handle_chan
);