mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
95 lines
2.5 KiB
# |
|
# This outlines the Linux authentication/association and |
|
# deauthentication/disassociation flows. |
|
# |
|
# This can be converted into a diagram using the service |
|
# at http://www.websequencediagrams.com/ |
|
# |
|
|
|
participant userspace |
|
participant mac80211 |
|
participant driver |
|
|
|
alt authentication needed (not FT) |
|
userspace->mac80211: authenticate |
|
|
|
alt authenticated/authenticating already |
|
mac80211->driver: sta_state(AP, not-exists) |
|
mac80211->driver: bss_info_changed(clear BSSID) |
|
else associated |
|
note over mac80211,driver |
|
like deauth/disassoc, without sending the |
|
BA session stop & deauth/disassoc frames |
|
end note |
|
end |
|
|
|
mac80211->driver: config(channel, channel type) |
|
mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) |
|
mac80211->driver: sta_state(AP, exists) |
|
|
|
alt no probe request data known |
|
mac80211->driver: TX directed probe request |
|
driver->mac80211: RX probe response |
|
end |
|
|
|
mac80211->driver: TX auth frame |
|
driver->mac80211: RX auth frame |
|
|
|
alt WEP shared key auth |
|
mac80211->driver: TX auth frame |
|
driver->mac80211: RX auth frame |
|
end |
|
|
|
mac80211->driver: sta_state(AP, authenticated) |
|
mac80211->userspace: RX auth frame |
|
|
|
end |
|
|
|
userspace->mac80211: associate |
|
alt authenticated or associated |
|
note over mac80211,driver: cleanup like for authenticate |
|
end |
|
|
|
alt not previously authenticated (FT) |
|
mac80211->driver: config(channel, channel type) |
|
mac80211->driver: bss_info_changed(set BSSID, basic rate bitmap) |
|
mac80211->driver: sta_state(AP, exists) |
|
mac80211->driver: sta_state(AP, authenticated) |
|
end |
|
mac80211->driver: TX assoc |
|
driver->mac80211: RX assoc response |
|
note over mac80211: init rate control |
|
mac80211->driver: sta_state(AP, associated) |
|
|
|
alt not using WPA |
|
mac80211->driver: sta_state(AP, authorized) |
|
end |
|
|
|
mac80211->driver: set up QoS parameters |
|
|
|
mac80211->driver: bss_info_changed(QoS, HT, associated with AID) |
|
mac80211->userspace: associated |
|
|
|
note left of userspace: associated now |
|
|
|
alt using WPA |
|
note over userspace |
|
do 4-way-handshake |
|
(data frames) |
|
end note |
|
userspace->mac80211: authorized |
|
mac80211->driver: sta_state(AP, authorized) |
|
end |
|
|
|
userspace->mac80211: deauthenticate/disassociate |
|
mac80211->driver: stop BA sessions |
|
mac80211->driver: TX deauth/disassoc |
|
mac80211->driver: flush frames |
|
mac80211->driver: sta_state(AP,associated) |
|
mac80211->driver: sta_state(AP,authenticated) |
|
mac80211->driver: sta_state(AP,exists) |
|
mac80211->driver: sta_state(AP,not-exists) |
|
mac80211->driver: turn off powersave |
|
mac80211->driver: bss_info_changed(clear BSSID, not associated, no QoS, ...) |
|
mac80211->driver: config(channel type to non-HT) |
|
mac80211->userspace: disconnected
|
|
|