| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using Ryujinx.Common.Logging;
- using System;
- using System.Linq;
- using System.Net;
- using System.Net.NetworkInformation;
- using System.Net.Sockets;
- namespace Ryujinx.HLE.HOS.Services.Nifm
- {
- class IGeneralService : IpcService
- {
- public IGeneralService() { }
- [Command(4)]
- // CreateRequest(u32) -> object<nn::nifm::detail::IRequest>
- public ResultCode CreateRequest(ServiceCtx context)
- {
- int unknown = context.RequestData.ReadInt32();
- MakeObject(context, new IRequest(context.Device.System));
- Logger.PrintStub(LogClass.ServiceNifm);
- return ResultCode.Success;
- }
- [Command(12)]
- // GetCurrentIpAddress() -> nn::nifm::IpV4Address
- public ResultCode GetCurrentIpAddress(ServiceCtx context)
- {
- if (!NetworkInterface.GetIsNetworkAvailable())
- {
- return ResultCode.NoInternetConnection;
- }
- IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
- IPAddress address = host.AddressList.FirstOrDefault(a => a.AddressFamily == AddressFamily.InterNetwork);
- context.ResponseData.Write(BitConverter.ToUInt32(address.GetAddressBytes()));
- Logger.PrintInfo(LogClass.ServiceNifm, $"Console's local IP is \"{address}\".");
- return ResultCode.Success;
- }
- }
- }
|