dns_parser_revived/rdata/
a.rs1use std::net::Ipv4Addr;
2
3use crate::Error;
4use byteorder::{BigEndian, ByteOrder};
5
6#[derive(Debug, PartialEq, Eq, Clone, Copy)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize))]
8pub struct Record(pub Ipv4Addr);
9
10impl<'a> super::Record<'a> for Record {
11 const TYPE: isize = 1;
12
13 fn parse(rdata: &'a [u8], _original: &'a [u8]) -> super::RDataResult<'a> {
14 if rdata.len() != 4 {
15 return Err(Error::WrongRdataLength);
16 }
17 let address = Ipv4Addr::from(BigEndian::read_u32(rdata));
18 let record = Record(address);
19 Ok(super::RData::A(record))
20 }
21}