Skip to main content

forgedns_proto/
lib.rs

1/*
2 * SPDX-FileCopyrightText: 2025 Sven Shi
3 * SPDX-License-Identifier: GPL-3.0-or-later
4 */
5
6//! Owned DNS protocol model and wire-format codec.
7
8pub mod error;
9pub mod header;
10pub mod message;
11pub mod name;
12pub mod question;
13pub mod rdata;
14pub mod record;
15pub mod types;
16pub mod wire;
17
18pub(crate) use wire as codec;
19
20pub use error::{ProtoError, Result};
21pub use header::Header;
22pub use message::Message;
23pub use name::{Name, ParsedArpaName};
24pub use question::Question;
25pub use rdata::*;
26pub use record::Record;
27pub use types::{DNSClass, MessageType, Opcode, Rcode, RecordType};
28
29pub fn decode_rdata_from_wire(rr_type: RecordType, data: &[u8]) -> Result<RData> {
30    wire::decode_rdata_from_wire(rr_type, data)
31}
32
33pub mod core {
34    pub mod error {
35        pub use crate::error::{ProtoError as DnsError, Result};
36    }
37}
38
39pub mod proto {
40    pub use crate::header::Header;
41    pub use crate::message::Message;
42    pub use crate::name::{Name, ParsedArpaName};
43    pub use crate::question::Question;
44    pub use crate::rdata;
45    pub use crate::rdata::*;
46    pub use crate::record::Record;
47    pub use crate::types::{DNSClass, MessageType, Opcode, Rcode, RecordType};
48    pub use crate::wire;
49
50    pub(crate) use crate::codec;
51}