aboutsummaryrefslogtreecommitdiff
path: root/embassy-net/src
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2022-12-27 01:04:55 +0100
committerDario Nieuwenhuis <[email protected]>2022-12-27 01:04:55 +0100
commit4a4b59369482572c415487b9d90166e7c19b592a (patch)
tree274b778d838a39f15025ff0d2c458ffbc0196d79 /embassy-net/src
parent4297eb27ffb77d0c05265f972a3526068b78091c (diff)
net; allow changing MAC addr at runtime.
Diffstat (limited to 'embassy-net/src')
-rw-r--r--embassy-net/src/lib.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/embassy-net/src/lib.rs b/embassy-net/src/lib.rs
index b58c9cf36..e4a4218e3 100644
--- a/embassy-net/src/lib.rs
+++ b/embassy-net/src/lib.rs
@@ -111,20 +111,13 @@ impl<D: Driver + 'static> Stack<D> {
111 #[cfg(feature = "medium-ethernet")] 111 #[cfg(feature = "medium-ethernet")]
112 let medium = device.capabilities().medium; 112 let medium = device.capabilities().medium;
113 113
114 #[cfg(feature = "medium-ethernet")]
115 let ethernet_addr = if medium == Medium::Ethernet {
116 device.ethernet_address()
117 } else {
118 [0, 0, 0, 0, 0, 0]
119 };
120
121 let mut b = InterfaceBuilder::new(); 114 let mut b = InterfaceBuilder::new();
122 b = b.ip_addrs(&mut resources.addresses[..]); 115 b = b.ip_addrs(&mut resources.addresses[..]);
123 b = b.random_seed(random_seed); 116 b = b.random_seed(random_seed);
124 117
125 #[cfg(feature = "medium-ethernet")] 118 #[cfg(feature = "medium-ethernet")]
126 if medium == Medium::Ethernet { 119 if medium == Medium::Ethernet {
127 b = b.hardware_addr(HardwareAddress::Ethernet(EthernetAddress(ethernet_addr))); 120 b = b.hardware_addr(HardwareAddress::Ethernet(EthernetAddress(device.ethernet_address())));
128 b = b.neighbor_cache(NeighborCache::new(&mut resources.neighbor_cache[..])); 121 b = b.neighbor_cache(NeighborCache::new(&mut resources.neighbor_cache[..]));
129 b = b.routes(Routes::new(&mut resources.routes[..])); 122 b = b.routes(Routes::new(&mut resources.routes[..]));
130 } 123 }
@@ -261,6 +254,13 @@ impl<D: Driver + 'static> Inner<D> {
261 fn poll(&mut self, cx: &mut Context<'_>, s: &mut SocketStack) { 254 fn poll(&mut self, cx: &mut Context<'_>, s: &mut SocketStack) {
262 s.waker.register(cx.waker()); 255 s.waker.register(cx.waker());
263 256
257 #[cfg(feature = "medium-ethernet")]
258 if self.device.capabilities().medium == Medium::Ethernet {
259 s.iface.set_hardware_addr(HardwareAddress::Ethernet(EthernetAddress(
260 self.device.ethernet_address(),
261 )));
262 }
263
264 let timestamp = instant_to_smoltcp(Instant::now()); 264 let timestamp = instant_to_smoltcp(Instant::now());
265 let mut smoldev = DriverAdapter { 265 let mut smoldev = DriverAdapter {
266 cx: Some(cx), 266 cx: Some(cx),