@@ -14,7 +14,7 @@ use smoltcp::socket::dns;
14
14
use smoltcp:: time:: Instant ;
15
15
use smoltcp:: wire:: { EthernetAddress , HardwareAddress } ;
16
16
#[ cfg( not( feature = "dhcpv4" ) ) ]
17
- use smoltcp:: wire:: { IpCidr , Ipv4Address } ;
17
+ use smoltcp:: wire:: { Ipv4Address , Ipv4Cidr } ;
18
18
19
19
use super :: network:: { NetworkInterface , NetworkState } ;
20
20
use crate :: arch;
@@ -126,14 +126,9 @@ impl<'a> NetworkInterface<'a> {
126
126
#[ cfg( feature = "dns" ) ]
127
127
let mydns2 = Ipv4Address :: from_str ( hermit_var_or ! ( "HERMIT_DNS2" , "1.1.1.1" ) ) . unwrap ( ) ;
128
128
129
- // calculate the netmask length
130
- // => count the number of contiguous 1 bits
131
- let prefix_len = mymask. to_bits ( ) . leading_ones ( ) ;
132
- let prefix_len = u8:: try_from ( prefix_len) . unwrap ( ) ;
133
-
134
129
let ethernet_addr = EthernetAddress ( mac) ;
135
130
let hardware_addr = HardwareAddress :: Ethernet ( ethernet_addr) ;
136
- let ip_addrs = [ IpCidr :: new ( myip. into ( ) , prefix_len ) ] ;
131
+ let ip_addrs = [ Ipv4Cidr :: from_netmask ( myip, mymask ) . unwrap ( ) ] ;
137
132
138
133
info ! ( "MAC address {hardware_addr}" ) ;
139
134
info ! ( "Configure network interface with address {}" , ip_addrs[ 0 ] ) ;
@@ -150,7 +145,9 @@ impl<'a> NetworkInterface<'a> {
150
145
151
146
let mut iface = Interface :: new ( config, & mut device, crate :: executor:: network:: now ( ) ) ;
152
147
iface. update_ip_addrs ( |ip_addrs| {
153
- ip_addrs. push ( IpCidr :: new ( myip. into ( ) , prefix_len) ) . unwrap ( ) ;
148
+ ip_addrs
149
+ . push ( Ipv4Cidr :: from_netmask ( myip, mymask) . unwrap ( ) . into ( ) )
150
+ . unwrap ( ) ;
154
151
} ) ;
155
152
iface. routes_mut ( ) . add_default_ipv4_route ( mygw) . unwrap ( ) ;
156
153
0 commit comments