char macbuf[6*3];
uint16_t tmp;
- if (!attr)
+ if (!attr) {
printf(" [no frame]");
+ return;
+ }
frame = nla_data(attr);
len = nla_len(attr);
if (!found_one)
printf("Unknown event type: %i\n", rssi_event);
- } else if (cqm[NL80211_ATTR_CQM_PKT_LOSS_EVENT] &&
- attrs[NL80211_ATTR_MAC]) {
- uint32_t frames;
- char buf[3*6];
-
- frames = nla_get_u32(cqm[NL80211_ATTR_CQM_PKT_LOSS_EVENT]);
- mac_addr_n2a(buf, nla_data(attrs[NL80211_ATTR_MAC]));
- printf("peer %s didn't ACK %d packets\n", buf, frames);
- } else
+ } else if (cqm[NL80211_ATTR_CQM_PKT_LOSS_EVENT]) {
+ if (attrs[NL80211_ATTR_MAC]) {
+ uint32_t frames;
+ char buf[3*6];
+
+ frames = nla_get_u32(cqm[NL80211_ATTR_CQM_PKT_LOSS_EVENT]);
+ mac_addr_n2a(buf, nla_data(attrs[NL80211_ATTR_MAC]));
+ printf("peer %s didn't ACK %d packets\n", buf, frames);
+ } else {
+ printf("PKT-LOSS-EVENT did not have MAC attribute!\n");
+ }
+ } else if (cqm[NL80211_ATTR_CQM_BEACON_LOSS_EVENT]) {
+ printf("beacon loss\n");
+ } else {
printf("unknown event\n");
+ }
}
static const char * key_type_str(enum nl80211_key_type key_type)
}
printf("\n");
break;
+ case NL80211_CMD_START_SCHED_SCAN:
+ printf("scheduled scan started\n");
+ break;
+ case NL80211_CMD_SCHED_SCAN_STOPPED:
+ printf("sched scan stopped\n");
+ break;
+ case NL80211_CMD_SCHED_SCAN_RESULTS:
+ printf("got scheduled scan results\n");
+ break;
case NL80211_CMD_REG_CHANGE:
printf("regulatory domain change: ");
nla_data(tb[NL80211_ATTR_VENDOR_DATA]),
nla_len(tb[NL80211_ATTR_VENDOR_DATA]));
break;
+ case NL80211_CMD_RADAR_DETECT:
+ printf("radar event ");
+ if (tb[NL80211_ATTR_RADAR_EVENT]) {
+ switch (nla_get_u32(tb[NL80211_ATTR_RADAR_EVENT])) {
+ case NL80211_RADAR_DETECTED:
+ printf("(radar detected)");
+ break;
+ case NL80211_RADAR_CAC_FINISHED:
+ printf("(cac finished)");
+ break;
+ case NL80211_RADAR_CAC_ABORTED:
+ printf("(cac aborted)");
+ break;
+ case NL80211_RADAR_NOP_FINISHED:
+ printf("(nop finished)");
+ break;
+ default:
+ printf("(unknown)");
+ break;
+ };
+ } else {
+ printf("(unknown)");
+ }
+ printf("\n");
+ break;
+ case NL80211_CMD_DEL_WIPHY:
+ printf("delete wiphy\n");
+ break;
default:
printf("unknown event %d (%s)\n",
gnlh->cmd, command_name(gnlh->cmd));
/* no sequence checking for multicast messages */
nl_cb_set(cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, no_seq_check, NULL);
+ nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, valid_handler, NULL);
if (n_waits && waits) {
wait_ev.cmds = waits;
wait_ev.n_cmds = n_waits;
wait_ev.pargs = args;
- nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, wait_event, &wait_ev);
+ register_handler(wait_event, &wait_ev);
} else
- nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, print_event, args);
+ register_handler(print_event, args);
wait_ev.cmd = 0;
}
static int print_events(struct nl80211_state *state,
- struct nl_cb *cb,
struct nl_msg *msg,
int argc, char **argv,
enum id_input id)