use alloc::{vec, vec::Vec}; use crate::{ dns::{ flags::Flags, label::Label, query::{QClass, Query}, records::QType, reqres::Request, }, encoder::{DnsError, Encoder}, }; pub fn query_domain<'a, 'b>(domain: &'a str, buf: &'b mut [u8]) -> Result<&'b [u8], DnsError> { let encoder = Encoder::new(buf); let query = Query { name: Label::from(domain), qtype: QType::A, qclass: QClass::Multicast, }; let request = Request { id: 0, flags: Flags::standard_request(), queries: vec![query], }; encoder.encode(request) } pub fn query_service<'a, 'b>(service: &'a str, buf: &'b mut [u8]) -> Result<&'b [u8], DnsError> { let encoder = Encoder::new(buf); let ptr = Query { name: Label::from(service), qtype: QType::PTR, qclass: QClass::Multicast, }; let request = Request { id: 0, flags: Flags::standard_request(), queries: vec![ptr], }; encoder.encode(request) } pub fn query_custom<'a, 'b>( queries: Vec>, buf: &'b mut [u8], ) -> Result<&'b [u8], DnsError> { let encoder = Encoder::new(buf); let request = Request { id: 0, flags: Flags::standard_request(), queries, }; encoder.encode(request) }