]> granicus.if.org Git - libevent/commitdiff
support setting of AA or RD in dns server response
authorNiels Provos <provos@gmail.com>
Wed, 16 Jul 2008 03:47:47 +0000 (03:47 +0000)
committerNiels Provos <provos@gmail.com>
Wed, 16 Jul 2008 03:47:47 +0000 (03:47 +0000)
svn:r910

evdns.c
evdns.h

diff --git a/evdns.c b/evdns.c
index 30656a05e1dc8a201a3ab135487cc7ddc4456589..8069e5d2210b461cab15bdbaf6f132c3f9419b29 100644 (file)
--- a/evdns.c
+++ b/evdns.c
@@ -1619,6 +1619,14 @@ evdns_server_request_add_cname_reply(struct evdns_server_request *req, const cha
                  ttl, -1, 1, cname);
 }
 
+/* exported function */
+void
+evdns_server_request_set_flags(struct evdns_server_request *exreq, int flags)
+{
+       struct server_request *req = TO_SERVER_REQUEST(exreq);
+       req->base.flags &= ~(EVDNS_FLAGS_AA|EVDNS_FLAGS_RD);
+       req->base.flags |= flags;
+}
 
 static int
 evdns_server_request_format_response(struct server_request *req, int err)
diff --git a/evdns.h b/evdns.h
index 3dbcc1addaaee6856ae43420c73ffe54e03e23ad..3c0867300e79ebe9e44932efeebe5407340d17e7 100644 (file)
--- a/evdns.h
+++ b/evdns.h
@@ -527,10 +527,17 @@ typedef void (*evdns_request_callback_fn_type)(struct evdns_server_request *, vo
 
 #define EVDNS_CLASS_INET   1
 
+/* flags that can be set in answers; as part of the err parameter */
+#define EVDNS_FLAGS_AA 0x400
+#define EVDNS_FLAGS_RD 0x080
+
 struct evdns_server_port *evdns_add_server_port(int socket, int is_tcp, evdns_request_callback_fn_type callback, void *user_data);
 struct evdns_server_port *evdns_add_server_port_with_base(struct event_base *base, int socket, int is_tcp, evdns_request_callback_fn_type callback, void *user_data);
 void evdns_close_server_port(struct evdns_server_port *port);
 
+/** allows setting of the AA or RD flags */
+void evdns_server_request_set_flags(struct evdns_server_request *req, int flags);
+
 int evdns_server_request_add_reply(struct evdns_server_request *req, int section, const char *name, int type, int dns_class, int ttl, int datalen, int is_name, const char *data);
 int evdns_server_request_add_a_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl);
 int evdns_server_request_add_aaaa_reply(struct evdns_server_request *req, const char *name, int n, void *addrs, int ttl);