]> granicus.if.org Git - libevent/commitdiff
allow DNS server to get access to the IP address for the requestor; from tor cvs...
authorNiels Provos <provos@gmail.com>
Mon, 28 May 2007 21:21:59 +0000 (21:21 +0000)
committerNiels Provos <provos@gmail.com>
Mon, 28 May 2007 21:21:59 +0000 (21:21 +0000)
svn:r362

evdns.c
evdns.h

diff --git a/evdns.c b/evdns.c
index 63dd12656d00fef82833c4fd86fad421bbf40fef..068dc7df4dae05efb6c75d1aef145c8c12e16a66 100644 (file)
--- a/evdns.c
+++ b/evdns.c
@@ -1788,6 +1788,17 @@ evdns_server_request_drop(struct evdns_server_request *_req)
        return 0;
 }
 
+// exported function
+int
+evdns_server_request_get_requesting_addr(struct evdns_server_request *_req, struct sockaddr *sa, int addr_len)
+{
+       struct server_request *req = TO_SERVER_REQUEST(_req);
+       if (addr_len < (int)req->addrlen)
+               return -1;
+       memcpy(sa, &(req->addr), req->addrlen);
+       return req->addrlen;
+}
+
 #undef APPEND16
 #undef APPEND32
 
diff --git a/evdns.h b/evdns.h
index 0c4547c88553f4520fd8bd676102463dcf241024..3411daea26206d5eade3d918dc735dbee8009657 100644 (file)
--- a/evdns.h
+++ b/evdns.h
@@ -361,5 +361,7 @@ int evdns_server_request_add_cname_reply(struct evdns_server_request *req, const
 
 int evdns_server_request_respond(struct evdns_server_request *req, int err);
 int evdns_server_request_drop(struct evdns_server_request *req);
+struct sockaddr;
+int evdns_server_request_get_requesting_addr(struct evdns_server_request *_req, struct sockaddr *sa, int addr_len);
 
 #endif  // !EVENTDNS_H