1 file changed +13
-4
lines changed Original file line number Diff line number Diff line change 1
- use anyhow:: anyhow;
1
+ use anyhow:: { anyhow, Context } ;
2
2
use futures:: { select, FutureExt } ;
3
3
use leak_checker:: traceroute:: TracerouteOpt ;
4
4
pub use leak_checker:: LeakInfo ;
@@ -189,10 +189,19 @@ async fn check_for_leaks(
189
189
#[ cfg( target_os = "android" ) ]
190
190
let interface = todo ! ( "get default interface" ) ;
191
191
192
- // TODO (macos):
193
- // get_default_route in route manager
194
192
#[ cfg( target_os = "macos" ) ]
195
- let interface = todo ! ( "get default interface" ) ;
193
+ let interface = {
194
+ let ( v4_route, v6_route) = route_manager. get_default_routes ( ) . await
195
+ . context ( "Failed to get default interface" ) ?;
196
+ if destination. address . is_ipv4 ( ) {
197
+ let v4_route = v4_route. context ( "Missing IPv4 default interface" ) ?;
198
+ v4_route. interface . into ( )
199
+ } else {
200
+ let v6_route = v6_route. context ( "Missing IPv6 default interface" ) ?;
201
+ v6_route. interface . into ( )
202
+ }
203
+ // TODO: use route.interface_index?
204
+ } ;
196
205
197
206
// TODO (windows):
198
207
// Use default route monitor thingy. It should contain interfaces.
0 commit comments