|
...
|
...
|
@@ -90,6 +90,16 @@ unsigned char* read_dns_name(unsigned char *reader, unsigned char *buffer, char
|
|
90
|
90
|
return reader;
|
|
91
|
91
|
}
|
|
92
|
92
|
|
|
|
93
|
+void help() {
|
|
|
94
|
+ printf("Usage: tinydns -h <IP> [-p] [-t|-u] [--time] -q type fqdn\n");
|
|
|
95
|
+ printf(" server : DNS Server IP address\n");
|
|
|
96
|
+ printf(" -p : port (optional, default is 53)\n");
|
|
|
97
|
+ printf(" -u udp (default) or -t tcp\n");
|
|
|
98
|
+ printf(" type : query type A (default), AAAA, CNAME or MX\n");
|
|
|
99
|
+ printf(" --time: to produce timing CSV output\n");
|
|
|
100
|
+ printf(" fqdn : what to query\n");
|
|
|
101
|
+}
|
|
|
102
|
+
|
|
93
|
103
|
int main(int argc, char *argv[]) {
|
|
94
|
104
|
int opt, use_tcp = 0, time_mode = 0;
|
|
95
|
105
|
char *dns_server = NULL;
|
|
...
|
...
|
@@ -114,14 +124,17 @@ int main(int argc, char *argv[]) {
|
|
114
|
124
|
case 'p': dns_port = atoi(optarg); break;
|
|
115
|
125
|
case 'q': qtype_str = optarg; break;
|
|
116
|
126
|
default:
|
|
117
|
|
- fprintf(stderr, "Usage: %s [-u|-t] -h server [-p port] -q type [--time] fqdn\n", argv[0]);
|
|
|
127
|
+ //fprintf(stderr, "Usage: %s [-u|-t] -h server [-p port] -q type [--time] fqdn\n", argv[0]);
|
|
|
128
|
+ help();
|
|
118
|
129
|
exit(EXIT_FAILURE);
|
|
119
|
130
|
}
|
|
120
|
131
|
}
|
|
121
|
132
|
|
|
122
|
|
- if (optind >= argc) { fprintf(stderr, "FQDN is required\n"); exit(EXIT_FAILURE); }
|
|
|
133
|
+ //if (optind >= argc) { fprintf(stderr, "FQDN is required\n"); exit(EXIT_FAILURE); }
|
|
|
134
|
+ if (optind >= argc) { help(); exit(EXIT_FAILURE); }
|
|
123
|
135
|
fqdn = argv[optind];
|
|
124
|
|
- if (!dns_server) { fprintf(stderr, "DNS server (-h) is required\n"); exit(EXIT_FAILURE); }
|
|
|
136
|
+ //if (!dns_server) { fprintf(stderr, "DNS server (-h) is required\n"); exit(EXIT_FAILURE); }
|
|
|
137
|
+ if (!dns_server) { help(); exit(EXIT_FAILURE); }
|
|
125
|
138
|
|
|
126
|
139
|
gettimeofday(&start_tv, NULL);
|
|
127
|
140
|
start_epoch = start_tv.tv_sec;
|