dinoco

Query DNS records
git clone git://git.relim.de/dinoco.git
Log | Files | Refs | README | LICENSE

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:
Mdinoco.c | 19+++++++++++++++++--
Mdinoco.h | 8++++++++
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; };