diff --git a/lib/src/pcap.rs b/lib/src/pcap.rs index f86355b..c776650 100644 --- a/lib/src/pcap.rs +++ b/lib/src/pcap.rs @@ -9,8 +9,9 @@ use chrono::prelude::*; use deku::prelude::*; use pcap_file_tokio::pcapng::blocks::enhanced_packet::EnhancedPacketBlock; use pcap_file_tokio::pcapng::blocks::interface_description::InterfaceDescriptionBlock; +use pcap_file_tokio::pcapng::blocks::section_header::{SectionHeaderBlock, SectionHeaderOption}; use pcap_file_tokio::pcapng::PcapNgWriter; -use pcap_file_tokio::PcapError; +use pcap_file_tokio::{Endianness, PcapError}; use thiserror::Error; #[derive(Error, Debug)] @@ -60,7 +61,17 @@ struct UdpHeader { impl GsmtapPcapWriter where T: AsyncWrite + Unpin + Send { pub async fn new(writer: T) -> Result { - let writer = PcapNgWriter::new(writer).await?; + let package = concat!(env!("CARGO_PKG_NAME"), " ", env!("CARGO_PKG_VERSION")); + let application = SectionHeaderOption::UserApplication(Cow::from(package)); + let section = SectionHeaderBlock { + endianness: Endianness::Big, + major_version: 1, + minor_version: 0, + section_length: -1, + options: vec![application], + }; + let writer = PcapNgWriter::with_section_header(writer, section).await?; + Ok(GsmtapPcapWriter { writer, ip_id: 0 }) }