10#include "../sf/service.h"
11#include "../kernel/event.h"
13#define LDN_PRIORITY_SYSTEM 0x38
14#define LDN_PRIORITY_USER 0x5A
129 char user_name[0x21];
132 u8 reserved_x30[0x10];
137 char user_name[0x21];
174 u8 server_random[0x10];
178 u8 reserved_x14[0x2];
182 u8 reserved_x218[0x2];
184 u8 advertise_data[0x180];
185 u8 reserved_x39C[0x8C];
208 u8 server_random[0x10];
219 u8 reserved_x16[0xA];
Result ldnDestroyNetwork(void)
DestroyNetwork.
Result ldnSetWirelessControllerRestriction(LdnWirelessControllerRestriction restriction)
SetWirelessControllerRestriction.
Result ldnmGetNetworkInfo(LdnNetworkInfo *out)
GetNetworkInfo.
Result ldnCreateNetwork(const LdnSecurityConfig *sec_config, const LdnUserConfig *user_config, const LdnNetworkConfig *network_config)
CreateNetwork.
Result ldnSetHomeChannel(s16 channel)
SetHomeChannel.
LdnServiceType
Definition ldn.h:16
@ LdnServiceType_User
Initializes ldn:u.
Definition ldn.h:17
@ LdnServiceType_System
Initializes ldn:s.
Definition ldn.h:18
LdnWirelessControllerRestriction
WirelessControllerRestriction.
Definition ldn.h:78
@ LdnWirelessControllerRestriction_Enabled
Enabled.
Definition ldn.h:80
@ LdnWirelessControllerRestriction_Disabled
Disabled.
Definition ldn.h:79
Result ldnSetStationAcceptPolicy(LdnAcceptPolicy policy)
SetStationAcceptPolicy.
Result ldnDisableActionFrame(void)
DisableActionFrame.
Result ldnOpenAccessPoint(void)
OpenAccessPoint.
Result ldnGetSecurityParameter(LdnSecurityParameter *out)
GetSecurityParameter.
LdnSecurityMode
SecurityMode. LdnSecurityMode_Product can be used as the default value. The ldn cmds which use an inp...
Definition ldn.h:64
@ LdnSecurityMode_Product
Product.
Definition ldn.h:66
@ LdnSecurityMode_Any
Any.
Definition ldn.h:65
@ LdnSecurityMode_SystemDebug
SystemDebug.
Definition ldn.h:68
@ LdnSecurityMode_Debug
Debug.
Definition ldn.h:67
Result ldnCreateNetworkPrivate(const LdnSecurityConfig *sec_config, const LdnSecurityParameter *sec_param, const LdnUserConfig *user_config, const LdnNetworkConfig *network_config, const LdnAddressEntry *addrs, s32 count)
CreateNetworkPrivate.
Result ldnSetAdvertiseData(const void *buffer, size_t size)
SetAdvertiseData.
LdnState
State loaded by ldnmGetStateForMonitor / ldnGetState.
Definition ldn.h:22
@ LdnState_Error
Error.
Definition ldn.h:29
@ LdnState_Initialized
Initialized.
Definition ldn.h:24
@ LdnState_Station
Station (ldnOpenStation)
Definition ldn.h:27
@ LdnState_StationConnected
StationConnected (ldnConnect / ldnConnectPrivate)
Definition ldn.h:28
@ LdnState_None
None.
Definition ldn.h:23
@ LdnState_AccessPointCreated
AccessPointCreated (ldnCreateNetwork / ldnCreateNetworkPrivate)
Definition ldn.h:26
@ LdnState_AccessPoint
AccessPoint (ldnOpenAccessPoint)
Definition ldn.h:25
Result ldnmGetNetworkConfig(LdnNetworkConfig *out)
GetNetworkConfig.
void ldnmExit(void)
Exit ldn:m.
Result ldnConnectPrivate(const LdnSecurityConfig *sec_config, const LdnSecurityParameter *sec_param, const LdnUserConfig *user_config, s32 version, u32 option, const LdnNetworkConfig *network_config)
ConnectPrivate.
Result ldnSetProtocol(LdnProtocol protocol)
SetProtocol.
Result ldnSendActionFrame(const void *data, size_t size, LdnMacAddress destination, LdnMacAddress bssid, s16 channel, u32 flags)
SendActionFrame.
Result ldnCloseAccessPoint(void)
CloseAccessPoint.
Result ldnGetStateChangeEvent(Event *out_event)
GetStateChangeEvent.
Service * ldnGetServiceSession_LocalCommunicationService(void)
Gets the Service object for IUserLocalCommunicationService/ISystemLocalCommunicationService.
Result ldnmGetSecurityParameter(LdnSecurityParameter *out)
GetSecurityParameter.
Result ldnRecvActionFrame(void *data, size_t size, LdnMacAddress *addr0, LdnMacAddress *addr1, s16 *channel, u32 *out_size, s32 *link_level, u32 flags)
RecvActionFrame.
Result ldnGetState(LdnState *out)
GetState.
Result ldnmGetIpv4Address(LdnIpv4Address *addr, LdnSubnetMask *mask)
GetIpv4Address.
Result ldnSetTxPower(s16 power)
SetTxPower.
void ldnExit(void)
Exit ldn.
LdnProtocol
Protocol.
Definition ldn.h:84
@ LdnProtocol_Unknown3
(NXAndOunce?)
Definition ldn.h:86
@ LdnProtocol_NX
NX (default)
Definition ldn.h:85
Result ldnmInitialize(void)
Initialize ldn:m.
LdnDisconnectReason
DisconnectReason loaded by ldnGetDisconnectReason.
Definition ldn.h:33
@ LdnDisconnectReason_None
None.
Definition ldn.h:34
@ LdnDisconnectReason_SignalLost
SignalLost.
Definition ldn.h:40
@ LdnDisconnectReason_Rejected
Rejected.
Definition ldn.h:39
@ LdnDisconnectReason_DisconnectedByUser
DisconnectedByUser.
Definition ldn.h:35
@ LdnDisconnectReason_DestroyedByUser
DestroyedByUser.
Definition ldn.h:37
@ LdnDisconnectReason_DisconnectedBySystem
DisconnectedBySystem.
Definition ldn.h:36
@ LdnDisconnectReason_DestroyedBySystem
DestroyedBySystem.
Definition ldn.h:38
LdnAcceptPolicy
AcceptPolicy.
Definition ldn.h:56
@ LdnAcceptPolicy_BlackList
BlackList, addresses in the list (ldnAddAcceptFilterEntry) are not allowed.
Definition ldn.h:59
@ LdnAcceptPolicy_AlwaysReject
AlwaysReject.
Definition ldn.h:58
@ LdnAcceptPolicy_WhiteList
WhiteList, only addresses in the list (ldnAddAcceptFilterEntry) are allowed.
Definition ldn.h:60
@ LdnAcceptPolicy_AlwaysAccept
AlwaysAccept.
Definition ldn.h:57
Result ldnGetNetworkInfoAndHistory(LdnNetworkInfo *network_info, LdnNodeLatestUpdate *nodes, s32 count)
GetNetworkInfoAndHistory.
Result ldnGetNetworkInfo(LdnNetworkInfo *out)
GetNetworkInfo.
Result ldnEnableActionFrame(const LdnActionFrameSettings *settings)
EnableActionFrame.
Result ldnClearAcceptFilter(void)
ClearAcceptFilter.
Service * ldnmGetServiceSession_MonitorService(void)
Gets the Service object for IMonitorService.
Result ldnScanPrivate(s32 channel, const LdnScanFilter *filter, LdnNetworkInfo *network_info, s32 count, s32 *total_out)
ScanPrivate.
Result ldnDisconnect(void)
Disconnect.
Result ldnGetNetworkConfig(LdnNetworkConfig *out)
GetNetworkConfig.
Result ldnInitialize(LdnServiceType service_type)
Initialize ldn.
Result ldnmGetState(LdnState *out)
GetState.
Result ldnAddAcceptFilterEntry(LdnMacAddress addr)
AddAcceptFilterEntry.
Result ldnCloseStation(void)
CloseStation.
Result ldnReject(LdnIpv4Address addr)
Reject.
Result ldnSetOperationMode(LdnOperationMode mode)
SetOperationMode.
Result ldnOpenStation(void)
OpenStation.
Result ldnGetDisconnectReason(LdnDisconnectReason *out)
GetDisconnectReason.
LdnScanFilterFlag
ScanFilterFlag.
Definition ldn.h:44
@ LdnScanFilterFlag_Bssid
Enables using LdnScanFilter::bssid. Only available with ldnScanPrivate.
Definition ldn.h:48
@ LdnScanFilterFlag_SceneId
Enables using LdnScanFilter::network_id LdnIntentId::scene_id.
Definition ldn.h:50
@ LdnScanFilterFlag_Ssid
Enables using LdnScanFilter::ssid.
Definition ldn.h:49
@ LdnScanFilterFlag_NetworkType
Enables using LdnScanFilter::network_type.
Definition ldn.h:47
@ LdnScanFilterFlag_LocalCommunicationId
Enables using LdnScanFilter::network_id LdnIntentId::local_communication_id.
Definition ldn.h:45
@ LdnScanFilterFlag_NetworkId
Enables using LdnScanFilter::network_id.
Definition ldn.h:52
@ LdnScanFilterFlag_IntentId
Enables using LdnScanFilter::network_id intent_id.
Definition ldn.h:51
@ LdnScanFilterFlag_SessionId
Enables using LdnScanFilter::network_id session_id.
Definition ldn.h:46
Result ldnConnect(const LdnSecurityConfig *sec_config, const LdnUserConfig *user_config, s32 version, u32 option, const LdnNetworkInfo *network_info)
Connect.
Result ldnGetIpv4Address(LdnIpv4Address *addr, LdnSubnetMask *mask)
GetIpv4Address.
Result ldnScan(s32 channel, const LdnScanFilter *filter, LdnNetworkInfo *network_info, s32 count, s32 *total_out)
Scan.
Result ldnResetTxPower(void)
ResetTxPower.
LdnOperationMode
OperationMode.
Definition ldn.h:72
@ LdnOperationMode_HighSpeed
HighSpeed.
Definition ldn.h:74
@ LdnOperationMode_Stable
Stable.
Definition ldn.h:73
Service * ldnGetServiceSession_IClientProcessMonitor(void)
Gets the Service object for IClientProcessMonitor, only valid with [18.0.0+].
Kernel-mode event structure.
Definition event.h:13
ActionFrameSettings.
Definition ldn.h:223
u16 passphrase_size
PassphraseSize (Must be 0x10-0x40)
Definition ldn.h:227
u16 security_mode
LdnSecurityMode (Must be LdnSecurityMode_Product or LdnSecurityMode_Debug, internally this is overrid...
Definition ldn.h:226
s64 local_communication_id
LocalCommunicationId (Same handling as LdnIntentId::local_communication_id)
Definition ldn.h:224
AddressEntry.
Definition ldn.h:117
LdnIpv4Address ip_addr
LdnIpv4Address
Definition ldn.h:118
LdnMacAddress mac_addr
LdnMacAddress
Definition ldn.h:119
CommonNetworkInfo.
Definition ldn.h:161
s16 channel
Channel.
Definition ldn.h:164
LdnMacAddress bssid
LdnMacAddress
Definition ldn.h:162
LdnSsid ssid
LdnSsid
Definition ldn.h:163
u8 network_type
NetworkType.
Definition ldn.h:166
s8 link_level
LinkLevel.
Definition ldn.h:165
IntentId.
Definition ldn.h:142
s64 local_communication_id
LocalCommunicationId. ldnCreateNetwork, ldnCreateNetworkPrivate, ldnConnect, ldnConnectPrivate (also ...
Definition ldn.h:143
u16 scene_id
SceneId. Arbitrary user data, this can be used for filtering with LdnScanFilter (LdnScanFilterFlag_Sc...
Definition ldn.h:145
Ipv4Address. This is essentially the same as struct in_addr - hence this can be used with standard so...
Definition ldn.h:90
u32 addr
Address.
Definition ldn.h:91
MacAddress.
Definition ldn.h:100
NetworkConfig. The input struct is copied to a tmp struct, which is then used with the cmd (ldnCreate...
Definition ldn.h:213
s8 node_count_max
LdnNetworkInfo::node_count_max. ldnCreateNetwork / ldnCreateNetworkPrivate: Must be 0x1-0x8.
Definition ldn.h:216
u8 reserved_x13
Cleared to zero for the tmp struct.
Definition ldn.h:217
LdnIntentId intent_id
IntentId.
Definition ldn.h:214
s16 channel
LdnCommonNetworkInfo::channel. Channel, can be zero. Overwritten internally by ldnCreateNetwork.
Definition ldn.h:215
s16 local_communication_version
LdnNodeInfo::local_communication_version, for the first entry in LdnNetworkInfo::nodes....
Definition ldn.h:218
NetworkId.
Definition ldn.h:155
LdnSessionId session_id
SessionId.
Definition ldn.h:157
LdnIntentId intent_id
IntentId.
Definition ldn.h:156
NetworkInfo.
Definition ldn.h:171
LdnCommonNetworkInfo common
CommonNetworkInfo.
Definition ldn.h:173
u16 advertise_data_size
AdvertiseDataSize (ldnSetAdvertiseData)
Definition ldn.h:183
u16 security_mode
LdnSecurityConfig::security_mode.
Definition ldn.h:175
u64 reserved_x428
Reserved.
Definition ldn.h:186
u8 station_accept_policy
LdnAcceptPolicy
Definition ldn.h:176
LdnNetworkId network_id
NetworkId.
Definition ldn.h:172
u8 version
Version.
Definition ldn.h:177
s8 node_count_max
NodeCountMax.
Definition ldn.h:179
u8 node_count
NodeCount, number of set entries in nodes.
Definition ldn.h:180
NodeInfo.
Definition ldn.h:124
LdnMacAddress mac_addr
LdnMacAddress
Definition ldn.h:126
LdnIpv4Address ip_addr
LdnIpv4Address
Definition ldn.h:125
u8 is_connected
IsConnected flag.
Definition ldn.h:128
s8 node_id
NodeId.
Definition ldn.h:127
u8 platform
[19.0.0+] Platform? (0 = NX, 1 = Ounce)
Definition ldn.h:130
s16 local_communication_version
LocalCommunicationVersion.
Definition ldn.h:131
NodeLatestUpdate.
Definition ldn.h:111
u8 state_change
StateChange. The field in state is reset to zero by ldnGetNetworkInfoLatestUpdate after loading it.
Definition ldn.h:112
ScanFilter. ldnScan / ldnScanPrivate will only return the LdnNetworkInfo when validating the LdnNetwo...
Definition ldn.h:190
LdnNetworkId network_id
NetworkId.
Definition ldn.h:191
u32 network_type
NetworkType (LdnScanFilterFlag_NetworkType)
Definition ldn.h:192
u32 flags
Bitmask for LdnScanFilterFlag.
Definition ldn.h:196
LdnMacAddress bssid
Bssid (LdnScanFilterFlag_Bssid)
Definition ldn.h:193
LdnSsid ssid
Ssid (LdnScanFilterFlag_Ssid)
Definition ldn.h:194
SecurityConfig.
Definition ldn.h:200
u16 security_mode
LdnSecurityMode Overwritten by ldnCreateNetwork, ldnCreateNetworkPrivate, ldnConnect,...
Definition ldn.h:201
u16 passphrase_size
PassphraseSize. Must be 0x10-0x40.
Definition ldn.h:202
SecurityParameter. The struct used by ldnCreateNetwork internally is randomly-generated.
Definition ldn.h:207
LdnSessionId session_id
SessionId.
Definition ldn.h:209
SessionId.
Definition ldn.h:150
Ssid.
Definition ldn.h:105
u8 len
Length excluding NUL-terminator, must be 0x1-0x20.
Definition ldn.h:106
SubnetMask. This is essentially the same as struct in_addr - hence this can be used with standard soc...
Definition ldn.h:95
u32 mask
Mask.
Definition ldn.h:96
UserConfig. The input struct is copied to a tmp struct, which is then used with the cmd.
Definition ldn.h:136
Service object structure.
Definition service.h:14
int64_t s64
64-bit signed integer.
Definition types.h:28
#define BIT(n)
Creates a bitmask from a bit number.
Definition types.h:54
uint64_t u64
64-bit unsigned integer.
Definition types.h:22
uint8_t u8
8-bit unsigned integer.
Definition types.h:19
int8_t s8
8-bit signed integer.
Definition types.h:25
int16_t s16
16-bit signed integer.
Definition types.h:26
uint16_t u16
16-bit unsigned integer.
Definition types.h:20
u32 Result
Function error code result type.
Definition types.h:44
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21