Skip to main content

flowparser_sflow/counter_records/
token_ring.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 TokenRing {
7    pub dot5_stats_line_errors: u32,
8    pub dot5_stats_burst_errors: u32,
9    pub dot5_stats_ac_errors: u32,
10    pub dot5_stats_abort_trans_errors: u32,
11    pub dot5_stats_internal_errors: u32,
12    pub dot5_stats_lost_frame_errors: u32,
13    pub dot5_stats_receive_congestions: u32,
14    pub dot5_stats_frame_copied_errors: u32,
15    pub dot5_stats_token_errors: u32,
16    pub dot5_stats_soft_errors: u32,
17    pub dot5_stats_hard_errors: u32,
18    pub dot5_stats_signal_loss: u32,
19    pub dot5_stats_transmit_beacons: u32,
20    pub dot5_stats_recoverys: u32,
21    pub dot5_stats_lobe_wires: u32,
22    pub dot5_stats_removes: u32,
23    pub dot5_stats_singles: u32,
24    pub dot5_stats_freq_errors: u32,
25}
26
27pub(crate) fn parse_token_ring(input: &[u8]) -> IResult<&[u8], TokenRing> {
28    let (input, dot5_stats_line_errors) = be_u32(input)?;
29    let (input, dot5_stats_burst_errors) = be_u32(input)?;
30    let (input, dot5_stats_ac_errors) = be_u32(input)?;
31    let (input, dot5_stats_abort_trans_errors) = be_u32(input)?;
32    let (input, dot5_stats_internal_errors) = be_u32(input)?;
33    let (input, dot5_stats_lost_frame_errors) = be_u32(input)?;
34    let (input, dot5_stats_receive_congestions) = be_u32(input)?;
35    let (input, dot5_stats_frame_copied_errors) = be_u32(input)?;
36    let (input, dot5_stats_token_errors) = be_u32(input)?;
37    let (input, dot5_stats_soft_errors) = be_u32(input)?;
38    let (input, dot5_stats_hard_errors) = be_u32(input)?;
39    let (input, dot5_stats_signal_loss) = be_u32(input)?;
40    let (input, dot5_stats_transmit_beacons) = be_u32(input)?;
41    let (input, dot5_stats_recoverys) = be_u32(input)?;
42    let (input, dot5_stats_lobe_wires) = be_u32(input)?;
43    let (input, dot5_stats_removes) = be_u32(input)?;
44    let (input, dot5_stats_singles) = be_u32(input)?;
45    let (input, dot5_stats_freq_errors) = be_u32(input)?;
46
47    Ok((
48        input,
49        TokenRing {
50            dot5_stats_line_errors,
51            dot5_stats_burst_errors,
52            dot5_stats_ac_errors,
53            dot5_stats_abort_trans_errors,
54            dot5_stats_internal_errors,
55            dot5_stats_lost_frame_errors,
56            dot5_stats_receive_congestions,
57            dot5_stats_frame_copied_errors,
58            dot5_stats_token_errors,
59            dot5_stats_soft_errors,
60            dot5_stats_hard_errors,
61            dot5_stats_signal_loss,
62            dot5_stats_transmit_beacons,
63            dot5_stats_recoverys,
64            dot5_stats_lobe_wires,
65            dot5_stats_removes,
66            dot5_stats_singles,
67            dot5_stats_freq_errors,
68        },
69    ))
70}