+ struct GNUNET_DNSPARSER_Packet *dns;
+ int work;
+
+ dns = GNUNET_DNSPARSER_parse (request, request_length);
+ if (NULL == dns)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to parse DNS request. Dropping.\n"));
+ GNUNET_DNS_request_drop (rh);
+ return;
+ }
+ work = GNUNET_NO;
+ work |= work_test (dns->answers, dns->num_answers);
+ work |= work_test (dns->authority_records, dns->num_authority_records);
+ work |= work_test (dns->additional_records, dns->num_additional_records);
+ if (! work)
+ {
+ GNUNET_DNS_request_forward (rh);
+ return;
+ }
+ /* FIXME: translate A/AAAA records using VPN! */