Skip to main content

flowparser_sflow/counter_records/
ethernet_interface.rs

1use nom::IResult;
2use nom::number::complete::be_u32;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct EthernetInterface {
7    pub dot3_stats_alignment_errors: u32,
8    pub dot3_stats_fcs_errors: u32,
9    pub dot3_stats_single_collision_frames: u32,
10    pub dot3_stats_multiple_collision_frames: u32,
11    pub dot3_stats_sqe_test_errors: u32,
12    pub dot3_stats_deferred_transmissions: u32,
13    pub dot3_stats_late_collisions: u32,
14    pub dot3_stats_excessive_collisions: u32,
15    pub dot3_stats_internal_mac_transmit_errors: u32,
16    pub dot3_stats_carrier_sense_errors: u32,
17    pub dot3_stats_frame_too_longs: u32,
18    pub dot3_stats_internal_mac_receive_errors: u32,
19    pub dot3_stats_symbol_errors: u32,
20}
21
22pub(crate) fn parse_ethernet_interface(input: &[u8]) -> IResult<&[u8], EthernetInterface> {
23    let (input, dot3_stats_alignment_errors) = be_u32(input)?;
24    let (input, dot3_stats_fcs_errors) = be_u32(input)?;
25    let (input, dot3_stats_single_collision_frames) = be_u32(input)?;
26    let (input, dot3_stats_multiple_collision_frames) = be_u32(input)?;
27    let (input, dot3_stats_sqe_test_errors) = be_u32(input)?;
28    let (input, dot3_stats_deferred_transmissions) = be_u32(input)?;
29    let (input, dot3_stats_late_collisions) = be_u32(input)?;
30    let (input, dot3_stats_excessive_collisions) = be_u32(input)?;
31    let (input, dot3_stats_internal_mac_transmit_errors) = be_u32(input)?;
32    let (input, dot3_stats_carrier_sense_errors) = be_u32(input)?;
33    let (input, dot3_stats_frame_too_longs) = be_u32(input)?;
34    let (input, dot3_stats_internal_mac_receive_errors) = be_u32(input)?;
35    let (input, dot3_stats_symbol_errors) = be_u32(input)?;
36
37    Ok((
38        input,
39        EthernetInterface {
40            dot3_stats_alignment_errors,
41            dot3_stats_fcs_errors,
42            dot3_stats_single_collision_frames,
43            dot3_stats_multiple_collision_frames,
44            dot3_stats_sqe_test_errors,
45            dot3_stats_deferred_transmissions,
46            dot3_stats_late_collisions,
47            dot3_stats_excessive_collisions,
48            dot3_stats_internal_mac_transmit_errors,
49            dot3_stats_carrier_sense_errors,
50            dot3_stats_frame_too_longs,
51            dot3_stats_internal_mac_receive_errors,
52            dot3_stats_symbol_errors,
53        },
54    ))
55}