+fn scan_net() {
+ tokio::spawn(future::lazy(|| {
+ let printer = unsafe { PRINTER.as_ref().unwrap() };
+ let store = unsafe { DATA_STORE.as_ref().unwrap() };
+
+ let start_time = Instant::now();
+ let mut scan_nodes = store.get_next_scan_nodes();
+ printer.add_line(format!("Got {} addresses to scan", scan_nodes.len()), false);
+ if !scan_nodes.is_empty() {
+ let per_iter_time = Duration::from_millis(datastore::SECS_PER_SCAN_RESULTS * 1000 / scan_nodes.len() as u64);
+ let mut iter_time = start_time;
+
+ for node in scan_nodes.drain(..) {
+ scan_node(iter_time, node, false);
+ iter_time += per_iter_time;
+ }
+ }
+ Delay::new(start_time + Duration::from_secs(datastore::SECS_PER_SCAN_RESULTS)).then(move |_| {
+ if !START_SHUTDOWN.load(Ordering::Relaxed) {
+ scan_net();
+ }
+ future::ok(())
+ })
+ }));
+}
+
+fn make_trusted_conn(trusted_sockaddr: SocketAddr, bgp_client: Arc<BGPClient>) {