[IOMultiplexerV2] added reverse lookups to IODNSEngine_default and added DNS example...
[NextIRCd.git] / src / IOHandler / IODNSLookup.c
index e39a9cfc0494a25d3598937a9418628f4dd0fdd7..f458bf5ca033bf89e4f0eb4d264c8209a8539f3f 100644 (file)
@@ -90,6 +90,11 @@ void _stop_dnsquery(struct _IODNSQuery *query) {
                _free_dnsquery(query);
 }
 
+void iodns_socket_callback(struct _IOSocket *iosock, int wantread, int wantwrite) {
+       if(dnsengine && dnsengine->socket_callback)
+               dnsengine->socket_callback(iosock, wantread, wantwrite);
+}
+
 void iodns_event_callback(struct _IODNSQuery *query, enum IODNSEventType state) {
        if((query->flags & IODNSFLAG_PARENT_PUBLIC)) {
                struct IODNSQuery *descriptor = query->parent;
@@ -125,7 +130,7 @@ void iodns_poll() {
 
 /* public functions */
 
-struct IODNSQuery *iodns_getaddrinfo(char *hostname, int records, iodns_callback *callback) {
+struct IODNSQuery *iodns_getaddrinfo(char *hostname, int records, iodns_callback *callback, void *arg) {
        if(!(records & IODNS_FORWARD) || !hostname || !callback)
                return NULL;
        
@@ -144,6 +149,7 @@ struct IODNSQuery *iodns_getaddrinfo(char *hostname, int records, iodns_callback
        query->parent = descriptor;
        query->flags |= IODNSFLAG_PARENT_PUBLIC;
        descriptor->query = query;
+       descriptor->data = arg;
        
        query->request.host = strdup(hostname);
        query->type = (records & IODNS_FORWARD);
@@ -154,7 +160,7 @@ struct IODNSQuery *iodns_getaddrinfo(char *hostname, int records, iodns_callback
        return descriptor;
 }
 
-struct IODNSQuery *iodns_getnameinfo(const struct sockaddr *addr, size_t addrlen, iodns_callback *callback) {
+struct IODNSQuery *iodns_getnameinfo(const struct sockaddr *addr, size_t addrlen, iodns_callback *callback, void *arg) {
        if(!addr || !callback)
                return NULL;
        
@@ -173,6 +179,7 @@ struct IODNSQuery *iodns_getnameinfo(const struct sockaddr *addr, size_t addrlen
        query->parent = descriptor;
        query->flags |= IODNSFLAG_PARENT_PUBLIC;
        descriptor->query = query;
+       descriptor->data = arg;
        
        query->type = IODNS_RECORD_PTR;
        query->request.addr.addresslen = addrlen;