Commit Graph
102 Commits
Author SHA1 Message Date
Yunus Shaikh dda8c45be7 Merge #9515's main merge into feat/libscenet-ex-forwards 2026-10-23 06:50:35 -07:00
Dean 0825fee797 Merge pull request #10052 from maximilianfv/fix/libscenet-macos-udp-shutdown
fix(libSceNet): wake a receive on an unbound datagram socket at shutdown on macOS
2026-10-24 01:45:04 +13:00
78983daa1c fix(libSceNet): wake a receive on an unbound datagram socket at shutdown on macOS
On macOS, shutdown(SHUT_RD) on a UDP socket that was never bound does not
wake a thread blocked in recv on it, so sceNetShutdown left the receiver
hanging. Use the receive wait that Windows already has: block on the
socket table until the socket gets a local port or is shut, then poll.
On macOS an unbound socket reports port 0 from getsockname, so the check
looks at the port instead of the Winsock error.

Ported from #8658.

Co-authored-by: Himansh Raj <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 03:39:27 -03:00
Arnab Ghosh 5dfa258d9f feat(libSceNet): implement sceNetIoctl 2026-10-23 10:07:18 +06:00
Dean 1fd6f9bb58 Merge pull request #9544 from Queuse/codex/net-buffer-validation
fix(libSceNet): reject nonpositive socket buffers
2026-10-23 10:54:58 +13:00
Dean 1da03c6f34 Merge pull request #9076 from orezraey/fix/net-utilities-measured-ps5
fix(libSceNet): accept every sceNetMemoryAllocate flag as measured on a PS5
2026-10-23 09:22:21 +13:00
Dean 5d40eb3fdc Merge pull request #9106 from Retr0G28/fix/scenet-stream-recv-timeout-eagain
fix(libSceNet): report EAGAIN when a stream receive times out on Windows
2026-10-23 09:22:12 +13:00
Queuse f555d351c8 Merge remote-tracking branch 'origin/main' into codex/net-buffer-validation 2026-10-22 12:23:03 -03:00
Yunus Shaikh 43ea7772bb Merge main into feat/libscenet-ex-forwards 2026-10-22 06:35:18 -07:00
Dean 942dec44b4 Merge pull request #8598 from Ondra97/codex/fix-net-epoll-lifetime
fix(libSceNet): retire invalidated epoll registrations
2026-10-22 17:22:18 +13:00
ShinMalphur 24b7977241 Merge branch 'main' into feat/net-ether-address-parser 2026-10-22 09:44:29 +06:30
Yunus Shaikh a19d110222 feat(libSceNet): report the IPv4 default route in sceNetConfigGetDefaultRoute
sceNetConfigGetDefaultRoute threw. It now writes the IPv4 gateway of the
host interface that libSceNetCtl's sceNetCtlGetInfo already describes as
DEFAULT_ROUTE, in network byte order, the order sceNetInetPton writes an
AF_INET address in, and returns 0. libSceNetCtl exports
NetCtlHostIpv4Gateway_nid_no_patch for it, next to the DNS helper
sceNetGetDnsInfo uses. Without a gateway, or for a null pointer, it
still throws: the console's answer for a missing route is not measured.

Tested: guest_sce_net_tests, after sceNetCtlInit, prints the gateway
with sceNetInetNtop and compares it with sceNetCtlGetInfo's
DEFAULT_ROUTE text (192.0.2.1 on this host); a null pointer throws.
On a host without a default route the case checks that the call
throws and leaves the output untouched.
2026-10-22 01:44:35 +00:00
Yunus Shaikh b44ee56f7d feat(libSceNet): convert IPv6 text with a numeric scope ID
sceNetInetNtopWithScopeId and sceNetInetPtonWithScopeId threw. They now
handle AF_INET6 text with an RFC 4007 numeric zone (fe80::1%2): the
address part goes through sceNetInetNtop and sceNetInetPton, so it
follows the FreeBSD inet text rules, and the zone is printed and parsed
as FreeBSD 11.4's getnameinfo (NI_NUMERICSCOPE) and getaddrinfo do. A
zero scope ID prints the address alone and text without a zone parses
to scope ID 0. An empty zone, one above 2^32 - 1, or an invalid address
part returns 0 and leaves both outputs untouched; a buffer too small
for the scoped text gives ENOSPC.

