nell 0.3.0

Linux netlink interface
Documentation
// Copyright (C) 2018 - Will Glozer. All rights reserved.

pub const SOCK_DIAG_BY_FAMILY:     u16 = 20;

pub const INET_DIAG_NONE:          u16 = 0;
pub const INET_DIAG_MEMINFO:       u16 = 1;
pub const INET_DIAG_INFO:          u16 = 2;
pub const INET_DIAG_VEGASINFO:     u16 = 3;
pub const INET_DIAG_CONG:          u16 = 4;
pub const INET_DIAG_TOS:           u16 = 5;
pub const INET_DIAG_TCLASS:        u16 = 6;
pub const INET_DIAG_SKMEMINFO:     u16 = 7;
pub const INET_DIAG_SHUTDOWN:      u16 = 8;
pub const INET_DIAG_DCTCPINFO:     u16 = 9;
pub const INET_DIAG_PROTOCOL:      u16 = 10;
pub const INET_DIAG_SKV6ONLY:      u16 = 11;
pub const INET_DIAG_LOCALS:        u16 = 12;
pub const INET_DIAG_PEERS:         u16 = 13;
pub const INET_DIAG_PAD:           u16 = 14;
pub const INET_DIAG_MARK:          u16 = 15;
pub const INET_DIAG_BBRINFO:       u16 = 16;

#[repr(C)]
#[derive(Clone, Debug, Default)]
pub struct inet_diag_sockid {
    pub idiag_sport:  u16,
    pub idiag_dport:  u16,
    pub idiag_src:    [u32; 4],
    pub idiag_dst:    [u32; 4],
    pub idiag_if:     u32,
    pub idiag_cookie: [u32; 2],
}

#[repr(C)]
#[derive(Clone, Debug, Default)]
pub struct inet_diag_req_v2 {
    pub sdiag_family:   u8,
    pub sdiag_protocol: u8,
    pub idiag_ext:      u8,
    pub _pad:           u8,
    pub idiag_states:   u32,
    pub id:             inet_diag_sockid,
}

#[repr(C)]
#[derive(Clone, Debug, Default)]
pub struct inet_diag_msg {
    pub idiag_family:  u8,
    pub idiag_state:   u8,
    pub idiag_timer:   u8,
    pub idiag_retrans: u8,
    pub id:            inet_diag_sockid,
    pub idiag_expires: u32,
    pub idiag_rqueue:  u32,
    pub idiag_wqueue:  u32,
    pub idiag_uid:     u32,
    pub idiag_inode:   u32,
}

#[repr(C)]
#[derive(Clone, Debug, Default)]
pub struct tcp_info {
    pub tcpi_state:           u8,
    pub tcpi_ca_state:        u8,
    pub tcpi_retransmits:     u8,
    pub tcpi_probes:          u8,
    pub tcpi_backoff:         u8,
    pub tcpi_options:         u8,
    pub _bitfield_1:          [u8; 2usize],
    pub tcpi_rto:             u32,
    pub tcpi_ato:             u32,
    pub tcpi_snd_mss:         u32,
    pub tcpi_rcv_mss:         u32,
    pub tcpi_unacked:         u32,
    pub tcpi_sacked:          u32,
    pub tcpi_lost:            u32,
    pub tcpi_retrans:         u32,
    pub tcpi_fackets:         u32,
    pub tcpi_last_data_sent:  u32,
    pub tcpi_last_ack_sent:   u32,
    pub tcpi_last_data_recv:  u32,
    pub tcpi_last_ack_recv:   u32,
    pub tcpi_pmtu:            u32,
    pub tcpi_rcv_ssthresh:    u32,
    pub tcpi_rtt:             u32,
    pub tcpi_rttvar:          u32,
    pub tcpi_snd_ssthresh:    u32,
    pub tcpi_snd_cwnd:        u32,
    pub tcpi_advmss:          u32,
    pub tcpi_reordering:      u32,
    pub tcpi_rcv_rtt:         u32,
    pub tcpi_rcv_space:       u32,
    pub tcpi_total_retrans:   u32,
    pub tcpi_pacing_rate:     u64,
    pub tcpi_max_pacing_rate: u64,
    pub tcpi_bytes_acked:     u64,
    pub tcpi_bytes_received:  u64,
    pub tcpi_segs_out:        u32,
    pub tcpi_segs_in:         u32,
    pub tcpi_notsent_bytes:   u32,
    pub tcpi_min_rtt:         u32,
    pub tcpi_data_segs_in:    u32,
    pub tcpi_data_segs_out:   u32,
    pub tcpi_delivery_rate:   u64,
    pub tcpi_busy_time:       u64,
    pub tcpi_rwnd_limited:    u64,
}