@@ -7,7 +7,7 @@ use std::os::unix::io::AsRawFd;
7
7
use smoltcp:: iface:: { Config , Interface , SocketSet } ;
8
8
use smoltcp:: socket:: dhcpv4;
9
9
use smoltcp:: time:: Instant ;
10
- use smoltcp:: wire:: { EthernetAddress , IpCidr , Ipv4Address , Ipv4Cidr } ;
10
+ use smoltcp:: wire:: { EthernetAddress , IpCidr , Ipv4Cidr } ;
11
11
use smoltcp:: {
12
12
phy:: { wait as phy_wait, Device , Medium } ,
13
13
time:: Duration ,
@@ -77,7 +77,7 @@ fn main() {
77
77
}
78
78
Some ( dhcpv4:: Event :: Deconfigured ) => {
79
79
debug ! ( "DHCP lost config!" ) ;
80
- set_ipv4_addr ( & mut iface, Ipv4Cidr :: new ( Ipv4Address :: UNSPECIFIED , 0 ) ) ;
80
+ iface. update_ip_addrs ( |addrs| addrs . clear ( ) ) ;
81
81
iface. routes_mut ( ) . remove_default_ipv4_route ( ) ;
82
82
}
83
83
}
@@ -86,9 +86,10 @@ fn main() {
86
86
}
87
87
}
88
88
89
+ /// Clear any existing IP addresses & add the new one
89
90
fn set_ipv4_addr ( iface : & mut Interface , cidr : Ipv4Cidr ) {
90
91
iface. update_ip_addrs ( |addrs| {
91
- let dest = addrs. iter_mut ( ) . next ( ) . unwrap ( ) ;
92
- * dest = IpCidr :: Ipv4 ( cidr) ;
92
+ addrs. clear ( ) ;
93
+ addrs . push ( IpCidr :: Ipv4 ( cidr) ) . unwrap ( ) ;
93
94
} ) ;
94
95
}
0 commit comments