@@ -79,26 +79,29 @@ async fn create_tunn(
7979 let IpNetwork :: V4 ( ip) = ip else {
8080 return Err ( anyhow:: Error :: msg ( Error :: UnknownPeer ) ) ;
8181 } ;
82- let ip = Ipv4Network :: new ( ip. ip ( ) , 24 ) ?;
83- let test = map. iter ( ) . filter ( |( k, _v) | {
84- let ipv4 = match * k {
85- IpNetwork :: V4 ( ipv4) => ipv4,
86- _ => return false ,
87- } ;
88- ip. contains ( ipv4. ip ( ) )
89- } ) . collect :: < Vec < _ > > ( ) ;
90- if !test. is_empty ( ) {
91- let charger_ids: Vec < uuid:: Uuid > = test
82+ let subnet = Ipv4Network :: new ( ip. ip ( ) , 24 ) ?;
83+ let matching_entries = map
84+ . iter ( )
85+ . filter ( |( network, _) | {
86+ let ipv4_network = match * network {
87+ IpNetwork :: V4 ( ipv4) => ipv4,
88+ _ => return false ,
89+ } ;
90+ subnet. contains ( ipv4_network. ip ( ) )
91+ } )
92+ . collect :: < Vec < _ > > ( ) ;
93+ if !matching_entries. is_empty ( ) {
94+ let device_ids: Vec < uuid:: Uuid > = matching_entries
9295 . iter ( )
93- . flat_map ( |( _k , v ) | v . iter ( ) . map ( |c| c . id ) )
96+ . flat_map ( |( _ , devices ) | devices . iter ( ) . map ( |d| d . id ) )
9497 . collect ( ) ;
95- log:: info!( "Found possible matches for ip '{ip }: {charger_ids :?}'" ) ;
98+ log:: info!( "Found possible matches for ip '{subnet }: {device_ids :?}'" ) ;
9699 chargers:: chargers
97- . filter ( chargers:: id. eq_any ( charger_ids ) )
100+ . filter ( chargers:: id. eq_any ( device_ids ) )
98101 . select ( Charger :: as_select ( ) )
99102 . load ( & mut conn) ?
100103 } else {
101- log:: info!( "Could not find charger for ip '{ip }'" ) ;
104+ log:: info!( "Could not find charger for ip '{subnet }'" ) ;
102105 return Err ( anyhow:: Error :: msg ( Error :: UnknownPeer ) ) ;
103106 }
104107 }
0 commit comments