pnetlink 0.0.3

Netlink library in pure rust
extern crate pnetlink;

use std::collections::HashMap;

use pnetlink::packet::netlink::NetlinkConnection;
use pnetlink::packet::route::link::{Links, Link};
use pnetlink::packet::route::neighbour::{Neighbour, Neighbours, NeighbourState};

fn main() {
    let mut conn = NetlinkConnection::new();
    let links =
        conn.iter_links().unwrap().map(|link| (link.get_index(), link)).collect::<HashMap<_, _>>();
    let neighbours = conn.iter_neighbours(None).unwrap().collect::<Vec<_>>();
    for neighbour in neighbours {
        if neighbour.get_state() == NeighbourState::NOARP {
            continue;
        }
        let ifindex = neighbour.get_ifindex();
        let link = links.get(&ifindex).unwrap();
        println!("{:?} dev {} lladdr {:?} {:?}",
                 neighbour.get_destination().unwrap(),
                 link.get_name().unwrap(),
                 neighbour.get_ll_addr().unwrap(),
                 neighbour.get_state());
    }
}