From b58fa4979463db1e5ac322618541aa8942ca4a75 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Sun, 18 Oct 2020 13:35:22 +0000 Subject: [PATCH] fixed cast warnings --- main.c | 81 ++++++++++++++++++++++------------------ 1 files changed, 44 insertions(+), 37 deletions(-) diff --git a/main.c b/main.c index 15ea1d1..721f769 100644 --- a/main.c +++ b/main.c @@ -1,44 +1,51 @@ #include <stdio.h> #include <stdlib.h> +#include <unistd.h> #include <string.h> -#include <sys/socket.h> -#include <arpa/inet.h> -#include <netint/in.h> -//#include <netdb.h> -#include <sys/time.h> - -// DNS resource records -#define T_A 1 // IPv4 address -#define T_NS // Name Server -#define T_CNAME 5 // Cannonical name -#define T_SOA 6 // State of Authority -#define T_PTR 12 // Domain name pointer -#define T_MX 15 // Mail exchange - -struct DNS_QUERY -{ - unsigned short id; //ID number - unsigned char rd :1; //recursion - unsigned char aa :1; //truncated message - unsigned char opcode :4; //message purpose - unsigned char qr :1; //query/response - unsigned char rcode :4; //response code - -} +#include "dns.h" int main(int argc, char** argv) { - -} - -void resolve(char* hostname, char* dns_ip) -{ - int s; - struct sockaddr_in dest; - - s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); - dest.sin_family = AF_INET; - dest.sin_port = htons(53); - dest.sin_addr.s_addr = inet_addr(dns_ip); - + int option, type = T_A; + char* server = "1.1.1.1", *hostname = "google.com"; + while((option = getopt(argc, argv, "s:h:t:")) != -1) { + switch (option) { + case 's': //server to use + server = optarg; + break; + case 'h': //hostname to search + hostname = optarg; + break; + case 't': + if (!strcmp(optarg, "A")) { + type = T_A; + } else if (!strcmp(optarg, "AAAA")) { + type = T_AAAA; + } else if (!strcmp(optarg, "NS")) { + type = T_NS; + } else if (!strcmp(optarg, "CNAME")) { + type = T_CNAME; + } else if (!strcmp(optarg, "SOA")) { + type = T_SOA; + } else if (!strcmp(optarg, "PTR")) { + type = T_PTR; + } else if (!strcmp(optarg, "MX")) { + type = T_MX; + } else if (!strcmp(optarg, "TXT")) { + type = T_MX; + } else { + printf("Error: %s is not a valid DNS record type\n", optarg); + exit(1); + } + break; + case '?': + default: + printf("Error: invalid option -%c\n", optopt); + exit(1); + } + } + unsigned char buf[65536]; + resolve(buf, hostname, server, type); + print_packet(buf); + return 0; } -- Gitblit v1.10.0