summaryrefslogtreecommitdiff
path: root/src/packet/packet.h
blob: aa1c35e198e97cbf390349989428a72f37b0b363 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

#include "buffer.h"
#include "question.h"
#include "header.h"
#include "record.h"
#include "../server/addr.h"

typedef struct {
    Header header;
    Question* questions;
    Record* answers;
    Record* authorities;
    Record* resources;
} Packet;

void read_packet(PacketBuffer* buffer, Packet* packet);
void write_packet(PacketBuffer* buffer, Packet* packet);
void free_packet(Packet* packet);

bool get_random_a(Packet* packet, IpAddr* addr);
bool get_resolved_ns(Packet* packet, uint8_t* qname, IpAddr* addr);
bool get_unresoled_ns(Packet* packet, uint8_t* qname, Question* question);