From 1c94793e1780119a06f48e34b02ffc2f1f6f2288 Mon Sep 17 00:00:00 2001 From: ian Date: Sun, 4 Oct 1998 17:13:45 +0000 Subject: [PATCH] Experimental: rr types as pointer to struct, not enum. --- src/adns.h | 49 +++++++++++++++++++++++++++++++++++-------------- src/internal.h | 11 +++++++++++ src/reply.c | 18 ++++++++++++++++++ 3 files changed, 64 insertions(+), 14 deletions(-) diff --git a/src/adns.h b/src/adns.h index 90b166b..24c2188 100644 --- a/src/adns.h +++ b/src/adns.h @@ -10,6 +10,7 @@ typedef struct adns__state *adns_state; typedef struct adns__query *adns_query; +typedef const struct adns__rrtype *adns_rrtype; typedef enum { adns_if_noenv= 0x0001, /* do not look at environment */ @@ -27,49 +28,69 @@ typedef enum { adns_qf_nocname= 0x0010, /* don't follow CNAMEs, instead give _s_cname */ } adns_queryflags; +typedef const struct adns__rrtype adns__rrtype_indicator[1]; + +extern adns__rrtype_indicator + adns_r_none, + adns_r_null, adns_r_null_mf, + adns_r_a, adns_r_a_mf, + adns_r_ns, adns_r_ns_mf, adns_r_ns_raw, + adns_r_soa, adns_r_soa_mf, adns_r_soa_raw, + adns_r_cname, adns_r_cname_mf, + adns_r_ptr, adns_r_ptr_mf, adns_r_ptr_raw, + adns_r_hinfo, adns_r_hinfo_mf, + adns_r_mx_raw, + adns_r_mx, + adns_r_txt, + adns_r_mx_mf, + adns_r_rp_raw, + adns_r_txt_mf, + adns_r_rp, + adns_r_rp_mf; + typedef enum { adns__rrt_typemask= 0x0ffff, adns__qtf_deref= 0x10000, /* dereference domains and perhaps produce extra data */ adns__qtf_mail822= 0x20000, /* make mailboxes be in RFC822 rcpt field format */ adns__qtf_masterfmt= 0x80000, /* convert RRs to master file format, return as str */ - + adns_r_none= 0, - + adns_r_a= 1, adns_r_a_mf= adns_r_a|adns__qtf_masterfmt, - + adns_r_ns_raw= 2, adns_r_ns= adns_r_ns_raw|adns__qtf_deref, adns_r_ns_mf= adns_r_ns_raw|adns__qtf_masterfmt, - + adns_r_cname= 5, adns_r_cname_mf= adns_r_cname|adns__qtf_masterfmt, - + adns_r_soa_raw= 6, - adns_r_soa= adns_r_soa_raw|adns__qtf_mail822, + adns_r_soa= adns_r_soa_raw|adns__qtf_mail822, adns_r_soa_mf= adns_r_soa_raw|adns__qtf_masterfmt, - + adns_r_null= 10, adns_r_null_mf= adns_r_null|adns__qtf_masterfmt, - + adns_r_ptr_raw= 12, adns_r_ptr= adns_r_ptr_raw|adns__qtf_deref, adns_r_ptr_mf= adns_r_ptr_raw|adns__qtf_masterfmt, - - adns_r_hinfo= 13, + + adns_r_hinfo= 13, adns_r_hinfo_mf= adns_r_hinfo|adns__qtf_masterfmt, - + adns_r_mx_raw= 15, adns_r_mx= adns_r_mx_raw|adns__qtf_deref, adns_r_mx_mf= adns_r_mx_raw|adns__qtf_masterfmt, - + adns_r_txt= 16, adns_r_txt_mf= adns_r_txt|adns__qtf_masterfmt, - + adns_r_rp_raw= 17, adns_r_rp= adns_r_rp_raw|adns__qtf_mail822, adns_r_rp_mf= adns_r_rp_raw|adns__qtf_masterfmt - + } adns_rrtype; /* In queries without qtf_anyquote, all domains must have standard diff --git a/src/internal.h b/src/internal.h index 5b5097b..87c39a8 100644 --- a/src/internal.h +++ b/src/internal.h @@ -14,6 +14,17 @@ typedef unsigned char byte; #include "adns.h" +typedef enum { + rtf_deref= 0x1, /* dereference domains and perhaps produce extra data */ + rtf_mail822= 0x2, /* make mailboxes be in RFC822 rcpt field format */ +} rrtype_flags; + +struct adns__rrtype { + int qtype; + rrtype_flags rflags; + void (*recv_fn)(void); +}; + /* Configuration and constants */ #define MAXSERVERS 5 diff --git a/src/reply.c b/src/reply.c index 63b7033..7823bc7 100644 --- a/src/reply.c +++ b/src/reply.c @@ -5,4 +5,22 @@ void adns__procdgram(adns_state ads, const byte *dgram, int len, int serv) { /* FIXME do something with incoming datagrams */ adns__diag(ads,serv,"received datagram size %d",len); + + } + +struct adns__rrtype adns_r_a [1]= {{ 1, rcf_a }}; +struct adns__rrtype adns_r_ns [1]= {{ 2, rcf_ns }}; +struct adns__rrtype adns_r_ns_raw [1]= {{ 2, rcf_domain }}; +struct adns__rrtype adns_r_ns [1]= {{ 5, rcf_cname }}; +struct adns__rrtype adns_r_soa [1]= {{ 5, rcf_soa }}; +struct adns__rrtype adns_r_soa_raw [1]= {{ 6, rcf_soa_raw }}; +struct adns__rrtype adns_r_null [1]= {{ 10, rcf_null }}; +struct adns__rrtype adns_r_ptr [1]= {{ 12, rcf_ptr }}; +struct adns__rrtype adns_r_ptr_raw [1]= {{ 12, rcf_ptr_raw }}; +struct adns__rrtype adns_r_hinfo [1]= {{ 13, rcf_hinfo }}; +struct adns__rrtype adns_r_mx [1]= {{ 15, rcf_mx }}; +struct adns__rrtype adns_r_mx_raw [1]= {{ 15, rcf_mx_raw }}; +struct adns__rrtype adns_r_txt [1]= {{ 16, rcf_txt }}; +struct adns__rrtype adns_r_rp [1]= {{ 17, rcf_rp_raw }}; +struct adns__rrtype adns_r_rp_raw [1]= {{ 17, rcf_rp_raw }}; -- 2.11.0