flowparser-sflow 0.3.0

Parser for sFlow v5 datagrams
Documentation
use nom::IResult;
use nom::number::complete::{be_u32, be_u64};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct HostNetIo {
    pub bytes_in: u64,
    pub packets_in: u32,
    pub errs_in: u32,
    pub drops_in: u32,
    pub bytes_out: u64,
    pub packets_out: u32,
    pub errs_out: u32,
    pub drops_out: u32,
}

pub(crate) fn parse_host_net_io(input: &[u8]) -> IResult<&[u8], HostNetIo> {
    let (input, bytes_in) = be_u64(input)?;
    let (input, packets_in) = be_u32(input)?;
    let (input, errs_in) = be_u32(input)?;
    let (input, drops_in) = be_u32(input)?;
    let (input, bytes_out) = be_u64(input)?;
    let (input, packets_out) = be_u32(input)?;
    let (input, errs_out) = be_u32(input)?;
    let (input, drops_out) = be_u32(input)?;

    Ok((
        input,
        HostNetIo {
            bytes_in,
            packets_in,
            errs_in,
            drops_in,
            bytes_out,
            packets_out,
            errs_out,
            drops_out,
        },
    ))
}