Struct dns_parser::Builder
source · pub struct Builder { /* private fields */ }
Expand description
Allows to build a DNS packet
Both query and answer packets may be built with this interface, although, much of functionality is not implemented yet.
Implementations§
source§impl Builder
impl Builder
sourcepub fn new_query(id: u16, recursion: bool) -> Builder
pub fn new_query(id: u16, recursion: bool) -> Builder
Creates a new query
Initially all sections are empty. You’re expected to fill
the questions section with add_question
sourcepub fn add_question(
&mut self,
qname: &str,
prefer_unicast: bool,
qtype: QueryType,
qclass: QueryClass
) -> &mut Builder
pub fn add_question(
&mut self,
qname: &str,
prefer_unicast: bool,
qtype: QueryType,
qclass: QueryClass
) -> &mut Builder
Adds a question to the packet
Panics
- Answers, nameservers or additional section has already been written
- There are already 65535 questions in the buffer.
- When name is invalid
sourcepub fn build(self) -> Result<Vec<u8>, Vec<u8>>
pub fn build(self) -> Result<Vec<u8>, Vec<u8>>
Returns the final packet
When packet is not truncated method returns Ok(packet)
. If
packet is truncated the method returns Err(packet)
. In both
cases the packet is fully valid.
In the server implementation you may use
x.build().unwrap_or_else(|x| x)
.
In the client implementation it’s probably unwise to send truncated packet, as it doesn’t make sense. Even panicking may be more appropriate.