mirror of https://github.com/RPCS3/rpcs3.git
Implement SYS_NET_SO_REUSEPORT
This commit is contained in:
parent
3d64b65813
commit
3907dd0444
|
@ -718,11 +718,29 @@ s32 sys_net_bnet_getsockopt(ppu_thread& ppu, s32 s, s32 level, s32 optname, vm::
|
||||||
native_opt = SO_BROADCAST;
|
native_opt = SO_BROADCAST;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
case SYS_NET_SO_REUSEADDR:
|
||||||
|
{
|
||||||
|
*(be_t<s32>*)optval.get_ptr() = sock.so_reuseaddr;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
case SYS_NET_SO_REUSEPORT:
|
||||||
|
{
|
||||||
|
*(be_t<s32>*)optval.get_ptr() = sock.so_reuseport;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
case SYS_NET_SO_REUSEADDR:
|
case SYS_NET_SO_REUSEADDR:
|
||||||
{
|
{
|
||||||
native_opt = SO_REUSEADDR;
|
native_opt = SO_REUSEADDR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SYS_NET_SO_REUSEPORT:
|
||||||
|
{
|
||||||
|
native_opt = SO_REUSEPORT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
case SYS_NET_SO_SNDTIMEO:
|
case SYS_NET_SO_SNDTIMEO:
|
||||||
case SYS_NET_SO_RCVTIMEO:
|
case SYS_NET_SO_RCVTIMEO:
|
||||||
{
|
{
|
||||||
|
@ -1166,11 +1184,33 @@ s32 sys_net_bnet_setsockopt(ppu_thread& ppu, s32 s, s32 level, s32 optname, vm::
|
||||||
native_opt = SO_BROADCAST;
|
native_opt = SO_BROADCAST;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#ifdef _WIN32
|
||||||
|
case SYS_NET_SO_REUSEADDR:
|
||||||
|
{
|
||||||
|
native_opt = SO_REUSEADDR;
|
||||||
|
sock.so_reuseaddr = native_int;
|
||||||
|
native_int = sock.so_reuseaddr || sock.so_reuseport ? 1 : 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case SYS_NET_SO_REUSEPORT:
|
||||||
|
{
|
||||||
|
native_opt = SO_REUSEADDR;
|
||||||
|
sock.so_reuseport = native_int;
|
||||||
|
native_int = sock.so_reuseaddr || sock.so_reuseport ? 1 : 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#else
|
||||||
case SYS_NET_SO_REUSEADDR:
|
case SYS_NET_SO_REUSEADDR:
|
||||||
{
|
{
|
||||||
native_opt = SO_REUSEADDR;
|
native_opt = SO_REUSEADDR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SYS_NET_SO_REUSEPORT:
|
||||||
|
{
|
||||||
|
native_opt = SO_REUSEPORT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
case SYS_NET_SO_SNDTIMEO:
|
case SYS_NET_SO_SNDTIMEO:
|
||||||
case SYS_NET_SO_RCVTIMEO:
|
case SYS_NET_SO_RCVTIMEO:
|
||||||
{
|
{
|
||||||
|
|
|
@ -346,6 +346,12 @@ struct lv2_socket final
|
||||||
// Unsupported option
|
// Unsupported option
|
||||||
s32 so_tcp_maxseg = 1500;
|
s32 so_tcp_maxseg = 1500;
|
||||||
|
|
||||||
|
// Value keepers
|
||||||
|
#ifdef _WIN32
|
||||||
|
s32 so_reuseaddr = 0;
|
||||||
|
s32 so_reuseport = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Event processing workload (pair of thread id and the processing function)
|
// Event processing workload (pair of thread id and the processing function)
|
||||||
std::vector<std::pair<u32, std::function<bool(bs_t<lv2_socket::poll>)>>> queue;
|
std::vector<std::pair<u32, std::function<bool(bs_t<lv2_socket::poll>)>>> queue;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue