sourcecode

nl80211 라이브러리 및 cfg80211 구조

copyscript 2022. 8. 16. 23:35
반응형

nl80211 라이브러리 및 cfg80211 구조

어떻게 하는지 알고 싶다.nl80211그리고.cfg80211상세하게 동작합니다.함수 흐름, 방법nl80211와 같은 네트워크 도구와 상호 작용합니다.wpa_supplicant,iw.

참고할 만한 유용한 링크나 책을 추천해 주세요.

사용자 공간에서 무선 드라이버를 제어할 수 있도록 커널과 사용자 공간 간의 IPC 통신 프로세스가 사용됩니다.

  • 처음에ioctl벤더 의존형 API가 사용되었습니다.
  • 1996년에 Jean Torrilhs는 무선 확장(WE 또는 WEXT)을 작성했습니다.

Wireless Extension(WE; 무선 익스텐션)은 일반적인 API로 드라이버는 일반적인 무선 LAN 고유의 사용자 공간 설정 및 통계 정보를 볼 수 있습니다.

  • 2006년에 John Linville은 mac80211을, Johannes Berg는 cfg80211nl80211을 작성했습니다.이 조합은 무선 확장을 대체하는 것을 목적으로 하고 있습니다.

    +-------------+
    |             |
    |  Userspace  |
    |             |
    +-------------+
          ^
    - - - | - - - - 
          | nl80211
          v
    +-------------+
    |             |
    |  cfg80211   |
    |             |
    +-------------+
    +-------------+
    |             |
    |  mac80211   |
    |   driver    |
    |             |
    +-------------+
    

중요한 점은 nl80211/cfg80211/mac80211은 ioctl을 사용하지 않고 netlink를 사용한다는 것입니다.

따라서 iw, hostapd 또는 wpa_supplicant같은 툴은 몇 가지 netlink 라이브러리(libnl 또는 libnl-tiny 등)와 nl80211.h인 netlink 인터페이스 퍼블릭헤더를 사용합니다.

문서 수는 많지 않지만 libnl 문서를 읽고 iw 소스 코드를 읽어보시길 권장합니다(iw는 libnl을 사용하므로).

조금 더 상세하게 설명하겠습니다.nl80211그리고.cfg80211시스템의 다른 부품과 연계하여 작업합니다).user space,kernel,그리고.hardware).

  • nl80211는 사용자 공간 소프트웨어 간의 인터페이스입니다(iw,wpa_supplicant, 등) 및 커널(cfg80211그리고.mac80211커널 모듈 및 특정 드라이버)를 참조해 주세요.
  • WiFi 드라이버와 하드웨어는 Full-MAC 또는 Soft-MAC입니다(Wireless_network_interface_controller 참조).
  • cfg80211_ops는, 풀 MAC 드라이버와 그 드라이버의 조작 세트입니다.mac80211모듈 레지스터cfg80211모듈.
  • ieee80211_opsSoft-MAC 드라이버가 등록하는 일련의 조작입니다.mac80211모듈.

여기에 이미지 설명 입력

Linux 무선 드라이버 구조 학습 방법(mac80211)에 대한 답변을 참조하십시오.

wpa_supplicant, 의 코드를 따를 수 있습니다.src/drivers/driver_nl80211.c. 이것은 wpa_supplicant 드라이버(커널 드라이버가 아니라 에서 사용되는 추상화)입니다.wpa_supplicant코드)를 사용하는libnl핵심과 통신하다cfg80211모듈.언제wpa_supplicant예를 들어 다음과 같이 스캔을 발행합니다.wpa_driver_nl80211_scan호출됩니다.그 결과,netlink라는 명령어를 가진 메시지NL80211_CMD_TRIGGER_SCAN스캔에 필요한 모든 매개 변수를 포함합니다.

Linux에서 무선 스택의 기본 코드 흐름도를 작성했습니다.
> > wpa_signant > cfg > 11 > mac ath 11 > ath9k_htc 。

Linux 커널 5.4.31의 코드가 추적되었습니다.

여기 링크가 있습니다.

언급URL : https://stackoverflow.com/questions/21456235/how-nl80211-library-cfg80211-work

반응형