diff options
| author | Dario Nieuwenhuis <[email protected]> | 2022-12-27 01:04:55 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2022-12-27 01:04:55 +0100 |
| commit | 4a4b59369482572c415487b9d90166e7c19b592a (patch) | |
| tree | 274b778d838a39f15025ff0d2c458ffbc0196d79 /embassy-net/src/lib.rs | |
| parent | 4297eb27ffb77d0c05265f972a3526068b78091c (diff) | |
net; allow changing MAC addr at runtime.
Diffstat (limited to 'embassy-net/src/lib.rs')
| -rw-r--r-- | embassy-net/src/lib.rs | 16 |
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), |
