#pragma once #include #include class [[gnu::packed]] DNSRecord { public: DNSRecord() { } word name() const { return m_name; } word type() const { return m_type; } word record_class() const { return m_class; } dword ttl() const { return m_ttl; } word data_length() const { return m_data_length; } void* data() { return this + 1; } const void* data() const { return this + 1; } private: NetworkOrdered m_name; NetworkOrdered m_type; NetworkOrdered m_class; NetworkOrdered m_ttl; NetworkOrdered m_data_length; }; static_assert(sizeof(DNSRecord) == 12);