commit 97526702a8b41056a7fad5e55a19b7ea34113f5c
parent 90e19a06111b126ec1f2eedb23c456912aa71a40
Author: Daniel Barlow <dan@telent.net>
Date: Tue, 30 Dec 2025 15:20:55 +0000
extract helper, fix naming
a label is "example", "com" not "example.com"
Diffstat:
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs
@@ -234,14 +234,18 @@ enum RData {
}
impl RData {
- fn encode_as_label<'a>(name: &str, out: &'a mut [u8], offset: usize) -> &'a [u8] {
+ fn copy_string<'a>(s: &str, out: &'a mut [u8], offset: usize) -> usize {
+ let end = s.len() + offset + 1;
+ out[offset] = (s.len() & 0xff) as u8;
+ let _ = &out[(offset+1) .. end].clone_from_slice(s.as_bytes());
+ end
+ }
+
+ fn encode_as_name<'a>(name: &str, out: &'a mut [u8], offset: usize) -> &'a [u8] {
let mut offset = offset;
for l in name.split('.') {
- let end = l.len() + offset + 1;
- out[offset] = (l.len() & 0xff) as u8;
- let _ = &out[(offset+1) .. end].clone_from_slice(l.as_bytes());
- offset = end;
+ offset = Self::copy_string(l, out, offset);
}
out[offset] = 0;
&out[..offset+1]
@@ -251,10 +255,7 @@ impl RData {
let mut offset = offset;
for l in strings.into_iter() {
- let end = l.len() + offset + 1;
- out[offset] = (l.len() & 0xff) as u8;
- let _ = &out[(offset+1) .. end].clone_from_slice(l.as_bytes());
- offset = end;
+ offset = Self::copy_string(l, out, offset);
}
out[offset] = 0;
&out[..offset+1]
@@ -278,10 +279,10 @@ impl RData {
out[3] = (weight & 0xff) as u8;
out[4] = (port >> 8) as u8;
out[5] = (port & 0xff) as u8;
- Self::encode_as_label(target, out, 6)
+ Self::encode_as_name(target, out, 6)
},
RData::Ptr(name) => {
- Self::encode_as_label(name, out, 0)
+ Self::encode_as_name(name, out, 0)
}
RData::A(octets) => {
out[..4].clone_from_slice(octets);