Files
BlackBearReloaded c2b50141fd Local wireless multiplayer through Eden rooms (#101)
* Validate Eden room packets and add offline interoperability checks

* Bound proxy decompression and receive queues

* Add asynchronous room controller and cancellable connections

* Wire room settings and lifecycle into the launcher

* Bound outgoing room queues and test stalled peers

* Own room receive callbacks per proxy socket

* Support proxy polling and release sockets between games

* Retain guest sockets across descriptor changes

* Record offline qualification and freeze fresh candidates

* Record room server and read-only console preflight evidence

* Show room members and reported games in a scrollable list

* Document Tailscale capabilities and verify room rejection recovery

* Record remaining hardware validation prerequisites

* Record successful room transport over Tailscale

* Record verified console deployment for operator testing

* Use a supported keyboard type for masked password entry

* Remember room passwords and report connection failures

* Report ENet handshake errors and packet counts

* Parse numeric room addresses before invoking the resolver

* Record operator-confirmed PS5 room connection

* Use the room virtual interface for guest wireless networking

* Compose room interfaces with the native getifaddrs adaptation

* Exercise LDN discovery and peer connection through a real room

* Record PS5 Mario Kart wireless lobby validation

* Record live LDN traffic, recovery and Tailscale component validation

* Prepare official desktop reference and correct room interface guidance

* Record public room connection and native DNS failure

* Show multiplayer connection status on home and settings

* Make external Tailscale qualification optional

* Invalidate network compiler cache for generated room headers

* Use the pinned Boost version in multiplayer host checks

* Show room server ping in the game overlay

* Record verified ping overlay deployment to PS5

* Respect detailed logging settings for multiplayer diagnostics

* Make the room socket non-blocking on the console so the member loop can send the join request

* Add public room browser beside private multiplayer connection

* Keep multiplayer destination choice selectable while connected

* Record local public browser validation and deferred console test

* Explain multiplayer connection failures in a persistent UI panel

* Define idle-only multiplayer validation on console .40

* Record console .40 public directory and private room validation

* Update public room notes for PR publication

* Keep the saved private room on public joins, save the private form as typed, and harden the public room list

* Translate the multiplayer and public room texts in all 29 languages
2026-10-11 01:02:48 -04:00

32 lines
1.0 KiB
C++

// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
#include <cstring>
#include "core/hle/service/ldn/ldn_types.h"
namespace Eden::Multiplayer {
inline bool ValidLdnPacket(const Network::LDNPacket& packet) {
using namespace Service::LDN;
using Network::LDNPacketType;
switch (packet.type) {
case LDNPacketType::Scan:
case LDNPacketType::DestroyNetwork:
return packet.data.empty();
case LDNPacketType::ScanResp:
case LDNPacketType::SyncNetwork: {
if (packet.data.size() != sizeof(NetworkInfo)) return false;
NetworkInfo info{};
std::memcpy(&info, packet.data.data(), sizeof(info));
if (info.ldn.node_count_max > NodeCountMax ||
info.ldn.node_count > info.ldn.node_count_max ||
info.ldn.advertise_data_size > AdvertiseDataSizeMax) return false;
return true;
}
case LDNPacketType::Connect:
case LDNPacketType::Disconnect:
return packet.data.size() == sizeof(NodeInfo);
default:
return false;
}
}
} // namespace Eden::Multiplayer