A zone given as an interface name, and AF_INET, still throw: the tree
has no mapping from interface names to the console's interface indexes
and no answer for an IPv4 zone. The debt file says so.

Tested: guest_sce_net_tests round-trips fe80::1%2 (same address bytes
as fe80::1, scope ID 2) and ff02::1%4294967295, checks the exact
buffer size and ENOSPC one byte short, the unscoped forms, four
rejected texts with untouched outputs, EINVAL for null pointers, and
that an interface-name zone and AF_INET throw.
2026-10-22 01:39:06 +00:00
Yunus Shaikh 7a48107952 feat(libSceNet): forward sceNetSysctl to libkernel's sysctl
sceNetSysctl threw. Its restored argument list is FreeBSD's sysctl(3)
(name, name length, old value and size, new value and size), so it now
calls libkernel's sysctl. It answers exactly the MIBs libkernel models,
and a failure is returned as the library's other calls return one
(0x80410100 | errno, with the errno set).

Tested: guest_sce_net_tests reads hw.pagesize (6.7) through both
sysctl and sceNetSysctl and gets the same value and size, including a
size-only query. A one-level name gives EINVAL, a null name EFAULT, a
write EPERM and a one-byte buffer ENOMEM, each as 0x804101xx with the
errno set.
2026-10-22 01:37:18 +00:00
Yunus Shaikh 3cd3328124 feat(libSceNet): forward sceNetSocketInternal and the Ex socket options to their public twins
sceNetSocketInternal, sceNetGetsockoptEx and sceNetSetsockoptEx threw.
Their argument lists, restored with the rest of the firmware exports in
4d6942f1e, are the same as sceNetSocket, sceNetGetsockopt and
sceNetSetsockopt, so they now call those. Nothing in the tree records
how the console tells the entry points apart (for example by the
calling process); the debt file says so.

