wrapper/src/packet/header.h

42 lines
1 KiB
C
Raw Normal View History

2023-04-06 03:08:09 +00:00
#pragma once
#include "buffer.h"
#include <stdbool.h>
typedef enum {
NOERROR, // 0
FORMERR, // 1
SERVFAIL, // 2
NXDOMAIN, // 3,
NOTIMP, // 4
REFUSED, // 5
} ResultCode;
uint8_t rescode_to_id(ResultCode code);
ResultCode rescode_from_id(uint8_t id);
typedef struct {
uint16_t id;
bool recursion_desired; // 1 bit
bool truncated_message; // 1 bit
bool authorative_answer; // 1 bit
uint8_t opcode; // 4 bits
bool response; // 1 bit
ResultCode rescode; // 4 bits
bool checking_disabled; // 1 bit
bool authed_data; // 1 bit
bool z; // 1 bit
bool recursion_available; // 1 bit
uint16_t questions; // 16 bits
uint16_t answers; // 16 bits
uint16_t authoritative_entries; // 16 bits
uint16_t resource_entries; // 16 bits
} Header;
void read_header(PacketBuffer* buffer, Header* header);
void write_header(PacketBuffer* buffer, Header* header);