LDN services: Difference between revisions
No edit summary |
|||
| Line 23: | Line 23: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetStateForMonitor | | 0 || [[#GetStateForMonitor]] | ||
|- | |- | ||
| 1 || GetNetworkInfoForMonitor | | 1 || [[#GetNetworkInfoForMonitor]] | ||
|- | |- | ||
| 2 || GetIpv4AddressForMonitor | | 2 || [[#GetIpv4AddressForMonitor]] | ||
|- | |- | ||
| 3 || GetDisconnectReasonForMonitor | | 3 || [[#GetDisconnectReasonForMonitor]] | ||
|- | |- | ||
| 4 || GetSecurityParameterForMonitor | | 4 || [[#GetSecurityParameterForMonitor]] | ||
|- | |- | ||
| 5 || GetNetworkConfigForMonitor | | 5 || [[#GetNetworkConfigForMonitor]] | ||
|- | |- | ||
| 100 || [[#InitializeMonitor]] | | 100 || [[#InitializeMonitor]] | ||
| Line 39: | Line 39: | ||
| 101 || [[#FinalizeMonitor]] | | 101 || [[#FinalizeMonitor]] | ||
|} | |} | ||
=== GetStateForMonitor === | |||
No input, returns an output u32. | |||
sdknso implements this by <code>return</code>ing the u32, with 0 being returned on error. | |||
=== GetNetworkInfoForMonitor === | |||
Takes a type-0x1A output buffer containing a [[#NetworkInfo]]. | |||
=== GetIpv4AddressForMonitor === | |||
No input, returns an output [[#Ipv4Address]] and a [[#SubnetMask]]. | |||
=== GetDisconnectReasonForMonitor === | |||
No input, returns an output s16. | |||
This is not exposed by sdknso. | |||
=== GetSecurityParameterForMonitor === | |||
No input, returns an output 0x20-byte struct with 1-byte alignment. | |||
This is not exposed by sdknso. | |||
=== GetNetworkConfigForMonitor === | |||
No input, returns an output 0x20-byte struct with 8-byte alignment. | |||
This is not exposed by sdknso. | |||
=== InitializeMonitor === | === InitializeMonitor === | ||
| Line 72: | Line 98: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetState | | 0 || [[#GetState]] | ||
|- | |- | ||
| 1 || GetNetworkInfo | | 1 || [[#GetNetworkInfo]] | ||
|- | |- | ||
| 2 || GetIpv4Address | | 2 || [[#GetIpv4Address]] | ||
|- | |- | ||
| 3 || GetDisconnectReason | | 3 || [[#GetDisconnectReason]] | ||
|- | |- | ||
| 4 || GetSecurityParameter | | 4 || [[#GetSecurityParameter]] | ||
|- | |- | ||
| 5 || GetNetworkConfig | | 5 || [[#GetNetworkConfig]] | ||
|- | |- | ||
| 100 || AttachStateChangeEvent | | 100 || [[#AttachStateChangeEvent]] | ||
|- | |- | ||
| 101 || GetNetworkInfoLatestUpdate | | 101 || [[#GetNetworkInfoLatestUpdate]] | ||
|- | |- | ||
| 102 || Scan | | 102 || [[#Scan]] | ||
|- | |- | ||
| 103 || ScanPrivate | | 103 || [[#ScanPrivate]] | ||
|- | |- | ||
| 104 || [5.0.0+] SetWirelessControllerRestriction | | 104 || [5.0.0+] [[#SetWirelessControllerRestriction]] | ||
|- | |- | ||
| 200 || OpenAccessPoint | | 200 || [[#OpenAccessPoint]] | ||
|- | |- | ||
| 201 || CloseAccessPoint | | 201 || [[#CloseAccessPoint]] | ||
|- | |- | ||
| 202 || CreateNetwork | | 202 || [[#CreateNetwork]] | ||
|- | |- | ||
| 203 || CreateNetworkPrivate | | 203 || [[#CreateNetworkPrivate]] | ||
|- | |- | ||
| 204 || DestroyNetwork | | 204 || [[#DestroyNetwork]] | ||
|- | |- | ||
| 205 || Reject | | 205 || [[#Reject]] | ||
|- | |- | ||
| 206 || SetAdvertiseData | | 206 || [[#SetAdvertiseData]] | ||
|- | |- | ||
| 207 || SetStationAcceptPolicy | | 207 || [[#SetStationAcceptPolicy]] | ||
|- | |- | ||
| 208 || AddAcceptFilterEntry | | 208 || [[#AddAcceptFilterEntry]] | ||
|- | |- | ||
| 209 || ClearAcceptFilter | | 209 || [[#ClearAcceptFilter]] | ||
|- | |- | ||
| 300 || OpenStation | | 300 || [[#OpenStation]] | ||
|- | |- | ||
| 301 || CloseStation | | 301 || [[#CloseStation]] | ||
|- | |- | ||
| 302 || Connect | | 302 || [[#Connect]] | ||
|- | |- | ||
| 303 || ConnectPrivate | | 303 || [[#ConnectPrivate]] | ||
|- | |- | ||
| 304 || Disconnect | | 304 || [[#Disconnect]] | ||
|- | |- | ||
| 400 || [[#InitializeSystem]] | | 400 || [[#InitializeSystem]] | ||
| Line 128: | Line 154: | ||
| 401 || [[#FinalizeSystem]] | | 401 || [[#FinalizeSystem]] | ||
|- | |- | ||
| 402 || [4.0.0+] SetOperationMode | | 402 || [4.0.0+] [[#SetOperationMode]] | ||
|- | |- | ||
| 403 || [7.0.0+] [[#InitializeSystem2]] | | 403 || [7.0.0+] [[#InitializeSystem2]] | ||
| Line 172: | Line 198: | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 0 || GetState | | 0 || [[#GetState]] | ||
|- | |- | ||
| 1 || GetNetworkInfo | | 1 || [[#GetNetworkInfo]] | ||
|- | |- | ||
| 2 || GetIpv4Address | | 2 || [[#GetIpv4Address]] | ||
|- | |- | ||
| 3 || GetDisconnectReason | | 3 || [[#GetDisconnectReason]] | ||
|- | |- | ||
| 4 || GetSecurityParameter | | 4 || [[#GetSecurityParameter]] | ||
|- | |- | ||
| 5 || GetNetworkConfig | | 5 || [[#GetNetworkConfig]] | ||
|- | |- | ||
| 100 || AttachStateChangeEvent | | 100 || [[#AttachStateChangeEvent]] | ||
|- | |- | ||
| 101 || GetNetworkInfoLatestUpdate | | 101 || [[#GetNetworkInfoLatestUpdate]] | ||
|- | |- | ||
| 102 || Scan | | 102 || [[#Scan]] | ||
|- | |- | ||
| 103 || ScanPrivate | | 103 || [[#ScanPrivate]] | ||
|- | |- | ||
| 104 || [5.0.0+] SetWirelessControllerRestriction | | 104 || [5.0.0+] [[#SetWirelessControllerRestriction]] | ||
|- | |- | ||
| 200 || OpenAccessPoint | | 200 || [[#OpenAccessPoint]] | ||
|- | |- | ||
| 201 || CloseAccessPoint | | 201 || [[#CloseAccessPoint]] | ||
|- | |- | ||
| 202 || CreateNetwork | | 202 || [[#CreateNetwork]] | ||
|- | |- | ||
| 203 || CreateNetworkPrivate | | 203 || [[#CreateNetworkPrivate]] | ||
|- | |- | ||
| 204 || DestroyNetwork | | 204 || [[#DestroyNetwork]] | ||
|- | |- | ||
| 205 || Reject | | 205 || [[#Reject]] | ||
|- | |- | ||
| 206 || SetAdvertiseData | | 206 || [[#SetAdvertiseData]] | ||
|- | |- | ||
| 207 || SetStationAcceptPolicy | | 207 || [[#SetStationAcceptPolicy]] | ||
|- | |- | ||
| 208 || AddAcceptFilterEntry | | 208 || [[#AddAcceptFilterEntry]] | ||
|- | |- | ||
| 209 || ClearAcceptFilter | | 209 || [[#ClearAcceptFilter]] | ||
|- | |- | ||
| 300 || OpenStation | | 300 || [[#OpenStation]] | ||
|- | |- | ||
| 301 || CloseStation | | 301 || [[#CloseStation]] | ||
|- | |- | ||
| 302 || Connect | | 302 || [[#Connect]] | ||
|- | |- | ||
| 303 || ConnectPrivate | | 303 || [[#ConnectPrivate]] | ||
|- | |- | ||
| 304 || Disconnect | | 304 || [[#Disconnect]] | ||
|- | |- | ||
| 400 || [[#Initialize]] | | 400 || [[#Initialize]] | ||
| Line 439: | Line 465: | ||
=== Initialize === | === Initialize === | ||
Returns 0. | Returns 0. | ||
= Ipv4Address = | |||
This is "nn::ldn::Ipv4Address". This is a 0x4-byte struct with 4-byte alignment. | |||
This is essentially the same as <code>struct in_addr</code>. | |||
= SubnetMask = | |||
This is "nn::ldn::SubnetMask". This is a 0x4-byte struct with 4-byte alignment. | |||
This is essentially the same as <code>struct in_addr</code>. | |||
= Ssid = | = Ssid = | ||
| Line 455: | Line 491: | ||
| 0x1 || 0x21 || SSID string including NUL-terminator, str[{above length}] must be 0. | | 0x1 || 0x21 || SSID string including NUL-terminator, str[{above length}] must be 0. | ||
|} | |} | ||
= NetworkInfo = | |||
This is "nn::ldn::NetworkInfo". This is a 0x480-byte struct. | |||
[[Category:Services]] | [[Category:Services]] | ||
Revision as of 20:22, 11 May 2020
LDN handles all local network communication.
ldn:m
This is "nn::ldn::detail::IMonitorServiceCreator".
| Cmd | Name |
|---|---|
| 0 | #CreateMonitorService |
CreateMonitorService
Returns an #IMonitorService.
The user-process closes the IMonitorServiceCreator object immediately after using this cmd.
IMonitorService
This is "nn::ldn::detail::IMonitorService".
GetStateForMonitor
No input, returns an output u32.
sdknso implements this by returning the u32, with 0 being returned on error.
GetNetworkInfoForMonitor
Takes a type-0x1A output buffer containing a #NetworkInfo.
GetIpv4AddressForMonitor
No input, returns an output #Ipv4Address and a #SubnetMask.
GetDisconnectReasonForMonitor
No input, returns an output s16.
This is not exposed by sdknso.
GetSecurityParameterForMonitor
No input, returns an output 0x20-byte struct with 1-byte alignment.
This is not exposed by sdknso.
GetNetworkConfigForMonitor
No input, returns an output 0x20-byte struct with 8-byte alignment.
This is not exposed by sdknso.
InitializeMonitor
No input/output.
This is used immediately after object creation. Official sw will Abort if this fails.
FinalizeMonitor
No input/output.
This is used during service exit, prior to closing the object. Official sw will Abort if this fails.
ldn:s
This is "nn::ldn::detail::ISystemServiceCreator".
| Cmd | Name |
|---|---|
| 0 | #CreateSystemLocalCommunicationService |
CreateSystemLocalCommunicationService
Returns an #ISystemLocalCommunicationService.
The user-process closes the ISystemServiceCreator object immediately after using this cmd. Official sw ignores errors from this cmd.
ISystemLocalCommunicationService
This is "nn::ldn::detail::ISystemLocalCommunicationService".
| Cmd | Name |
|---|---|
| 0 | #GetState |
| 1 | #GetNetworkInfo |
| 2 | #GetIpv4Address |
| 3 | #GetDisconnectReason |
| 4 | #GetSecurityParameter |
| 5 | #GetNetworkConfig |
| 100 | #AttachStateChangeEvent |
| 101 | #GetNetworkInfoLatestUpdate |
| 102 | #Scan |
| 103 | #ScanPrivate |
| 104 | [5.0.0+] #SetWirelessControllerRestriction |
| 200 | #OpenAccessPoint |
| 201 | #CloseAccessPoint |
| 202 | #CreateNetwork |
| 203 | #CreateNetworkPrivate |
| 204 | #DestroyNetwork |
| 205 | #Reject |
| 206 | #SetAdvertiseData |
| 207 | #SetStationAcceptPolicy |
| 208 | #AddAcceptFilterEntry |
| 209 | #ClearAcceptFilter |
| 300 | #OpenStation |
| 301 | #CloseStation |
| 302 | #Connect |
| 303 | #ConnectPrivate |
| 304 | #Disconnect |
| 400 | #InitializeSystem |
| 401 | #FinalizeSystem |
| 402 | [4.0.0+] #SetOperationMode |
| 403 | [7.0.0+] #InitializeSystem2 |
InitializeSystem
Takes an input PID and an u64 pid_placeholder.
This is used immediately after object creation.
With [7.0.0+] #InitializeSystem2 is used instead.
FinalizeSystem
No input/output.
This is used during service exit, prior to closing the object. Official sw will Abort if this fails.
InitializeSystem2
Takes an input PID, an u32, and an u64 pid_placeholder.
Official sw uses hard-coded value 0x1 for the u32.
ldn:u
This is "nn::ldn::detail::IUserServiceCreator".
| Cmd | Name |
|---|---|
| 0 | #CreateUserLocalCommunicationService |
CreateUserLocalCommunicationService
Returns an #IUserLocalCommunicationService.
The user-process closes the IUserServiceCreator object immediately after using this cmd. Official sw ignores errors from this cmd.
IUserLocalCommunicationService
This is "nn::ldn::detail::IUserLocalCommunicationService".
| Cmd | Name |
|---|---|
| 0 | #GetState |
| 1 | #GetNetworkInfo |
| 2 | #GetIpv4Address |
| 3 | #GetDisconnectReason |
| 4 | #GetSecurityParameter |
| 5 | #GetNetworkConfig |
| 100 | #AttachStateChangeEvent |
| 101 | #GetNetworkInfoLatestUpdate |
| 102 | #Scan |
| 103 | #ScanPrivate |
| 104 | [5.0.0+] #SetWirelessControllerRestriction |
| 200 | #OpenAccessPoint |
| 201 | #CloseAccessPoint |
| 202 | #CreateNetwork |
| 203 | #CreateNetworkPrivate |
| 204 | #DestroyNetwork |
| 205 | #Reject |
| 206 | #SetAdvertiseData |
| 207 | #SetStationAcceptPolicy |
| 208 | #AddAcceptFilterEntry |
| 209 | #ClearAcceptFilter |
| 300 | #OpenStation |
| 301 | #CloseStation |
| 302 | #Connect |
| 303 | #ConnectPrivate |
| 304 | #Disconnect |
| 400 | #Initialize |
| 401 | #Finalize |
| 402 | [7.0.0+] #Initialize2 |
Initialize
Takes an input PID and an u64 pid_placeholder.
This is used immediately after object creation.
With [7.0.0+] #Initialize2 is used instead.
Finalize
No input/output.
This is used during service exit, prior to closing the object. Official sw will Abort if this fails.
Initialize2
Takes an input PID, an u32, and an u64 pid_placeholder.
Official sw uses hard-coded value 0x1 for the u32.
ndd
This is "nn::ndd::IService".
This was added with [5.0.0] and removed with [6.0.0].
| Cmd | Name |
|---|---|
| 0 | EnableAutoCommunication |
| 1 | DisableAutoCommunication |
| 2 | IsAutoCommunicationEnabled |
| 3 | EnablePowerSave |
| 4 | DisablePowerSave |
| 5 | IsPowerSaveEnabled |
| 6 | IsNetworkActive |
| 7 | AcquireSendDataUpdateEvent |
| 8 | AddSendData |
| 9 | ClearSendData |
| 10 | GetSendData |
| 11 | AcquireReceiveDataEvent |
| 12 | GetCurrentReceiveDataCounter |
| 13 | GetOldestReceiveDataCounter |
| 14 | GetNextReceiveDataCounter |
| 15 | GetAvailableReceiveDataCount |
| 16 | GetRecentReceiveDataCounter |
| 17 | GetReceiveData |
| 18 | AddReceiveData |
| 19 | ClearReceiveData |
| 20 | ClearDataIdFilter |
| 21 | AcquireDeviceScanEvent |
| 22 | StartDeviceScan |
| 23 | CancelDeviceScan |
| 24 | GetDeviceScanResult |
lp2p:app, lp2p:sys
These are "nn::lp2p::detail::INetworkServiceCreator".
These were added with [9.0.0+].
| Cmd | Name |
|---|---|
| 0 | CreateNetworkService |
| 8 | CreateNetworkServiceMonitor |
INetworkService
This is "nn::lp2p::detail::INetworkService".
| Cmd | Name |
|---|---|
| 0 | Initialize |
| [9.0.0-9.0.1] 256 | AttachNetworkInterfaceStateChangeEvent |
| [9.0.0-9.0.1] 264 | GetNetworkInterfaceLastError |
| [9.0.0-9.0.1] 272 | GetRole |
| [9.0.0-9.0.1] 280 | |
| [9.0.0-9.0.1] 288 | GetGroupInfo |
| [9.0.0-9.0.1] 296 | |
| [9.0.0-9.0.1] 304 | |
| [9.0.0-9.0.1] 312 | |
| [9.0.0-9.0.1] 320 | |
| 512 | |
| 768 | |
| 776 | |
| 784 | |
| 1536 | SendToOtherGroup |
| 1544 | RecvFromOtherGroup |
| 1552 | AddAcceptableGroupId |
| 1560 | [9.1.0+] |
Initialize
Returns 0.
INetworkServiceMonitor
This is "nn::lp2p::detail::INetworkServiceMonitor".
This interface has no commands, until [9.1.0+] which added actual commands.
| Cmd | Name |
|---|---|
| 0 | Initialize |
| 256 | AttachNetworkInterfaceStateChangeEvent |
| 264 | GetNetworkInterfaceLastError |
| 272 | GetRole |
| 280 | |
| 281 | |
| 288 | GetGroupInfo |
| 296 | |
| 304 | |
| 312 | |
| 320 | |
| 328 | AttachJoinEvent |
| 336 |
Initialize
Returns 0.
lp2p:m
This is "nn::lp2p::detail::IMonitorServiceCreator".
This was added with [9.1.0+].
| Cmd | Name |
|---|---|
| 0 | #CreateMonitorService |
CreateMonitorService
Takes a PID, a total of 0x10-bytes of input, and returns an #IMonitorService.
IMonitorService
This is "nn::lp2p::detail::IMonitorService".
| Cmd | Name |
|---|---|
| 0 | Initialize |
| 288 | GetGroupInfo |
| 320 |
Initialize
Returns 0.
Ipv4Address
This is "nn::ldn::Ipv4Address". This is a 0x4-byte struct with 4-byte alignment.
This is essentially the same as struct in_addr.
SubnetMask
This is "nn::ldn::SubnetMask". This is a 0x4-byte struct with 4-byte alignment.
This is essentially the same as struct in_addr.
Ssid
This is "nn::ldn::Ssid".
When converting a Ssid to a string, the loaded chars from the string must be in the range of 0x20-0x7F, otherwise the byte written to the string will be 0.
| Offset | Size | Description |
|---|---|---|
| 0x0 | 0x1 | Length excluding NUL-terminator, must be 0x1-0x20. |
| 0x1 | 0x21 | SSID string including NUL-terminator, str[{above length}] must be 0. |
NetworkInfo
This is "nn::ldn::NetworkInfo". This is a 0x480-byte struct.