@@ -34,6 +34,7 @@ pub(crate) struct GatherCandidatesInternalParams {
3434 pub ( crate ) agent_internal : Arc < AgentInternal > ,
3535 pub ( crate ) gathering_state : Arc < AtomicU8 > ,
3636 pub ( crate ) chan_candidate_tx : ChanCandidateTx ,
37+ pub ( crate ) include_loopback : bool ,
3738}
3839
3940struct GatherCandidatesLocalParams {
@@ -46,6 +47,7 @@ struct GatherCandidatesLocalParams {
4647 ext_ip_mapper : Arc < Option < ExternalIpMapper > > ,
4748 net : Arc < Net > ,
4849 agent_internal : Arc < AgentInternal > ,
50+ include_loopback : bool ,
4951}
5052
5153struct GatherCandidatesLocalUDPMuxParams {
@@ -56,6 +58,7 @@ struct GatherCandidatesLocalUDPMuxParams {
5658 net : Arc < Net > ,
5759 agent_internal : Arc < AgentInternal > ,
5860 udp_mux : Arc < dyn UDPMux + Send + Sync > ,
61+ include_loopback : bool ,
5962}
6063
6164struct GatherCandidatesSrflxMappedParasm {
@@ -100,6 +103,7 @@ impl Agent {
100103 ext_ip_mapper : Arc :: clone ( & params. ext_ip_mapper ) ,
101104 net : Arc :: clone ( & params. net ) ,
102105 agent_internal : Arc :: clone ( & params. agent_internal ) ,
106+ include_loopback : params. include_loopback ,
103107 } ;
104108
105109 let w = wg. worker ( ) ;
@@ -203,6 +207,7 @@ impl Agent {
203207 ext_ip_mapper,
204208 net,
205209 agent_internal,
210+ include_loopback,
206211 } = params;
207212
208213 // If we wanna use UDP mux, do so
@@ -216,6 +221,7 @@ impl Agent {
216221 net,
217222 agent_internal,
218223 udp_mux,
224+ include_loopback,
219225 } )
220226 . await ;
221227
@@ -226,7 +232,14 @@ impl Agent {
226232 return ;
227233 }
228234
229- let ips = local_interfaces ( & net, & interface_filter, & ip_filter, & network_types) . await ;
235+ let ips = local_interfaces (
236+ & net,
237+ & interface_filter,
238+ & ip_filter,
239+ & network_types,
240+ include_loopback,
241+ )
242+ . await ;
230243 for ip in ips {
231244 let mut mapped_ip = ip;
232245
@@ -380,6 +393,7 @@ impl Agent {
380393 net,
381394 agent_internal,
382395 udp_mux,
396+ include_loopback,
383397 } = params;
384398
385399 // Filter out non UDP network types
@@ -388,8 +402,14 @@ impl Agent {
388402
389403 let udp_mux = Arc :: clone ( & udp_mux) ;
390404
391- let local_ips =
392- local_interfaces ( & net, & interface_filter, & ip_filter, & relevant_network_types) . await ;
405+ let local_ips = local_interfaces (
406+ & net,
407+ & interface_filter,
408+ & ip_filter,
409+ & relevant_network_types,
410+ include_loopback,
411+ )
412+ . await ;
393413
394414 let candidate_ips: Vec < std:: net:: IpAddr > = ext_ip_mapper
395415 . as_ref ( ) // Arc
0 commit comments