/*
* Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License , Version 2 . 0 ( the " License " ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
#pragma once
#include <chrono>
#include <cstdint>
#include <limits>
#include <ostream>
namespace rootcanal::pcap {
using namespace std::literals;
static void WriteHeader(std::ostream& output, uint32_t linktype) {
// https://tools.ietf.org/id/draft-gharris-opsawg-pcap-00.html#name-file-header
uint32_t magic_number =
0 xa1b2c3d4;
uint16_t major_version =
2 ;
uint16_t minor_version =
4 ;
uint32_t reserved1 =
0 ;
uint32_t reserved2 =
0 ;
uint32_t snaplen = std::numeric_limits<uint32_t>::max();
output.write((
char *)&magic_number,
4 );
output.write((
char *)&major_version,
2 );
output.write((
char *)&minor_version,
2 );
output.write((
char *)&reserved1,
4 );
output.write((
char *)&reserved2,
4 );
output.write((
char *)&snaplen,
4 );
output.write((
char *)&linktype,
4 );
}
static void WriteRecordHeader(std::ostream& output, uint32_t length) {
auto time = std::chrono::system_clock::now().time_since_epoch();
// https://tools.ietf.org/id/draft-gharris-opsawg-pcap-00.html#name-packet-record
uint32_t seconds = time /
1 s;
uint32_t microseconds = (time %
1 s) /
1 ms;
uint32_t captured_packet_length = length;
uint32_t original_packet_length = length;
output.write((
char *)&seconds,
4 );
output.write((
char *)µseconds,
4 );
output.write((
char *)&captured_packet_length,
4 );
output.write((
char *)&original_packet_length,
4 );
}
}
// namespace rootcanal::pcap
Messung V0.5 in Prozent C=86 H=97 G=91
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-27)
¤
*© Formatika GbR, Deutschland