read the packets into packet structs

This commit is contained in:
Piper Pentagram 2025-07-08 15:36:27 -07:00
parent f1e00117d9
commit 68400a25b7
5 changed files with 53 additions and 4 deletions

View file

@ -1,13 +1,16 @@
#pragma once
#include <stddef.h>
#define PACKET_BUFFER_SIZE 512
#define PB_SIZE 512
#define PB_OUT_OF_BOUNDS 9999;
struct DNSPacketBuffer {
char buf[PACKET_BUFFER_SIZE];
char buf[PB_SIZE];
size_t pos;
};
struct DNSPacketBuffer *new_dns_packet_buffer();
struct DNSPacketHeader *dns_header(struct DNSPacketBuffer);
char pb_read_byte(struct DNSPacketBuffer *);

View file

@ -1,7 +1,10 @@
#pragma once
#include "dns_packets.h"
#include "dns_packet_buffer.h"
struct DNSRequest {
struct DNSPacketHeader header;
struct DNSPacketHeader *header;
};
struct DNSRequest *new_dns_request(struct DNSPacketBuffer *pb);

View file

@ -1,5 +1,5 @@
#pragma once
#define UDP_PORT 53
#define UDP_PORT 1053
int start_server();

View file

@ -1,4 +1,5 @@
#include "dns_packet_buffer.h"
#include <stdio.h>
#include <stdlib.h>
struct DNSPacketBuffer *new_dns_packet_buffer()
@ -12,3 +13,34 @@ struct DNSPacketHeader *dns_header(struct DNSPacketBuffer)
{
}
// read a single byte and move the cursor one byte forward
char pb_read_byte(struct DNSPacketBuffer *pb)
{
char b = pb->buf[pb->pos];
pb->pos++;
if (pb->pos >= PB_SIZE) {
printf(
"WARN: pb_read_byte: advanced packetbuffer cursor pos to %lu, which is greater than the max %d",
pb->pos,
PB_SIZE
);
}
return b;
}
char pb_get_byte(struct DNSPacketBuffer *pb)
{
if (pb->pos >= PB_SIZE) {
printf(
"WARN: pb_get_byte: accessing packetbuffer cursor pos %lu, which is greater than the max %d",
pb->pos,
PB_SIZE
);
}
return pb->buf[pb->pos];
}

View file

@ -1,3 +1,14 @@
#include <stdlib.h>
#include "dns_request.h"
struct DNSRequest *new_dns_request(struct DNSPacketBuffer *pb)
{
struct DNSRequest *req;
req = malloc(sizeof(struct DNSRequest));
req->header = (struct DNSPacketHeader *) pb->buf;
return req;
}