diff --git a/nmap_dns.cc b/nmap_dns.cc index c457be27a..22dd36cad 100644 --- a/nmap_dns.cc +++ b/nmap_dns.cc @@ -1326,3 +1326,21 @@ void nmap_mass_rdns(Target **targets, int num_targets) { firstrun=0; } + + +// Returns a list of known DNS servers +std::list get_dns_servers() { + // if, for example, run with -n, list is not initialized, + // run empty nmap_mass_rdns to do so + if(servs.size() == 0 && firstrun) { + nmap_mass_rdns(NULL, 0); + } + std::list::iterator servI; + std::list serverList; + dns_server *tpserv; + for(servI = servs.begin(); servI != servs.end(); servI++) { + tpserv = *servI; + serverList.push_back(inet_ntoa(tpserv->addr.sin_addr)); + } + return serverList; +} diff --git a/nmap_dns.h b/nmap_dns.h index bb1b072fc..942b6253d 100644 --- a/nmap_dns.h +++ b/nmap_dns.h @@ -103,3 +103,4 @@ const char *lookup_cached_host(u32 ip); void free_dns_servers(); void free_etchosts(); +std::list get_dns_servers();