Advertisement
Guest User

Untitled

a guest
Dec 26th, 2014
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. // build: gcc -o iwtest iwtest.c -liw
  2.  
  3. #include <stdio.h>
  4. #include <iwlib.h>
  5.  
  6. int main(int argc, const char **argv) {
  7. /* Check uid */
  8. if (getuid() != 0) {
  9. fprintf(stderr,"must be run as root.\n");
  10. return 1;
  11. }
  12. /* Check for interface name */
  13. char *ifname;
  14. if (!(ifname = (char *) argv[1])) {
  15. fprintf(stderr,"an interface name must be provided.\n");
  16. return 2;
  17. }
  18. /* Get basic wifi info */
  19. int we_ver, skfd, mode;
  20. wireless_scan_head context;
  21. wireless_config cur;
  22. we_ver = iw_get_kernel_we_version();
  23. skfd = iw_sockets_open();
  24. iw_get_basic_config(skfd,ifname,&cur);
  25. /* Bring up interface (eg "ip link set IFACE up") */
  26. struct ifreq req;
  27. int err;
  28. strncpy(req.ifr_name,ifname,IFNAMSIZ);
  29. if ( (err=ioctl(skfd,SIOCGIFFLAGS,&req)) ){
  30. int loop = 0;
  31. while ( (err=ioctl(skfd,SIOCGIFFLAGS,&req)) ) {
  32. usleep(100000);
  33. if (loop++ > 50) break;
  34. }
  35. if (err) {
  36. close(skfd);
  37. fprintf(stderr,"unable to set \"%s\" down.\n", ifname);
  38. return 3;
  39. }
  40. }
  41. req.ifr_flags |= IFF_UP;
  42. if (ioctl(skfd,SIOCSIFFLAGS,&req)) {
  43. fprintf(stderr,"unable to set \"%s\" up.\n", ifname);
  44. close(skfd); return 3;
  45. }
  46. /* Scan and select network */
  47. iw_scan(skfd,ifname,we_ver,&context);
  48. wireless_scan *ws;
  49. /* list */
  50. int i = 0;
  51. for (ws = context.result; ws; ws = ws->next)
  52. printf("%d: %s\n", ++i, ws->b.essid);
  53. /* close down */
  54. iw_sockets_close(skfd);
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement