Comment le fait des analyses de commande (iwlist) les réseaux sans fil?
Question
Je veux savoir comment commande iwlist scanne les réseaux sans fil disponibles, sous Linux. J'ai lu son code source et il y avait un appel ioctl à l'aide SIOCSIWSCAN pour déclencher l'analyse et SIOCGIWSCAN pour obtenir les résultats de l'analyse. Mais comment les trames de balise sont capturés et analysés par ces appels système?
La solution
iwlist (8) et les autres outils sans fil fournissent une extrémité avant commune aux différents les pilotes de périphériques sans fil qui prennent en charge ( WEXT). Chaque pilote enregistrera les gestionnaires avec WEXT qui mettent en œuvre le dispositif des opérations spécifiques définies par cette interface. Pour l'analyse, les deux gestionnaires sont de balayage de déclenchement (commande SIOCSIWSCAN) et obtenir des résultats d'analyse (commande de SIOCGIWSCAN). Une fois l'appareil effectue une analyse, il envoie un événement SIOCGIWSCAN à WEXT via un de. Une application d'écoute à cette prise peut alors émettre une commande SIOCGIWSCAN pour obtenir les résultats d'analyse de l'appareil. Notez que l'appareil est libre de mettre en œuvre l'analyse comment jamais son choix. Par exemple, il peut écouter passivement des balises ou scannez activement en envoyant des demandes de sonde.
Ce qui précède est délibérément vague sur la mécanique d'envoyer des commandes à un dispositif, car il y a la manière traditionnelle (ioctl) et la nouvelle façon (NetLink - cfg80211). Mais pour prendre un exemple concret, pensez à la manière traditionnelle. Les appels ioctl sont mis en œuvre dans le module WEXT mais le code qui gère cette commande est mis en œuvre dans le pilote de périphérique. Lorsqu'une application de l'espace utilisateur fait un ioctl, WEXT regarde le gestionnaire du pilote de périphérique et l'exécute.