diff options
Diffstat (limited to 'src/packet/record.c')
-rw-r--r-- | src/packet/record.c | 17 |
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; } } |