aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonmkwii-dev <40786398+simonmkwii-dev@users.noreply.github.com>2018-07-19 11:06:45 +1000
committerAc_K <Acoustik666@gmail.com>2018-07-19 03:06:45 +0200
commit2795af038df06d2f8e0dbbf0fd271bbac5da59a2 (patch)
tree387c0e0b56ff7a26f6c51c10449a193e4a05c043
parentfa5545aab80c056fa7e1f8d516a5add79eb30d8b (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.cs29
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
+}