2009-05-29 16 views
5

Tôi muốn biết lệnh iwlist quét các mạng không dây có sẵn như thế nào, trong linux. Tôi đọc mã nguồn của nó và có một cuộc gọi ioctl sử dụng SIOCSIWSCAN để kích hoạt quá trình quét và SIOCGIWSCAN để nhận kết quả quét. Nhưng cách các khung đèn hiệu được chụp và phân tích bằng các cuộc gọi hệ thống này?Làm thế nào để lệnh iwlist() quét các mạng không dây?

Trả lời

10

iwlist(8) và các công cụ không dây khác cung cấp giao diện người dùng chung cho các trình điều khiển thiết bị không dây khác nhau hỗ trợ Linux Wireless Extensions (WEXT). Mỗi trình điều khiển sẽ đăng ký các trình xử lý với WEXT thực hiện các hoạt động cụ thể của thiết bị được xác định bởi giao diện này. Để quét, hai trình xử lý được kích hoạt quét (lệnh SIOCSIWSCAN) và nhận kết quả quét (lệnh SIOCGIWSCAN). Sau khi thiết bị hoàn tất quét, nó sẽ gửi một sự kiện SIOCGIWSCAN tới WEXT qua giao diện netlink. Một ứng dụng nghe ổ cắm này sau đó có thể đưa ra lệnh SIOCGIWSCAN để nhận kết quả quét từ thiết bị. Lưu ý rằng thiết bị là miễn phí để thực hiện quét bao giờ nó chọn. Ví dụ, nó có thể thụ động nghe các cảnh báo hoặc chủ động quét bằng cách gửi các yêu cầu thăm dò.

Ở trên là cố ý mơ hồ về cơ chế gửi lệnh tới thiết bị vì có cách truyền thống (ioctl) và cách mới (netlink - cfg80211). Nhưng để có một ví dụ cụ thể, hãy xem xét cách truyền thống. Các cuộc gọi ioctl được thực hiện trong mô-đun WEXT nhưng mã xử lý lệnh này được thực hiện trong trình điều khiển thiết bị. Khi một ứng dụng không gian người dùng tạo một ioctl, WEXT tra cứu trình xử lý trình điều khiển thiết bị và chạy nó.

+0

OK .... cuộc gọi ioctl được thực hiện trong mô-đun trình điều khiển để cuộc gọi chức năng thực tế cho ioctl sử dụng SIOCGIWSCAN sẽ gọi một hàm được xác định trong mô-đun của trình điều khiển. –

Các vấn đề liên quan