@@ -31,7 +31,7 @@ use self::linux::default_route;
3131use self :: windows:: default_route;
3232#[ cfg( not( wasm_browser) ) ]
3333use crate :: ip:: is_link_local;
34- use crate :: ip:: { is_private_v6, is_up} ;
34+ use crate :: ip:: { is_private_v6, is_up, LocalAddresses } ;
3535#[ cfg( not( wasm_browser) ) ]
3636use crate :: netmon:: is_interesting_interface;
3737
@@ -161,6 +161,8 @@ impl IpNet {
161161pub struct State {
162162 /// Maps from an interface name interface.
163163 pub interfaces : HashMap < String , Interface > ,
164+ /// List of machine's local IP addresses.
165+ pub local_addresses : LocalAddresses ,
164166
165167 /// Whether this machine has an IPv6 Global or Unique Local Address
166168 /// which might provide connectivity.
@@ -212,6 +214,8 @@ impl State {
212214 let mut have_v4 = false ;
213215
214216 let ifaces = netdev:: interface:: get_interfaces ( ) ;
217+ let local_addresses = LocalAddresses :: from_raw_interfaces ( & ifaces) ;
218+
215219 for iface in ifaces {
216220 let ni = Interface { iface } ;
217221 let if_up = ni. is_up ( ) ;
@@ -235,6 +239,7 @@ impl State {
235239
236240 State {
237241 interfaces,
242+ local_addresses,
238243 have_v4,
239244 have_v6,
240245 is_expensive : false ,
@@ -250,6 +255,7 @@ impl State {
250255 let ifname = fake. iface . name . clone ( ) ;
251256 Self {
252257 interfaces : [ ( ifname. clone ( ) , fake) ] . into_iter ( ) . collect ( ) ,
258+ local_addresses : LocalAddresses :: from_raw_interfaces ( & [ ] ) ,
253259 have_v6 : true ,
254260 have_v4 : true ,
255261 is_expensive : false ,
0 commit comments