From f80c7c4cd5c090b9a31f89a0eb3d86cbe928c50b Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Sat, 30 Jul 2022 05:58:23 +0200 Subject: core, network: Add ability to proxy socket packets --- src/common/CMakeLists.txt | 1 + src/common/announce_multiplayer_room.h | 10 ++----- src/common/socket_types.h | 52 ++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 src/common/socket_types.h (limited to 'src/common') diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index a6dc31b53..635fb85c8 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -124,6 +124,7 @@ add_library(common STATIC settings.h settings_input.cpp settings_input.h + socket_types.h spin_lock.cpp spin_lock.h stream.cpp diff --git a/src/common/announce_multiplayer_room.h b/src/common/announce_multiplayer_room.h index 0ad9da2be..cb004e0eb 100644 --- a/src/common/announce_multiplayer_room.h +++ b/src/common/announce_multiplayer_room.h @@ -8,12 +8,11 @@ #include #include #include "common/common_types.h" +#include "common/socket_types.h" #include "web_service/web_result.h" namespace AnnounceMultiplayerRoom { -using MacAddress = std::array; - struct GameInfo { std::string name{""}; u64 id{0}; @@ -24,7 +23,7 @@ struct Member { std::string nickname; std::string display_name; std::string avatar_url; - MacAddress mac_address; + Network::IPv4Address fake_ip; GameInfo game; }; @@ -75,10 +74,7 @@ public: const bool has_password, const GameInfo& preferred_game) = 0; /** * Adds a player information to the data that gets announced - * @param nickname The nickname of the player - * @param mac_address The MAC Address of the player - * @param game_id The title id of the game the player plays - * @param game_name The name of the game the player plays + * @param member The player to add */ virtual void AddPlayer(const Member& member) = 0; diff --git a/src/common/socket_types.h b/src/common/socket_types.h new file mode 100644 index 000000000..5bb309a44 --- /dev/null +++ b/src/common/socket_types.h @@ -0,0 +1,52 @@ +// Copyright 2022 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/common_types.h" + +namespace Network { + +/// Address families +enum class Domain : u8 { + INET, ///< Address family for IPv4 +}; + +/// Socket types +enum class Type { + STREAM, + DGRAM, + RAW, + SEQPACKET, +}; + +/// Protocol values for sockets +enum class Protocol : u8 { + ICMP, + TCP, + UDP, +}; + +/// Shutdown mode +enum class ShutdownHow { + RD, + WR, + RDWR, +}; + +/// Array of IPv4 address +using IPv4Address = std::array; + +/// Cross-platform sockaddr structure +struct SockAddrIn { + Domain family; + IPv4Address ip; + u16 portno; +}; + +constexpr u32 FLAG_MSG_PEEK = 0x2; +constexpr u32 FLAG_MSG_DONTWAIT = 0x80; +constexpr u32 FLAG_O_NONBLOCK = 0x800; + +} // namespace Network -- cgit v1.2.3 From bb84f5353927e473f39fc5fac741a623b48a1ef1 Mon Sep 17 00:00:00 2001 From: FearlessTobi Date: Sat, 30 Jul 2022 20:16:47 +0200 Subject: Make copyright headers SPDX-compliant --- src/common/socket_types.h | 5 ++--- src/core/internal_network/socket_proxy.cpp | 5 ++--- src/core/internal_network/socket_proxy.h | 5 ++--- src/dedicated_room/CMakeLists.txt | 3 +++ src/dedicated_room/yuzu-room.cpp | 5 ++--- src/dedicated_room/yuzu-room.rc | 3 +++ 6 files changed, 14 insertions(+), 12 deletions(-) (limited to 'src/common') diff --git a/src/common/socket_types.h b/src/common/socket_types.h index 5bb309a44..0a801a443 100644 --- a/src/common/socket_types.h +++ b/src/common/socket_types.h @@ -1,6 +1,5 @@ -// Copyright 2022 yuzu emulator team -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/core/internal_network/socket_proxy.cpp b/src/core/internal_network/socket_proxy.cpp index 6e8924822..b9c50430e 100644 --- a/src/core/internal_network/socket_proxy.cpp +++ b/src/core/internal_network/socket_proxy.cpp @@ -1,6 +1,5 @@ -// Copyright 2022 yuzu emulator team -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later #include #include diff --git a/src/core/internal_network/socket_proxy.h b/src/core/internal_network/socket_proxy.h index ef7d5b554..614f91e99 100644 --- a/src/core/internal_network/socket_proxy.h +++ b/src/core/internal_network/socket_proxy.h @@ -1,6 +1,5 @@ -// Copyright 2022 yuzu emulator team -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. +// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/src/dedicated_room/CMakeLists.txt b/src/dedicated_room/CMakeLists.txt index 7a29bd015..7b9dc9c04 100644 --- a/src/dedicated_room/CMakeLists.txt +++ b/src/dedicated_room/CMakeLists.txt @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: 2017 Citra Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMakeModules) add_executable(yuzu-room diff --git a/src/dedicated_room/yuzu-room.cpp b/src/dedicated_room/yuzu-room.cpp index 9c1bfaab9..88645dba7 100644 --- a/src/dedicated_room/yuzu-room.cpp +++ b/src/dedicated_room/yuzu-room.cpp @@ -1,6 +1,5 @@ -// Copyright 2017 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. +// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later #include #include diff --git a/src/dedicated_room/yuzu-room.rc b/src/dedicated_room/yuzu-room.rc index b616a5764..a08957684 100644 --- a/src/dedicated_room/yuzu-room.rc +++ b/src/dedicated_room/yuzu-room.rc @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: 2017 Citra Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + #include "winresrc.h" ///////////////////////////////////////////////////////////////////////////// // -- cgit v1.2.3