Network Interface services: Difference between revisions
No edit summary |
|||
(12 intermediate revisions by 2 users not shown) | |||
Line 8: | Line 8: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name | ! Cmd || Name | ||
|- | |- | ||
| 4 || [[#CreateGeneralServiceOld]] ([1.0.0-2.3.0] CreateGeneralService) | | 4 || [[#CreateGeneralServiceOld]] ([1.0.0-2.3.0] CreateGeneralService) | ||
|- | |- | ||
| 5 || [3.0.0+] [[#CreateGeneralService]] | | 5 || [3.0.0+] [[#CreateGeneralService]] | ||
|} | |} | ||
Line 26: | Line 26: | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- | ||
! Cmd || Name || | ! Cmd || Name | ||
|- | |||
| 1 || [[#GetClientId]] | |||
|- | |||
| 2 || [[#CreateScanRequest]] | |||
|- | |- | ||
| | | 4 || [[#CreateRequest]] | ||
|- | |- | ||
| | | 5 || [[#GetCurrentNetworkProfile]] | ||
|- | |- | ||
| | | 6 || EnumerateNetworkInterfaces | ||
|- | |- | ||
| | | 7 || EnumerateNetworkProfiles | ||
|- | |- | ||
| | | 8 || [[#GetNetworkProfile]] | ||
|- | |- | ||
| | | 9 || [[#SetNetworkProfile]] | ||
|- | |- | ||
| | | 10 || RemoveNetworkProfile | ||
|- | |- | ||
| | | 11 || GetScanDataOld ([1.0.0-3.0.2] GetScanData) | ||
|- | |- | ||
| | | 12 || [[#GetCurrentIpAddress]] | ||
|- | |- | ||
| | | 13 || GetCurrentAccessPointOld ([1.0.0-3.0.2] GetCurrentAccessPoint) | ||
|- | |- | ||
| | | 14 || [[#CreateTemporaryNetworkProfile]] | ||
|- | |- | ||
| | | 15 || [[#GetCurrentIpConfigInfo]] | ||
|- | |- | ||
| | | 16 || SetWirelessCommunicationEnabled | ||
|- | |- | ||
| | | 17 || IsWirelessCommunicationEnabled | ||
|- | |- | ||
| | | 18 || GetInternetConnectionStatus | ||
|- | |- | ||
| | | 19 || SetEthernetCommunicationEnabled | ||
|- | |- | ||
| | | 20 || IsEthernetCommunicationEnabled | ||
|- | |- | ||
| | | 21 || [[#IsAnyInternetRequestAccepted]] | ||
|- | |- | ||
| | | 22 || IsAnyForegroundRequestAccepted | ||
|- | |- | ||
| | | 23 || PutToSleep | ||
|- | |- | ||
| | | 24 || WakeUp | ||
|- | |- | ||
| | | 25 || GetSsidListVersion | ||
|- | |- | ||
| | | 26 || SetExclusiveClient | ||
|- | |- | ||
| | | 27 || GetDefaultIpSetting | ||
|- | |- | ||
| | | 28 || SetDefaultIpSetting | ||
|- | |- | ||
| | | 29 || SetWirelessCommunicationEnabledForTest | ||
|- | |- | ||
| | | 30 || SetEthernetCommunicationEnabledForTest | ||
|- | |- | ||
| | | 31 || [2.0.0+] GetTelemetorySystemEventReadableHandle | ||
|- | |- | ||
| | | 32 || [2.0.0+] GetTelemetryInfo | ||
|- | |- | ||
| | | 33 || [2.0.0+] ConfirmSystemAvailability | ||
|- | |- | ||
| | | 34 || [4.0.0+] SetBackgroundRequestEnabled | ||
|- | |- | ||
| | | 35 || [4.0.0+] GetScanData | ||
|- | |- | ||
| | | 36 || [4.0.0+] GetCurrentAccessPoint | ||
|- | |- | ||
| | | 37 || [4.0.0+] Shutdown | ||
|- | |- | ||
| | | 38 || [6.0.0+] GetAllowedChannels | ||
|- | |- | ||
| | | 39 || [8.0.0+] NotifyApplicationSuspended | ||
|- | |- | ||
| | | 40 || [8.0.0+] SetAcceptableNetworkTypeFlag | ||
|- | |- | ||
| | | 41 || [8.0.0+] GetAcceptableNetworkTypeFlag | ||
|- | |- | ||
| | | 42 || [8.0.0+] NotifyConnectionStateChanged | ||
|- | |- | ||
| | | 43 || [9.0.0+] [[#SetWowlDelayedWakeTime]] | ||
|- | |- | ||
| | | 44 || [18.0.0+] IsWiredConnectionAvailable | ||
|- | |- | ||
| | | 45 || [18.0.0+] IsNetworkEmulationFeatureEnabled | ||
|- | |||
| 46 || [18.0.0+] SelectActiveNetworkEmulationProfileIdForDebug | |||
|- | |||
| 49 || [18.0.0+] GetActiveNetworkEmulationProfileId | |||
|- | |||
| 50 || [18.0.0+] IsRewriteFeatureEnabled | |||
|- | |||
| 51 || [18.0.0+] CreateRewriteRule | |||
|- | |||
| 52 || [18.0.0+] DestroyRewriteRule | |||
|} | |} | ||
Line 145: | Line 159: | ||
=== GetCurrentIpAddress === | === GetCurrentIpAddress === | ||
No input, returns an output [[#IpV4Address]]. | No input, returns an output [[#IpV4Address]]. | ||
=== CreateTemporaryNetworkProfile === | |||
Returns an [[#INetworkProfile]]. | |||
=== GetCurrentIpConfigInfo === | === GetCurrentIpConfigInfo === | ||
Line 153: | Line 170: | ||
The wrapper for this with official sw will return 0 when any errors occur (wrapper returns bool not Result). | The wrapper for this with official sw will return 0 when any errors occur (wrapper returns bool not Result). | ||
=== SetWowlDelayedWakeTime === | |||
Takes an input s32, no output. | |||
This requires nifm:a/nifm:s. | |||
This goes through a list of objects to call a vfunc with the input value, that func then writes the input into the object state. The default value is 0. This field in state is later used for [[WLAN_services|wlaninf]] cmd30. | |||
=== IScanRequest === | === IScanRequest === | ||
Line 173: | Line 197: | ||
=== IRequest === | === IRequest === | ||
This is "nn::nifm::detail::IRequest". This represents an application or sysmodule's request to bring a network up. | This is "nn::nifm::detail::IRequest". | ||
This represents an application or sysmodule's request to bring a network up. | |||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 223: | Line 249: | ||
| 22 || GetAdditionalInfo | | 22 || GetAdditionalInfo | ||
|- | |- | ||
| 23 || [3.0.0+] SetKeptInSleep | | 23 || [3.0.0+] [[#SetKeptInSleep]] | ||
|- | |- | ||
| 24 || [3.0.0+] RegisterSocketDescriptor | | 24 || [3.0.0+] [[#RegisterSocketDescriptor]] | ||
|- | |- | ||
| 25 || [3.0.0+] UnregisterSocketDescriptor | | 25 || [3.0.0+] [[#UnregisterSocketDescriptor]] | ||
|} | |} | ||
==== GetRequestState ==== | ==== GetRequestState ==== | ||
No input. Returns an output [[#RequestState]]. | |||
==== GetResult ==== | ==== GetResult ==== | ||
Line 274: | Line 287: | ||
==== SetConnectionConfirmationOption ==== | ==== SetConnectionConfirmationOption ==== | ||
Takes an input [[#ConnectionConfirmationOption]]. No output. | |||
==== SetPersistent ==== | ==== SetPersistent ==== | ||
Line 314: | Line 309: | ||
The out_size is the total data size written to the output buffer. The buffer contains an array of: {s32 size} {data with the specified size}, with size==-1 indicating that the end of the array was reached. The data from here is pushed as applet input storage. | The out_size is the total data size written to the output buffer. The buffer contains an array of: {s32 size} {data with the specified size}, with size==-1 indicating that the end of the array was reached. The data from here is pushed as applet input storage. | ||
The returned AppletId is one of the following: error, wifiWebAuth, or netConnect. | |||
==== SetKeptInSleep ==== | |||
Takes an input bool, no output. | |||
[[#GetRequestState|RequestState]] must be value 1. This sets a flag in state. | |||
==== RegisterSocketDescriptor ==== | |||
Takes an input s32 sockfd, no output. | |||
[[#GetRequestState|RequestState]] must be value 3. Only 1 socket can be registered at a time per IRequest. The specified sockfd is written into state. | |||
During sleep-entry, [[WLAN_services|wlan:inf]] cmd19 is eventually used with data from currently-open IRequest objects' registered-sockets. Note however, the wlaninf cmd only supports a single set of data, hence if there's more than 1 IRequest with a registered socket only the last object in the list will actually get used during wlan:inf RequestSleep. | |||
==== UnregisterSocketDescriptor ==== | |||
Takes an input s32 sockfd, no output. | |||
[[#GetRequestState|RequestState]] must be value 3. The input sockfd must match the one previously registered with [[#RegisterSocketDescriptor]]. | |||
=== INetworkProfile === | === INetworkProfile === | ||
Line 330: | Line 344: | ||
= ClientId = | = ClientId = | ||
This is "nn::nifm::ClientId". This | This is "nn::nifm::ClientId". This is a 0x4-byte struct. | ||
= SfNetworkProfileData = | = SfNetworkProfileData = | ||
Line 341: | Line 355: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0xC2 || [[#IpSettingData]] | | 0x0 || 0xC2 || [[#IpSettingData|IpSetting]] | ||
|- | |- | ||
| 0xC2 || 0x10 || | | 0xC2 || 0x10 || Id | ||
|- | |- | ||
| 0xD2 || 0x40 || NUL-terminated Network Name string | | 0xD2 || 0x40 || Name (NUL-terminated Network Name string) | ||
|- | |- | ||
| 0x112 || 0x1 || | | 0x112 || 0x1 || | ||
Line 355: | Line 369: | ||
| 0x115 || 0x1 || | | 0x115 || 0x1 || | ||
|- | |- | ||
| 0x116 || 0x65 || [[#SfWirelessSettingData]] | | 0x116 || 0x65 || [[#SfWirelessSettingData|SfWirelessSettingData]] | ||
|- | |- | ||
| 0x17B || 0x1 || | | 0x17B || 0x1 || Reserved | ||
|} | |} | ||
Line 369: | Line 383: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x10 || | | 0x0 || 0x10 || Id | ||
|- | |- | ||
| 0x10 || 0x40 || NUL-terminated Network Name string | | 0x10 || 0x40 || Name (NUL-terminated Network Name string) | ||
|- | |- | ||
| 0x50 || 0x4 || | | 0x50 || 0x4 || [[#NetworkProfileType|NetworkProfileType]] | ||
|- | |- | ||
| 0x54 || 0x4 || | | 0x54 || 0x4 || [[#NetworkInterfaceType|NetworkInterfaceType]] | ||
|- | |- | ||
| 0x58 || 0x1 || | | 0x58 || 0x1 || IsAutoConnect | ||
|- | |- | ||
| 0x59 || 0x1 || | | 0x59 || 0x1 || IsLargeCapacity | ||
|- | |- | ||
| 0x5A || 0x2 || | | 0x5A || 0x2 || Reserved | ||
|- | |- | ||
| 0x5C || 0x70 || [[#WirelessSettingData]] | | 0x5C || 0x70 || [[#WirelessSettingData|WirelessSetting]] | ||
|- | |- | ||
| 0xCC || 0xC2 || [[#IpSettingData]] | | 0xCC || 0xC2 || [[#IpSettingData|IpSetting]] | ||
|} | |||
= NetworkProfileType = | |||
This is "nn::nifm::NetworkProfileType". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Bits | |||
! Description | |||
|- | |||
| 0 || User | |||
|- | |||
| 1 || SsidList | |||
|- | |||
| 2 || Temporary | |||
|} | |||
= NetworkInterfaceType = | |||
This is "nn::nifm::NetworkInterfaceType". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || Ieee80211 | |||
|- | |||
| 2 || Ethernet | |||
|} | |} | ||
Line 397: | Line 441: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || | | 0x0 || 0x21 || [[#Ssid|Ssid]] (length is clamped to 0x20 during [[#NetworkProfileData]] conversion) | ||
|- | |- | ||
| 0x21 || 0x1 || | | 0x21 || 0x1 || | ||
Line 407: | Line 449: | ||
| 0x23 || 0x1 || | | 0x23 || 0x1 || | ||
|- | |- | ||
| 0x24 || 0x41 || | | 0x24 || 0x41 || [[#SharedKey|SharedKey]] | ||
|} | |} | ||
Line 419: | Line 461: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x1 || SSID [[# | | 0x0 || 0x22 || [[#SsidConfig|SsidConfig]] | ||
|- | |||
| 0x23 || 0x2 || Reserved | |||
|- | |||
| 0x24 || 0x4C || [[#Security|Security]] | |||
|} | |||
= SsidConfig = | |||
This is "nn::nifm::SsidConfig". This is a 0x22-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x21 || [[#Ssid|Ssid]] | |||
|- | |||
| 0x21 || 0x1 || NonBroadcast | |||
|} | |||
= Security = | |||
This is "nn::nifm::Security". This is a 0x4C-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x8 || [[#AuthEncryption|AuthEncryption]] | |||
|- | |||
| 0x8 || 0x41 || [[#SharedKey|SharedKey]] | |||
|- | |||
| 0x49 || 0x3 || Reserved | |||
|} | |||
= Ssid = | |||
This is "nn::nifm::Ssid". This is a 0x21-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x1 || Length | |||
|- | |||
| 0x1 || 0x20 || Hex (NUL-terminated SSID string) | |||
|} | |||
= AuthEncryption = | |||
This is "nn::nifm::AuthEncryption". This is a 0x8-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x4 || [[#Authentication|Authentication]] | |||
|- | |||
| 0x4 || 0x4 || [[#Encryption|Encryption]] | |||
|} | |||
= SharedKey = | |||
This is "nn::nifm::SharedKey". This is a 0x41-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |||
| 0x0 || 0x1 || Length | |||
|- | |||
| 0x1 || 0x40 || KeyMaterial | |||
|} | |||
= Authentication = | |||
This is "nn::nifm::Authentication". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || Open | |||
|- | |||
| 2 || Shared | |||
|- | |||
| 3 || Wpa | |||
|- | |||
| 4 || WpaPsk | |||
|- | |- | ||
| | | 5 || Wpa2 | ||
|- | |- | ||
| | | 6 || Wpa2Psk | ||
|- | |||
| 7 || Unknown | |||
|} | |||
= Encryption = | |||
This is "nn::nifm::Encryption". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |- | ||
| | | 0 || Invalid | ||
|- | |- | ||
| | | 1 || None | ||
|- | |- | ||
| | | 2 || Wep | ||
|- | |- | ||
| | | 3 || Tkip | ||
|- | |- | ||
| | | 4 || Aes | ||
|} | |} | ||
Line 445: | Line 593: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0xD || [[#IpAddressSetting]] | | 0x0 || 0xD || [[#IpAddressSetting|Ip]] | ||
|- | |- | ||
| 0xD || 0x9 || [[#DnsSetting]] | | 0xD || 0x9 || [[#DnsSetting|Dns]] | ||
|- | |- | ||
| 0x16 || 0xAA || [[#ProxySetting]] | | 0x16 || 0xAA || [[#ProxySetting|Proxy]] | ||
|- | |- | ||
| 0xC0 || 0x2 || | | 0xC0 || 0x2 || Mtu | ||
|} | |} | ||
Line 463: | Line 611: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x1 || | | 0x0 || 0x1 || IsEnabled | ||
|- | |- | ||
| 0x1 || 0x1 || | | 0x1 || 0x1 || Reserved | ||
|- | |- | ||
| 0x2 || 0x2 || Port | | 0x2 || 0x2 || Port | ||
|- | |- | ||
| 0x4 || 0x64 || | | 0x4 || 0x64 || Proxy (server string, NUL-terminated) | ||
|- | |- | ||
| 0x68 || | | 0x68 || 0x41 || [[#AuthenticationSetting|Authentication]] | ||
|- | |- | ||
| | | 0xA9 || 0x1 || Reserved | ||
|} | |||
= AuthenticationSetting = | |||
This is "nn::nifm::AuthenticationSetting". This is a 0x41-byte struct. | |||
{| class="wikitable" border="1" | |||
|- | |||
! Offset | |||
! Size | |||
! Description | |||
|- | |- | ||
| | | 0x0 || 0x1 || IsEnabled | ||
|- | |- | ||
| | | 0x1 || 0x20 || Username (user string, NUL-terminated) | ||
|- | |||
| 0x21 || 0x20 || Password (password string, NUL-terminated) | |||
|} | |} | ||
Line 494: | Line 654: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x1 || | | 0x0 || 0x1 || IsAuto (Ignored by [[#GetCurrentIpConfigInfo]]) | ||
|- | |- | ||
| 0x1 || 0x4 || Copied to an output <code>struct in_addr</code> by sdknso | | 0x1 || 0x4 || IpAddress (Copied to an output <code>struct in_addr</code> by sdknso) | ||
|- | |- | ||
| 0x5 || 0x4 || Copied to an output <code>struct in_addr</code> by sdknso | | 0x5 || 0x4 || SubnetMask (Copied to an output <code>struct in_addr</code> by sdknso) | ||
|- | |- | ||
| 0x9 || 0x4 || Copied to an output <code>struct in_addr</code> by sdknso | | 0x9 || 0x4 || DefaultGateway (Copied to an output <code>struct in_addr</code> by sdknso) | ||
|} | |} | ||
Line 512: | Line 672: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x1 || | | 0x0 || 0x1 || IsAuto (Ignored by [[#GetCurrentIpConfigInfo]]) | ||
|- | |||
| 0x1 || 0x4 || PreferredDns (Copied to an output <code>struct in_addr</code> by sdknso) | |||
|- | |||
| 0x5 || 0x4 || AlternateDns (Copied to an output <code>struct in_addr</code> by sdknso) | |||
|} | |||
= RequestState = | |||
This is "nn::nifm::RequestState". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || Free | |||
|- | |||
| 2 || OnHold | |||
|- | |||
| 3 || Accepted | |||
|- | |||
| 4 || Blocking | |||
|} | |||
= ConnectionConfirmationOption = | |||
This is "nn::nifm::ConnectionConfirmationOption". | |||
{| class="wikitable" border="1" | |||
|- | |||
! Value | |||
! Description | |||
|- | |||
| 0 || Invalid | |||
|- | |||
| 1 || Prohibited | |||
|- | |||
| 2 || NotRequired | |||
|- | |||
| 3 || Preferred | |||
|- | |- | ||
| | | 4 || Required | ||
|- | |- | ||
| | | 5 || Forced | ||
|} | |} | ||
[[Category:Services]] | [[Category:Services]] |