flowparser_sflow/counter_records/
generic_interface.rs1use nom::IResult;
2use nom::number::complete::{be_u32, be_u64};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct GenericInterface {
7 pub if_index: u32,
8 pub if_type: u32,
9 pub if_speed: u64,
10 pub if_direction: u32,
11 pub if_status: u32,
12 pub if_in_octets: u64,
13 pub if_in_ucast_pkts: u32,
14 pub if_in_multicast_pkts: u32,
15 pub if_in_broadcast_pkts: u32,
16 pub if_in_discards: u32,
17 pub if_in_errors: u32,
18 pub if_in_unknown_protos: u32,
19 pub if_out_octets: u64,
20 pub if_out_ucast_pkts: u32,
21 pub if_out_multicast_pkts: u32,
22 pub if_out_broadcast_pkts: u32,
23 pub if_out_discards: u32,
24 pub if_out_errors: u32,
25 pub if_promiscuous_mode: u32,
26}
27
28pub(crate) fn parse_generic_interface(input: &[u8]) -> IResult<&[u8], GenericInterface> {
29 let (input, if_index) = be_u32(input)?;
30 let (input, if_type) = be_u32(input)?;
31 let (input, if_speed) = be_u64(input)?;
32 let (input, if_direction) = be_u32(input)?;
33 let (input, if_status) = be_u32(input)?;
34 let (input, if_in_octets) = be_u64(input)?;
35 let (input, if_in_ucast_pkts) = be_u32(input)?;
36 let (input, if_in_multicast_pkts) = be_u32(input)?;
37 let (input, if_in_broadcast_pkts) = be_u32(input)?;
38 let (input, if_in_discards) = be_u32(input)?;
39 let (input, if_in_errors) = be_u32(input)?;
40 let (input, if_in_unknown_protos) = be_u32(input)?;
41 let (input, if_out_octets) = be_u64(input)?;
42 let (input, if_out_ucast_pkts) = be_u32(input)?;
43 let (input, if_out_multicast_pkts) = be_u32(input)?;
44 let (input, if_out_broadcast_pkts) = be_u32(input)?;
45 let (input, if_out_discards) = be_u32(input)?;
46 let (input, if_out_errors) = be_u32(input)?;
47 let (input, if_promiscuous_mode) = be_u32(input)?;
48
49 Ok((
50 input,
51 GenericInterface {
52 if_index,
53 if_type,
54 if_speed,
55 if_direction,
56 if_status,
57 if_in_octets,
58 if_in_ucast_pkts,
59 if_in_multicast_pkts,
60 if_in_broadcast_pkts,
61 if_in_discards,
62 if_in_errors,
63 if_in_unknown_protos,
64 if_out_octets,
65 if_out_ucast_pkts,
66 if_out_multicast_pkts,
67 if_out_broadcast_pkts,
68 if_out_discards,
69 if_out_errors,
70 if_promiscuous_mode,
71 },
72 ))
73}