dnscrypto-proxy: Update to release 1.3.0
[tomato.git] / release / src / router / dnscrypt / src / plugins / example-ldns-aaaa-blocking / example-ldns-aaaa-blocking.c
blob3c06a4baedadb27049e65b6e708d5517ffef5497
2 #include <stdint.h>
4 #include <dnscrypt/plugin.h>
5 #include <ldns/ldns.h>
7 DCPLUGIN_MAIN(__FILE__);
9 const char *
10 dcplugin_description(DCPlugin * const dcplugin)
12 return "Directly return an empty response to AAAA queries";
15 int
16 dcplugin_init(DCPlugin * const dcplugin, int argc, char *argv[])
18 (void) dcplugin;
19 (void) argc;
20 (void) argv;
22 return 0;
25 DCPluginSyncFilterResult
26 dcplugin_sync_pre_filter(DCPlugin *dcplugin, DCPluginDNSPacket *dcp_packet)
28 ldns_pkt *packet;
29 ldns_rr_list *questions;
30 uint8_t *wire_data;
31 DCPluginSyncFilterResult result = DCP_SYNC_FILTER_RESULT_OK;
33 wire_data = dcplugin_get_wire_data(dcp_packet);
34 ldns_wire2pkt(&packet, wire_data, dcplugin_get_wire_data_len(dcp_packet));
35 if (packet == NULL) {
36 return DCP_SYNC_FILTER_RESULT_ERROR;
38 questions = ldns_pkt_question(packet);
39 if (ldns_rr_list_rr_count(questions) == (size_t) 1U &&
40 ldns_rr_get_type(ldns_rr_list_rr(questions,
41 (size_t) 0U)) == LDNS_RR_TYPE_AAAA) {
42 LDNS_QR_SET(wire_data);
43 LDNS_RA_SET(wire_data);
44 result = DCP_SYNC_FILTER_RESULT_DIRECT;
46 ldns_pkt_free(packet);
48 return result;