@@ -34,6 +34,7 @@ pub(crate) struct GatherCandidatesInternalParams {
34
34
pub ( crate ) agent_internal : Arc < AgentInternal > ,
35
35
pub ( crate ) gathering_state : Arc < AtomicU8 > ,
36
36
pub ( crate ) chan_candidate_tx : ChanCandidateTx ,
37
+ pub ( crate ) include_loopback : bool ,
37
38
}
38
39
39
40
struct GatherCandidatesLocalParams {
@@ -46,6 +47,7 @@ struct GatherCandidatesLocalParams {
46
47
ext_ip_mapper : Arc < Option < ExternalIpMapper > > ,
47
48
net : Arc < Net > ,
48
49
agent_internal : Arc < AgentInternal > ,
50
+ include_loopback : bool ,
49
51
}
50
52
51
53
struct GatherCandidatesLocalUDPMuxParams {
@@ -56,6 +58,7 @@ struct GatherCandidatesLocalUDPMuxParams {
56
58
net : Arc < Net > ,
57
59
agent_internal : Arc < AgentInternal > ,
58
60
udp_mux : Arc < dyn UDPMux + Send + Sync > ,
61
+ include_loopback : bool ,
59
62
}
60
63
61
64
struct GatherCandidatesSrflxMappedParasm {
@@ -100,6 +103,7 @@ impl Agent {
100
103
ext_ip_mapper : Arc :: clone ( & params. ext_ip_mapper ) ,
101
104
net : Arc :: clone ( & params. net ) ,
102
105
agent_internal : Arc :: clone ( & params. agent_internal ) ,
106
+ include_loopback : params. include_loopback ,
103
107
} ;
104
108
105
109
let w = wg. worker ( ) ;
@@ -203,6 +207,7 @@ impl Agent {
203
207
ext_ip_mapper,
204
208
net,
205
209
agent_internal,
210
+ include_loopback,
206
211
} = params;
207
212
208
213
// If we wanna use UDP mux, do so
@@ -216,6 +221,7 @@ impl Agent {
216
221
net,
217
222
agent_internal,
218
223
udp_mux,
224
+ include_loopback,
219
225
} )
220
226
. await ;
221
227
@@ -226,7 +232,14 @@ impl Agent {
226
232
return ;
227
233
}
228
234
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 ;
230
243
for ip in ips {
231
244
let mut mapped_ip = ip;
232
245
@@ -380,6 +393,7 @@ impl Agent {
380
393
net,
381
394
agent_internal,
382
395
udp_mux,
396
+ include_loopback,
383
397
} = params;
384
398
385
399
// Filter out non UDP network types
@@ -388,8 +402,14 @@ impl Agent {
388
402
389
403
let udp_mux = Arc :: clone ( & udp_mux) ;
390
404
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 ;
393
413
394
414
let candidate_ips: Vec < std:: net:: IpAddr > = ext_ip_mapper
395
415
. as_ref ( ) // Arc
0 commit comments