aboutsummaryrefslogtreecommitdiff
path: root/embassy-net/src/stack.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2021-02-24 22:31:07 +0100
committerDario Nieuwenhuis <[email protected]>2021-02-24 22:31:07 +0100
commitf100383b3c094830fee4e54956795388bd5edec1 (patch)
tree8411f2b03297fc0bd6287cbd1dd340c74d3d72b5 /embassy-net/src/stack.rs
parent7d3878466cfecde17f5e707d65503435394f7ae5 (diff)
Make ethernet address configurable from the Device
Diffstat (limited to 'embassy-net/src/stack.rs')
-rw-r--r--embassy-net/src/stack.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/embassy-net/src/stack.rs b/embassy-net/src/stack.rs
index d1dcb3bc9..8f63db971 100644
--- a/embassy-net/src/stack.rs
+++ b/embassy-net/src/stack.rs
@@ -154,15 +154,18 @@ pub fn init(device: &'static mut dyn Device, configurator: &'static mut dyn Conf
154 routes: [None; 1], 154 routes: [None; 1],
155 }); 155 });
156 156
157 let ethernet_addr = EthernetAddress([0x02, 0x02, 0x02, 0x02, 0x02, 0x02]);
158
159 let medium = device.capabilities().medium; 157 let medium = device.capabilities().medium;
158 let ethernet_addr = if medium == Medium::Ethernet {
159 device.ethernet_address()
160 } else {
161 [0, 0, 0, 0, 0, 0]
162 };
160 163
161 let mut b = InterfaceBuilder::new(DeviceAdapter::new(device)); 164 let mut b = InterfaceBuilder::new(DeviceAdapter::new(device));
162 b = b.ip_addrs(&mut res.addresses[..]); 165 b = b.ip_addrs(&mut res.addresses[..]);
163 166
164 if medium == Medium::Ethernet { 167 if medium == Medium::Ethernet {
165 b = b.ethernet_addr(ethernet_addr); 168 b = b.ethernet_addr(EthernetAddress(ethernet_addr));
166 b = b.neighbor_cache(NeighborCache::new(&mut res.neighbor_cache[..])); 169 b = b.neighbor_cache(NeighborCache::new(&mut res.neighbor_cache[..]));
167 b = b.routes(Routes::new(&mut res.routes[..])); 170 b = b.routes(Routes::new(&mut res.routes[..]));
168 } 171 }