From 8b59d76b5238d8c7d500d460a5318d4af18a3358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 3 Mar 2025 17:03:58 +0200 Subject: [PATCH] tracers: Update to pcap-file 2 Part-of: --- Cargo.lock | 150 ++++++++++++--------------- utils/tracers/Cargo.toml | 2 +- utils/tracers/src/pcap_writer/imp.rs | 43 ++++---- 3 files changed, 89 insertions(+), 106 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f77719569..13c10bc2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -133,7 +133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -175,7 +175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -197,7 +197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -214,7 +214,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -897,7 +897,7 @@ dependencies = [ "log", "prettyplease", "proc-macro2", - "quote 1.0.38", + "quote", "regex", "rustc-hash 1.1.0", "shlex", @@ -986,6 +986,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" +[[package]] +name = "byteorder_slice" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b294e30387378958e8bf8f4242131b930ea615ff81e8cac2440cea0a6013190" +dependencies = [ + "byteorder", +] + [[package]] name = "bytes" version = "1.10.0" @@ -1195,7 +1204,7 @@ checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck 0.5.0", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -1480,7 +1489,7 @@ dependencies = [ "fnv", "ident_case", "proc-macro2", - "quote 1.0.38", + "quote", "strsim", "syn 2.0.98", ] @@ -1492,7 +1501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -1600,12 +1609,13 @@ dependencies = [ [[package]] name = "derive-into-owned" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576fce04d31d592013a5887ba8d9c3830adff329e5096d7e1eb5e8e61262ca62" +checksum = "2c9d94d81e3819a7b06a8638f448bc6339371ca9b6076a99d4a43eece3c4c923" dependencies = [ - "quote 0.3.15", - "syn 0.11.11", + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -1625,7 +1635,7 @@ checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -1664,7 +1674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -1720,7 +1730,7 @@ checksum = "b066b81018300fdce40f71c4db355a102699324af96fad28f25ab1b5f87de066" dependencies = [ "ebml-iterable-specification", "proc-macro2", - "quote 1.0.38", + "quote", "syn 1.0.109", ] @@ -1799,7 +1809,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -2070,7 +2080,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -2350,7 +2360,7 @@ dependencies = [ "heck 0.5.0", "proc-macro-crate", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -3868,7 +3878,7 @@ source = "git+https://github.com/gtk-rs/gtk4-rs?branch=main#6b5b7553ba7dd9c963ad dependencies = [ "proc-macro-crate", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -4466,7 +4476,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -4565,7 +4575,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -5307,7 +5317,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -5438,7 +5448,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -5637,11 +5647,11 @@ dependencies = [ [[package]] name = "pcap-file" -version = "1.1.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ad13fed1a83120159aea81b265074f21d753d157dd16b10cc3790ecba40a341" +checksum = "1fc1f139757b058f9f37b76c48501799d12c9aa0aa4c0d4c980b062ee925d1b2" dependencies = [ - "byteorder", + "byteorder_slice", "derive-into-owned", "thiserror 1.0.69", ] @@ -5697,7 +5707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -5861,7 +5871,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", ] [[package]] @@ -5872,7 +5882,7 @@ checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ "proc-macro-error-attr2", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -5900,7 +5910,7 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30" dependencies = [ - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -5944,7 +5954,7 @@ dependencies = [ "anyhow", "itertools 0.12.1", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -6097,12 +6107,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "quote" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" - [[package]] name = "quote" version = "1.0.38" @@ -6893,7 +6897,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -6966,7 +6970,7 @@ checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -6991,7 +6995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -7098,7 +7102,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" dependencies = [ - "quote 1.0.38", + "quote", ] [[package]] @@ -7305,17 +7309,6 @@ dependencies = [ "symphonia-metadata", ] -[[package]] -name = "syn" -version = "0.11.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" -dependencies = [ - "quote 0.3.15", - "synom", - "unicode-xid", -] - [[package]] name = "syn" version = "1.0.109" @@ -7323,7 +7316,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "unicode-ident", ] @@ -7334,7 +7327,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "unicode-ident", ] @@ -7353,15 +7346,6 @@ dependencies = [ "futures-core", ] -[[package]] -name = "synom" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" -dependencies = [ - "unicode-xid", -] - [[package]] name = "synstructure" version = "0.13.1" @@ -7369,7 +7353,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -7491,7 +7475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -7503,7 +7487,7 @@ checksum = "eb39a1199760f44d7e11b6644b620d35abe7e012fa34288abae9e5aa95a243da" dependencies = [ "proc-macro-error2", "proc-macro2", - "quote 1.0.38", + "quote", "regex", "syn 2.0.98", ] @@ -7545,7 +7529,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -7556,7 +7540,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -7663,7 +7647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -7854,7 +7838,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -8021,12 +8005,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "unicode-xid" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" - [[package]] name = "untrusted" version = "0.9.0" @@ -8271,7 +8249,7 @@ dependencies = [ "bumpalo", "log", "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", "wasm-bindgen-shared", ] @@ -8295,7 +8273,7 @@ version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ - "quote 1.0.38", + "quote", "wasm-bindgen-macro-support", ] @@ -8306,7 +8284,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -8492,7 +8470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -8503,7 +8481,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -8800,7 +8778,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", "synstructure", ] @@ -8831,7 +8809,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -8842,7 +8820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76331675d372f91bf8d17e13afbd5fe639200b73d01f0fc748bb059f9cca2db7" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] @@ -8862,7 +8840,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", "synstructure", ] @@ -8891,6 +8869,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", - "quote 1.0.38", + "quote", "syn 2.0.98", ] diff --git a/utils/tracers/Cargo.toml b/utils/tracers/Cargo.toml index 0680e5bef..4e8b9f608 100644 --- a/utils/tracers/Cargo.toml +++ b/utils/tracers/Cargo.toml @@ -13,7 +13,7 @@ gst.workspace = true anyhow = "1" regex = "1" atomic_refcell = "0.1" -pcap-file = "1.1.1" +pcap-file = "2" etherparse = "0.16.0" chrono = "0.4.35" walkdir = "2" diff --git a/utils/tracers/src/pcap_writer/imp.rs b/utils/tracers/src/pcap_writer/imp.rs index f295f7dcc..d24249ea8 100644 --- a/utils/tracers/src/pcap_writer/imp.rs +++ b/utils/tracers/src/pcap_writer/imp.rs @@ -42,7 +42,7 @@ * * Since: plugins-rs-0.13.0 */ -use pcap_file::pcap; +use pcap_file::pcap::{self, RawPcapPacket}; use etherparse::PacketBuilder; use gst::glib::Properties; @@ -113,17 +113,23 @@ impl Writer { anyhow::bail!("Maximum size of packet is {MAX_PACKET_LEN}"); } + let pts = buffer.pts().unwrap_or(gst::ClockTime::from_seconds(0)); + + // Store capture time in microsecond precision because that's what wireshark uses + // by default and the precision is not signalled in the packet headers. + let ts_sec = pts.seconds() as u32; + let ts_frac = (pts.useconds() % 1_000_000) as u32; + let map = buffer.map_readable()?; if matches!(self.protocol, FakeProtocol::None) { - self.writer.write( - 0, - buffer - .pts() - .unwrap_or(gst::ClockTime::from_seconds(0)) - .nseconds() as u32, - map.as_slice(), - map.len() as u32, - )?; + let packet = RawPcapPacket { + ts_sec, + ts_frac, + incl_len: map.len() as u32, + orig_len: map.len() as u32, + data: std::borrow::Cow::Borrowed(map.as_slice()), + }; + self.writer.write_raw_packet(&packet)?; return Ok(()); } @@ -139,15 +145,14 @@ impl Writer { self.buf.clear(); builder.write(&mut self.buf, map.as_slice()).unwrap(); - self.writer.write( - 0, - buffer - .pts() - .unwrap_or(gst::ClockTime::from_seconds(0)) - .nseconds() as u32, - &self.buf, - size as u32, - )?; + let packet = RawPcapPacket { + ts_sec, + ts_frac, + incl_len: size as u32, + orig_len: size as u32, + data: std::borrow::Cow::Borrowed(&self.buf), + }; + self.writer.write_raw_packet(&packet)?; Ok(()) }