int main(int argc, char *argv[])
{
int fd = open_sockets();
+ int i;
- id_list_init();
- init_stats();
-
- /* note that parse_configfile() will call scan_range()! */
server_fd = fd;
- parse_configfile(1);
+ parse_configfile();
-/* for (i=1;i<argc;i++) {
- struct in_addr ip;
+ if (use_mysql) {
+ init_mysql(mysql_host, mysql_username, mysql_password);
+ }
- ip.s_addr = inet_addr(argv[i]); //interpret_addr2(argv[i]);
- send_nbt_packet(fd, ip);
- recv_nbt_packets(fd);
- } */
+ for ( ;; ) {
+ struct timeval start, now;
+ unsigned int delay_ms;
- /*
- * receive answers and resend packets until all answers have
- * been received, or all packets have been timed out
- */
- status = RETRYING;
- while (get_num_free_ids() != 65536) {
- recv_nbt_packets(fd);
- resend_timed_out_packets(fd);
- }
+ id_list_init();
+ init_stats();
- if (use_mysql) {
- finish_mysql();
- }
+ gettimeofday(&start, NULL);
- if (verbosity >= 3) {
- print_stats(1);
- fprintf(stderr, "\n");
- }
+ for (i = 0; i < ranges; i++) {
+ scan_range(scanrange[i], scanrangesize[i]);
+ }
+
+ /*
+ * receive answers and resend packets until all answers have
+ * been received, or all packets have been timed out
+ */
+ status = RETRYING;
+ while (get_num_free_ids() != 65536) {
+ recv_nbt_packets(fd);
+ resend_timed_out_packets(fd);
+ }
+
+ if (verbosity >= 3) {
+ print_stats(1);
+ fprintf(stderr, "\n");
+ }
+
+ id_list_destroy();
+ gettimeofday(&now, NULL);
+
+ delay_ms = scan_interval - mydifftime(start, now);
+ if (scan_wait > delay_ms) delay_ms = scan_wait;
+
+ return 0;
+
+ if (verbosity >= 3) {
+ fprintf(stderr, "Scan took %d ms, waiting %d ms for next scan...\r",
+ mydifftime(start, now), delay_ms);
+ usleep(delay_ms * 1000);
+ }
+ }
+ /* finish_mysql(); */
return 0;
}