Commit Graph
200 Commits
Author SHA1 Message Date
Yunus Shaikh 89da0c7455 Merge main into feat/libscenet-ex-forwards 2026-10-25 16:23:05 -07:00
Adrià b76f08cf33 Merge pull request #9727 from KernelPanicNT/fix/net-reject-unsupported-flags
fix(libSceNet): reject the flags and names the module rejects
2026-10-26 00:07:35 +01:00
KernelPanicNT 6e8ec6d213 fix(libSceNet): reject the flags and names the module rejects
sceNetEpollCreate fails with EINVAL for a null name or non-zero flags,
sceNetResolverCreate and sceNetGetMacAddress for non-zero flags, and
sceNetResolverStartNtoa, before any other check, for a negative timeout
or retry count or a flag bit outside 0x10001, as prosper reads the
libSceNet module. The two accepted resolver flag bits are still ignored,
which the debt file now records.
2026-10-25 19:52:23 +01:00
Braxton Atkinson 67c149465e feat(net): store DNS overrides and match firmware argument checks
Apply the firmware 13.42 module-probe report in PR #9506: all four DNS calls check initialization first; getters return EINVAL for null outputs or nonzero flags; setters reject flags before reading guest memory. Keep the checked input copy and document EFAULT as host safety, not firmware behavior. Use the current public Net.hpp declarations in the regression.

Rebased onto upstream e7e3e9c198. Ubuntu 24.04, GCC 13.3, Release: actual libc/libkernel/libSceNet libraries and both focused test executables built. guest_sce_net passes. A separate harness linked against those unmodified libraries passes initialization, errno, invalid flags, unreadable-input flag precedence, null clearing and unchanged-output checks. The full guest_net_dns_info test is blocked here: process_vm_readv is denied with EPERM by the execution environment. No full DNS regression pass is claimed. Public-header audit, conventions, test registration and whitespace checks pass.

The resolver still uses host DNS; IPv6 host-server discovery and firmware server-count behavior remain debt. Firmware evidence: https://github.com/boykopovar/AnyPS5/pull/9506#issuecomment-6390574180

