// Peg counts
// This enum must remain synchronized with Http2Module::peg_names[] in http2_tables.cc
enum PEG_COUNT { PEG_FLOW = 0, PEG_CONCURRENT_SESSIONS, PEG_MAX_CONCURRENT_SESSIONS,
- PEG_MAX_TABLE_ENTRIES, PEG_MAX_CONCURRENT_FILES, PEG_COUNT__MAX };
+ PEG_MAX_TABLE_ENTRIES, PEG_MAX_CONCURRENT_FILES, PEG_TOTAL_BYTES,
+ PEG_COUNT__MAX };
enum EventSid
{
assert(stream);
session_data->stream_in_hi = stream->get_stream_id();
+ Http2Module::increment_peg_counts(PEG_TOTAL_BYTES, (uint64_t)(FRAME_HEADER_LENGTH) +
+ session_data->frame_data_size[source_id]);
+
uint8_t* const frame_header_copy = new uint8_t[FRAME_HEADER_LENGTH];
memcpy(frame_header_copy, session_data->lead_frame_header[source_id], FRAME_HEADER_LENGTH);
stream->eval_frame(frame_header_copy, FRAME_HEADER_LENGTH,
PegCount* get_counts() const override { return peg_counts; }
static void increment_peg_counts(Http2Enums::PEG_COUNT counter)
{ peg_counts[counter]++; }
+ static void increment_peg_counts(Http2Enums::PEG_COUNT counter, uint64_t value)
+ { peg_counts[counter] += value; }
static void decrement_peg_counts(Http2Enums::PEG_COUNT counter)
{ peg_counts[counter]--; }
static PegCount get_peg_counts(Http2Enums::PEG_COUNT counter)
{ CountType::MAX, "max_table_entries", "maximum entries in an HTTP/2 dynamic table" },
{ CountType::MAX, "max_concurrent_files", "maximum concurrent file transfers per HTTP/2 "
"connection" },
+ { CountType::SUM, "total_bytes", "total HTTP/2 data bytes inspected" },
{ CountType::END, nullptr, nullptr }
};
PEG_OTHER_METHOD, PEG_REQUEST_BODY, PEG_CHUNKED, PEG_URI_NORM, PEG_URI_PATH, PEG_URI_CODING,
PEG_CONCURRENT_SESSIONS, PEG_MAX_CONCURRENT_SESSIONS, PEG_DETAINED, PEG_SCRIPT_DETECTION,
PEG_PARTIAL_INSPECT, PEG_EXCESS_PARAMS, PEG_PARAMS, PEG_CUTOVERS, PEG_SSL_SEARCH_ABND_EARLY,
- PEG_PIPELINED_FLOWS, PEG_PIPELINED_REQUESTS, PEG_COUNT_MAX };
+ PEG_PIPELINED_FLOWS, PEG_PIPELINED_REQUESTS, PEG_TOTAL_BYTES, PEG_COUNT_MAX };
// Result of scanning by splitter
enum ScanResult { SCAN_NOT_FOUND, SCAN_NOT_FOUND_ACCELERATE, SCAN_FOUND, SCAN_FOUND_PIECE,
HttpFlowData* session_data = http_get_flow_data(p->flow);
+ if (!session_data->for_http2)
+ HttpModule::increment_peg_counts(PEG_TOTAL_BYTES, p->dsize);
+
// FIXIT-E Workaround for unexpected eval() calls. Convert to asserts when possible.
if ((session_data->section_type[source_id] == SEC__NOT_COMPUTE) ||
(session_data->type_expected[source_id] == SEC_ABORT) ||
PegCount* get_counts() const override { return peg_counts; }
static void increment_peg_counts(HttpEnums::PEG_COUNT counter)
{ peg_counts[counter]++; }
+ static void increment_peg_counts(HttpEnums::PEG_COUNT counter, uint64_t value)
+ { peg_counts[counter] += value; }
static void decrement_peg_counts(HttpEnums::PEG_COUNT counter)
{ peg_counts[counter]--; }
static PegCount get_peg_counts(HttpEnums::PEG_COUNT counter)
{ CountType::SUM, "ssl_srch_abandoned_early", "total SSL search abandoned too soon" },
{ CountType::SUM, "pipelined_flows", "total HTTP connections containing pipelined requests" },
{ CountType::SUM, "pipelined_requests", "total requests placed in a pipeline" },
+ { CountType::SUM, "total_bytes", "total HTTP data bytes inspected" },
{ CountType::END, nullptr, nullptr }
};