diff options
| author | simonmkwii-dev <40786398+simonmkwii-dev@users.noreply.github.com> | 2018-07-19 11:06:45 +1000 |
|---|---|---|
| committer | Ac_K <Acoustik666@gmail.com> | 2018-07-19 03:06:45 +0200 |
| commit | 2795af038df06d2f8e0dbbf0fd271bbac5da59a2 (patch) | |
| tree | 387c0e0b56ff7a26f6c51c10449a193e4a05c043 | |
| parent | fa5545aab80c056fa7e1f8d516a5add79eb30d8b (diff) | |
Implement GetCurrentIpAddress() and stub GetCurrentNetworkProfile() (#271)
* Implement GetCurrentIpAddress()
...and stub GetCurrentNetworkProfile()
* Update IGeneralService.cs
* Actually implement it properly this time...
* <snip>
* Made some requested changes
* Added requested changes.
* Added more requested changes.
* oof
* Local > Address
* Cyuubumped
* Change PrintInfo > PrintDebug
* Revert change
| -rw-r--r-- | Ryujinx.HLE/OsHle/Services/Nifm/IGeneralService.cs | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/Ryujinx.HLE/OsHle/Services/Nifm/IGeneralService.cs b/Ryujinx.HLE/OsHle/Services/Nifm/IGeneralService.cs index e289a8db..66b1f1b6 100644 --- a/Ryujinx.HLE/OsHle/Services/Nifm/IGeneralService.cs +++ b/Ryujinx.HLE/OsHle/Services/Nifm/IGeneralService.cs @@ -1,6 +1,11 @@ using Ryujinx.HLE.Logging; using Ryujinx.HLE.OsHle.Ipc; +using System; using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Net.NetworkInformation; namespace Ryujinx.HLE.OsHle.Services.Nifm { @@ -14,10 +19,13 @@ namespace Ryujinx.HLE.OsHle.Services.Nifm { m_Commands = new Dictionary<int, ServiceProcessRequest>() { - { 4, CreateRequest } + { 4, CreateRequest }, + { 12, GetCurrentIpAddress } }; } + public const int NoInternetConnection = 0x2586e; + //CreateRequest(i32) public long CreateRequest(ServiceCtx Context) { @@ -29,5 +37,22 @@ namespace Ryujinx.HLE.OsHle.Services.Nifm return 0; } + + public long GetCurrentIpAddress(ServiceCtx Context) + { + if (!NetworkInterface.GetIsNetworkAvailable()) + { + return NoInternetConnection; + } + + IPHostEntry Host = Dns.GetHostEntry(Dns.GetHostName()); + IPAddress Address = Host.AddressList.FirstOrDefault(A => A.AddressFamily == AddressFamily.InterNetwork); + + Context.ResponseData.Write(BitConverter.ToUInt32(Address.GetAddressBytes())); + + Context.Ns.Log.PrintInfo(LogClass.ServiceNifm, "Console's local IP is " + Address.ToString()); + + return 0; + } } -}
\ No newline at end of file +} |
