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.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Builder
impl RefUnwindSafe for Builder
impl Send for Builder
impl Sync for Builder
impl Unpin for Builder
impl UnwindSafe for Builder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more