summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorGravatar tech-ticks2022-04-07 23:05:50 +0200
committerGravatar tech-ticks2022-04-07 23:30:23 +0200
commit1c3983c12e5df5a2a2f33dadf5e4a2f875fe2f47 (patch)
tree268176f6ac0c9c4866baa391bfd0221b25df7d2c /src/core
parentpatch_manager: Apply layered exefs patches from 'atmosphere' SD directory (diff)
downloadyuzu-1c3983c12e5df5a2a2f33dadf5e4a2f875fe2f47.tar.gz
yuzu-1c3983c12e5df5a2a2f33dadf5e4a2f875fe2f47.tar.xz
yuzu-1c3983c12e5df5a2a2f33dadf5e4a2f875fe2f47.zip
service: bsd: Add keepalive socket option
Diffstat (limited to 'src/core')
-rw-r--r--src/core/hle/service/sockets/bsd.cpp3
-rw-r--r--src/core/hle/service/sockets/sockets.h1
-rw-r--r--src/core/network/network.cpp4
-rw-r--r--src/core/network/sockets.h2
4 files changed, 10 insertions, 0 deletions
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index fc93fb743..e5631c27e 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -689,6 +689,9 @@ Errno BSD::SetSockOptImpl(s32 fd, u32 level, OptName optname, size_t optlen, con
689 case OptName::REUSEADDR: 689 case OptName::REUSEADDR:
690 ASSERT(value == 0 || value == 1); 690 ASSERT(value == 0 || value == 1);
691 return Translate(socket->SetReuseAddr(value != 0)); 691 return Translate(socket->SetReuseAddr(value != 0));
692 case OptName::KEEPALIVE:
693 ASSERT(value == 0 || value == 1);
694 return Translate(socket->SetKeepAlive(value != 0));
692 case OptName::BROADCAST: 695 case OptName::BROADCAST:
693 ASSERT(value == 0 || value == 1); 696 ASSERT(value == 0 || value == 1);
694 return Translate(socket->SetBroadcast(value != 0)); 697 return Translate(socket->SetBroadcast(value != 0));
diff --git a/src/core/hle/service/sockets/sockets.h b/src/core/hle/service/sockets/sockets.h
index 02dbbae40..d69c86431 100644
--- a/src/core/hle/service/sockets/sockets.h
+++ b/src/core/hle/service/sockets/sockets.h
@@ -46,6 +46,7 @@ enum class Protocol : u32 {
46 46
47enum class OptName : u32 { 47enum class OptName : u32 {
48 REUSEADDR = 0x4, 48 REUSEADDR = 0x4,
49 KEEPALIVE = 0x8,
49 BROADCAST = 0x20, 50 BROADCAST = 0x20,
50 LINGER = 0x80, 51 LINGER = 0x80,
51 SNDBUF = 0x1001, 52 SNDBUF = 0x1001,
diff --git a/src/core/network/network.cpp b/src/core/network/network.cpp
index a3e0664b9..0784a165d 100644
--- a/src/core/network/network.cpp
+++ b/src/core/network/network.cpp
@@ -600,6 +600,10 @@ Errno Socket::SetReuseAddr(bool enable) {
600 return SetSockOpt<u32>(fd, SO_REUSEADDR, enable ? 1 : 0); 600 return SetSockOpt<u32>(fd, SO_REUSEADDR, enable ? 1 : 0);
601} 601}
602 602
603Errno Socket::SetKeepAlive(bool enable) {
604 return SetSockOpt<u32>(fd, SO_KEEPALIVE, enable ? 1 : 0);
605}
606
603Errno Socket::SetBroadcast(bool enable) { 607Errno Socket::SetBroadcast(bool enable) {
604 return SetSockOpt<u32>(fd, SO_BROADCAST, enable ? 1 : 0); 608 return SetSockOpt<u32>(fd, SO_BROADCAST, enable ? 1 : 0);
605} 609}
diff --git a/src/core/network/sockets.h b/src/core/network/sockets.h
index 5e39e7c54..caaefce7c 100644
--- a/src/core/network/sockets.h
+++ b/src/core/network/sockets.h
@@ -67,6 +67,8 @@ public:
67 67
68 Errno SetReuseAddr(bool enable); 68 Errno SetReuseAddr(bool enable);
69 69
70 Errno SetKeepAlive(bool enable);
71
70 Errno SetBroadcast(bool enable); 72 Errno SetBroadcast(bool enable);
71 73
72 Errno SetSndBuf(u32 value); 74 Errno SetSndBuf(u32 value);