@@ -8,8 +8,7 @@ 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 , ACTION_PORT , CHUNKS_PORT , HINT_PORT , UDP_BODY_LEN
1312} ;
1413use std:: {
1514 collections:: BTreeSet ,
@@ -26,7 +25,7 @@ use tokio::{
2625async fn broadcast_chunks (
2726 state : & State ,
2827 socket : & UdpSocket ,
29- ip : Ipv4Addr ,
28+ iface : & InterfaceConfig ,
3029 mut rx : Receiver < ChunkHash > ,
3130) -> Result < ( ) > {
3231 let mut queue = BTreeSet :: < ChunkHash > :: new ( ) ;
@@ -77,8 +76,7 @@ async fn broadcast_chunks(
7776 continue ;
7877 } ;
7978
80- let hosts_cfg = & state. config . hosts ;
81- let chunks_addr = SocketAddrV4 :: new ( ip, CHUNKS_PORT ) ;
79+ let chunks_addr = SocketAddrV4 :: new ( iface. network . addr ( ) , CHUNKS_PORT ) ;
8280
8381 let mut encoder = Encoder :: new ( cdata) ;
8482 write_buf[ ..32 ] . clone_from_slice ( & index) ;
@@ -87,7 +85,7 @@ async fn broadcast_chunks(
8785
8886 let sent_len = socket. send_to ( & write_buf[ ..32 + len] , chunks_addr) . await ?;
8987 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 ;
88+ wait_for += 8 * ( sent_len as u32 ) * Duration :: from_secs ( 1 ) / iface . broadcast_speed ;
9189 }
9290 }
9391
@@ -221,7 +219,7 @@ pub async fn main(state: Arc<State>) -> Result<()> {
221219 . iter ( )
222220 . map ( |iface| {
223221 let ( tx, rx) = mpsc:: channel ( 128 ) ;
224- ( ( iface. network , tx) , ( iface. network , rx) )
222+ ( ( iface. network , tx) , ( iface, rx) )
225223 } )
226224 . unzip ( ) ;
227225
@@ -231,9 +229,9 @@ pub async fn main(state: Arc<State>) -> Result<()> {
231229
232230 let mut tasks = vec ! [ handle_requests( & state, & socket, net_tx) . boxed( ) ] ;
233231
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 ( ) ) ;
232+ for ( iface , rx) in net_rx {
233+ tasks. push ( broadcast_chunks ( & state, & socket, iface , rx) . boxed ( ) ) ;
234+ tasks. push ( broadcast_hint ( & state, & socket, iface . network . broadcast ( ) ) . boxed ( ) ) ;
237235 }
238236
239237 futures:: future:: try_join_all ( tasks) . await ?;
0 commit comments