tcp-chat/src/network/tcp-chat-protocol/constant.h

25 lines
765 B
C

#pragma once
#include "tlibc/errors.h"
#include "tlibc/magic.h"
#include "tcp-chat/common_constants.h"
#define AES_SESSION_KEY_SIZE 32
extern const Magic64 PacketHeader_MAGIC;
// sizeof(PacketHeader) must be 64
typedef struct PacketHeader {
Magic64 magic;
u8 protocol_version;
u8 _reserved1;
u16 type;
u32 _reserved4;
/* size of request/response struct */
u64 content_size;
} ATTRIBUTE_ALIGNED(64) PacketHeader;
void PacketHeader_construct(PacketHeader* ptr, u8 protocol_version, u16 type, u64 content_size);
Result(void) PacketHeader_validateMagic(PacketHeader* ptr);
Result(void) PacketHeader_validateType(PacketHeader* ptr, u16 expected_type);
Result(void) PacketHeader_validateContentSize(PacketHeader* ptr, u64 expected_size);