LDN services: Difference between revisions
No edit summary |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 419: | Line 419: | ||
=== SendActionFrame === | === SendActionFrame === | ||
Takes a type-0x21 input buffer, two input [[#MacAddress]], two input s16s ('''Band''' and '''ChannelNumber''') and an input [[#MessageFlagSet]]. No output. | Takes a type-0x21 input buffer, two input [[#MacAddress]], two input s16s ('''Band''' and '''ChannelNumber''') and an input [[#MessageFlagSet]]. No output. | ||
[20.0.0+] The input s16s were replaced with a single u16, which has the same format as [[#SetHomeChannel|SetHomeChannel]]. | |||
The first [[#MacAddress]] is the destination, the second [[#MacAddress]] is the Bssid. | |||
The ChannelNumber must be non-zero. | |||
[[#State|State]] must be 3-4 (AccessPointCreated/Station). | [[#State|State]] must be 3-4 (AccessPointCreated/Station). | ||
=== RecvActionFrame === | |||
Takes a type-0x22 output buffer and an input [[#MessageFlagSet]]. Returns two output [[#MacAddress]], two output s16s ('''Band''' and '''ChannelNumber'''), an output u32 '''Size''', and an output s32 '''LinkLevel'''. | |||
[20.0.0+] The output s16s were replaced with a single u16, which has the same format as [[#SetHomeChannel|SetHomeChannel]]. | |||
[[#EnableActionFrame|EnableActionFrame]] must be used prior to this. | [[#EnableActionFrame|EnableActionFrame]] must be used prior to this. | ||
Line 435: | Line 441: | ||
On NX Band must be ([20.0.0+] converted Band from the above array) 50 ([20.0.0+] 5000) or 24 ([20.0.0+] 2400). | On NX Band must be ([20.0.0+] converted Band from the above array) 50 ([20.0.0+] 5000) or 24 ([20.0.0+] 2400). | ||
The ChannelNumber must be non-zero. | |||
The [[#State|State]] must be Station. | The [[#State|State]] must be Station. | ||
Line 1,431: | Line 1,439: | ||
|} | |} | ||
SecurityMode must be 1-2. The same SecurityMode override functionality from elsewhere is used | SecurityMode must be 1-2. The same SecurityMode override functionality from elsewhere is used later with this. | ||
The same LocalCommunicationId override/validation from elsewhere is used with the input as well. | |||
= MessageFlagSet = | = MessageFlagSet = | ||
Line 1,688: | Line 1,698: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || | | 0x0 || 0x1 || | ||
|- | |||
| 0x1 || 0x3F || Zeros. [6.0.0-?] Only included in the frame if it's enabled (+0x0 [[#AuthVersion]] >= 3). Unused by the Station. | |||
|- | |- | ||
| 0x40 || 0x44 || [6.0.0-?] Only included in the frame if it's enabled (+0x0 [[#AuthVersion]] >= 3). Unused by the Station. | | 0x40 || 0x44 || [6.0.0-?] Only included in the frame if it's enabled (+0x0 [[#AuthVersion]] >= 3). Unused by the Station. | ||
Line 1,879: | Line 1,891: | ||
=== ActionFrame2 === | === ActionFrame2 === | ||
The Action frames used by [[#RecvActionFrame|RecvActionFrame]] have the following structure: | The Action frames used by [[#SendActionFrame|SendActionFrame]]/[[#RecvActionFrame|RecvActionFrame]] have the following structure: | ||
* "Fixed parameters": | * "Fixed parameters": | ||
** "Category code: Vendor Specific (127)" | ** "Category code: Vendor Specific (127)" | ||
Line 1,895: | Line 1,907: | ||
| 0x2 || 0x2 || Protocol ID, must match big-endian 0x0102. | | 0x2 || 0x2 || Protocol ID, must match big-endian 0x0102. | ||
|- | |- | ||
| 0x4 || 0x2 || | | 0x4 || 0x2 || 00 00 | ||
|- | |- | ||
| 0x6 || 0x2 || | | 0x6 || 0x2 || 00 00 | ||
|} | |} | ||
Line 1,928: | Line 1,940: | ||
The key is derived similar to the regular action-frame key (same KeySource), except: the Generation is always [[17.0.0|0x11]], with the following data for hashing: {big-endian LocalCommunicationId} {+0x10 size 0x10-bytes} {[[#ActionFrameSettings]] Passphrase with the specified PassphraseSize}. | The key is derived similar to the regular action-frame key (same KeySource), except: the Generation is always [[17.0.0|0x11]], with the following data for hashing: {big-endian LocalCommunicationId} {+0x10 size 0x10-bytes} {[[#ActionFrameSettings]] Passphrase with the specified PassphraseSize}. | ||
The data payload is the data buffer for [[#SendActionFrame|SendActionFrame]]/[[#RecvActionFrame|RecvActionFrame]]. | |||
== lp2p == | == lp2p == |