+#if WIRELESS_EXT > 15
+ case SIOCGIWTHRSPY:
+ {
+ struct iw_thrspy threshold;
+ int skfd;
+ struct iw_range range;
+ int has_range = 0;
+ if((event->u.data.pointer) && (event->u.data.length))
+ {
+ memcpy(&threshold, event->u.data.pointer,
+ sizeof(struct iw_thrspy));
+ if((skfd = iw_sockets_open()) >= 0)
+ {
+ has_range = (iw_get_range_info(skfd, ifname, &range) >= 0);
+ close(skfd);
+ }
+ printf("Spy threshold crossed on address:%s\n",
+ iw_pr_ether(buffer, threshold.addr.sa_data));
+ threshold.qual.updated = 0x0; /* Not that reliable, disable */
+ iw_print_stats(buffer, &threshold.qual, &range, has_range);
+ printf(" Link %s\n", buffer);
+ }
+ else
+ printf("Invalid Spy Threshold event\n");
+ }
+ break;
+#else
+ /* Avoid "Unused parameter" warning */
+ ifname = ifname;
+#endif /* WIRELESS_EXT > 15 */