]> git.ipfire.org Git - thirdparty/iw.git/blobdiff - iw.h
iw: add missing station statistics
[thirdparty/iw.git] / iw.h
diff --git a/iw.h b/iw.h
index 1d7c4ea19077dee6c8bc48cffe49f0b33911da58..3ab260637db8b5c0ddedf486e09360f5e9b87e2c 100644 (file)
--- a/iw.h
+++ b/iw.h
@@ -38,6 +38,9 @@ enum id_input {
        II_WDEV,
 };
 
+#define HANDLER_RET_USAGE 1
+#define HANDLER_RET_DONE 3
+
 struct cmd {
        const char *name;
        const char *args;
@@ -48,17 +51,24 @@ struct cmd {
        const enum command_identify_by idby;
        /*
         * The handler should return a negative error code,
-        * zero on success, 1 if the arguments were wrong
-        * and the usage message should and 2 otherwise.
+        * zero on success, 1 if the arguments were wrong.
+        * Return 2 iff you provide the error message yourself.
         */
        int (*handler)(struct nl80211_state *state,
-                      struct nl_cb *cb,
                       struct nl_msg *msg,
-                      int argc, char **argv);
+                      int argc, char **argv,
+                      enum id_input id);
        const struct cmd *(*selector)(int argc, char **argv);
        const struct cmd *parent;
 };
 
+struct chanmode {
+       const char *name;
+       unsigned int width;
+       int freq1_diff;
+       int chantype; /* for older kernel */
+};
+
 #define ARRAY_SIZE(ar) (sizeof(ar)/sizeof(ar[0]))
 #define DIV_ROUND_UP(x, y) (((x) + (y - 1)) / (y))
 
@@ -129,6 +139,8 @@ __u32 __do_listen_events(struct nl80211_state *state,
                         const int n_waits, const __u32 *waits,
                         struct print_event_args *args);
 
+int valid_handler(struct nl_msg *msg, void *arg);
+void register_handler(int (*handler)(struct nl_msg *, void *), void *data);
 
 int mac_addr_a2n(unsigned char *mac_addr, char *arg);
 void mac_addr_n2a(char *mac_addr, unsigned char *arg);
@@ -142,10 +154,12 @@ void print_ht_mcs(const __u8 *mcs);
 void print_ampdu_length(__u8 exponent);
 void print_ampdu_spacing(__u8 spacing);
 void print_ht_capability(__u16 cap);
+void print_vht_info(__u32 capa, const __u8 *mcs);
 
+char *channel_width_name(enum nl80211_chan_width width);
 const char *iftype_name(enum nl80211_iftype iftype);
 const char *command_name(enum nl80211_commands cmd);
-int ieee80211_channel_to_frequency(int chan);
+int ieee80211_channel_to_frequency(int chan, enum nl80211_band band);
 int ieee80211_frequency_to_channel(int freq);
 
 void print_ssid_escaped(const uint8_t len, const uint8_t *data);
@@ -167,6 +181,14 @@ enum print_ie_type {
 void print_ies(unsigned char *ie, int ielen, bool unknown,
               enum print_ie_type ptype);
 
+void parse_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen);
+void iw_hexdump(const char *prefix, const __u8 *data, size_t len);
+
+int get_cf1(const struct chanmode *chanmode, unsigned long freq);
+
+#define SCHED_SCAN_OPTIONS "interval <in_msecs> [delay <in_secs>] " \
+       "[freqs <freq>+] [matches [ssid <ssid>]+]] [active [ssid <ssid>]+|passive] [randomise[=<addr>/<mask>]]"
+int parse_sched_scan(struct nl_msg *msg, int *argc, char ***argv);
 
 DECLARE_SECTION(set);
 DECLARE_SECTION(get);