-}
-
-/*------------------------------------------------------------------*/
-/*
- * Get list of AP on all devices and print it on the screen
- */
-static void
-print_ap_devices(int skfd)
-{
- char buff[1024];
- struct ifconf ifc;
- struct ifreq *ifr;
- int i;
-
- /* Get list of active devices */
- ifc.ifc_len = sizeof(buff);
- ifc.ifc_buf = buff;
- if(ioctl(skfd, SIOCGIFCONF, &ifc) < 0)
- {
- fprintf(stderr, "SIOCGIFCONF: %s\n", strerror(errno));
- return;
- }
- ifr = ifc.ifc_req;
-
- /* Print them */
- for(i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++)
- print_ap_info(skfd, ifr->ifr_name);
-}
-
-/*------------------------------------------------------------------*/
-/*
- * Print the number of available bitrates for the device
- */
-static void
-print_bitrate_info(int skfd,
- char * ifname)
-{
- struct iwreq wrq;
- float bitrate;
- struct iw_range range;
- int k;
-
- strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
- wrq.u.data.pointer = (caddr_t) ⦥
- wrq.u.data.length = 0;
- wrq.u.data.flags = 0;
- if(ioctl(skfd, SIOCGIWRANGE, &wrq) < 0)
- fprintf(stderr, "%-8.8s no bit-rate information.\n\n",
- ifname);
- else
- {
- if((range.num_bitrates > 0) && (range.num_bitrates < IW_MAX_BITRATES))
- {
- printf("%-8.8s %d available bit-rates :\n",
- ifname, range.num_bitrates);
- /* Print them all */
- for(k = 0; k < range.num_bitrates; k++)
- {
- printf("\t ");
- bitrate = range.bitrate[k];
- if(bitrate >= GIGA)
- printf("%g Gb/s\n", bitrate / GIGA);
- else
- if(bitrate >= MEGA)
- printf("%g Mb/s\n", bitrate / MEGA);
- else
- printf("%g kb/s\n", bitrate / KILO);
- }
- printf("\n\n");
- }
- else
- printf("%-8.8s No bit-rates ? Please update driver...\n\n", ifname);
- }
-}
-
-/*------------------------------------------------------------------*/
-/*
- * Get bit-rate info on all devices and print it on the screen
- */
-static void
-print_bitrate_devices(int skfd)
-{
- char buff[1024];
- struct ifconf ifc;
- struct ifreq *ifr;
- int i;
-
- /* Get list of active devices */
- ifc.ifc_len = sizeof(buff);
- ifc.ifc_buf = buff;
- if(ioctl(skfd, SIOCGIFCONF, &ifc) < 0)
- {
- fprintf(stderr, "SIOCGIFCONF: %s\n", strerror(errno));
- return;
- }
- ifr = ifc.ifc_req;
-
- /* Print them */
- for(i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++)
- print_bitrate_info(skfd, ifr->ifr_name);
-}
-
-/*------------------------------------------------------------------*/
-/*
- * Print the number of available bitrates for the device
- */
-static void
-print_keys_info(int skfd,
- char * ifname)
-{
- struct iwreq wrq;
- struct iw_range range;
- unsigned char key[IW_ENCODING_TOKEN_MAX];
- int k;
-
- strncpy(wrq.ifr_name, ifname, IFNAMSIZ);
- wrq.u.data.pointer = (caddr_t) ⦥
- wrq.u.data.length = 0;
- wrq.u.data.flags = 0;
- if(ioctl(skfd, SIOCGIWRANGE, &wrq) < 0)
- fprintf(stderr, "%-8.8s no encryption keys information.\n\n",
- ifname);
- else
- {
- printf("%-8.8s ", ifname);
- if((range.num_encoding_sizes > 0) &&
- (range.num_encoding_sizes < IW_MAX_ENCODING_SIZES))
- {
- printf("%d key sizes : %d", range.num_encoding_sizes,
- range.encoding_size[0] * 8);
- /* Print them all */
- for(k = 1; k < range.num_encoding_sizes; k++)
- printf(", %d", range.encoding_size[k] * 8);
- printf("bits\n ");
- }
- printf("%d keys available :\n", range.max_encoding_tokens);
- for(k = 1; k <= range.max_encoding_tokens; k++)
- {
- strcpy(wrq.ifr_name, ifname);
- wrq.u.data.pointer = (caddr_t) key;
- wrq.u.data.length = 0;
- wrq.u.data.flags = k;
- if(ioctl(skfd, SIOCGIWENCODE, &wrq) < 0)
- {
- fprintf(stderr, "SIOCGIWENCODE: %s\n", strerror(errno));
- break;
- }
- if((wrq.u.data.flags & IW_ENCODE_DISABLED) ||
- (wrq.u.data.length == 0))
- printf("\t\t[%d]: off\n", k);
- else
- {
- int i;
-
- printf("\t\t[%d]: %.2X", k, key[0]);
- for(i = 1; i < wrq.u.data.length; i++)
- {
- if((i & 0x1) == 0)
- printf("-");
- printf("%.2X", key[i]);
- }
-
- /* Other info... */
- printf(" (%d bits)", wrq.u.data.length * 8);
- printf("\n");
- }
- }
-
- printf("\n\n");
- }
-}
-
-/*------------------------------------------------------------------*/
-/*
- * Get bit-rate info on all devices and print it on the screen
- */
-static void
-print_keys_devices(int skfd)
-{
- char buff[1024];
- struct ifconf ifc;
- struct ifreq *ifr;
- int i;
-
- /* Get list of active devices */
- ifc.ifc_len = sizeof(buff);
- ifc.ifc_buf = buff;
- if(ioctl(skfd, SIOCGIFCONF, &ifc) < 0)
- {
- fprintf(stderr, "SIOCGIFCONF: %s\n", strerror(errno));
- return;
- }
- ifr = ifc.ifc_req;
-
- /* Print them */
- for(i = ifc.ifc_len / sizeof(struct ifreq); --i >= 0; ifr++)
- print_keys_info(skfd, ifr->ifr_name);