eculocate

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

commit 87a42d2c82a529e57d9f24f11625327ec8a5464e
parent ebe799c390e5b78cf5692f1d988d8ce6ded0c40b
Author: Daniel Barlow <dan@telent.net>
Date:   Sat, 27 Dec 2025 20:54:51 +0000

(unused) method to determin additional records in response

Diffstat:
Mecu-esp32/src/wifi.rs | 28+++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/ecu-esp32/src/wifi.rs b/ecu-esp32/src/wifi.rs @@ -38,6 +38,7 @@ use esp_radio::{ use log::{info,error}; +const DISCOVERY_NAME : &str = "_services._dns-sd._udp.local"; use dns_protocol::{Message, Question, MessageType, @@ -67,6 +68,7 @@ const CACHE_FLUSH : u16 = 1<<15; // our needs because it doesn't own its "data" attribute - it's just a // reference. So we need structures that can own the data +#[derive(Clone)] enum RData { Raw(Vec<u8>), Srv { target: String, port: u16, priority: u16, weight: u16 }, @@ -183,7 +185,7 @@ impl DnsDatabase { RData::Ptr("Bike._keihin._udp.local".into()) ), DnsResource::new( - "_services._dns-sd._udp.local", + DISCOVERY_NAME, ResourceType::Ptr, RData::Ptr("_keihin._udp.local".into()) ) @@ -194,11 +196,27 @@ impl DnsDatabase { fn find<'a>(&self, name: String, ty: ResourceType) -> Vec<&DnsResource> { let results : Vec<&DnsResource> = self.records.iter().filter( |r| - ((ty == ResourceType::Wildcard) || (r.ty == ty)) && - dotted_name == r.name + ((ty == ResourceType::Wildcard) || (r.ty == ty)) && + name == r.name ).collect(); results } + + fn additional(&self, r: DnsResource) -> Vec<&DnsResource> { + match r.data { + RData::Srv { target, port:_, priority:_, weight:_ } => { + self.find(target, ResourceType::Wildcard) + }, + RData::Ptr(name) => { + if r.name.eq(DISCOVERY_NAME) { + Vec::from([]) + } else { + self.find(name, ResourceType::Wildcard) + } + }, + _ => Vec::from([]) + } + } } @@ -217,6 +235,10 @@ async fn send_response(sock: &UdpSocket<'_>, None => &mut [][..] }; + // log::info!("can send {:?} {:?}", + // r.name, r.ty); + + let mut flags = Flags::new(); flags.set_qr(MessageType::Reply);