aboutsummaryrefslogtreecommitdiff
path: root/src/dns/gnunet-dns-monitor.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-10-05 15:09:28 +0200
committerChristian Grothoff <christian@grothoff.org>2019-10-05 15:09:28 +0200
commitc4e9ba925ffd758aaa3feee2ccfc0b76f26fe207 (patch)
treecac3ce030d77b4cbe7c7dc62ed58cfe6d24f73e1 /src/dns/gnunet-dns-monitor.c
parentfbb71d527c7d6babf269a8fefce1db291b9f7068 (diff)
downloadgnunet-c4e9ba925ffd758aaa3feee2ccfc0b76f26fe207.tar.gz
gnunet-c4e9ba925ffd758aaa3feee2ccfc0b76f26fe207.zip
global reindent, now with uncrustify hook enabled
Diffstat (limited to 'src/dns/gnunet-dns-monitor.c')
-rw-r--r--src/dns/gnunet-dns-monitor.c348
1 files changed, 174 insertions, 174 deletions
diff --git a/src/dns/gnunet-dns-monitor.c b/src/dns/gnunet-dns-monitor.c
index 819cb025d..311544f2e 100644
--- a/src/dns/gnunet-dns-monitor.c
+++ b/src/dns/gnunet-dns-monitor.c
@@ -62,31 +62,31 @@ static unsigned int verbosity;
62 * @return type as string, only valid until the next call to this function 62 * @return type as string, only valid until the next call to this function
63 */ 63 */
64static const char * 64static const char *
65get_type(uint16_t type) 65get_type (uint16_t type)
66{ 66{
67 static char buf[6]; 67 static char buf[6];
68 68
69 switch (type) 69 switch (type)
70 { 70 {
71 case GNUNET_DNSPARSER_TYPE_A: return "A"; 71 case GNUNET_DNSPARSER_TYPE_A: return "A";
72 72
73 case GNUNET_DNSPARSER_TYPE_NS: return "NS"; 73 case GNUNET_DNSPARSER_TYPE_NS: return "NS";
74 74
75 case GNUNET_DNSPARSER_TYPE_CNAME: return "CNAME"; 75 case GNUNET_DNSPARSER_TYPE_CNAME: return "CNAME";
76 76
77 case GNUNET_DNSPARSER_TYPE_SOA: return "SOA"; 77 case GNUNET_DNSPARSER_TYPE_SOA: return "SOA";
78 78
79 case GNUNET_DNSPARSER_TYPE_PTR: return "PTR"; 79 case GNUNET_DNSPARSER_TYPE_PTR: return "PTR";
80 80
81 case GNUNET_DNSPARSER_TYPE_MX: return "MX"; 81 case GNUNET_DNSPARSER_TYPE_MX: return "MX";
82 82
83 case GNUNET_DNSPARSER_TYPE_TXT: return "TXT"; 83 case GNUNET_DNSPARSER_TYPE_TXT: return "TXT";
84 84
85 case GNUNET_DNSPARSER_TYPE_AAAA: return "AAAA"; 85 case GNUNET_DNSPARSER_TYPE_AAAA: return "AAAA";
86 86
87 case GNUNET_DNSPARSER_TYPE_SRV: return "SRV"; 87 case GNUNET_DNSPARSER_TYPE_SRV: return "SRV";
88 } 88 }
89 GNUNET_snprintf(buf, sizeof(buf), "%u", (unsigned int)type); 89 GNUNET_snprintf (buf, sizeof(buf), "%u", (unsigned int) type);
90 return buf; 90 return buf;
91} 91}
92 92
@@ -98,19 +98,19 @@ get_type(uint16_t type)
98 * @return class as string, only valid until the next call to this function 98 * @return class as string, only valid until the next call to this function
99 */ 99 */
100static const char * 100static const char *
101get_class(uint16_t class) 101get_class (uint16_t class)
102{ 102{
103 static char buf[6]; 103 static char buf[6];
104 104
105 switch (class) 105 switch (class)
106 { 106 {
107 case GNUNET_TUN_DNS_CLASS_INTERNET: return "IN"; 107 case GNUNET_TUN_DNS_CLASS_INTERNET: return "IN";
108 108
109 case GNUNET_TUN_DNS_CLASS_CHAOS: return "CHAOS"; 109 case GNUNET_TUN_DNS_CLASS_CHAOS: return "CHAOS";
110 110
111 case GNUNET_TUN_DNS_CLASS_HESIOD: return "HESIOD"; 111 case GNUNET_TUN_DNS_CLASS_HESIOD: return "HESIOD";
112 } 112 }
113 GNUNET_snprintf(buf, sizeof(buf), "%u", (unsigned int)class); 113 GNUNET_snprintf (buf, sizeof(buf), "%u", (unsigned int) class);
114 return buf; 114 return buf;
115} 115}
116 116
@@ -121,13 +121,13 @@ get_class(uint16_t class)
121 * @param query query to display. 121 * @param query query to display.
122 */ 122 */
123static void 123static void
124display_query(const struct GNUNET_DNSPARSER_Query *query) 124display_query (const struct GNUNET_DNSPARSER_Query *query)
125{ 125{
126 fprintf(stdout, 126 fprintf (stdout,
127 "\t\t%s %s: %s\n", 127 "\t\t%s %s: %s\n",
128 get_class(query->dns_traffic_class), 128 get_class (query->dns_traffic_class),
129 get_type(query->type), 129 get_type (query->type),
130 query->name); 130 query->name);
131} 131}
132 132
133 133
@@ -137,7 +137,7 @@ display_query(const struct GNUNET_DNSPARSER_Query *query)
137 * @param record record to display. 137 * @param record record to display.
138 */ 138 */
139static void 139static void
140display_record(const struct GNUNET_DNSPARSER_Record *record) 140display_record (const struct GNUNET_DNSPARSER_Record *record)
141{ 141{
142 const char *format; 142 const char *format;
143 char buf[INET6_ADDRSTRLEN]; 143 char buf[INET6_ADDRSTRLEN];
@@ -145,93 +145,95 @@ display_record(const struct GNUNET_DNSPARSER_Record *record)
145 145
146 tmp = NULL; 146 tmp = NULL;
147 switch (record->type) 147 switch (record->type)
148 {
149 case GNUNET_DNSPARSER_TYPE_A:
150 if (record->data.raw.data_len != sizeof(struct in_addr))
151 format = "<invalid>";
152 else
153 format = inet_ntop (AF_INET, record->data.raw.data, buf, sizeof(buf));
154 break;
155
156 case GNUNET_DNSPARSER_TYPE_AAAA:
157 if (record->data.raw.data_len != sizeof(struct in6_addr))
158 format = "<invalid>";
159 else
160 format = inet_ntop (AF_INET6, record->data.raw.data, buf, sizeof(buf));
161 break;
162
163 case GNUNET_DNSPARSER_TYPE_NS:
164 case GNUNET_DNSPARSER_TYPE_CNAME:
165 case GNUNET_DNSPARSER_TYPE_PTR:
166 format = record->data.hostname;
167 break;
168
169 case GNUNET_DNSPARSER_TYPE_SOA:
170 if (NULL == record->data.soa)
171 format = "<invalid>";
172 else
173 {
174 GNUNET_asprintf (&tmp,
175 "origin: %s, mail: %s, serial = %u, refresh = %u s, retry = %u s, expire = %u s, minimum = %u s",
176 record->data.soa->mname,
177 record->data.soa->rname,
178 (unsigned int) record->data.soa->serial,
179 (unsigned int) record->data.soa->refresh,
180 (unsigned int) record->data.soa->retry,
181 (unsigned int) record->data.soa->expire,
182 (unsigned int) record->data.soa->minimum_ttl);
183 format = tmp;
184 }
185 break;
186
187 case GNUNET_DNSPARSER_TYPE_MX:
188 if (record->data.mx == NULL)
189 format = "<invalid>";
190 else
148 { 191 {
149 case GNUNET_DNSPARSER_TYPE_A: 192 GNUNET_asprintf (&tmp,
150 if (record->data.raw.data_len != sizeof(struct in_addr)) 193 "%u: %s",
151 format = "<invalid>"; 194 record->data.mx->preference,
152 else 195 record->data.mx->mxhost);
153 format = inet_ntop(AF_INET, record->data.raw.data, buf, sizeof(buf));
154 break;
155
156 case GNUNET_DNSPARSER_TYPE_AAAA:
157 if (record->data.raw.data_len != sizeof(struct in6_addr))
158 format = "<invalid>";
159 else
160 format = inet_ntop(AF_INET6, record->data.raw.data, buf, sizeof(buf));
161 break;
162
163 case GNUNET_DNSPARSER_TYPE_NS:
164 case GNUNET_DNSPARSER_TYPE_CNAME:
165 case GNUNET_DNSPARSER_TYPE_PTR:
166 format = record->data.hostname;
167 break;
168
169 case GNUNET_DNSPARSER_TYPE_SOA:
170 if (NULL == record->data.soa)
171 format = "<invalid>";
172 else
173 {
174 GNUNET_asprintf(&tmp,
175 "origin: %s, mail: %s, serial = %u, refresh = %u s, retry = %u s, expire = %u s, minimum = %u s",
176 record->data.soa->mname,
177 record->data.soa->rname,
178 (unsigned int)record->data.soa->serial,
179 (unsigned int)record->data.soa->refresh,
180 (unsigned int)record->data.soa->retry,
181 (unsigned int)record->data.soa->expire,
182 (unsigned int)record->data.soa->minimum_ttl);
183 format = tmp;
184 }
185 break;
186
187 case GNUNET_DNSPARSER_TYPE_MX:
188 if (record->data.mx == NULL)
189 format = "<invalid>";
190 else
191 {
192 GNUNET_asprintf(&tmp,
193 "%u: %s",
194 record->data.mx->preference,
195 record->data.mx->mxhost);
196 format = tmp;
197 }
198 break;
199
200 case GNUNET_DNSPARSER_TYPE_SRV:
201 if (NULL == record->data.srv)
202 format = "<invalid>";
203 else
204 {
205 GNUNET_asprintf(&tmp,
206 "priority %u, weight = %s, port = %u, target = %s",
207 (unsigned int)record->data.srv->priority,
208 (unsigned int)record->data.srv->weight,
209 (unsigned int)record->data.srv->port,
210 record->data.srv->target);
211 format = tmp;
212 }
213 break;
214
215 case GNUNET_DNSPARSER_TYPE_TXT:
216 GNUNET_asprintf(&tmp,
217 "%.*s",
218 (unsigned int)record->data.raw.data_len,
219 record->data.raw.data);
220 format = tmp; 196 format = tmp;
221 break; 197 }
198 break;
222 199
223 default: 200 case GNUNET_DNSPARSER_TYPE_SRV:
224 format = "<payload>"; 201 if (NULL == record->data.srv)
225 break; 202 format = "<invalid>";
203 else
204 {
205 GNUNET_asprintf (&tmp,
206 "priority %u, weight = %s, port = %u, target = %s",
207 (unsigned int) record->data.srv->priority,
208 (unsigned int) record->data.srv->weight,
209 (unsigned int) record->data.srv->port,
210 record->data.srv->target);
211 format = tmp;
226 } 212 }
227 fprintf(stdout, 213 break;
228 "\t\t%s %s: %s = %s (%u s)\n", 214
229 get_class(record->dns_traffic_class), 215 case GNUNET_DNSPARSER_TYPE_TXT:
230 get_type(record->type), 216 GNUNET_asprintf (&tmp,
231 record->name, 217 "%.*s",
232 format, 218 (unsigned int) record->data.raw.data_len,
233 (unsigned int)(GNUNET_TIME_absolute_get_remaining(record->expiration_time).rel_value_us / 1000LL / 1000LL)); 219 record->data.raw.data);
234 GNUNET_free_non_null(tmp); 220 format = tmp;
221 break;
222
223 default:
224 format = "<payload>";
225 break;
226 }
227 fprintf (stdout,
228 "\t\t%s %s: %s = %s (%u s)\n",
229 get_class (record->dns_traffic_class),
230 get_type (record->type),
231 record->name,
232 format,
233 (unsigned int) (GNUNET_TIME_absolute_get_remaining (
234 record->expiration_time).rel_value_us / 1000LL
235 / 1000LL));
236 GNUNET_free_non_null (tmp);
235} 237}
236 238
237 239
@@ -259,20 +261,18 @@ display_record(const struct GNUNET_DNSPARSER_Record *record)
259 * @param request udp payload of the DNS request 261 * @param request udp payload of the DNS request
260 */ 262 */
261static void 263static void
262display_request(void *cls, 264display_request (void *cls,
263 struct GNUNET_DNS_RequestHandle *rh, 265 struct GNUNET_DNS_RequestHandle *rh,
264 size_t request_length, 266 size_t request_length,
265 const char *request) 267 const char *request)
266{ 268{
267 static const char *return_codes[] = 269 static const char *return_codes[] = {
268 {
269 "No error", "Format error", "Server failure", "Name error", 270 "No error", "Format error", "Server failure", "Name error",
270 "Not implemented", "Refused", "YXDomain", "YXRRset", 271 "Not implemented", "Refused", "YXDomain", "YXRRset",
271 "NXRRset", "NOT AUTH", "NOT ZONE", "<invalid>", 272 "NXRRset", "NOT AUTH", "NOT ZONE", "<invalid>",
272 "<invalid>", "<invalid>", "<invalid>", "<invalid>" 273 "<invalid>", "<invalid>", "<invalid>", "<invalid>"
273 }; 274 };
274 static const char *op_codes[] = 275 static const char *op_codes[] = {
275 {
276 "Query", "Inverse query", "Status", "<invalid>", 276 "Query", "Inverse query", "Status", "<invalid>",
277 "<invalid>", "<invalid>", "<invalid>", "<invalid>", 277 "<invalid>", "<invalid>", "<invalid>", "<invalid>",
278 "<invalid>", "<invalid>", "<invalid>", "<invalid>", 278 "<invalid>", "<invalid>", "<invalid>", "<invalid>",
@@ -281,40 +281,40 @@ display_request(void *cls,
281 struct GNUNET_DNSPARSER_Packet *p; 281 struct GNUNET_DNSPARSER_Packet *p;
282 unsigned int i; 282 unsigned int i;
283 283
284 p = GNUNET_DNSPARSER_parse(request, request_length); 284 p = GNUNET_DNSPARSER_parse (request, request_length);
285 if (NULL == p) 285 if (NULL == p)
286 { 286 {
287 fprintf(stderr, "Received malformed DNS packet!\n"); 287 fprintf (stderr, "Received malformed DNS packet!\n");
288 // FIXME: drop instead? 288 // FIXME: drop instead?
289 GNUNET_DNS_request_forward(rh); 289 GNUNET_DNS_request_forward (rh);
290 return; 290 return;
291 } 291 }
292 fprintf(stdout, 292 fprintf (stdout,
293 "%s with ID: %5u Flags: %s%s%s%s%s%s, Return Code: %s, Opcode: %s\n", 293 "%s with ID: %5u Flags: %s%s%s%s%s%s, Return Code: %s, Opcode: %s\n",
294 p->flags.query_or_response ? "Response" : "Query", 294 p->flags.query_or_response ? "Response" : "Query",
295 p->id, 295 p->id,
296 p->flags.recursion_desired ? "RD " : "", 296 p->flags.recursion_desired ? "RD " : "",
297 p->flags.message_truncated ? "MT " : "", 297 p->flags.message_truncated ? "MT " : "",
298 p->flags.authoritative_answer ? "AA " : "", 298 p->flags.authoritative_answer ? "AA " : "",
299 p->flags.checking_disabled ? "CD " : "", 299 p->flags.checking_disabled ? "CD " : "",
300 p->flags.authenticated_data ? "AD " : "", 300 p->flags.authenticated_data ? "AD " : "",
301 p->flags.recursion_available ? "RA " : "", 301 p->flags.recursion_available ? "RA " : "",
302 return_codes[p->flags.return_code & 15], 302 return_codes[p->flags.return_code & 15],
303 op_codes[p->flags.opcode & 15]); 303 op_codes[p->flags.opcode & 15]);
304 if (p->num_queries > 0) 304 if (p->num_queries > 0)
305 fprintf(stdout, 305 fprintf (stdout,
306 "\tQueries:\n"); 306 "\tQueries:\n");
307 for (i = 0; i < p->num_queries; i++) 307 for (i = 0; i < p->num_queries; i++)
308 display_query(&p->queries[i]); 308 display_query (&p->queries[i]);
309 309
310 if (p->num_answers > 0) 310 if (p->num_answers > 0)
311 fprintf(stdout, 311 fprintf (stdout,
312 "\tAnswers:\n"); 312 "\tAnswers:\n");
313 for (i = 0; i < p->num_answers; i++) 313 for (i = 0; i < p->num_answers; i++)
314 display_record(&p->answers[i]); 314 display_record (&p->answers[i]);
315 fprintf(stdout, "\n"); 315 fprintf (stdout, "\n");
316 GNUNET_DNSPARSER_free_packet(p); 316 GNUNET_DNSPARSER_free_packet (p);
317 GNUNET_DNS_request_forward(rh); 317 GNUNET_DNS_request_forward (rh);
318} 318}
319 319
320 320
@@ -322,13 +322,13 @@ display_request(void *cls,
322 * Shutdown. 322 * Shutdown.
323 */ 323 */
324static void 324static void
325do_disconnect(void *cls) 325do_disconnect (void *cls)
326{ 326{
327 if (NULL != handle) 327 if (NULL != handle)
328 { 328 {
329 GNUNET_DNS_disconnect(handle); 329 GNUNET_DNS_disconnect (handle);
330 handle = NULL; 330 handle = NULL;
331 } 331 }
332} 332}
333 333
334 334
@@ -341,8 +341,8 @@ do_disconnect(void *cls)
341 * @param cfg configuration 341 * @param cfg configuration
342 */ 342 */
343static void 343static void
344run(void *cls, char *const *args, const char *cfgfile, 344run (void *cls, char *const *args, const char *cfgfile,
345 const struct GNUNET_CONFIGURATION_Handle *cfg) 345 const struct GNUNET_CONFIGURATION_Handle *cfg)
346{ 346{
347 enum GNUNET_DNS_Flags flags; 347 enum GNUNET_DNS_Flags flags;
348 348
@@ -354,40 +354,40 @@ run(void *cls, char *const *args, const char *cfgfile,
354 if (outbound_only) 354 if (outbound_only)
355 flags |= GNUNET_DNS_FLAG_RESPONSE_MONITOR; 355 flags |= GNUNET_DNS_FLAG_RESPONSE_MONITOR;
356 handle = 356 handle =
357 GNUNET_DNS_connect(cfg, 357 GNUNET_DNS_connect (cfg,
358 flags, 358 flags,
359 &display_request, 359 &display_request,
360 NULL); 360 NULL);
361 GNUNET_SCHEDULER_add_shutdown(&do_disconnect, NULL); 361 GNUNET_SCHEDULER_add_shutdown (&do_disconnect, NULL);
362} 362}
363 363
364 364
365int 365int
366main(int argc, char *const *argv) 366main (int argc, char *const *argv)
367{ 367{
368 struct GNUNET_GETOPT_CommandLineOption options[] = { 368 struct GNUNET_GETOPT_CommandLineOption options[] = {
369 GNUNET_GETOPT_option_flag('i', 369 GNUNET_GETOPT_option_flag ('i',
370 "inbound-only", 370 "inbound-only",
371 gettext_noop("only monitor DNS queries"), 371 gettext_noop ("only monitor DNS queries"),
372 &inbound_only), 372 &inbound_only),
373 373
374 GNUNET_GETOPT_option_flag('o', 374 GNUNET_GETOPT_option_flag ('o',
375 "outbound-only", 375 "outbound-only",
376 gettext_noop("only monitor DNS queries"), 376 gettext_noop ("only monitor DNS queries"),
377 &outbound_only), 377 &outbound_only),
378 378
379 GNUNET_GETOPT_option_verbose(&verbosity), 379 GNUNET_GETOPT_option_verbose (&verbosity),
380 GNUNET_GETOPT_OPTION_END 380 GNUNET_GETOPT_OPTION_END
381 }; 381 };
382 382
383 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args(argc, argv, &argc, &argv)) 383 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
384 return 2; 384 return 2;
385 ret = (GNUNET_OK == 385 ret = (GNUNET_OK ==
386 GNUNET_PROGRAM_run(argc, argv, "gnunet-dns-monitor", 386 GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-monitor",
387 gettext_noop 387 gettext_noop
388 ("Monitor DNS queries."), options, 388 ("Monitor DNS queries."), options,
389 &run, NULL)) ? ret : 1; 389 &run, NULL)) ? ret : 1;
390 GNUNET_free((void*)argv); 390 GNUNET_free ((void*) argv);
391 return ret; 391 return ret;
392} 392}
393 393