flowparser-sflow 0.3.0

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

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Mib2TcpGroup {
    pub tcp_rto_algorithm: u32,
    pub tcp_rto_min: u32,
    pub tcp_rto_max: u32,
    pub tcp_max_conn: u32,
    pub tcp_active_opens: u32,
    pub tcp_passive_opens: u32,
    pub tcp_attempt_fails: u32,
    pub tcp_estab_resets: u32,
    pub tcp_curr_estab: u32,
    pub tcp_in_segs: u32,
    pub tcp_out_segs: u32,
    pub tcp_retrans_segs: u32,
    pub tcp_in_errs: u32,
    pub tcp_out_rsts: u32,
    pub tcp_in_csum_errs: u32,
}

pub(crate) fn parse_mib2_tcp_group(input: &[u8]) -> IResult<&[u8], Mib2TcpGroup> {
    let (input, tcp_rto_algorithm) = be_u32(input)?;
    let (input, tcp_rto_min) = be_u32(input)?;
    let (input, tcp_rto_max) = be_u32(input)?;
    let (input, tcp_max_conn) = be_u32(input)?;
    let (input, tcp_active_opens) = be_u32(input)?;
    let (input, tcp_passive_opens) = be_u32(input)?;
    let (input, tcp_attempt_fails) = be_u32(input)?;
    let (input, tcp_estab_resets) = be_u32(input)?;
    let (input, tcp_curr_estab) = be_u32(input)?;
    let (input, tcp_in_segs) = be_u32(input)?;
    let (input, tcp_out_segs) = be_u32(input)?;
    let (input, tcp_retrans_segs) = be_u32(input)?;
    let (input, tcp_in_errs) = be_u32(input)?;
    let (input, tcp_out_rsts) = be_u32(input)?;
    let (input, tcp_in_csum_errs) = be_u32(input)?;

    Ok((
        input,
        Mib2TcpGroup {
            tcp_rto_algorithm,
            tcp_rto_min,
            tcp_rto_max,
            tcp_max_conn,
            tcp_active_opens,
            tcp_passive_opens,
            tcp_attempt_fails,
            tcp_estab_resets,
            tcp_curr_estab,
            tcp_in_segs,
            tcp_out_segs,
            tcp_retrans_segs,
            tcp_in_errs,
            tcp_out_rsts,
            tcp_in_csum_errs,
        },
    ))
}