From 8f1d48fda6a5802cc397adedc4c900c63dbd9d5c Mon Sep 17 00:00:00 2001
From: Liam <byteslice@airmail.cc>
Date: Mon, 17 Jul 2023 21:34:23 -0400
Subject: [PATCH] nsd: add GetApplicationServerEnvironmentType

---
 src/core/hle/service/sockets/nsd.cpp | 17 ++++++++++++++++-
 src/core/hle/service/sockets/nsd.h   |  1 +
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/core/hle/service/sockets/nsd.cpp b/src/core/hle/service/sockets/nsd.cpp
index 0dfb0f166..36c6cd05c 100644
--- a/src/core/hle/service/sockets/nsd.cpp
+++ b/src/core/hle/service/sockets/nsd.cpp
@@ -10,6 +10,15 @@ namespace Service::Sockets {
 
 constexpr Result ResultOverflow{ErrorModule::NSD, 6};
 
+// This is nn::oe::ServerEnvironmentType
+enum class ServerEnvironmentType : u8 {
+    Dd,
+    Lp,
+    Sd,
+    Sp,
+    Dp,
+};
+
 NSD::NSD(Core::System& system_, const char* name) : ServiceFramework{system_, name} {
     // clang-format off
     static const FunctionInfo functions[] = {
@@ -36,7 +45,7 @@ NSD::NSD(Core::System& system_, const char* name) : ServiceFramework{system_, na
         {62, nullptr, "DeleteSaveDataOfFsForTest"},
         {63, nullptr, "IsChangeEnvironmentIdentifierDisabled"},
         {64, nullptr, "SetWithoutDomainExchangeFqdns"},
-        {100, nullptr, "GetApplicationServerEnvironmentType"},
+        {100, &NSD::GetApplicationServerEnvironmentType, "GetApplicationServerEnvironmentType"},
         {101, nullptr, "SetApplicationServerEnvironmentType"},
         {102, nullptr, "DeleteApplicationServerEnvironmentType"},
     };
@@ -94,6 +103,12 @@ void NSD::ResolveEx(HLERequestContext& ctx) {
     rb.Push(ResultSuccess);
 }
 
+void NSD::GetApplicationServerEnvironmentType(HLERequestContext& ctx) {
+    IPC::ResponseBuilder rb{ctx, 3};
+    rb.Push(ResultSuccess);
+    rb.Push(static_cast<u32>(ServerEnvironmentType::Lp));
+}
+
 NSD::~NSD() = default;
 
 } // namespace Service::Sockets
diff --git a/src/core/hle/service/sockets/nsd.h b/src/core/hle/service/sockets/nsd.h
index a7379a8a9..57760a0c8 100644
--- a/src/core/hle/service/sockets/nsd.h
+++ b/src/core/hle/service/sockets/nsd.h
@@ -19,6 +19,7 @@ public:
 private:
     void Resolve(HLERequestContext& ctx);
     void ResolveEx(HLERequestContext& ctx);
+    void GetApplicationServerEnvironmentType(HLERequestContext& ctx);
 };
 
 } // namespace Service::Sockets