@@ -8,8 +8,8 @@ use anyhow::{ensure, Context, Result};
88use futures:: FutureExt ;
99use ipnet:: Ipv4Net ;
1010use pixie_shared:: {
11- chunk_codec:: Encoder , ChunkHash , HintPacket , RegistrationInfo , UdpRequest , ACTION_PORT ,
12- CHUNKS_PORT , HINT_PORT , UDP_BODY_LEN ,
11+ chunk_codec:: Encoder , ChunkHash , HintPacket , InterfaceConfig , RegistrationInfo , UdpRequest ,
12+ ACTION_PORT , CHUNKS_PORT , HINT_PORT , UDP_BODY_LEN ,
1313} ;
1414use std:: {
1515 collections:: BTreeSet ,
@@ -26,7 +26,7 @@ use tokio::{
2626async fn broadcast_chunks (
2727 state : & State ,
2828 socket : & UdpSocket ,
29- ip : Ipv4Addr ,
29+ iface : & InterfaceConfig ,
3030 mut rx : Receiver < ChunkHash > ,
3131) -> Result < ( ) > {
3232 let mut queue = BTreeSet :: < ChunkHash > :: new ( ) ;
@@ -77,8 +77,7 @@ async fn broadcast_chunks(
7777 continue ;
7878 } ;
7979
80- let hosts_cfg = & state. config . hosts ;
81- let chunks_addr = SocketAddrV4 :: new ( ip, CHUNKS_PORT ) ;
80+ let chunks_addr = SocketAddrV4 :: new ( iface. network . broadcast ( ) , CHUNKS_PORT ) ;
8281
8382 let mut encoder = Encoder :: new ( cdata) ;
8483 write_buf[ ..32 ] . clone_from_slice ( & index) ;
@@ -87,7 +86,7 @@ async fn broadcast_chunks(
8786
8887 let sent_len = socket. send_to ( & write_buf[ ..32 + len] , chunks_addr) . await ?;
8988 ensure ! ( sent_len == 32 + len, "Could not send packet" ) ;
90- wait_for += 8 * ( sent_len as u32 ) * Duration :: from_secs ( 1 ) / hosts_cfg . broadcast_speed ;
89+ wait_for += 8 * ( sent_len as u32 ) * Duration :: from_secs ( 1 ) / iface . broadcast_speed ;
9190 }
9291 }
9392
@@ -221,7 +220,7 @@ pub async fn main(state: Arc<State>) -> Result<()> {
221220 . iter ( )
222221 . map ( |iface| {
223222 let ( tx, rx) = mpsc:: channel ( 128 ) ;
224- ( ( iface. network , tx) , ( iface. network , rx) )
223+ ( ( iface. network , tx) , ( iface, rx) )
225224 } )
226225 . unzip ( ) ;
227226
@@ -231,9 +230,9 @@ pub async fn main(state: Arc<State>) -> Result<()> {
231230
232231 let mut tasks = vec ! [ handle_requests( & state, & socket, net_tx) . boxed( ) ] ;
233232
234- for ( network , rx) in net_rx {
235- tasks. push ( broadcast_chunks ( & state, & socket, network . broadcast ( ) , rx) . boxed ( ) ) ;
236- tasks. push ( broadcast_hint ( & state, & socket, network. broadcast ( ) ) . boxed ( ) ) ;
233+ for ( iface , rx) in net_rx {
234+ tasks. push ( broadcast_chunks ( & state, & socket, iface , rx) . boxed ( ) ) ;
235+ tasks. push ( broadcast_hint ( & state, & socket, iface . network . broadcast ( ) ) . boxed ( ) ) ;
237236 }
238237
239238 futures:: future:: try_join_all ( tasks) . await ?;
0 commit comments