
pub struct Header {
    id: u16,
    message_type: MessageType,
    query_type: QueryType,
    is_authority: bool,
    is_truncated: bool,
    recursion_desired: bool,
    recursion_available: bool,
    response_code: ResponseCode,
    num_question_entries: u16,
    num_answer_entries: u16,
    num_nameserver_records: u16,
    num_additonal_records: u16,
}

pub struct Question {
    
}

pub struct Resource {
    
}

#[repr(u8)]
pub enum MessageType {
    Query = 0,
    Response = 1,
}

#[repr(u8)]
pub enum QueryType {
    Query = 0,
    InverseQuery = 1,
    Status = 2,
    Other = 15,
}

#[repr(u8)]
pub enum ResponseCode {
    Ok = 0,
    FormatError = 1,
    ServerFailure = 2,
    NameError = 3,
    NotImplemented = 4,
    Refused = 5,
    Other = 15,
}