diff --git a/pcsx2/DEV9/Sessions/UDP_Session/UDP_FixedPort.cpp b/pcsx2/DEV9/Sessions/UDP_Session/UDP_FixedPort.cpp index fcc1e429c4..4a7feeb32d 100644 --- a/pcsx2/DEV9/Sessions/UDP_Session/UDP_FixedPort.cpp +++ b/pcsx2/DEV9/Sessions/UDP_Session/UDP_FixedPort.cpp @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: 2002-2023 PCSX2 Dev Team // SPDX-License-Identifier: LGPL-3.0+ +#include + #include "common/Assertions.h" #include "common/Console.h" @@ -47,7 +49,7 @@ namespace Sessions } const int reuseAddress = true; //BOOL - ret = setsockopt(client, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuseAddress, sizeof(reuseAddress)); + ret = setsockopt(client, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast(&reuseAddress), sizeof(reuseAddress)); if (ret == SOCKET_ERROR) Console.Error("DEV9: UDP: Failed to set SO_REUSEADDR. Error: %d", @@ -58,7 +60,7 @@ namespace Sessions #endif const int broadcastEnable = true; //BOOL - ret = setsockopt(client, SOL_SOCKET, SO_BROADCAST, (const char*)&broadcastEnable, sizeof(broadcastEnable)); + ret = setsockopt(client, SOL_SOCKET, SO_BROADCAST, reinterpret_cast(&broadcastEnable), sizeof(broadcastEnable)); if (ret == SOCKET_ERROR) Console.Error("DEV9: UDP: Failed to set SO_BROADCAST. Error: %d", @@ -68,12 +70,12 @@ namespace Sessions errno); #endif - sockaddr_in endpoint{0}; + sockaddr_in endpoint{}; endpoint.sin_family = AF_INET; - *(IP_Address*)&endpoint.sin_addr = adapterIP; + endpoint.sin_addr = std::bit_cast(adapterIP); endpoint.sin_port = htons(parPort); - ret = bind(client, (const sockaddr*)&endpoint, sizeof(endpoint)); + ret = bind(client, reinterpret_cast(&endpoint), sizeof(endpoint)); if (ret == SOCKET_ERROR) Console.Error("DEV9: UDP: Failed to bind socket. Error: %d", @@ -93,7 +95,7 @@ namespace Sessions fd_set sReady; fd_set sExcept; - timeval nowait{0}; + timeval nowait{}; FD_ZERO(&sReady); FD_ZERO(&sExcept); FD_SET(client, &sReady); @@ -118,11 +120,11 @@ namespace Sessions int error = 0; #ifdef _WIN32 int len = sizeof(error); - if (getsockopt(client, SOL_SOCKET, SO_ERROR, (char*)&error, &len) < 0) + if (getsockopt(client, SOL_SOCKET, SO_ERROR, reinterpret_cast(&error), &len) < 0) Console.Error("DEV9: UDP: Unkown UDP Connection Error (getsockopt Error: %d)", WSAGetLastError()); #elif defined(__POSIX__) socklen_t len = sizeof(error); - if (getsockopt(client, SOL_SOCKET, SO_ERROR, (char*)&error, &len) < 0) + if (getsockopt(client, SOL_SOCKET, SO_ERROR, reinterpret_cast(&error), &len) < 0) Console.Error("DEV9: UDP: Unkown UDP Connection Error (getsockopt Error: %d)", errno); #endif else @@ -136,7 +138,7 @@ namespace Sessions unsigned long available = 0; PayloadData* recived = nullptr; std::unique_ptr buffer; - sockaddr endpoint{0}; + sockaddr_in endpoint{}; //FIONREAD returns total size of all available messages //but we will read one message at a time @@ -154,7 +156,7 @@ namespace Sessions #elif defined(__POSIX__) socklen_t fromlen = sizeof(endpoint); #endif - ret = recvfrom(client, (char*)buffer.get(), available, 0, &endpoint, &fromlen); + ret = recvfrom(client, reinterpret_cast(buffer.get()), available, 0, reinterpret_cast(&endpoint), &fromlen); } if (ret == SOCKET_ERROR) @@ -175,9 +177,8 @@ namespace Sessions UDP_Packet* iRet = new UDP_Packet(recived); iRet->destinationPort = port; - sockaddr_in* sockaddr = (sockaddr_in*)&endpoint; - destIP = *(IP_Address*)&sockaddr->sin_addr; - iRet->sourcePort = ntohs(sockaddr->sin_port); + destIP = std::bit_cast(endpoint.sin_addr); + iRet->sourcePort = ntohs(endpoint.sin_port); { std::lock_guard numberlock(connectionSentry); @@ -213,7 +214,6 @@ namespace Sessions UDP_Session* s = new UDP_Session(parNewKey, adapterIP, parIsBrodcast, parIsMulticast, client); s->AddConnectionClosedHandler([&](BaseSession* session) { HandleChildConnectionClosed(session); }); - { std::lock_guard numberlock(connectionSentry); connections.push_back(s); diff --git a/pcsx2/DEV9/Sessions/UDP_Session/UDP_Session.cpp b/pcsx2/DEV9/Sessions/UDP_Session/UDP_Session.cpp index fe71041097..c8d60ba72e 100644 --- a/pcsx2/DEV9/Sessions/UDP_Session/UDP_Session.cpp +++ b/pcsx2/DEV9/Sessions/UDP_Session/UDP_Session.cpp @@ -80,7 +80,7 @@ namespace Sessions fd_set sReady; fd_set sExcept; - timeval nowait{0}; + timeval nowait{}; FD_ZERO(&sReady); FD_ZERO(&sExcept); FD_SET(client, &sReady); @@ -105,11 +105,11 @@ namespace Sessions int error = 0; #ifdef _WIN32 int len = sizeof(error); - if (getsockopt(client, SOL_SOCKET, SO_ERROR, (char*)&error, &len) < 0) + if (getsockopt(client, SOL_SOCKET, SO_ERROR, reinterpret_cast(&error), &len) < 0) Console.Error("DEV9: UDP: Unkown UDP Connection Error (getsockopt Error: %d)", WSAGetLastError()); #elif defined(__POSIX__) socklen_t len = sizeof(error); - if (getsockopt(client, SOL_SOCKET, SO_ERROR, (char*)&error, &len) < 0) + if (getsockopt(client, SOL_SOCKET, SO_ERROR, reinterpret_cast(&error), &len) < 0) Console.Error("DEV9: UDP: Unkown UDP Connection Error (getsockopt Error: %d)", errno); #endif else @@ -123,7 +123,7 @@ namespace Sessions unsigned long available = 0; PayloadData* recived = nullptr; std::unique_ptr buffer; - sockaddr endpoint{0}; + sockaddr_in endpoint{}; //FIONREAD returns total size of all available messages //but we will read one message at a time @@ -141,7 +141,7 @@ namespace Sessions #elif defined(__POSIX__) socklen_t fromlen = sizeof(endpoint); #endif - ret = recvfrom(client, (char*)buffer.get(), available, 0, &endpoint, &fromlen); + ret = recvfrom(client, reinterpret_cast(buffer.get()), available, 0, reinterpret_cast(&endpoint), &fromlen); } if (ret == SOCKET_ERROR) @@ -235,7 +235,7 @@ namespace Sessions } const int reuseAddress = true; //BOOL - ret = setsockopt(client, SOL_SOCKET, SO_REUSEADDR, (const char*)&reuseAddress, sizeof(reuseAddress)); + ret = setsockopt(client, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast(&reuseAddress), sizeof(reuseAddress)); if (ret == SOCKET_ERROR) Console.Error("DEV9: UDP: Failed to set SO_REUSEADDR. Error: %d", @@ -247,11 +247,11 @@ namespace Sessions if (adapterIP.integer != 0) { - sockaddr_in endpoint{0}; + sockaddr_in endpoint{}; endpoint.sin_family = AF_INET; - *(IP_Address*)&endpoint.sin_addr = adapterIP; + endpoint.sin_addr = std::bit_cast(adapterIP); - ret = bind(client, (const sockaddr*)&endpoint, sizeof(endpoint)); + ret = bind(client, reinterpret_cast(&endpoint), sizeof(endpoint)); if (ret == SOCKET_ERROR) Console.Error("DEV9: UDP: Failed to bind socket. Error: %d", @@ -264,12 +264,12 @@ namespace Sessions pxAssert(isMulticast == false); - sockaddr_in endpoint{0}; + sockaddr_in endpoint{}; endpoint.sin_family = AF_INET; - *(IP_Address*)&endpoint.sin_addr = destIP; + endpoint.sin_addr = std::bit_cast(destIP); endpoint.sin_port = htons(destPort); - ret = connect(client, (const sockaddr*)&endpoint, sizeof(endpoint)); + ret = connect(client, reinterpret_cast(&endpoint), sizeof(endpoint)); if (ret == SOCKET_ERROR) { @@ -293,24 +293,24 @@ namespace Sessions int ret = SOCKET_ERROR; if (isBroadcast) { - sockaddr_in endpoint{0}; + sockaddr_in endpoint{}; endpoint.sin_family = AF_INET; endpoint.sin_addr.s_addr = INADDR_BROADCAST; endpoint.sin_port = htons(destPort); - ret = sendto(client, (const char*)udpPayload->data, udpPayload->GetLength(), 0, (const sockaddr*)&endpoint, sizeof(endpoint)); + ret = sendto(client, reinterpret_cast(udpPayload->data), udpPayload->GetLength(), 0, reinterpret_cast(&endpoint), sizeof(endpoint)); } else if (isMulticast | isFixedPort) { - sockaddr_in endpoint{0}; + sockaddr_in endpoint{}; endpoint.sin_family = AF_INET; - *(IP_Address*)&endpoint.sin_addr = destIP; + endpoint.sin_addr = std::bit_cast(destIP); endpoint.sin_port = htons(destPort); - ret = sendto(client, (const char*)udpPayload->data, udpPayload->GetLength(), 0, (const sockaddr*)&endpoint, sizeof(endpoint)); + ret = sendto(client, reinterpret_cast(udpPayload->data), udpPayload->GetLength(), 0, reinterpret_cast(&endpoint), sizeof(endpoint)); } else - ret = send(client, (const char*)udpPayload->data, udpPayload->GetLength(), 0); + ret = send(client, reinterpret_cast(udpPayload->data), udpPayload->GetLength(), 0); if (ret == SOCKET_ERROR) { @@ -335,16 +335,16 @@ namespace Sessions pxAssert(isBroadcast == false && isMulticast == false); if (isFixedPort) { - sockaddr_in endpoint{0}; + sockaddr_in endpoint{}; endpoint.sin_family = AF_INET; - *(IP_Address*)&endpoint.sin_addr = destIP; + endpoint.sin_addr = std::bit_cast(destIP); endpoint.sin_port = htons(destPort); - ret = sendto(client, (const char*)udpPayload->data, udpPayload->GetLength(), 0, (const sockaddr*)&endpoint, sizeof(endpoint)); + ret = sendto(client, reinterpret_cast(udpPayload->data), udpPayload->GetLength(), 0, reinterpret_cast(&endpoint), sizeof(endpoint)); } else //Do we need to clear the error somehow? - ret = send(client, (const char*)udpPayload->data, udpPayload->GetLength(), 0); + ret = send(client, reinterpret_cast(udpPayload->data), udpPayload->GetLength(), 0); if (ret == SOCKET_ERROR) {