Repository navigation
fix(libkernel): keep the TCP flag and IP receive options a PS5 accepts - #10350
oneandonlydean merged 7 commits into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed the incremental change at dd27146, with #10331's stacked dependency separated from this diff. The added TCP flag state reproduces the reported readback values, and only TCP_NOPUSH is inherited by accepted sockets as claimed. The IPv4 receive-option bits are kept separately from TTL/TOS and are independently tested; the PR explicitly records that IP_RECVTTL's set behavior and delivery of ancillary data remain unimplemented/unverified. The reported retail PS5 measurements and focused guest tests cover the newly added cases. Hosted eligibility, conventions, intake, labels and report checks pass; product jobs are skipped by path policy. I did not run the socket tests locally. No blocking issue found in this incremental diff.
|
@orezraey Could you refresh this child onto the settled #10331 prerequisite? It currently embeds 062dc00, while #10331’s reviewed head is 4dc6530. GuestSocketOptions.cpp:364/:373 still conditionally omits multicast assertions when setup fails. Preserve the parent’s strict guest_socket_options_multicast fixture and rerun it with guest_socket_options, guest_socket_stream_options and guest_underscore_entries on Linux and Windows, with actual passes. Resolve unsupported-form throw assertions in the parent rather than copying them here; retain TCP_NOPUSH-only inheritance and independent IP bits. |
…nel-socket-receive-flags-measured-ps5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Refreshed onto #10331: 9402457 merges its current head f6d9973 (which follows 4dc6530 and drops the non-zero-address |
|
@xXPBSXx: #8448 changes the same lines as this PR in |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nel-socket-receive-flags-measured-ps5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@orezraey The child now includes current #10331 d9d84b5, and its strict, separately registered multicast fixture is preserved, including the INADDR_ANY drop case. The own TCP/IP flag behavior and TCP tests remain unchanged. The final main merge is only through 137a8fa, before #10330 landed, so this head still conflicts with current main in libkernel.md. Once #10331 is settled, please refresh current main and retain the landed SOL_SOCKET debt together with this PR’s updated option counts, TCP/IP receive gap and multicast entry. Keep the strict fixture; we will run full CI on the resulting head. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@oneandonlydean Merged current main (after #10330) in fddc34a, still over #10331 at d9d84b5. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
Six more socket options measured on a retail PS5 (firmware 13.60) through
libkernel_sys.sprxfrom a payload process. The source and console log are in this gist (pinet6). This branch is on top of #10331 (and so the socket option stack below it), which edit the same option code and debt entries.On the console:
TCP_NOPUSH(4) andTCP_NOOPT(8) start at 0, read back as 0x1000 and 0x8 after any non-zero value, and as 0 after 0, as FreeBSD'sTF_NOPUSHandTF_NOOPTbits;TCP_KEEPINIT, behaves as a flag: 0 at first, 0x10000 after 5 or -1, 0 after 0;IP_RECVDSTADDR(7) andIP_RECVIF(20) start at 0 and read back as 1 after a non-zero value;IP_RECVTTL(65) reads 0.AnyPS5 failed all six with
ENOPROTOOPT. They are now kept per socket and read back as above, and an accepted socket takesTCP_NOPUSHfrom its listener as FreeBSD 11.4'ssyncache_socketdoes. None of them changes traffic:TCP_NOPUSHdoes not hold back sends and the IP options add no control message torecvmsg, which a new debt entry records along with the unmeasuredIP_RECVTTLset path.Tested
Windows 11, MinGW (winlibs).
main50757b0 merged in after fix(libkernel): join and leave multicast groups as measured on a PS5 #10331 landed; the merge was clean and this PR's diff againstmainis unchanged): all 28guest_socket*tests pass three runs in a row on Windows 11 (MinGW GCC 15.2), and the 14 that run on Linux pass three runs in a row on Linux (WSL2, GCC 16.2).mainmerged in after fix(libkernel): keep the SOL_SOCKET flags a PS5 accepts #10330, over fix(libkernel): join and leave multicast groups as measured on a PS5 #10331 at d9d84b5;libkernel.mdkeeps the landedSO_DEBUG, SO_REUSEADDR, ...SOL_SOCKET entry with this PR's option counts, itsTCP_NOPUSH/IP_RECV*entry and fix(libkernel): join and leave multicast groups as measured on a PS5 #10331's multicast entry; the separately registered multicast fixture is unchanged):guest_socket_options,guest_socket_options_multicastandguest_socket_stream_optionspass three runs in a row on Windows 11 (MinGW GCC 15.2) and on Linux (WSL2, GCC 16.2).mainmerged in;libkernel.mdkeeps fix(libkernel): join and leave multicast groups as measured on a PS5 #10331's andmain's socket entries, with this PR's option counts and itsTCP_NOPUSH/IP_RECV*entry):guest_socket_options,guest_socket_options_multicast,guest_socket_stream_optionsandguest_underscore_entriespass three runs in a row on Windows 11 (MinGW GCC 15.2) and on Linux (WSL).guest_socket_stream_optionschecks the three TCP flags and theTCP_NOPUSHinheritance;guest_socket_optionschecks the three IP options. The socket and net tests pass three runs in a row.-E "^agc_|^select_tests$") passes apart fromguest_kqueue, which fails only under-j 14, as onmain.tools/check_conventions.pypasses.tools/pr_overlap.py: fix(libkernel): validate the pointers of getsockopt and setsockopt like FreeBSD #7511, fix(libkernel): fail an unknown setsockopt or getsockopt level with EINVAL like FreeBSD #8448, docs(debt): record what a Windows UDP socket keeps after connect(AF_UNSPEC) #8921 touch nearby lines; whichever lands second keeps both.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)