summaryrefslogtreecommitdiff
path: root/src/packet/record.c
diff options
context:
space:
mode:
authorTyler Murphy <tylerm@tylerm.dev>2023-04-11 09:27:16 -0400
committerTyler Murphy <tylerm@tylerm.dev>2023-04-11 09:27:16 -0400
commitb22811eca246c9805cd1972981bc289e224181e6 (patch)
tree021f1c298c194cb2ade17f83fcf09c18ed2a703f /src/packet/record.c
parentread from config (diff)
downloadwrapper-b22811eca246c9805cd1972981bc289e224181e6.tar.gz
wrapper-b22811eca246c9805cd1972981bc289e224181e6.tar.bz2
wrapper-b22811eca246c9805cd1972981bc289e224181e6.zip
config
Diffstat (limited to 'src/packet/record.c')
-rw-r--r--src/packet/record.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/packet/record.c b/src/packet/record.c
index e3e9077..07a8c62 100644
--- a/src/packet/record.c
+++ b/src/packet/record.c
@@ -1,3 +1,4 @@
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -28,6 +29,8 @@ uint16_t record_to_id(RecordType type) {
return 33;
case CAA:
return 257;
+ case CMD:
+ return 1000;
default:
return 0;
}
@@ -65,6 +68,9 @@ void record_from_id(uint16_t i, RecordType* type) {
case 257:
*type = CAA;
break;
+ case 1000:
+ *type = CMD;
+ break;
default:
*type = UNKOWN;
}
@@ -172,7 +178,7 @@ static void read_caa_record(PacketBuffer* buffer, Record* record, int header_pos
record->data.caa = data;
}
-void read_record(PacketBuffer* buffer, Record* record) {
+bool read_record(PacketBuffer* buffer, Record* record) {
buffer_read_qname(buffer, &record->domain);
uint16_t qtype_num = buffer_read_short(buffer);
@@ -217,12 +223,14 @@ void read_record(PacketBuffer* buffer, Record* record) {
break;
default:
buffer_step(buffer, record->len);
- return;
+ free(record->domain);
+ return false;
}
INIT_LOG_BUFFER(log)
LOGONLY(print_record(record, log);)
TRACE("Reading record: %s", log);
+ return true;
}
static void write_a_record(PacketBuffer* buffer, Record* record) {
@@ -536,5 +544,10 @@ void print_record(Record* record, char* buffer) {
record->data.caa.value + 1
);
break;
+ case CMD:
+ APPEND(buffer, "CMD (%s)",
+ record->data.cmd.command
+ );
+ break;
}
}