Как команда iwlist() сканирует беспроводные сети?

StackOverflow https://stackoverflow.com/questions/925669

  •  06-09-2019
  •  | 
  •  

Вопрос

Я хочу знать, как команда iwlist сканирует доступные беспроводные сети в Linux.Я прочитал его исходный код, и там был вызов ioctl с использованием SIOCSIWSCAN для запуска сканирования и SIOCGIWSCAN для получения результатов сканирования.Но как кадры маяка захватываются и анализируются этими системными вызовами?

Это было полезно?

Решение

список событий (8) а другие беспроводные инструменты предоставляют общий интерфейс для различных драйверов беспроводных устройств, поддерживающих Расширения беспроводной сети Linux (WEXT).Каждый драйвер зарегистрирует обработчики в WEXT, которые реализуют операции, специфичные для конкретного устройства, определенные этим интерфейсом.Для сканирования используются два обработчика: запуск сканирования (команда SIOCSIWSCAN) и получение результатов сканирования (команда SIOCGIWSCAN).После завершения сканирования устройство отправляет событие SIOCGIWSCAN в WEXT через сетевая ссылка интерфейс.Приложение, прослушивающее этот сокет, может затем выдать команду SIOCGIWSCAN для получения результатов сканирования с устройства.Обратите внимание, что устройство может свободно выполнять сканирование по своему усмотрению.Например, он может пассивно прослушивать сигналы маяков или активно сканировать, отправляя зондирующие запросы.

Приведенное выше намеренно расплывчато описывает механику отправки команд на устройство, потому что существует традиционный способ (ioctl) и новый способ (netlink - cfg80211).Но чтобы взять конкретный пример, рассмотрим традиционный способ.Вызовы ioctl реализованы в модуле WEXT, но код, обрабатывающий эту команду, реализован в драйвере устройства.Когда приложение пользовательского пространства создает ioctl, WEXT ищет обработчик драйвера устройства и запускает его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top