--- a/nl80211.h
+++ b/nl80211.h
-@@ -1817,6 +1817,11 @@ enum nl80211_commands {
- * @NL80211_ATTR_STA_SUPPORT_P2P_PS: whether P2P PS mechanism supported
- * or not. u8, one of the values of &enum nl80211_sta_p2p_ps_status
+@@ -1937,6 +1937,11 @@ enum nl80211_commands {
+ * @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute.
+ * See &enum nl80211_nan_match_attributes.
*
+ * @NL80211_ATTR_PAD: attribute used for padding for 64-bit alignment
+ *
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -2197,6 +2202,10 @@ enum nl80211_attrs {
-
- NL80211_ATTR_STA_SUPPORT_P2P_PS,
+@@ -2336,6 +2341,10 @@ enum nl80211_attrs {
+ NL80211_ATTR_NAN_FUNC,
+ NL80211_ATTR_NAN_MATCH,
+ NL80211_ATTR_PAD,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
-@@ -2513,6 +2522,7 @@ enum nl80211_sta_bss_param {
- * attributes carrying the actual values.
- * @NL80211_STA_INFO_RX_DURATION: aggregate PPDU duration for all frames
- * received from the station (u64, usec)
-+ * @NL80211_STA_INFO_PAD: attribute used for padding for 64-bit alignment
- * @__NL80211_STA_INFO_AFTER_LAST: internal
- * @NL80211_STA_INFO_MAX: highest possible station info attribute
- */
-@@ -2550,6 +2560,7 @@ enum nl80211_sta_info {
- NL80211_STA_INFO_BEACON_SIGNAL_AVG,
- NL80211_STA_INFO_TID_STATS,
- NL80211_STA_INFO_RX_DURATION,
-+ NL80211_STA_INFO_PAD,
-
- /* keep last */
- __NL80211_STA_INFO_AFTER_LAST,
-@@ -2566,6 +2577,7 @@ enum nl80211_sta_info {
- * transmitted MSDUs (not counting the first attempt; u64)
- * @NL80211_TID_STATS_TX_MSDU_FAILED: number of failed transmitted
- * MSDUs (u64)
-+ * @NL80211_TID_STATS_PAD: attribute used for padding for 64-bit alignment
- * @NUM_NL80211_TID_STATS: number of attributes here
- * @NL80211_TID_STATS_MAX: highest numbered attribute here
- */
-@@ -2575,6 +2587,7 @@ enum nl80211_tid_stats {
- NL80211_TID_STATS_TX_MSDU,
- NL80211_TID_STATS_TX_MSDU_RETRIES,
- NL80211_TID_STATS_TX_MSDU_FAILED,
-+ NL80211_TID_STATS_PAD,
-
- /* keep last */
- NUM_NL80211_TID_STATS,
-@@ -3011,6 +3024,7 @@ enum nl80211_user_reg_hint_type {
- * transmitting data (on channel or globally)
- * @NL80211_SURVEY_INFO_TIME_SCAN: time the radio spent for scan
- * (on this channel or globally)
-+ * @NL80211_SURVEY_INFO_PAD: attribute used for padding for 64-bit alignment
- * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number
- * currently defined
- * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use
-@@ -3026,6 +3040,7 @@ enum nl80211_survey_info {
- NL80211_SURVEY_INFO_TIME_RX,
- NL80211_SURVEY_INFO_TIME_TX,
- NL80211_SURVEY_INFO_TIME_SCAN,
-+ NL80211_SURVEY_INFO_PAD,
-
- /* keep last */
- __NL80211_SURVEY_INFO_AFTER_LAST,
-@@ -3451,6 +3466,7 @@ enum nl80211_bss_scan_width {
- * @NL80211_BSS_LAST_SEEN_BOOTTIME: CLOCK_BOOTTIME timestamp when this entry
- * was last updated by a received frame. The value is expected to be
- * accurate to about 10ms. (u64, nanoseconds)
-+ * @NL80211_BSS_PAD: attribute used for padding for 64-bit alignment
- * @__NL80211_BSS_AFTER_LAST: internal
- * @NL80211_BSS_MAX: highest BSS attribute
- */
-@@ -3471,6 +3487,7 @@ enum nl80211_bss {
- NL80211_BSS_BEACON_TSF,
- NL80211_BSS_PRESP_DATA,
- NL80211_BSS_LAST_SEEN_BOOTTIME,
-+ NL80211_BSS_PAD,
-
- /* keep last */
- __NL80211_BSS_AFTER_LAST,
case NL80211_CMD_JOIN_IBSS:
mac_addr_n2a(macbuf, nla_data(tb[NL80211_ATTR_MAC]));
printf("IBSS %s joined\n", macbuf);
-@@ -610,9 +613,9 @@ static int print_event(struct nl_msg *ms
+@@ -612,9 +615,9 @@ static int print_event(struct nl_msg *ms
case NL80211_CMD_DEL_WIPHY:
printf("delete wiphy\n");
break;
--- a/info.c
+++ b/info.c
-@@ -217,6 +217,7 @@ next:
+@@ -197,6 +197,7 @@ next:
}
}
if (tb_band[NL80211_BAND_ATTR_RATES]) {
printf("\t\tBitrates (non-HT):\n");
nla_for_each_nested(nl_rate, tb_band[NL80211_BAND_ATTR_RATES], rem_rate) {
-@@ -233,6 +234,7 @@ next:
+@@ -213,6 +214,7 @@ next:
printf("\n");
}
}
}
}
-@@ -298,6 +300,7 @@ next:
+@@ -278,6 +280,7 @@ next:
printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage);
}
if (tb_msg[NL80211_ATTR_CIPHER_SUITES]) {
int num = nla_len(tb_msg[NL80211_ATTR_CIPHER_SUITES]) / sizeof(__u32);
int i;
-@@ -309,6 +312,7 @@ next:
+@@ -289,6 +292,7 @@ next:
cipher_name(ciphers[i]));
}
}
if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX] &&
tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX])
-@@ -328,11 +332,13 @@ next:
+@@ -308,11 +312,13 @@ next:
printf("\t\t * %s\n", iftype_name(nla_type(nl_mode)));
}
if (tb_msg[NL80211_ATTR_INTERFACE_COMBINATIONS]) {
struct nlattr *nl_combi;
-@@ -429,6 +435,7 @@ broken_combination:
+@@ -409,6 +415,7 @@ broken_combination:
printf("\tinterface combinations are not supported\n");
}
if (tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS]) {
printf("\tSupported commands:\n");
nla_for_each_nested(nl_cmd, tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS], rem_cmd)
-@@ -526,6 +533,7 @@ broken_combination:
+@@ -506,6 +513,7 @@ broken_combination:
printf("\t\t * wake up on TCP connection\n");
}
}
if (tb_msg[NL80211_ATTR_ROAM_SUPPORT])
printf("\tDevice supports roaming.\n");
-@@ -564,6 +572,7 @@ broken_combination:
+@@ -544,6 +552,7 @@ broken_combination:
}
}
if (tb_msg[NL80211_ATTR_FEATURE_FLAGS]) {
unsigned int features = nla_get_u32(tb_msg[NL80211_ATTR_FEATURE_FLAGS]);
-@@ -622,6 +631,7 @@ broken_combination:
+@@ -602,6 +611,7 @@ broken_combination:
if (features & NL80211_FEATURE_TDLS_CHANNEL_SWITCH)
printf("\tDevice supports TDLS channel switching\n");
}
if (tb_msg[NL80211_ATTR_EXT_FEATURES]) {
struct nlattr *tb = tb_msg[NL80211_ATTR_EXT_FEATURES];
-@@ -678,6 +688,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP
+@@ -658,6 +668,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP
"List all wireless devices and their capabilities.");
TOPLEVEL(phy, NULL, NL80211_CMD_GET_WIPHY, NLM_F_DUMP, CIB_NONE, handle_info, NULL);
static int handle_commands(struct nl80211_state *state, struct nl_msg *msg,
int argc, char **argv, enum id_input id)
{
-@@ -689,6 +700,7 @@ static int handle_commands(struct nl8021
+@@ -669,6 +680,7 @@ static int handle_commands(struct nl8021
}
TOPLEVEL(commands, NULL, NL80211_CMD_GET_WIPHY, 0, CIB_NONE, handle_commands,
"list all known commands and their decimal & hex value");
printf("\tbeacon interval: %d TUs\n",
--- a/util.c
+++ b/util.c
-@@ -268,6 +268,7 @@ static const char *commands[NL80211_CMD_
+@@ -275,6 +275,7 @@ static const char *commands[NL80211_CMD_
static char cmdbuf[100];
const char *command_name(enum nl80211_commands cmd)
{
if (cmd <= NL80211_CMD_MAX && commands[cmd])
-@@ -275,6 +276,7 @@ const char *command_name(enum nl80211_co
+@@ -282,6 +283,7 @@ const char *command_name(enum nl80211_co
sprintf(cmdbuf, "Unknown command (%d)", cmd);
return cmdbuf;
}