flowparser_sflow/flow_records/
extended_socket_ipv4.rs1use nom::IResult;
2use nom::number::complete::be_u32;
3use serde::{Deserialize, Serialize};
4use std::net::Ipv4Addr;
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub struct ExtendedSocketIpv4 {
8 pub protocol: u32,
9 pub local_ip: Ipv4Addr,
10 pub remote_ip: Ipv4Addr,
11 pub local_port: u32,
12 pub remote_port: u32,
13}
14
15pub(crate) fn parse_extended_socket_ipv4(input: &[u8]) -> IResult<&[u8], ExtendedSocketIpv4> {
16 let (input, protocol) = be_u32(input)?;
17 let (input, local_ip_raw) = be_u32(input)?;
18 let (input, remote_ip_raw) = be_u32(input)?;
19 let (input, local_port) = be_u32(input)?;
20 let (input, remote_port) = be_u32(input)?;
21
22 Ok((
23 input,
24 ExtendedSocketIpv4 {
25 protocol,
26 local_ip: Ipv4Addr::from(local_ip_raw),
27 remote_ip: Ipv4Addr::from(remote_ip_raw),
28 local_port,
29 remote_port,
30 },
31 ))
32}