diff --git a/libctru/include/3ds/services/soc.h b/libctru/include/3ds/services/soc.h index b5ac85e..60f7b27 100644 --- a/libctru/include/3ds/services/soc.h +++ b/libctru/include/3ds/services/soc.h @@ -27,3 +27,6 @@ Result socExit(void); */ long gethostid(void); +int SOCU_ShutdownSockets(); + +int SOCU_CloseSockets(); diff --git a/libctru/source/services/soc/soc_closesockets.c b/libctru/source/services/soc/soc_closesockets.c new file mode 100644 index 0000000..6b5a8aa --- /dev/null +++ b/libctru/source/services/soc/soc_closesockets.c @@ -0,0 +1,15 @@ +#include "soc_common.h" +#include <3ds/ipc.h> +#include <3ds/result.h> + +int SOCU_CloseSockets() +{ + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x21,0,2); // 0x210002; + cmdbuf[1] = IPC_Desc_CurProcessHandle(); + + int ret = svcSendSyncRequest(SOCU_handle); + if(R_FAILED(ret))return ret; + return cmdbuf[1]; +} diff --git a/libctru/source/services/soc/soc_shutdownsockets.c b/libctru/source/services/soc/soc_shutdownsockets.c new file mode 100644 index 0000000..1649846 --- /dev/null +++ b/libctru/source/services/soc/soc_shutdownsockets.c @@ -0,0 +1,14 @@ +#include "soc_common.h" +#include <3ds/ipc.h> +#include <3ds/result.h> + +int SOCU_ShutdownSockets() +{ + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = IPC_MakeHeader(0x19,0,0); // 0x190000 + + int ret = svcSendSyncRequest(SOCU_handle); + if(R_FAILED(ret))return ret; + return cmdbuf[1]; +}