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:
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)
}
}
}