summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nwm/uds_data.h
diff options
context:
space:
mode:
authorB3n30 <bene_thomas@web.de>2017-09-25 08:16:27 +0200
committerGitHub <noreply@github.com>2017-09-25 08:16:27 +0200
commitd673d508dd1ca463dc72ff68b5582ee56d62f142 (patch)
treee6c7d39198a7bb7a0b8d07c89bb15854ddd4c8e8 /src/core/hle/service/nwm/uds_data.h
parentMerge pull request #2944 from huwpascoe/perf-3 (diff)
downloadyuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.tar
yuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.tar.gz
yuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.tar.bz2
yuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.tar.lz
yuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.tar.xz
yuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.tar.zst
yuzu-d673d508dd1ca463dc72ff68b5582ee56d62f142.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/nwm/uds_data.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/core/hle/service/nwm/uds_data.h b/src/core/hle/service/nwm/uds_data.h
index a23520a41..76e8f546b 100644
--- a/src/core/hle/service/nwm/uds_data.h
+++ b/src/core/hle/service/nwm/uds_data.h
@@ -67,6 +67,27 @@ struct DataFrameCryptoCTR {
static_assert(sizeof(DataFrameCryptoCTR) == 16, "DataFrameCryptoCTR has the wrong size");
+constexpr u16 EAPoLStartMagic = 0x201;
+
+/*
+ * Nintendo EAPoLStartPacket, is used to initaliaze a connection between client and host
+ */
+struct EAPoLStartPacket {
+ u16_be magic = EAPoLStartMagic;
+ u16_be association_id;
+ // This value is hardcoded to 1 in the NWM module.
+ u16_be unknown = 1;
+ INSERT_PADDING_BYTES(2);
+
+ u64_be friend_code_seed;
+ std::array<u16_be, 10> username;
+ INSERT_PADDING_BYTES(4);
+ u16_be network_node_id;
+ INSERT_PADDING_BYTES(6);
+};
+
+static_assert(sizeof(EAPoLStartPacket) == 0x30, "EAPoLStartPacket has the wrong size");
+
/**
* Generates an unencrypted 802.11 data payload.
* @returns The generated frame payload.
@@ -74,5 +95,12 @@ static_assert(sizeof(DataFrameCryptoCTR) == 16, "DataFrameCryptoCTR has the wron
std::vector<u8> GenerateDataPayload(const std::vector<u8>& data, u8 channel, u16 dest_node,
u16 src_node, u16 sequence_number);
+/*
+ * Generates an unencrypted 802.11 data frame body with the EAPoL-Start format for UDS
+ * communication.
+ * @returns The generated frame body.
+ */
+std::vector<u8> GenerateEAPoLStartFrame(u16 association_id, const NodeInfo& node_info);
+
} // namespace NWM
} // namespace Service