nell 0.3.0

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

#![allow(unused)]

use std::os::raw::{c_int, c_uchar, c_uint, c_ushort};

pub const IFLA_UNSPEC:             u16 = 0;
pub const IFLA_ADDRESS:            u16 = 1;
pub const IFLA_BROADCAST:          u16 = 2;
pub const IFLA_IFNAME:             u16 = 3;
pub const IFLA_MTU:                u16 = 4;
pub const IFLA_LINK:               u16 = 5;
pub const IFLA_QDISC:              u16 = 6;
pub const IFLA_STATS:              u16 = 7;
pub const IFLA_COST:               u16 = 8;
pub const IFLA_PRIORITY:           u16 = 9;
pub const IFLA_MASTER:             u16 = 10;
pub const IFLA_WIRELESS:           u16 = 11;
pub const IFLA_PROTINFO:           u16 = 12;
pub const IFLA_TXQLEN:             u16 = 13;
pub const IFLA_MAP:                u16 = 14;
pub const IFLA_WEIGHT:             u16 = 15;
pub const IFLA_OPERSTATE:          u16 = 16;
pub const IFLA_LINKMODE:           u16 = 17;
pub const IFLA_LINKINFO:           u16 = 18;
pub const IFLA_NET_NS_PID:         u16 = 19;
pub const IFLA_IFALIAS:            u16 = 20;
pub const IFLA_NUM_VF:             u16 = 21;
pub const IFLA_VFINFO_LIST:        u16 = 22;
pub const IFLA_STATS64:            u16 = 23;
pub const IFLA_VF_PORTS:           u16 = 24;
pub const IFLA_PORT_SELF:          u16 = 25;
pub const IFLA_AF_SPEC:            u16 = 26;
pub const IFLA_GROUP:              u16 = 27;
pub const IFLA_NET_NS_FD:          u16 = 28;
pub const IFLA_EXT_MASK:           u16 = 29;
pub const IFLA_PROMISCUITY:        u16 = 30;
pub const IFLA_NUM_TX_QUEUES:      u16 = 31;
pub const IFLA_NUM_RX_QUEUES:      u16 = 32;
pub const IFLA_CARRIER:            u16 = 33;
pub const IFLA_PHYS_PORT_ID:       u16 = 34;
pub const IFLA_CARRIER_CHANGES:    u16 = 35;
pub const IFLA_PHYS_SWITCH_ID:     u16 = 36;
pub const IFLA_LINK_NETNSID:       u16 = 37;
pub const IFLA_PHYS_PORT_NAME:     u16 = 38;
pub const IFLA_PROTO_DOWN:         u16 = 39;
pub const IFLA_GSO_MAX_SEGS:       u16 = 40;
pub const IFLA_GSO_MAX_SIZE:       u16 = 41;
pub const IFLA_PAD:                u16 = 42;
pub const IFLA_XDP:                u16 = 43;
pub const IFLA_EVENT:              u16 = 44;
pub const IFLA_NEW_NETNSID:        u16 = 45;
pub const IFLA_IF_NETNSID:         u16 = 46;
pub const IFLA_CARRIER_UP_COUNT:   u16 = 47;
pub const IFLA_CARRIER_DOWN_COUNT: u16 = 48;
pub const IFLA_NEW_IFINDEX:        u16 = 49;

pub const IFF_UP:                  u32 = 1 << 0;
pub const IFF_BROADCAST:           u32 = 1 << 1;
pub const IFF_DEBUG:               u32 = 1 << 2;
pub const IFF_LOOPBACK:            u32 = 1 << 3;
pub const IFF_POINTOPOINT:         u32 = 1 << 4;
pub const IFF_NOTRAILERS:          u32 = 1 << 5;
pub const IFF_RUNNING:             u32 = 1 << 6;
pub const IFF_NOARP:               u32 = 1 << 7;
pub const IFF_PROMISC:             u32 = 1 << 8;
pub const IFF_ALLMULTI:            u32 = 1 << 9;
pub const IFF_MASTER:              u32 = 1 << 10;
pub const IFF_SLAVE:               u32 = 1 << 11;
pub const IFF_MULTICAST:           u32 = 1 << 12;
pub const IFF_PORTSEL:             u32 = 1 << 13;
pub const IFF_AUTOMEDIA:           u32 = 1 << 14;
pub const IFF_DYNAMIC:             u32 = 1 << 15;
pub const IFF_LOWER_UP:            u32 = 1 << 16;
pub const IFF_DORMANT:             u32 = 1 << 17;
pub const IFF_ECHO:                u32 = 1 << 18;

#[repr(C)]
#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct ifinfomsg {
    pub ifi_family: c_uchar,
    pub __ifi_pad:  c_uchar,
    pub ifi_type:   c_ushort,
    pub ifi_index:  c_int,
    pub ifi_flags:  c_uint,
    pub ifi_change: c_uint,
}

#[repr(C)]
#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct rtnl_link_stats {
    pub rx_packets:          u32,
    pub tx_packets:          u32,
    pub rx_bytes:            u32,
    pub tx_bytes:            u32,
    pub rx_errors:           u32,
    pub tx_errors:           u32,
    pub rx_dropped:          u32,
    pub tx_dropped:          u32,
    pub multicast:           u32,
    pub collisions:          u32,
    pub rx_length_errors:    u32,
    pub rx_over_errors:      u32,
    pub rx_crc_errors:       u32,
    pub rx_frame_errors:     u32,
    pub rx_fifo_errors:      u32,
    pub rx_missed_errors:    u32,
    pub tx_aborted_errors:   u32,
    pub tx_carrier_errors:   u32,
    pub tx_fifo_errors:      u32,
    pub tx_heartbeat_errors: u32,
    pub tx_window_errors:    u32,
    pub rx_compressed:       u32,
    pub tx_compressed:       u32,
}

#[derive(Clone, Debug, Default, Eq, PartialEq)]
pub struct rtnl_link_stats64 {
    pub rx_packets:          u64,
    pub tx_packets:          u64,
    pub rx_bytes:            u64,
    pub tx_bytes:            u64,
    pub rx_errors:           u64,
    pub tx_errors:           u64,
    pub rx_dropped:          u64,
    pub tx_dropped:          u64,
    pub multicast:           u64,
    pub collisions:          u64,
    pub rx_length_errors:    u64,
    pub rx_over_errors:      u64,
    pub rx_crc_errors:       u64,
    pub rx_frame_errors:     u64,
    pub rx_fifo_errors:      u64,
    pub rx_missed_errors:    u64,
    pub tx_aborted_errors:   u64,
    pub tx_carrier_errors:   u64,
    pub tx_fifo_errors:      u64,
    pub tx_heartbeat_errors: u64,
    pub tx_window_errors:    u64,
    pub rx_compressed:       u64,
    pub tx_compressed:       u64,
    pub rx_nohandler:        u64,
}