dnstap 0.1.6

An implementation of the dnstap protocol
extern crate framestream;
extern crate mio;
extern crate protobuf;

mod context;
mod dns_message;
mod dnstap_builder;
mod dnstap_pb;
mod dnstap_writer;

pub use dnstap_pb::Message_Type as MessageType;
pub use dnstap_pb::SocketFamily;
pub use dnstap_pb::SocketProtocol;

pub use dns_message::*;
pub use dnstap_builder::*;
pub use dnstap_writer::*;

fn main() {
    use std::net::IpAddr;
    use std::str::FromStr;
    use std::thread;
    use std::time;

    let dnstap_pending_writer = DNSTapBuilder::default()
        .backlog(1024)
        .unix_socket_path("/tmp/dnstap.sock")
        .listen()
        .unwrap();
    let dnstap_writer = dnstap_pending_writer.start();
    loop {
        let dns_message = AuthQuery {
            identity: Some("id".as_bytes().to_vec()),
            version: Some("version".as_bytes().to_vec()),
            socket_protocol: SocketProtocol::UDP,
            query_address: IpAddr::from_str("8.8.8.8").unwrap(),
            query_port: 42,
            query_time: time::Duration::new(1, 2),
            query_packet: vec![1, 2, 3, 4],
        };
        dnstap_writer.sender().send(dns_message.into()).ok().unwrap();
        thread::sleep(time::Duration::from_secs(1));
        println!("Bim");
    }
    dnstap_writer.join().unwrap();
}