AI-assisted: yes
2026-10-25 18:56:14 +01:00
Adrià f50caac5c2 Merge pull request #9494 from EagleBearerYS/fix/libscenet-inet-text-rules
fix(libSceNet): follow FreeBSD inet text rules for IPv6
2026-10-25 18:23:21 +01:00
Adrià 0c1563e357 Merge pull request #9493 from EagleBearerYS/fix/libscenet-closed-stream-readable
fix(libSceNet): report a stream whose peer closed as readable on Windows
2026-10-25 18:22:51 +01:00
Yunus Shaikh fc881b9259 Merge main into fix/libscenet-inet-text-rules
Main's #10706 removes the local declarations at the top of libSceNet's
Export.cpp, where this branch had added __inet_pton and __inet_ntop.
libkernel's Api.hpp, which Export.cpp includes, now declares both, so the
merge takes main's side there.
2026-10-25 07:07:33 -07:00
Yunus Shaikh 7f300827d1 Merge main into feat/libscenet-ex-forwards
Main extends the libkernel debt entry on libSceNet sockets with poll and
fcntl, where this branch adds getsockopt to the same entry; the merge keeps
both.
2026-10-25 03:53:25 -07:00
Dean e599efd64d Merge pull request #10572 from ZSWolt/fix/libscenet-usleep-negative-log
fix(libSceNet): print the console's line for a negative sceNetUsleep
2026-10-25 19:06:10 +13:00
Yunus Shaikh 6c938db3ce Merge #9515's main merge into feat/libscenet-ex-forwards
Main's #10706 declares the libSceNet functions this branch implements, and libkernel's sysctl, __inet_pton and __inet_ntop, in the libraries' public headers, so this branch's local declarations of them in GuestSceNet.cpp and libSceNet's Export.cpp go.
2026-10-24 17:41:13 -07:00
Yunus Shaikh fc47c2f491 Merge main into fix/libkernel-getsockopt-net-sockets
Main's #10706 declares getsockopt_nid_postfix and sceNetGetsockopt in the libraries' public headers, so this branch's local declarations of them in GuestSceNet.cpp and libSceNet's Export.cpp go.
2026-10-24 17:34:28 -07:00
boykopovar fdf9ca7574 fix(sdk): reconcile public headers after rebase 2026-10-24 23:17:47 +03:00
boykopovar f38d29fd08 refactor(sdk): add canonical headers for remaining libraries 2026-10-24 23:17:42 +03:00
boykopovar 35cf8d56cd refactor(sdk): add canonical headers for core libraries 2026-10-24 23:17:37 +03:00
Yunus Shaikh 5cffcf56d1 Merge #9515's main merge into feat/libscenet-ex-forwards 2026-10-24 10:41:54 -07:00
Yunus Shaikh abbb7ac6b5 Merge main into fix/libkernel-getsockopt-net-sockets 2026-10-24 10:41:17 -07:00
Adrià 8f2e9cd077 Merge pull request #8398 from Chikimaro/feat/libscenetctl-nptoolkit-callbacks
feat(libSceNetCtl): implement the NpToolkit callback register, unregister and check
2026-10-24 18:42:46 +02:00
Adrià d4b85d2b29 Merge pull request #8362 from MarrasFederico/feat/net-get-sock-info6
feat(libSceNet): list IPv6 sockets in sceNetGetSockInfo6
2026-10-24 18:41:46 +02:00
Adrià 3102f39af0 Merge pull request #8235 from jagrat04/feat/libSceNet-show-route-with-memory
feat(libSceNet): implement sceNetShowRouteWithMemory
2026-10-24 17:17:45 +02:00
ZSWoltandClaude Opus 5.5 412c3cd91f fix(libSceNet): print the console's line for a negative sceNetUsleep
After sceNetInit, the console's sceNetUsleep prints
"[LIBNET] usleep <count>" to standard output for a negative count
before failing with EINVAL, as a payload measured on firmware 13.60
(#9076). AnyPS5 failed without printing it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 13:30:52 +03:00
jagrat Singh 32455327e4 feat(libSceNet): implement sceNetShowNetstatEx 2026-10-24 12:20:53 +02:00
Adrià 2dc8e456b5 Merge pull request #8225 from jagrat04/feat/libSceNet-show-policy
feat(libSceNet): implement sceNetShowPolicy
2026-10-24 12:18:48 +02:00
Yunus Shaikh c0caad00ca Merge main into feat/libscenet-ex-forwards 2026-10-23 19:18:15 -07:00
Yunus Shaikh fca8266468 Merge main into fix/libscenet-inet-text-rules 2026-10-23 19:15:30 -07:00
orezraeyandClaude Opus 5.5 b2dc84b68d fix(libSceNet): read sceNetInetPton text and null outputs as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 13:17:24 -03:00
orezraeyandClaude Opus 5.5 d4321c6569 docs(libSceNet): separate the PS4 and PS5 measurements of sceNetInetPtonEx
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 13:10:40 -03:00
orezraeyandClaude Opus 5.5 dd9716e1c3 fix(libSceNet): convert sceNetInetPtonEx without an output as measured on a PS5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-23 13:10:40 -03:00
Yunus Shaikh dda8c45be7 Merge #9515's main merge into feat/libscenet-ex-forwards 2026-10-23 06:50:35 -07:00
Yunus Shaikh efd999c8ed Merge main into fix/libkernel-getsockopt-net-sockets
# Conflicts:
#	docs/dev/debt/libkernel.md
2026-10-23 06:49:51 -07:00
Dean da46482789 Merge pull request #9872 from MarcZX10/test/net-resolver-family-coverage
test(net): preserve resolver address-family coverage
2026-10-24 01:13:52 +13:00
Arnab Ghosh 5dfa258d9f feat(libSceNet): implement sceNetIoctl 2026-10-23 10:07:18 +06: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
MarcZX10 53d3d8674e test(net): constrain deterministic resolver failures 2026-10-22 20:07:41 +00:00
MarcZX10 d37f11e424 test(net): preserve real address-family failure coverage 2026-10-22 20:07:41 +00:00
Yunus Shaikh 43ea7772bb Merge main into feat/libscenet-ex-forwards 2026-10-22 06:35:18 -07:00
Chikimaro 7854d19936 Merge main into feat/libscenetctl-nptoolkit-callbacks
main now starts libSceNetCtl initialized, so GuestNetCtl's checks before
sceNetCtlInit expect argument errors; the NpToolkit register, unregister
and check join them with the errors and result their IPv4 counterparts give.
2026-10-22 09:56:31 +00:00
MarcZX10 548aecf030 test(net): make resolver failures deterministic 2026-10-22 05:36:57 +00:00
Yunus Shaikh 094e920c5d Merge main into fix/libscenet-inet-text-rules 2026-10-21 22:31:24 -07:00
Federico Marras 9bfec5ad68 Merge remote-tracking branch 'upstream/main' into feat/net-get-sock-info6
# Conflicts:
#	core/libs/prx/libSceNet/Export.cpp
#	docs/dev/debt/libSceNet.md
2026-10-22 06:57:58 +02:00
Yunus Shaikh 0a01fca94f Merge main into fix/libscenet-closed-stream-readable
# Conflicts:
#	core/libs/prx/libSceNet/Export.cpp
2026-10-21 21:43:39 -07:00
jagrat Singh a7d4d04066 feat(libSceNet): implement sceNetShowRouteWithMemory 2026-10-22 10:10:29 +05:30
jagrat Singh 08d4c3cb41 feat(libSceNet): implement sceNetShowPolicy 2026-10-22 09:49:11 +05:30
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
Yunus Shaikh 528ede377d Merge #9494 and #9515 into feat/libscenet-ex-forwards
Base for the libSceNet Ex/Internal forwards: upstream main 94fbb8cea with fix/libscenet-inet-text-rules (ef49574f5) and fix/libkernel-getsockopt-net-sockets (aea804d9f).
2026-10-22 01:31:01 +00: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