+fn scan_net() {
+ tokio::spawn(future::lazy(|| {
+ let printer = unsafe { PRINTER.as_ref().unwrap() };
+ let store = unsafe { DATA_STORE.as_ref().unwrap() };
+
+ let mut scan_nodes = store.get_next_scan_nodes();
+ printer.add_line(format!("Got {} addresses to scan", scan_nodes.len()), false);
+ let per_iter_time = Duration::from_millis(1000 / store.get_u64(U64Setting::ConnsPerSec));
+ let start_time = Instant::now();
+ 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(cmp::max(iter_time, start_time + Duration::from_secs(1))).then(move |_| {
+ if !START_SHUTDOWN.load(Ordering::Relaxed) {
+ scan_net();
+ }
+ future::ok(())
+ })
+ }));
+}
+
+fn make_trusted_conn(trusted_sockaddr: SocketAddr, bgp_client: Arc<BGPClient>) {