diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-07-12 02:42:56 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-07-19 09:12:40 +0200 |
commit | 51817f6e59e420536901e3225091894ea6ad1b25 (patch) | |
tree | fba868b13fcc9957cec4ffefcc8f03ad3be3d56a /src/core/network/network.h | |
parent | Merge pull request #4322 from ReinUsesLisp/fix-dynstate (diff) | |
download | yuzu-51817f6e59e420536901e3225091894ea6ad1b25.tar yuzu-51817f6e59e420536901e3225091894ea6ad1b25.tar.gz yuzu-51817f6e59e420536901e3225091894ea6ad1b25.tar.bz2 yuzu-51817f6e59e420536901e3225091894ea6ad1b25.tar.lz yuzu-51817f6e59e420536901e3225091894ea6ad1b25.tar.xz yuzu-51817f6e59e420536901e3225091894ea6ad1b25.tar.zst yuzu-51817f6e59e420536901e3225091894ea6ad1b25.zip |
Diffstat (limited to 'src/core/network/network.h')
-rw-r--r-- | src/core/network/network.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/core/network/network.h b/src/core/network/network.h new file mode 100644 index 000000000..0622e4593 --- /dev/null +++ b/src/core/network/network.h @@ -0,0 +1,87 @@ +// Copyright 2020 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <array> +#include <utility> + +#include "common/common_types.h" + +namespace Network { + +class Socket; + +/// Error code for network functions +enum class Errno { + SUCCESS, + BADF, + INVAL, + MFILE, + NOTCONN, + AGAIN, +}; + +/// Address families +enum class Domain { + INET, ///< Address family for IPv4 +}; + +/// Socket types +enum class Type { + STREAM, + DGRAM, + RAW, + SEQPACKET, +}; + +/// Protocol values for sockets +enum class Protocol { + ICMP, + TCP, + UDP, +}; + +/// Shutdown mode +enum class ShutdownHow { + RD, + WR, + RDWR, +}; + +/// Array of IPv4 address +using IPv4Address = std::array<u8, 4>; + +/// Cross-platform sockaddr structure +struct SockAddrIn { + Domain family; + IPv4Address ip; + u16 portno; +}; + +/// Cross-platform poll fd structure +struct PollFD { + Socket* socket; + u16 events; + u16 revents; +}; + +constexpr u16 POLL_IN = 1 << 0; +constexpr u16 POLL_PRI = 1 << 1; +constexpr u16 POLL_OUT = 1 << 2; +constexpr u16 POLL_ERR = 1 << 3; +constexpr u16 POLL_HUP = 1 << 4; +constexpr u16 POLL_NVAL = 1 << 5; + +class NetworkInstance { +public: + explicit NetworkInstance(); + ~NetworkInstance(); +}; + +/// @brief Returns host's IPv4 address +/// @return Pair of an array of human ordered IPv4 address (e.g. 192.168.0.1) and an error code +std::pair<IPv4Address, Errno> GetHostIPv4Address(); + +} // namespace Network |