eculocate

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 2e77ffb56c1b720e242173f162e668ab5e00dadc
parent aa4eb246a9c42005e325e319dc90c2f63c4c23de
Author: Daniel Barlow <dan@telent.net>
Date:   Fri, 26 Dec 2025 21:43:47 +0000

extract helper to encode dotted name as label

Diffstat:
Mecu-esp32/src/wifi.rs | 34++++++++++++++++------------------
1 file changed, 16 insertions(+), 18 deletions(-)

diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs @@ -74,6 +74,20 @@ enum RData { } impl RData { + fn encode_as_label<'a>(name: &str, out: &'a mut [u8], offset: usize) -> &'a [u8] { + let mut offset = offset; + for l in name.split('.') { + out[offset] = (l.len() & 0xff) as u8; + offset += 1; + for c in l.as_bytes().iter() { + out[offset] = *c; + offset += 1; + } + } + out[offset] = 0; + &out[..offset+1] + } + fn to_bytes<'a>(&self, out: &'a mut [u8]) -> &'a [u8] { match self { RData::Raw(b) => { @@ -81,32 +95,16 @@ impl RData { &out[..b.len()] }, RData::Srv { target, port, priority, weight } => { - let mut b : [u8; 80] = [0; 80]; out[0] = (priority >> 8) as u8; out[1] = (priority & 0xff) as u8; out[2] = (weight >> 8) as u8; out[3] = (weight & 0xff) as u8; out[4] = (port >> 8) as u8; out[5] = (port & 0xff) as u8; - - let label = ecu_portable::ptr_data(&["eculogical", "local"], &mut b); - for (i, l) in label.iter().enumerate() { - out[6+i] = *l; - } - &out[..(6 + label.len())] + Self::encode_as_label(target, out, 6) }, RData::Ptr(name) => { - let mut offset = 0; - for l in name.split('.') { - out[offset] = (l.len() & 0xff) as u8; - offset += 1; - for c in l.as_bytes().iter() { - out[offset] = *c; - offset += 1; - } - } - out[offset] = 0; - &out[..offset+1] + Self::encode_as_label(name, out, 0) } } }