@@ -7,7 +7,7 @@ use std::collections::VecDeque;
7
7
use std:: io;
8
8
use std:: io:: ErrorKind :: WouldBlock ;
9
9
use std:: marker:: PhantomData ;
10
- use std:: net:: { IpAddr , SocketAddr , Ipv4Addr , Ipv6Addr } ;
10
+ use std:: net:: { IpAddr , SocketAddr } ;
11
11
use std:: {
12
12
future:: Future ,
13
13
pin:: Pin ,
@@ -20,8 +20,6 @@ use super::{DEFAULT_TTL, MDNS_PORT};
20
20
use crate :: address_family:: AddressFamily ;
21
21
use crate :: services:: { ServiceData , Services } ;
22
22
23
- use local_ip_address:: { list_afinet_netifas} ;
24
-
25
23
pub type AnswerBuilder = dns_parser:: Builder < dns_parser:: Answers > ;
26
24
27
25
const SERVICE_TYPE_ENUMERATION_NAME : Cow < ' static , str > =
@@ -223,7 +221,7 @@ impl<AF: AddressFamily> FSM<AF> {
223
221
}
224
222
225
223
fn add_ip_rr ( & self , hostname : & Name , mut builder : AnswerBuilder , ttl : u32 ) -> AnswerBuilder {
226
- let interfaces = match list_afinet_netifas ( ) {
224
+ let interfaces = match get_if_addrs ( ) {
227
225
Ok ( interfaces) => interfaces,
228
226
Err ( err) => {
229
227
error ! ( "could not get list of interfaces: {}" , err) ;
@@ -232,25 +230,22 @@ impl<AF: AddressFamily> FSM<AF> {
232
230
} ;
233
231
234
232
for iface in interfaces {
233
+ if iface. is_loopback ( ) {
234
+ continue ;
235
+ }
235
236
236
237
trace ! ( "found interface {:?}" , iface) ;
237
- if !self . allowed_ip . is_empty ( ) && !self . allowed_ip . contains ( & iface. 1 ) {
238
+ if !self . allowed_ip . is_empty ( ) && !self . allowed_ip . contains ( & iface. ip ( ) ) {
238
239
trace ! ( " -> interface dropped" ) ;
239
240
continue ;
240
241
}
241
242
242
- match ( iface. 1 , AF :: DOMAIN ) {
243
+ match ( iface. ip ( ) , AF :: DOMAIN ) {
243
244
( IpAddr :: V4 ( ip) , Domain :: IPV4 ) => {
244
- if !is_loopback_ipv4 ( ip) {
245
- builder = builder. add_answer ( hostname, QueryClass :: IN , ttl, & RRData :: A ( ip) ) ;
246
- trace ! ( " -> adding IP address {:?}" , iface. 1 ) ;
247
- }
245
+ builder = builder. add_answer ( hostname, QueryClass :: IN , ttl, & RRData :: A ( ip) )
248
246
}
249
247
( IpAddr :: V6 ( ip) , Domain :: IPV6 ) => {
250
- if !is_loopback_ipv6 ( ip) {
251
- builder = builder. add_answer ( hostname, QueryClass :: IN , ttl, & RRData :: AAAA ( ip) ) ;
252
- trace ! ( " -> adding IP address {:?}" , iface. 1 ) ;
253
- }
248
+ builder = builder. add_answer ( hostname, QueryClass :: IN , ttl, & RRData :: AAAA ( ip) )
254
249
}
255
250
_ => ( ) ,
256
251
}
@@ -323,15 +318,6 @@ impl<AF: Unpin + AddressFamily> Future for FSM<AF> {
323
318
}
324
319
}
325
320
326
-
327
- fn is_loopback_ipv6 ( ip : Ipv6Addr ) -> bool {
328
- ip. segments ( ) == [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 ]
329
- }
330
-
331
- fn is_loopback_ipv4 ( ip : Ipv4Addr ) -> bool {
332
- ip. octets ( ) [ 0 ] == 127
333
- }
334
-
335
321
#[ cfg( test) ]
336
322
mod tests {
337
323
use super :: * ;
0 commit comments