Tested: guest_sce_net_tests creates a datagram socket through
sceNetSocketInternal, sets SO_REUSEADDR and SO_RCVTIMEO through
sceNetSetsockoptEx and reads them back through sceNetGetsockoptEx and
sceNetGetsockopt with the same values. On a closed socket and on -1,
and for an unsupported family and type, each Ex/Internal call returns
the same error and errno as its public twin.
2026-10-22 01:36:24 +00:00
Queuze 4e7559ae9a fix(libSceNet): reject nonpositive socket buffers 2026-10-21 22:06:30 -03:00
orezraeyandClaude Opus 5.5 da0ed3b5c3 Merge main into fix/net-utilities-measured-ps5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 21:25:51 -03:00
Yunus Shaikh ef49574f5a Merge main into fix/libscenet-inet-text-rules 2026-10-21 15:49:51 -07:00
boykopovar 597d17ecb2 docs(net): record verified thread exit contract 2026-10-21 21:53:00 +03:00
boykopovar 979aa24f40 fix(net): restore server startup and routing parameter layouts 2026-10-21 21:51:28 +03:00
boykopovar e7a9514f8e fix(net): restore address callbacks and diagnostic start parameters 2026-10-21 21:50:52 +03:00
boykopovar 08904c9c47 fix(net): restore address route and internal statistics signatures 2026-10-21 21:50:51 +03:00
boykopovar 04f2d9a60f fix(net): reject unsupported diagnostic output after initialization 2026-10-21 21:50:44 +03:00
boykopovar 60ca71bd1f fix(net): restore wlan scan buffers and result outputs 2026-10-21 21:50:43 +03:00
boykopovar 77f3c97478 fix(net): restore wlan and dhcp query signatures 2026-10-21 21:50:42 +03:00
boykopovar 1a214787ce fix(net): correct allocation size and flag handling 2026-10-21 21:47:59 +03:00
boykopovar 0f6161f885 fix(net): enforce initialization for sleep and random calls 2026-10-21 21:47:58 +03:00
boykopovar 85b192580a fix(net): recover thread join and interface list signatures 2026-10-21 21:47:47 +03:00
boykopovar 60e09c873d fix(net): recover scoped address and interface control signatures 2026-10-21 21:47:47 +03:00
boykopovar 0e9839e53c fix(net): recover packet dump and control signatures 2026-10-21 21:47:34 +03:00
boykopovar 1ef8e7beab fix(net): recover ipv4 and ipv6 dns parameter layouts 2026-10-21 21:47:33 +03:00
boykopovar 9a09fc0a78 fix(net): restore dns cache argument validation 2026-10-21 21:47:32 +03:00
boykopovar 1d9ba432df fix(net): recover diagnostic buffer and pool signatures 2026-10-21 21:47:31 +03:00
boykopovar 5c9322b1e0 fix(net): recover synchronization and event callback contracts 2026-10-21 21:47:07 +03:00
boykopovar 2b94ddfa7e fix(net): recover ipv6 interface configuration signatures 2026-10-21 21:45:11 +03:00
boykopovar 45997cbfe9 fix(net): recover address and route configuration signatures 2026-10-21 21:45:08 +03:00
boykopovar 9ccfc42192 fix(net): recover socket and interface control signatures 2026-10-21 21:45:07 +03:00
ShinMalphur f923ebb200 docs(net): state measured parser compatibility gaps 2026-10-21 23:29:59 +06:30
ShinMalphur b1ccca5cf7 Merge branch 'main' into feat/net-ether-address-parser 2026-10-21 23:24:11 +06:30
Retr0 3509bb528a fix(libSceNet): report EAGAIN when a stream receive times out on Windows
FreeBSD 11.4's soreceive_generic waits in sbwait (sys/kern/uipc_socket.c,
uipc_sockbuf.c), whose msleep_sbt on so_rcv.sb_timeo returns EWOULDBLOCK
(35) for every socket type when SO_RCVTIMEO expires. On Windows the host
socket is non-blocking and native_transfer enforces the timeout itself,
but it reported WSAETIMEDOUT, which only datagram receives turned into
EAGAIN; a stream receive failed with ETIMEDOUT (60). A receive that
reaches the stored timeout now reports WSAEWOULDBLOCK, so every
receive returns EAGAIN, and a host WSAETIMEDOUT still maps to ETIMEDOUT.
2026-10-21 15:26:46 +03:00
orezraeyandClaude Opus 5.5 c5df2f4ce0 fix(libSceNet): accept every sceNetMemoryAllocate flag as measured on a PS5
A PS5 (firmware 13.60) allocates with any flag value, zero-fills only for
flag 2 and returns 64-byte aligned blocks. Record the measured behaviour of
sceNetGetIfName, sceNetGetRandom, sceNetGetSystemTime, sceNetMemoryFree and
sceNetUsleep, which already match the console, and keep only their open gaps.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 08:48:19 -03:00
jagrat Singh 54d1a8d6d6 feat(libSceNet): implement sceNetShowRoute6 2026-10-21 12:44:40 +02:00
Dean 7ef094f7d4 Merge pull request #8222 from jagrat04/feat/libSceNet-show-route
feat(libSceNet): implement sceNetShowRoute
2026-10-21 20:19:56 +13:00
Ondra97 ed471c62e3 chore: merge main into epoll lifetime fix 2026-10-21 06:31:02 +02:00
Ondra97 401dee24b6 docs(net): keep transfer polling debt concise 2026-10-21 02:01:58 +02:00
Ondra97 c415375041 fix(net): finish blocking stream sends after short writes 2026-10-21 01:53:43 +02:00
Ondra97 6ac1e70057 fix(libSceNet): link epoll lifetime tests with net control 2026-10-21 01:19:49 +02:00
Dean 7e6830ec55 Merge pull request #8268 from Athen2045/feat/net-dns-info
feat(libSceNet): implement sceNetGetDnsInfo
2026-10-21 11:50:31 +13:00
Ondra97 e6ec827647 fix(libSceNet): reject invalid descriptors for epoll DEL 2026-10-20 22:24:10 +02:00
Ondra97 1b182e7fb2 fix(net): keep MSG_DONTWAIT transfers nonblocking on Windows 2026-10-20 21:47:08 +02:00