void dns_handle_new_query(dns_request_t *m) { //struct in_addr in; int retval = 0; /* modified by CMC from retval=-1 2002/12/6 */ if( m->message.question[0].type == A || m->message.question[0].type == AAA){ /* added by CMC to deny name 2002/11/19 */ if ( deny_lookup_name( m->cname ) ) { debug("%s --> blocked.\n", m->cname); openlog("URL Filter", 0, 0); syslog(0, "URL access to %s is blocked\n", m->cname); closelog(); dns_construct_error_reply(m); dns_write_packet( dns_sock, m->src_addr, m->src_port, m ); return; } /* standard query */ retval = cache_lookup_name( m->cname, m->ip ); }else if( m->message.question[0].type == PTR ){ /* reverse lookup */ retval = cache_lookup_ip( m->ip, m->cname ); } debug(".......... %s ---- %s\n", m->cname, m->ip ); switch( retval ) { case 0: if( is_connected() ){ debug("Adding to list-> id: %d\n", m->message.header.id); dns_request_list = dns_list_add( dns_request_list, m ); /* relay the query untouched */ forward_dns_query( dns_request_list, m ); /* modified by CMC 8/3/2001 */ }else{ debug("Not connected **\n"); dns_construct_error_reply(m); dns_write_packet( dns_sock, m->src_addr, m->src_port, m ); } break; case 1: dns_construct_reply( m ); dns_write_packet( dns_sock, m->src_addr, m->src_port, m ); debug("Cache hit\n"); break; default: debug("Unknown query type: %d\n", m->message.question[0].type ); debug("CMC: Here is un-reachable code! (2002/12/6)\n"); } }
void dns_handle_new_query(dns_request_t *m) { struct in_addr in; int retval = -1; if( m->message.question[0].type == A || m->message.question[0].type == AAA){ /* standard query */ retval = cache_lookup_name( m->cname, m->ip ); }else if( m->message.question[0].type == PTR ){ /* reverse lookup */ retval = cache_lookup_ip( m->ip, m->cname ); } debug(".......... %s ---- %s\n", m->cname, m->ip ); switch( retval ) { case 0: if( is_connected() ){ debug("Adding to list-> id: %d\n", m->message.header.id); dns_request_list = dns_list_add( dns_request_list, m ); /*!!! relay the query untouched */ inet_aton( config.name_server[0], &in ); debug("Sent Request To %s\n",config.name_server[0]); dns_write_packet( dns_sock, in, PORT, m ); }else{ debug("Not connected **\n"); dns_construct_error_reply(m); dns_write_packet( dns_sock, m->src_addr, m->src_port, m ); } break; case 1: dns_construct_reply( m ); dns_write_packet( dns_sock, m->src_addr, m->src_port, m ); debug("Cache hit\n"); break; default: debug("Unknown query type: %d\n", m->message.question[0].type ); } }