eculocate

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

commit 7e5e7c201d54c6ad078ed8e0f177bf756038ebcf
parent 400e2e1e14d27c6c868f81e3f989ee5d229852ca
Author: Daniel Barlow <dan@telent.net>
Date:   Fri,  2 Jan 2026 21:32:09 +0000

rename DnsResource as Resource and alias in client

Diffstat:
Mecu-esp32/src/mdns.rs | 26+++++++++++++-------------
Mecu-esp32/src/wifi.rs | 18+++++++++++-------
2 files changed, 24 insertions(+), 20 deletions(-)

diff --git a/ecu-esp32/src/mdns.rs b/ecu-esp32/src/mdns.rs @@ -44,7 +44,7 @@ pub struct MdnsResponder<'a> { impl<'a> MdnsResponder<'a> { pub fn new(stack : Stack<'a>, mut sock: UdpSocket<'a>, - records: Vec<DnsResource>) -> MdnsResponder<'a> { + records: Vec<Resource>) -> MdnsResponder<'a> { sock.set_hop_limit(Some(255)); log::info!("sock.bind(5353) res: {:?}", sock.bind(MDNS_PORT)); @@ -60,7 +60,7 @@ impl<'a> MdnsResponder<'a> { } } - pub fn set_records(&mut self, records: Vec<DnsResource>) { + pub fn set_records(&mut self, records: Vec<Resource>) { self.database = Database(records); } @@ -154,7 +154,7 @@ impl<'a> MdnsResponder<'a> { id: u16, endpoint: IpEndpoint, question: Option<&Question<'_>>, - answers: Vec<&DnsResource>) { + answers: Vec<&Resource>) { let legacy = question != None; @@ -359,13 +359,13 @@ impl RData { } #[derive(Debug)] -pub struct DnsResource { +pub struct Resource { name : String, data : RData, data_raw : Vec<u8> } -impl DnsResource { +impl Resource { pub fn new( name: impl Into<String>, data: RData @@ -412,12 +412,12 @@ impl DnsResource { } } -struct Database(Vec<DnsResource>); +struct Database(Vec<Resource>); impl Database { - fn find<'a>(&self, name: impl Into<String>, ty: ResourceType) -> Vec<&DnsResource> { + fn find<'a>(&self, name: impl Into<String>, ty: ResourceType) -> Vec<&Resource> { let name = name.into(); - let results : Vec<&DnsResource> = + let results : Vec<&Resource> = self.0.iter().filter( |r| ((ty == ResourceType::Wildcard) || (r.data.ty() == ty)) && @@ -427,11 +427,11 @@ impl Database { } // the records we announce unsolicited at startup - fn advertised(&self) -> Vec<&DnsResource> { + fn advertised(&self) -> Vec<&Resource> { self.0.iter().filter( |r| r.name != DISCOVERY_NAME ).collect() } - fn additional(&self, r: &DnsResource) -> Vec<&DnsResource> { + fn additional(&self, r: &Resource) -> Vec<&Resource> { match &r.data { RData::Srv { target, port:_, priority:_, weight:_ } => { self.find(target, ResourceType::Wildcard) @@ -447,15 +447,15 @@ impl Database { } } - fn all_additional_<'a>(&'a self, r: &DnsResource, collect: &mut Vec<&'a DnsResource>) { + fn all_additional_<'a>(&'a self, r: &Resource, collect: &mut Vec<&'a Resource>) { for r in self.additional(r) { collect.push(r); self.all_additional_(r, collect); } } - fn all_additional(&self, r: &DnsResource) -> Vec<&DnsResource> { - let mut collect : Vec<&DnsResource> = Vec::new(); + fn all_additional(&self, r: &Resource) -> Vec<&Resource> { + let mut collect : Vec<&Resource> = Vec::new(); self.all_additional_(r, &mut collect); collect } diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs @@ -34,7 +34,8 @@ use esp_radio::{ }, }; -use crate::mdns::{MdnsResponder, MdnsResponderState, DnsResource, RData, DISCOVERY_NAME}; +use crate::mdns::Resource as DnsResource; +use crate::mdns::{MdnsResponder, MdnsResponderState, RData, DISCOVERY_NAME}; // When you are okay with using a nightly compiler it's better to use https://docs.rs/static_cell/2.1.0/static_cell/macro.make_static.html macro_rules! mk_static { @@ -51,6 +52,9 @@ const PASSWORD: &str = env!("PASSWORD"); fn dns_records(my_ip_address: [u8;4], serial: Option<usize>) -> Vec<DnsResource> { + use crate::mdns::*; + use crate::mdns::RData as R; + let (hostname, ptr_name) = match serial { None => ( @@ -65,17 +69,17 @@ fn dns_records(my_ip_address: [u8;4], serial: Option<usize>) -> Vec<DnsResource> let records = [ - DnsResource::new(&hostname, RData::A(my_ip_address)), - DnsResource::new( + Resource::new(&hostname, R::A(my_ip_address)), + Resource::new( &ptr_name, - RData::Srv { + R::Srv { target: String::from(hostname), port: 5000, weight: 0, priority: 0 } ), - DnsResource::new(&ptr_name, RData::Txt(["txtvers=1".into()].into())), - DnsResource::new("_keihin._udp.local", RData::Ptr(ptr_name)), - DnsResource::new(DISCOVERY_NAME, RData::Ptr("_keihin._udp.local".into())) + Resource::new(&ptr_name, R::Txt(["txtvers=1".into()].into())), + Resource::new("_keihin._udp.local", R::Ptr(ptr_name)), + Resource::new(DISCOVERY_NAME, R::Ptr("_keihin._udp.local".into())) ]; Vec::from(records) }