commit 3656c9664d8902c30c845a7932d4e0dd6ea36683
parent e2d962c8ad3bf0d3f7ccd4d524d2615861cb45f4
Author: Nibo <kroekerrobin@gmail.com>
Date: Fri, 23 Jun 2023 10:30:47 +0200
Add support for NS type records
Diffstat:
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/dinoco.c b/dinoco.c
@@ -376,6 +376,9 @@ union dns_type_result *parseAnswerByType
ur->a->ipAddress[e] = 0;
break;
case TYPE_NS:
+ ur->ns = malloc(sizeof(struct dns_ns_result));
+ int startOfDomain = *startOfNextAnswer - answer->rdlength;
+ ur->ns->domain = parseDomain(res, startOfDomain);
break;
case TYPE_MD:
break;
@@ -433,7 +436,7 @@ void printAnswers
{
case TYPE_A:
if (!disableHeader)
- printf("Address\n");
+ printf(ANSI_COLOR_GREEN"Address\n"ANSI_COLOR_RESET);
for (int i=0; i<answerCount; i++)
{
printf("%s\n", answers[i]->a->ipAddress);
@@ -446,6 +449,18 @@ void printAnswers
}
break;
case TYPE_NS:
+ if (!disableHeader)
+ printf(ANSI_COLOR_GREEN"Authoritative Host\n"ANSI_COLOR_RESET);
+ for (int i=0; i<answerCount; i++)
+ {
+ printf("%s\n", answers[i]->ns->domain);
+ }
+ for (int i=0; i<answerCount; i++)
+ {
+ free(answers[i]->ns->domain);
+ free(answers[i]->ns);
+ free(answers[i]);
+ }
break;
case TYPE_MD:
break;
@@ -480,7 +495,7 @@ void printAnswers
longestMailDomain = len;
}
if (!disableHeader)
- printf("%-*s\t%s\n", longestMailDomain, "Mail Exchange", "Preference");
+ printf(ANSI_COLOR_GREEN"%-*s\t%s\n"ANSI_COLOR_RESET, longestMailDomain, "Mail Exchange", "Preference");
for (int i=0; i<answerCount; i++)
{
printf(
diff --git a/dinoco.h b/dinoco.h
@@ -1,6 +1,8 @@
#define MAX_UDP_MSG_LENGTH 512
#define DNS_HEADER_LENGTH 12
#define MIN_IP_LENGTH 7
+#define ANSI_COLOR_GREEN "\x1b[32m"
+#define ANSI_COLOR_RESET "\x1b[0m"
struct byte_array
{
@@ -120,8 +122,14 @@ struct dns_a_result
char *ipAddress;
};
+struct dns_ns_result
+{
+ char *domain;
+};
+
union dns_type_result
{
struct dns_mx_result *mx;
struct dns_a_result *a;
+ struct dns_ns_result *ns;
};