22 lines
582 B
Rust
22 lines
582 B
Rust
use bytes::{Bytes, Buf};
|
|
use std::io::Cursor;
|
|
|
|
use ser::DnsPacketData;
|
|
use errors::*;
|
|
|
|
#[derive(Clone, Debug)]
|
|
pub struct ShortText(Bytes);
|
|
|
|
// RFC 1035 names this `<character-string>`
|
|
impl DnsPacketData for ShortText {
|
|
fn deserialize(data: &mut Cursor<Bytes>) -> Result<Self> {
|
|
check_enough_data!(data, 1, "ShortText length");
|
|
let label_len = data.get_u8() as usize;
|
|
check_enough_data!(data, label_len, "ShortText content");
|
|
let pos = data.position() as usize;
|
|
let text = data.get_ref().slice(pos, pos + label_len);
|
|
data.advance(label_len);
|
|
Ok(ShortText(text))
|
|
}
|
|
}
|