Crate irrc

source ·
Expand description

This crate provides a client implementation of the IRRd query protocol.

The implementation provides pipelined query execution for maximal performance over a single TCP connection.

§Quickstart

use irrc::{IrrClient, Query, Error};
use rpsl::names::AutNum;

fn main() -> Result<(), Error> {

    let mut irr = IrrClient::new("whois.radb.net:43")
        .connect()?;

    println!("connected to {}", irr.version()?);

    let as_set = "AS-FOO".parse().unwrap();
    println!("getting members of {}", as_set);
    irr.pipeline()
        .push(Query::AsSetMembersRecursive(as_set))?
        .responses::<AutNum>()
        .filter_map(|result| {
            result.map_err(|err| {
                println!("error parsing member: {}", err);
                err
            })
            .ok()
        })
        .for_each(|autnum| println!("{}", autnum.content()));

    Ok(())
}

Re-exports§

  • pub use self::error::Error;

Modules§

  • Error types returned during query execution

Structs§

Enums§