main 0a078f520732 cached
972 files
4.4 MB
1.2M tokens
4233 symbols
1 requests
Download .txt
Showing preview only (4,776K chars total). Download the full file or copy to clipboard to get everything.
Repository: open-telemetry/opentelemetry-network
Branch: main
Commit: 0a078f520732
Files: 972
Total size: 4.4 MB

Directory structure:
gitextract_vvvufxro/

├── .clang-format
├── .devcontainer/
│   └── devcontainer.json
├── .git/
│   ├── HEAD
│   ├── config
│   ├── description
│   ├── hooks/
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── fsmonitor-watchman.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit.sample
│   │   ├── pre-merge-commit.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   ├── prepare-commit-msg.sample
│   │   ├── push-to-checkout.sample
│   │   ├── sendemail-validate.sample
│   │   └── update.sample
│   ├── index
│   ├── info/
│   │   └── exclude
│   ├── logs/
│   │   ├── HEAD
│   │   └── refs/
│   │       ├── heads/
│   │       │   └── main
│   │       └── remotes/
│   │           └── origin/
│   │               └── HEAD
│   ├── objects/
│   │   └── pack/
│   │       ├── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.idx
│   │       ├── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.pack
│   │       ├── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.promisor
│   │       └── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.rev
│   ├── packed-refs
│   ├── refs/
│   │   ├── heads/
│   │   │   └── main
│   │   └── remotes/
│   │       └── origin/
│   │           └── HEAD
│   └── shallow
├── .git-blame-ignore-revs
├── .github/
│   ├── .actionlint.yaml
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yaml
│   │   ├── config.yml
│   │   ├── feature_request.yaml
│   │   └── other.yaml
│   ├── actions/
│   │   └── build-tools-single-stage/
│   │       └── action.yml
│   ├── pull_request_template.md
│   ├── renovate.json5
│   └── workflows/
│       ├── build-and-release.yaml
│       ├── build-and-test.yaml
│       ├── build-benv-multiarch.yaml
│       ├── build-benv-single-arch.yaml
│       ├── fossa.yml
│       ├── k8s-collector-integration.yaml
│       ├── ossf-scorecard.yml
│       ├── release-please.yml
│       ├── scripts/
│       │   └── check-clang-format.sh
│       └── trivy-scans.yml
├── .gitignore
├── .gitmodules
├── .release-please-manifest.json
├── CHANGELOG.md
├── CMakeLists.txt
├── Cargo.toml
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── RELEASING.md
├── VERSION
├── build-tools/
│   ├── .gitignore
│   ├── .templates/
│   │   └── dependency/
│   │       └── Dockerfile
│   ├── CMakeLists.txt
│   ├── add_dependency.sh
│   ├── aws_sdk/
│   │   └── Dockerfile
│   ├── base/
│   │   └── Dockerfile
│   ├── benv/
│   │   └── docker.d/
│   │       ├── cgroups
│   │       ├── gdb
│   │       ├── kernel-headers
│   │       ├── pid-host
│   │       ├── privileged
│   │       └── vimrc
│   ├── build.sh
│   ├── build_directory.sh
│   ├── check_missing.sh
│   ├── cpp_misc/
│   │   ├── Dockerfile
│   │   └── ccan/
│   │       ├── build_assert/
│   │       │   ├── _info
│   │       │   ├── build_assert.h
│   │       │   └── test/
│   │       │       ├── compile_fail-expr.c
│   │       │       ├── compile_fail.c
│   │       │       ├── compile_ok.c
│   │       │       └── run-BUILD_ASSERT_OR_ZERO.c
│   │       ├── check_type/
│   │       │   ├── _info
│   │       │   ├── check_type.h
│   │       │   └── test/
│   │       │       ├── compile_fail-check_type.c
│   │       │       ├── compile_fail-check_type_unsigned.c
│   │       │       ├── compile_fail-check_types_match.c
│   │       │       └── run.c
│   │       ├── compiler/
│   │       │   ├── _info
│   │       │   ├── compiler.h
│   │       │   └── test/
│   │       │       ├── compile_fail-printf.c
│   │       │       └── run-is_compile_constant.c
│   │       ├── container_of/
│   │       │   ├── _info
│   │       │   ├── container_of.h
│   │       │   └── test/
│   │       │       ├── compile_fail-bad-type.c
│   │       │       ├── compile_fail-types.c
│   │       │       ├── compile_fail-var-types.c
│   │       │       └── run.c
│   │       ├── hash/
│   │       │   ├── _info
│   │       │   ├── hash.c
│   │       │   ├── hash.h
│   │       │   └── test/
│   │       │       ├── api-hash_stable.c
│   │       │       └── run.c
│   │       ├── licenses/
│   │       │   ├── BSD-MIT
│   │       │   └── CC0
│   │       └── list/
│   │           ├── _info
│   │           ├── list.c
│   │           ├── list.h
│   │           └── test/
│   │               ├── compile_ok-constant.c
│   │               ├── helper.c
│   │               ├── helper.h
│   │               ├── run-check-corrupt.c
│   │               ├── run-list_del_from-assert.c
│   │               ├── run-list_prev-list_next.c
│   │               ├── run-prepend_list.c
│   │               ├── run-single-eval.c
│   │               ├── run-with-debug.c
│   │               └── run.c
│   ├── final/
│   │   ├── Dockerfile
│   │   ├── LICENSE.txt
│   │   └── NOTICE.txt
│   ├── get_tag.sh
│   ├── libbpf/
│   │   └── Dockerfile
│   ├── libmaxminddb/
│   │   └── Dockerfile
│   ├── libuv/
│   │   └── Dockerfile
│   └── nproc.sh
├── channel/
│   ├── CMakeLists.txt
│   ├── buffered_writer.cc
│   ├── buffered_writer.h
│   ├── buffered_writer_test.cc
│   ├── callbacks.h
│   ├── channel.h
│   ├── component.h
│   ├── connection_caretaker.cc
│   ├── connection_caretaker.h
│   ├── double_write_channel.cc
│   ├── double_write_channel.h
│   ├── file_channel.cc
│   ├── file_channel.h
│   ├── ibuffered_writer.h
│   ├── lz4_channel.cc
│   ├── lz4_channel.h
│   ├── mock_channel.h
│   ├── network_channel.h
│   ├── reconnecting_channel.cc
│   ├── reconnecting_channel.h
│   ├── tcp_channel.cc
│   ├── tcp_channel.h
│   ├── test_channel.cc
│   ├── test_channel.h
│   ├── tls_handler.cc
│   ├── tls_handler.h
│   ├── upstream_connection.cc
│   └── upstream_connection.h
├── clang-format.sh
├── cmake/
│   ├── abseil.cmake
│   ├── aws-sdk.cmake
│   ├── cargo-test.cmake
│   ├── cargo_build_rust.cmake
│   ├── ccache.cmake
│   ├── civetweb.cmake
│   ├── clang.cmake
│   ├── cpp-compiler.cmake
│   ├── curl.cmake
│   ├── curlpp.cmake
│   ├── debug.cmake
│   ├── defaults.cmake
│   ├── docker-utils.cmake
│   ├── executable.cmake
│   ├── geoip.cmake
│   ├── libbpf.cmake
│   ├── libelf.cmake
│   ├── llvm.cmake
│   ├── lz4.cmake
│   ├── openssl.cmake
│   ├── protobuf.cmake
│   ├── render.cmake
│   ├── rust_cxxbridge.cmake
│   ├── rust_main.cmake
│   ├── sanitizer.cmake
│   ├── shell.cmake
│   ├── spdlog.cmake
│   ├── test.cmake
│   ├── tool.cmake
│   ├── uv.cmake
│   ├── xxd.cmake
│   └── yamlcpp.cmake
├── collector/
│   ├── CMakeLists.txt
│   ├── Dockerfile.k8s-collector
│   ├── agent_log.h
│   ├── cloud/
│   │   ├── CMakeLists.txt
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── collector.cc
│   │   ├── collector.h
│   │   ├── entrypoint.cc
│   │   ├── entrypoint.sh
│   │   ├── enumerator.cc
│   │   ├── enumerator.h
│   │   ├── ingest_connection.cc
│   │   └── ingest_connection.h
│   ├── constants.h
│   ├── kernel/
│   │   ├── CMakeLists.txt
│   │   ├── Dockerfile
│   │   ├── bpf_handler.cc
│   │   ├── bpf_handler.h
│   │   ├── bpf_src/
│   │   │   ├── render_bpf.c
│   │   │   ├── render_bpf.h
│   │   │   ├── tcp-processor/
│   │   │   │   ├── bpf_data_channel.h
│   │   │   │   ├── bpf_debug.h
│   │   │   │   ├── bpf_http_protocol.h
│   │   │   │   ├── bpf_inet_csk_accept.h
│   │   │   │   ├── bpf_memory.h
│   │   │   │   ├── bpf_tcp_events.h
│   │   │   │   ├── bpf_tcp_processor.c
│   │   │   │   ├── bpf_tcp_send_recv.h
│   │   │   │   ├── bpf_tcp_socket.h
│   │   │   │   ├── bpf_types.h
│   │   │   │   ├── tcp-processor.py
│   │   │   │   └── tcp_processor.h
│   │   │   ├── vmlinux_compat.h
│   │   │   └── vmlinux_extensions.h
│   │   ├── buffered_poller.cc
│   │   ├── buffered_poller.h
│   │   ├── cgroup_handler.cc
│   │   ├── cgroup_handler.h
│   │   ├── cgroup_handler_test.cc
│   │   ├── cgroup_prober.cc
│   │   ├── cgroup_prober.h
│   │   ├── dns/
│   │   │   ├── ares.h
│   │   │   ├── ares_expand_name.c
│   │   │   ├── ares_parse_a_aaaa_reply.c
│   │   │   ├── ares_parse_query.c
│   │   │   ├── c_ares_nameser.h
│   │   │   └── dns.h
│   │   ├── dns_requests.cc
│   │   ├── dns_requests.h
│   │   ├── entrypoint-kct.sh
│   │   ├── entrypoint.cc
│   │   ├── entrypoint.sh
│   │   ├── fd_reader.cc
│   │   ├── fd_reader.h
│   │   ├── hostport_tuple.h
│   │   ├── kernel_blacklist.h
│   │   ├── kernel_collector.cc
│   │   ├── kernel_collector.h
│   │   ├── kernel_collector_restarter.cc
│   │   ├── kernel_collector_restarter.h
│   │   ├── kernel_collector_test.cc
│   │   ├── kernel_collector_test_docker/
│   │   │   └── Dockerfile
│   │   ├── kernel_symbols.cc
│   │   ├── kernel_symbols.h
│   │   ├── kernel_symbols_test.cc
│   │   ├── main.cc
│   │   ├── nat_handler.cc
│   │   ├── nat_handler.h
│   │   ├── nat_prober.cc
│   │   ├── nat_prober.h
│   │   ├── perf_poller.cc
│   │   ├── perf_poller.h
│   │   ├── perf_reader.cc
│   │   ├── perf_reader.h
│   │   ├── probe_handler.cc
│   │   ├── probe_handler.h
│   │   ├── proc_cmdline.cc
│   │   ├── proc_cmdline.h
│   │   ├── proc_net_reader.cc
│   │   ├── proc_net_reader.h
│   │   ├── proc_reader.cc
│   │   ├── proc_reader.h
│   │   ├── process_handler.cc
│   │   ├── process_handler.h
│   │   ├── process_prober.cc
│   │   ├── process_prober.h
│   │   ├── protocols/
│   │   │   ├── protocol_handler_base.cc
│   │   │   ├── protocol_handler_base.h
│   │   │   ├── protocol_handler_http.cc
│   │   │   ├── protocol_handler_http.h
│   │   │   ├── protocol_handler_unknown.cc
│   │   │   ├── protocol_handler_unknown.h
│   │   │   └── protocol_tools.h
│   │   ├── socket_prober.cc
│   │   ├── socket_prober.h
│   │   ├── socket_table.h
│   │   ├── tcp_data_handler.cc
│   │   ├── tcp_data_handler.h
│   │   ├── troubleshoot_item.h
│   │   ├── troubleshooting.cc
│   │   └── troubleshooting.h
│   └── server_command.h
├── common/
│   ├── client_server_type.h
│   ├── client_type.h
│   ├── cloud_platform.h
│   ├── collected_blob_type.h
│   ├── collector_status.h
│   ├── component.h
│   ├── constants.h
│   ├── host_info.h
│   ├── http_status_code.h
│   ├── intake_encoder.h
│   ├── kernel_headers_source.h
│   ├── linux_distro.h
│   ├── operating_system.h
│   └── port_protocol.h
├── config/
│   ├── CMakeLists.txt
│   ├── config_file.cc
│   ├── config_file.h
│   ├── intake_config.cc
│   └── intake_config.h
├── config.h.cmake_in
├── crates/
│   ├── build/
│   │   └── otn_link_build.rs
│   ├── cloud-collector-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── cloud-collector-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── element-queue/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── layout.rs
│   │       ├── lib.rs
│   │       └── raw.rs
│   ├── k8s-collector/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── collector.rs
│   │   │   ├── config.rs
│   │   │   ├── convert_to_meta.rs
│   │   │   ├── encode.rs
│   │   │   ├── lib.rs
│   │   │   ├── matcher.rs
│   │   │   ├── output.rs
│   │   │   ├── tombstone_adapter.rs
│   │   │   ├── types.rs
│   │   │   └── writer.rs
│   │   └── tests/
│   │       ├── collector_prop.rs
│   │       └── integration_test.rs
│   ├── k8s-collector-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── k8s-relay-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── k8s-relay-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── kernel-collector-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── kernel-collector-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── otlp_export/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── perfect_hash_map/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── lib.rs
│   │   └── tests/
│   │       ├── basic.rs
│   │       ├── drops.rs
│   │       └── prop.rs
│   ├── reducer/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── aggregation_core.rs
│   │       ├── aggregation_framework.rs
│   │       ├── aggregation_message_handler.rs
│   │       ├── aggregator.rs
│   │       ├── ffi.rs
│   │       ├── internal_events.rs
│   │       ├── lib.rs
│   │       ├── metrics.rs
│   │       ├── otlp_encoding.rs
│   │       └── queue_handler.rs
│   ├── reducer-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── reducer-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── render/
│   │   ├── ebpf_net/
│   │   │   ├── Cargo.toml
│   │   │   ├── agent_internal/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── aggregation/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── cloud_collector/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── ingest/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── kernel_collector/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── logging/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── matching/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   └── test/
│   │       ├── Cargo.toml
│   │       ├── app1/
│   │       │   ├── Cargo.toml
│   │       │   └── src/
│   │       │       ├── encoder.rs
│   │       │       ├── hash.rs
│   │       │       ├── lib.rs
│   │       │       ├── parsed_message.rs
│   │       │       └── wire_messages.rs
│   │       └── src/
│   │           └── lib.rs
│   ├── render_parser/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       └── message.rs
│   └── timeslot/
│       ├── Cargo.toml
│       └── src/
│           ├── fast_div.rs
│           ├── lib.rs
│           └── virtual_clock.rs
├── dev/
│   ├── CMakeLists.txt
│   ├── benv-build.sh
│   ├── benv-list.sh
│   ├── benv-run.sh
│   ├── commits_to_prs.sh
│   ├── commits_to_stacked_prs.sh
│   ├── devbox/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── boxes/
│   │   │   ├── .gitignore
│   │   │   ├── centos-7/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── debian-bullseye/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── ubuntu-focal/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── ubuntu-jammy/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── ubuntu-lunar/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   └── vagrant-base-boxes/
│   │   │       ├── base-bento-amazonlinux-2/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-centos-7/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-debian-bullseye/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-ubuntu-focal/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-ubuntu-jammy/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       └── base-ubuntu-lunar/
│   │   │           ├── .gitignore
│   │   │           └── run.sh
│   │   ├── build.sh
│   │   ├── run.sh
│   │   └── source/
│   │       ├── .rgrc
│   │       ├── Vagrantfile.packer.box.rb
│   │       ├── cloud-collector.sh
│   │       ├── collector-entrypoint.sh
│   │       ├── devbox.packer.json
│   │       ├── k8s/
│   │       │   ├── deploy.sh
│   │       │   ├── ebpf-net-local-registry.yaml
│   │       │   ├── ebpf-net-logging-exporter.yaml
│   │       │   ├── ebpf-net-modify-otelcol-metricstransform-processor.yaml
│   │       │   ├── ebpf-net-modify-otelcol-splunk-hec-exporter.yaml
│   │       │   ├── ebpf-net-modify-reducer-enable-flow-logs.yaml
│   │       │   ├── ebpf-net-modify-reducer.yaml
│   │       │   ├── ebpf-net-use-otel-demo-otelcol.yaml
│   │       │   ├── ebpf-net.yaml
│   │       │   ├── init.sh
│   │       │   ├── modify.sh
│   │       │   └── otel-demo.yaml
│   │       ├── k8s-collector.sh
│   │       ├── kernel-collector.sh
│   │       ├── otelcol-config.yaml
│   │       ├── otelcol-gateway.sh
│   │       ├── prometheus.yml
│   │       ├── provision/
│   │       │   ├── core.sh
│   │       │   ├── docker.sh
│   │       │   ├── k8s.sh
│   │       │   ├── kernel.sh
│   │       │   ├── packages.sh
│   │       │   ├── prometheus.sh
│   │       │   ├── repo.sh
│   │       │   ├── symlinks.sh
│   │       │   └── upgrade.sh
│   │       ├── reducer.sh
│   │       └── test-kernel-collector.sh
│   ├── docker-registry-login.sh
│   ├── docker-registry-push.sh
│   ├── docker-registry.sh
│   ├── git-pull-request.sh
│   ├── git-upstream-branch.sh
│   ├── otel/
│   │   ├── otel-config.yaml
│   │   ├── run-ncat.sh
│   │   └── run-otel.sh
│   ├── script/
│   │   ├── CMakeLists.txt
│   │   ├── bash-error-lib.sh
│   │   ├── benv-lib.sh
│   │   └── docker-registry-lib.sh
│   ├── selinux-bpf.sh
│   └── strip-symbols.sh
├── dist/
│   ├── CMakeLists.txt
│   ├── cloud-collector/
│   │   ├── cloud-collector.args
│   │   ├── cloud-collector.service
│   │   ├── cloud-collector.yaml
│   │   ├── deb/
│   │   │   ├── conffiles
│   │   │   ├── postinst
│   │   │   ├── postrm
│   │   │   └── prerm
│   │   └── rpm/
│   │       ├── post.sh
│   │       ├── postun.sh
│   │       └── preun.sh
│   ├── kernel-collector/
│   │   ├── deb/
│   │   │   ├── conffiles
│   │   │   ├── postinst
│   │   │   ├── postrm
│   │   │   └── prerm
│   │   ├── kernel-collector.args
│   │   ├── kernel-collector.service
│   │   ├── kernel-collector.yaml
│   │   └── rpm/
│   │       ├── post.sh
│   │       ├── postun.sh
│   │       └── preun.sh
│   └── reducer/
│       ├── deb/
│       │   ├── conffiles
│       │   ├── postinst
│       │   ├── postrm
│       │   └── prerm
│       ├── reducer.args
│       ├── reducer.service
│       ├── reducer.yaml
│       └── rpm/
│           ├── post.sh
│           ├── postun.sh
│           └── preun.sh
├── docs/
│   ├── cloud-collector.md
│   ├── data-model.md
│   ├── developing.md
│   ├── dns-and-http.md
│   ├── k8s-collector.md
│   ├── kernel-collector.md
│   ├── metrics/
│   │   ├── dimensions.yaml
│   │   ├── internal_metrics/
│   │   │   ├── dimensions.yaml
│   │   │   └── metrics.yaml
│   │   └── metrics.yaml
│   ├── processes-and-cgroups.md
│   ├── reducer/
│   │   └── architecture.md
│   ├── reducer.md
│   ├── render.md
│   ├── roadmap.md
│   ├── running-multiple-agents.md
│   └── tcp-and-udp.md
├── geoip/
│   ├── CMakeLists.txt
│   ├── geoip.cc
│   ├── geoip.h
│   └── geoip.inl
├── jitbuf/
│   ├── CMakeLists.txt
│   ├── descriptor.h
│   ├── descriptor_reader.cc
│   ├── descriptor_reader.h
│   ├── fixed_handler.c
│   ├── fixed_handler.h
│   ├── handler.cc
│   ├── handler.h
│   ├── jb.h
│   ├── perfect_hash.h
│   ├── service.h
│   ├── transform_builder.cc
│   ├── transform_builder.h
│   ├── transformer.cc
│   └── transformer.h
├── platform/
│   ├── CMakeLists.txt
│   ├── bitops.h
│   ├── debug.h
│   ├── fastpass_linux.h
│   ├── generic.h
│   ├── linux-platform.h
│   ├── memory.h
│   ├── no-dpdk.h
│   ├── platform.h
│   ├── spin_lock.h
│   ├── types.h
│   ├── types_test.cc
│   └── userspace-time.h
├── reducer/
│   ├── CMakeLists.txt
│   ├── Dockerfile
│   ├── aggregation/
│   │   ├── agg_core.cc
│   │   ├── agg_core.h
│   │   ├── agg_root_span.h
│   │   ├── labels.h
│   │   ├── labels.inl
│   │   └── stat_counters.h
│   ├── constants.h
│   ├── constants.inl
│   ├── copy_metrics.h
│   ├── core.cc
│   ├── core.h
│   ├── core_base.h
│   ├── core_base.inl
│   ├── core_type.h
│   ├── disabled_metrics.cc
│   ├── disabled_metrics.h
│   ├── disabled_metrics_test.cc
│   ├── dns_cache.h
│   ├── entrypoint.cc
│   ├── entrypoint.h
│   ├── entrypoint.sh
│   ├── health_check.sh
│   ├── ingest/
│   │   ├── agent_span.cc
│   │   ├── agent_span.h
│   │   ├── aws_network_interface_span.cc
│   │   ├── aws_network_interface_span.h
│   │   ├── cgroup_span.cc
│   │   ├── cgroup_span.h
│   │   ├── component.h
│   │   ├── container_updater.h
│   │   ├── flow_updater.cc
│   │   ├── flow_updater.h
│   │   ├── ingest_core.cc
│   │   ├── ingest_core.h
│   │   ├── ingest_worker.cc
│   │   ├── ingest_worker.h
│   │   ├── k8s_pod_span.cc
│   │   ├── k8s_pod_span.h
│   │   ├── npm_connection.cc
│   │   ├── npm_connection.h
│   │   ├── process_span.cc
│   │   ├── process_span.h
│   │   ├── shared_state.cc
│   │   ├── shared_state.h
│   │   ├── socket_span.cc
│   │   ├── socket_span.h
│   │   ├── tcp_server.cc
│   │   ├── tcp_server.h
│   │   ├── udp_socket_span.cc
│   │   └── udp_socket_span.h
│   ├── internal_metrics_encoder.h
│   ├── internal_stats.h
│   ├── json_formatter.cc
│   ├── json_formatter.h
│   ├── latency_accumulator.h
│   ├── latency_accumulator.inl
│   ├── load_balancer.h
│   ├── logging/
│   │   ├── agg_core_stats_span.cc
│   │   ├── agg_core_stats_span.h
│   │   ├── component.h
│   │   ├── connection_metrics.h
│   │   ├── core_stats_span.cc
│   │   ├── core_stats_span.h
│   │   ├── ingest_core_stats_span.cc
│   │   ├── ingest_core_stats_span.h
│   │   ├── logger_span.cc
│   │   ├── logger_span.h
│   │   ├── logging_core.cc
│   │   └── logging_core.h
│   ├── matching/
│   │   ├── aws_enrichment_info.h
│   │   ├── aws_enrichment_span.cc
│   │   ├── aws_enrichment_span.h
│   │   ├── component.h
│   │   ├── flow_span.cc
│   │   ├── flow_span.h
│   │   ├── k8s_container_span.cc
│   │   ├── k8s_container_span.h
│   │   ├── k8s_pod_span.cc
│   │   ├── k8s_pod_span.h
│   │   ├── matching_core.cc
│   │   └── matching_core.h
│   ├── metric_info.cc
│   ├── metric_info.h
│   ├── null_publisher.cc
│   ├── null_publisher.h
│   ├── otlp_grpc_formatter.cc
│   ├── otlp_grpc_formatter.h
│   ├── otlp_grpc_publisher.cc
│   ├── otlp_grpc_publisher.h
│   ├── outbound_metrics.h
│   ├── outbound_stats.h
│   ├── prometheus_formatter.cc
│   ├── prometheus_formatter.h
│   ├── prometheus_handler.cc
│   ├── prometheus_handler.h
│   ├── prometheus_publisher.cc
│   ├── prometheus_publisher.h
│   ├── publisher.h
│   ├── reducer.cc
│   ├── reducer.h
│   ├── reducer_config.cc
│   ├── reducer_config.h
│   ├── reducer_config.inl
│   ├── rpc_queue_matrix.h
│   ├── rpc_queue_matrix_test.cc
│   ├── rpc_stats.cc
│   ├── rpc_stats.h
│   ├── rpc_stats.inl
│   ├── stat_info.cc
│   ├── stat_info.h
│   ├── thread_safe_map.h
│   ├── tsdb_format.h
│   ├── tsdb_formatter.cc
│   ├── tsdb_formatter.h
│   ├── uid_key.cc
│   ├── uid_key.h
│   ├── util/
│   │   ├── CMakeLists.txt
│   │   ├── blob_collector.cc
│   │   ├── blob_collector.h
│   │   ├── docker_image.h
│   │   ├── docker_image.inl
│   │   ├── index_dumper.cc
│   │   ├── index_dumper.h
│   │   ├── index_dumper.inl
│   │   ├── signal_handler.cc
│   │   ├── signal_handler.h
│   │   ├── thread_ops.cc
│   │   ├── thread_ops.h
│   │   ├── time_tracker.cc
│   │   ├── time_tracker.h
│   │   ├── virtual_clock.cc
│   │   ├── virtual_clock.h
│   │   └── virtual_clock_test.cc
│   ├── worker.cc
│   ├── worker.h
│   └── write_metrics.h
├── release-please-config.json
├── render/
│   ├── CMakeLists.txt
│   └── ebpf_net.render
├── renderc/
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── build.gradle
│   ├── gradle/
│   │   ├── repositories.gradle
│   │   ├── source-layout.gradle
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── io.opentelemetry.render/
│   │   ├── META-INF/
│   │   │   └── MANIFEST.MF
│   │   ├── build.gradle
│   │   └── src/
│   │       └── io/
│   │           └── opentelemetry/
│   │               └── render/
│   │                   ├── GenerateRender.mwe2
│   │                   ├── Render.xtext
│   │                   ├── RenderRuntimeModule.xtend
│   │                   ├── RenderStandaloneSetup.xtend
│   │                   ├── extensions/
│   │                   │   ├── AppExtensions.xtend
│   │                   │   ├── FieldExtensions.xtend
│   │                   │   ├── FieldTypeExtensions.xtend
│   │                   │   ├── MessageExtensions.xtend
│   │                   │   ├── MetricFieldExtension.xtend
│   │                   │   ├── SpanExtensions.xtend
│   │                   │   ├── UtilityExtensions.xtend
│   │                   │   └── XPackedMessageExtensions.xtend
│   │                   ├── formatting/
│   │                   │   └── RenderFormatter.xtend
│   │                   ├── generator/
│   │                   │   ├── AppGenerator.xtend
│   │                   │   ├── AppPacker.xtend
│   │                   │   ├── BpfGenerator.xtend
│   │                   │   ├── ConnectionGenerator.xtend
│   │                   │   ├── HashGenerator.xtend
│   │                   │   ├── MessageGenerator.xtend
│   │                   │   ├── MetricsGenerator.xtend
│   │                   │   ├── PerfectHash.xtend
│   │                   │   ├── ProtocolGenerator.xtend
│   │                   │   ├── RenderGenerator.xtend
│   │                   │   ├── RustCargoGenerator.xtend
│   │                   │   ├── RustEncoderGenerator.xtend
│   │                   │   ├── RustMessageGenerator.xtend
│   │                   │   ├── SpanAutoDependencies.xtend
│   │                   │   ├── SpanGenerator.xtend
│   │                   │   ├── TransformBuilderGenerator.xtend
│   │                   │   └── WriterGenerator.xtend
│   │                   ├── scoping/
│   │                   │   └── RenderScopeProvider.xtend
│   │                   └── validation/
│   │                       └── RenderValidator.xtend
│   ├── io.opentelemetry.render.standalone/
│   │   ├── build.gradle
│   │   ├── plugin.properties
│   │   └── src/
│   │       └── Main.xtend
│   ├── settings.gradle
│   └── test/
│       ├── CMakeLists.txt
│       ├── render_test.cc
│       └── test.render
├── scheduling/
│   ├── CMakeLists.txt
│   ├── interval_scheduler.cc
│   ├── interval_scheduler.h
│   ├── job.h
│   ├── timer.cc
│   └── timer.h
├── scratchpad/
│   └── modules.md
├── test/
│   └── kernel/
│       ├── .gitignore
│       ├── README.md
│       ├── bootstrap.sh
│       ├── distros-and-kernels.sh
│       ├── gen-tests.sh
│       ├── run-test.sh
│       ├── run-tests.sh
│       └── source/
│           ├── data/
│           │   ├── agent.sh
│           │   ├── centos-provision.sh
│           │   ├── debian-provision.sh
│           │   ├── env-provision.sh
│           │   ├── get-agent-shell.sh
│           │   ├── reducer.sh
│           │   ├── test-entrypoint.sh
│           │   └── ubuntu-provision.sh
│           └── runners/
│               ├── 0-setup.sh
│               ├── 1-apply-selinux-policy.sh
│               ├── 2-start-reducer.sh
│               ├── 3-fetch.sh
│               ├── 4-cached.sh
│               ├── 5-pre-installed.sh
│               ├── 6-cleanup.sh
│               └── run-kernel-collector-test.sh
├── tools/
│   ├── CMakeLists.txt
│   ├── aggregation_wire_to_json.cc
│   ├── bpf_wire_to_json.cc
│   ├── error_lookup.cc
│   ├── intake_wire_to_json.cc
│   └── matching_wire_to_json.cc
├── util/
│   ├── CMakeLists.txt
│   ├── LRU.h
│   ├── agent_id.cc
│   ├── agent_id.h
│   ├── args_parser.cc
│   ├── args_parser.h
│   ├── args_parser.inl
│   ├── aws_instance_metadata.cc
│   ├── aws_instance_metadata.h
│   ├── base64.cc
│   ├── base64.h
│   ├── base64_test.cc
│   ├── bits.h
│   ├── bits_test.cc
│   ├── boot_time.c
│   ├── boot_time.h
│   ├── buffer.h
│   ├── cgroup_parser.cc
│   ├── cgroup_parser.h
│   ├── cgroup_parser_test.cc
│   ├── circular_queue.h
│   ├── circular_queue_cpp.h
│   ├── code_timing.cc
│   ├── code_timing.h
│   ├── common_test.h
│   ├── container_of.h
│   ├── counter.h
│   ├── counter.inl
│   ├── counter_test.cc
│   ├── curl_engine.cc
│   ├── curl_engine.h
│   ├── debug.h
│   ├── defer.h
│   ├── defer_test.cc
│   ├── docker_host_config_metadata.cc
│   ├── docker_host_config_metadata.h
│   ├── docker_host_config_metadata.inl
│   ├── element_queue.c
│   ├── element_queue.h
│   ├── element_queue_cpp.h
│   ├── element_queue_writer.cc
│   ├── element_queue_writer.h
│   ├── enum.h
│   ├── enum.inl
│   ├── enum_operators.inl
│   ├── enum_test.cc
│   ├── environment_variables.cc
│   ├── environment_variables.h
│   ├── environment_variables.inl
│   ├── error_handling.cc
│   ├── error_handling.h
│   ├── expected.h
│   ├── expected_test.cc
│   ├── fast_div.h
│   ├── file_ops.cc
│   ├── file_ops.h
│   ├── fixed_hash.h
│   ├── fixed_hash_test.cc
│   ├── fmt_extensions.h
│   ├── gauge.h
│   ├── gauge.inl
│   ├── gauge_test.cc
│   ├── gcp_instance_metadata.cc
│   ├── gcp_instance_metadata.h
│   ├── histogram.h
│   ├── ip_address.cc
│   ├── ip_address.h
│   ├── ip_address_test.cc
│   ├── iterable_bitmap.h
│   ├── jitter.h
│   ├── jitter.inl
│   ├── jitter_test.cc
│   ├── json.h
│   ├── json_converter.h
│   ├── json_test.cc
│   ├── k8s_metadata.cc
│   ├── k8s_metadata.h
│   ├── k8s_metadata.inl
│   ├── lazy_array.h
│   ├── log.cc
│   ├── log.h
│   ├── log_formatters.h
│   ├── log_modifiers.h
│   ├── log_modifiers_test.cc
│   ├── log_whitelist.cc
│   ├── log_whitelist.h
│   ├── log_whitelist.inl
│   ├── logger.h
│   ├── lookup3.c
│   ├── lookup3.h
│   ├── lookup3_hasher.h
│   ├── lookup3_hasher_test.cc
│   ├── lz4_decompressor.cc
│   ├── lz4_decompressor.h
│   ├── meta.h
│   ├── meta.inl
│   ├── meta_test.cc
│   ├── metric_store.h
│   ├── nomad_metadata.cc
│   ├── nomad_metadata.h
│   ├── overloaded_visitor.h
│   ├── parser_utils.h
│   ├── perf_ring.c
│   ├── perf_ring.h
│   ├── perf_ring_cpp.h
│   ├── pool.h
│   ├── pool_allocator.c
│   ├── pool_allocator.h
│   ├── preprocessor.h
│   ├── proc_io_view.inl
│   ├── proc_ops.cc
│   ├── proc_ops.h
│   ├── proc_ops_test.cc
│   ├── proc_stat_view.inl
│   ├── proc_status_view.inl
│   ├── process_state.h
│   ├── protobuf_log.h
│   ├── raii.h
│   ├── random.cc
│   ├── random.h
│   ├── random.inl
│   ├── random_test.cc
│   ├── raw_json.h
│   ├── render.h
│   ├── resource_usage.h
│   ├── resource_usage_reporter.cc
│   ├── resource_usage_reporter.h
│   ├── restful.cc
│   ├── restful.h
│   ├── restful.inl
│   ├── short_string.h
│   ├── signal_handler.cc
│   ├── signal_handler.h
│   ├── stop_watch.h
│   ├── string.h
│   ├── string.inl
│   ├── string_view.h
│   ├── string_view.inl
│   ├── string_view_test.cc
│   ├── system_ops.cc
│   ├── system_ops.h
│   ├── tdigest.cc
│   ├── tdigest.h
│   ├── tdigest_test.cc
│   ├── time.cc
│   ├── time.h
│   ├── time_test.cc
│   ├── utility.h
│   ├── uv_helpers.cc
│   ├── uv_helpers.h
│   ├── version.cc
│   ├── version.h
│   └── version_config.h.cmake_in
└── version.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .clang-format
================================================
BasedOnStyle:  LLVM
AlignAfterOpenBracket: AlwaysBreak
AllowShortFunctionsOnASingleLine: Inline
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
  AfterFunction:   true
  SplitEmptyFunction: false
BreakBeforeBraces: Custom
BreakStringLiterals: false
ColumnLimit: 128
ConstructorInitializerAllOnOneLineOrOnePerLine: true


================================================
FILE: .devcontainer/devcontainer.json
================================================
{
  "name": "OpenTelemetry Network Dev",
  "image": "otel/opentelemetry-network-build-tools:latest",
  "features": {
    "ghcr.io/yonch/devcontainer-features/codex:1": {}
  },
  "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
  "mounts": [
    "source=${localEnv:HOME}/.codex/auth.json,target=/home/user/.codex/auth.json,readonly,type=bind",
    "source=${localEnv:HOME}/.ccache,target=/home/user/.ccache,type=bind"
  ],
  "customizations": {
    "vscode": {
      "settings": {},
      "extensions": [
        "eamodio.gitlens"
      ]
    }
  },
  "remoteUser": "root"
}


================================================
FILE: .git/HEAD
================================================
ref: refs/heads/main


================================================
FILE: .git/config
================================================
[core]
	repositoryformatversion = 1
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = https://github.com/open-telemetry/opentelemetry-network
	tagOpt = --no-tags
	fetch = +refs/heads/main:refs/remotes/origin/main
	promisor = true
	partialclonefilter = blob:limit=1048576
[branch "main"]
	remote = origin
	merge = refs/heads/main


================================================
FILE: .git/description
================================================
Unnamed repository; edit this file 'description' to name the repository.


================================================
FILE: .git/hooks/applypatch-msg.sample
================================================
#!/bin/sh
#
# An example hook script to check the commit log message taken by
# applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit.  The hook is
# allowed to edit the commit message file.
#
# To enable this hook, rename this file to "applypatch-msg".

. git-sh-setup
commitmsg="$(git rev-parse --git-path hooks/commit-msg)"
test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"}
:


================================================
FILE: .git/hooks/commit-msg.sample
================================================
#!/bin/sh
#
# An example hook script to check the commit log message.
# Called by "git commit" with one argument, the name of the file
# that has the commit message.  The hook should exit with non-zero
# status after issuing an appropriate message if it wants to stop the
# commit.  The hook is allowed to edit the commit message file.
#
# To enable this hook, rename this file to "commit-msg".

# Uncomment the below to add a Signed-off-by line to the message.
# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
# hook is more suited to it.
#
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"

# This example catches duplicate Signed-off-by lines.

test "" = "$(grep '^Signed-off-by: ' "$1" |
	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {
	echo >&2 Duplicate Signed-off-by lines.
	exit 1
}


================================================
FILE: .git/hooks/fsmonitor-watchman.sample
================================================
#!/usr/bin/perl

use strict;
use warnings;
use IPC::Open2;

# An example hook script to integrate Watchman
# (https://facebook.github.io/watchman/) with git to speed up detecting
# new and modified files.
#
# The hook is passed a version (currently 2) and last update token
# formatted as a string and outputs to stdout a new update token and
# all files that have been modified since the update token. Paths must
# be relative to the root of the working tree and separated by a single NUL.
#
# To enable this hook, rename this file to "query-watchman" and set
# 'git config core.fsmonitor .git/hooks/query-watchman'
#
my ($version, $last_update_token) = @ARGV;

# Uncomment for debugging
# print STDERR "$0 $version $last_update_token\n";

# Check the hook interface version
if ($version ne 2) {
	die "Unsupported query-fsmonitor hook version '$version'.\n" .
	    "Falling back to scanning...\n";
}

my $git_work_tree = get_working_dir();

my $retry = 1;

my $json_pkg;
eval {
	require JSON::XS;
	$json_pkg = "JSON::XS";
	1;
} or do {
	require JSON::PP;
	$json_pkg = "JSON::PP";
};

launch_watchman();

sub launch_watchman {
	my $o = watchman_query();
	if (is_work_tree_watched($o)) {
		output_result($o->{clock}, @{$o->{files}});
	}
}

sub output_result {
	my ($clockid, @files) = @_;

	# Uncomment for debugging watchman output
	# open (my $fh, ">", ".git/watchman-output.out");
	# binmode $fh, ":utf8";
	# print $fh "$clockid\n@files\n";
	# close $fh;

	binmode STDOUT, ":utf8";
	print $clockid;
	print "\0";
	local $, = "\0";
	print @files;
}

sub watchman_clock {
	my $response = qx/watchman clock "$git_work_tree"/;
	die "Failed to get clock id on '$git_work_tree'.\n" .
		"Falling back to scanning...\n" if $? != 0;

	return $json_pkg->new->utf8->decode($response);
}

sub watchman_query {
	my $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'watchman -j --no-pretty')
	or die "open2() failed: $!\n" .
	"Falling back to scanning...\n";

	# In the query expression below we're asking for names of files that
	# changed since $last_update_token but not from the .git folder.
	#
	# To accomplish this, we're using the "since" generator to use the
	# recency index to select candidate nodes and "fields" to limit the
	# output to file names only. Then we're using the "expression" term to
	# further constrain the results.
	my $last_update_line = "";
	if (substr($last_update_token, 0, 1) eq "c") {
		$last_update_token = "\"$last_update_token\"";
		$last_update_line = qq[\n"since": $last_update_token,];
	}
	my $query = <<"	END";
		["query", "$git_work_tree", {$last_update_line
			"fields": ["name"],
			"expression": ["not", ["dirname", ".git"]]
		}]
	END

	# Uncomment for debugging the watchman query
	# open (my $fh, ">", ".git/watchman-query.json");
	# print $fh $query;
	# close $fh;

	print CHLD_IN $query;
	close CHLD_IN;
	my $response = do {local $/; <CHLD_OUT>};

	# Uncomment for debugging the watch response
	# open ($fh, ">", ".git/watchman-response.json");
	# print $fh $response;
	# close $fh;

	die "Watchman: command returned no output.\n" .
	"Falling back to scanning...\n" if $response eq "";
	die "Watchman: command returned invalid output: $response\n" .
	"Falling back to scanning...\n" unless $response =~ /^\{/;

	return $json_pkg->new->utf8->decode($response);
}

sub is_work_tree_watched {
	my ($output) = @_;
	my $error = $output->{error};
	if ($retry > 0 and $error and $error =~ m/unable to resolve root .* directory (.*) is not watched/) {
		$retry--;
		my $response = qx/watchman watch "$git_work_tree"/;
		die "Failed to make watchman watch '$git_work_tree'.\n" .
		    "Falling back to scanning...\n" if $? != 0;
		$output = $json_pkg->new->utf8->decode($response);
		$error = $output->{error};
		die "Watchman: $error.\n" .
		"Falling back to scanning...\n" if $error;

		# Uncomment for debugging watchman output
		# open (my $fh, ">", ".git/watchman-output.out");
		# close $fh;

		# Watchman will always return all files on the first query so
		# return the fast "everything is dirty" flag to git and do the
		# Watchman query just to get it over with now so we won't pay
		# the cost in git to look up each individual file.
		my $o = watchman_clock();
		$error = $output->{error};

		die "Watchman: $error.\n" .
		"Falling back to scanning...\n" if $error;

		output_result($o->{clock}, ("/"));
		$last_update_token = $o->{clock};

		eval { launch_watchman() };
		return 0;
	}

	die "Watchman: $error.\n" .
	"Falling back to scanning...\n" if $error;

	return 1;
}

sub get_working_dir {
	my $working_dir;
	if ($^O =~ 'msys' || $^O =~ 'cygwin') {
		$working_dir = Win32::GetCwd();
		$working_dir =~ tr/\\/\//;
	} else {
		require Cwd;
		$working_dir = Cwd::cwd();
	}

	return $working_dir;
}


================================================
FILE: .git/hooks/post-update.sample
================================================
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

exec git update-server-info


================================================
FILE: .git/hooks/pre-applypatch.sample
================================================
#!/bin/sh
#
# An example hook script to verify what is about to be committed
# by applypatch from an e-mail message.
#
# The hook should exit with non-zero status after issuing an
# appropriate message if it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-applypatch".

. git-sh-setup
precommit="$(git rev-parse --git-path hooks/pre-commit)"
test -x "$precommit" && exec "$precommit" ${1+"$@"}
:


================================================
FILE: .git/hooks/pre-commit.sample
================================================
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".

if git rev-parse --verify HEAD >/dev/null 2>&1
then
	against=HEAD
else
	# Initial commit: diff against an empty tree object
	against=$(git hash-object -t tree /dev/null)
fi

# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --type=bool hooks.allownonascii)

# Redirect output to stderr.
exec 1>&2

# Cross platform projects tend to avoid non-ASCII filenames; prevent
# them from being added to the repository. We exploit the fact that the
# printable range starts at the space character and ends with tilde.
if [ "$allownonascii" != "true" ] &&
	# Note that the use of brackets around a tr range is ok here, (it's
	# even required, for portability to Solaris 10's /usr/bin/tr), since
	# the square bracket bytes happen to fall in the designated range.
	test $(git diff-index --cached --name-only --diff-filter=A -z $against |
	  LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
then
	cat <<\EOF
Error: Attempt to add a non-ASCII file name.

This can cause problems if you want to work with people on other platforms.

To be portable it is advisable to rename the file.

If you know what you are doing you can disable this check using:

  git config hooks.allownonascii true
EOF
	exit 1
fi

# If there are whitespace errors, print the offending file names and fail.
exec git diff-index --check --cached $against --


================================================
FILE: .git/hooks/pre-merge-commit.sample
================================================
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git merge" with no arguments.  The hook should
# exit with non-zero status after issuing an appropriate message to
# stderr if it wants to stop the merge commit.
#
# To enable this hook, rename this file to "pre-merge-commit".

. git-sh-setup
test -x "$GIT_DIR/hooks/pre-commit" &&
        exec "$GIT_DIR/hooks/pre-commit"
:


================================================
FILE: .git/hooks/pre-push.sample
================================================
#!/bin/sh

# An example hook script to verify what is about to be pushed.  Called by "git
# push" after it has checked the remote status, but before anything has been
# pushed.  If this script exits with a non-zero status nothing will be pushed.
#
# This hook is called with the following parameters:
#
# $1 -- Name of the remote to which the push is being done
# $2 -- URL to which the push is being done
#
# If pushing without using a named remote those arguments will be equal.
#
# Information about the commits which are being pushed is supplied as lines to
# the standard input in the form:
#
#   <local ref> <local oid> <remote ref> <remote oid>
#
# This sample shows how to prevent push of commits where the log message starts
# with "WIP" (work in progress).

remote="$1"
url="$2"

zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')

while read local_ref local_oid remote_ref remote_oid
do
	if test "$local_oid" = "$zero"
	then
		# Handle delete
		:
	else
		if test "$remote_oid" = "$zero"
		then
			# New branch, examine all commits
			range="$local_oid"
		else
			# Update to existing branch, examine new commits
			range="$remote_oid..$local_oid"
		fi

		# Check for WIP commit
		commit=$(git rev-list -n 1 --grep '^WIP' "$range")
		if test -n "$commit"
		then
			echo >&2 "Found WIP commit in $local_ref, not pushing"
			exit 1
		fi
	fi
done

exit 0


================================================
FILE: .git/hooks/pre-rebase.sample
================================================
#!/bin/sh
#
# Copyright (c) 2006, 2008 Junio C Hamano
#
# The "pre-rebase" hook is run just before "git rebase" starts doing
# its job, and can prevent the command from running by exiting with
# non-zero status.
#
# The hook is called with the following parameters:
#
# $1 -- the upstream the series was forked from.
# $2 -- the branch being rebased (or empty when rebasing the current branch).
#
# This sample shows how to prevent topic branches that are already
# merged to 'next' branch from getting rebased, because allowing it
# would result in rebasing already published history.

publish=next
basebranch="$1"
if test "$#" = 2
then
	topic="refs/heads/$2"
else
	topic=`git symbolic-ref HEAD` ||
	exit 0 ;# we do not interrupt rebasing detached HEAD
fi

case "$topic" in
refs/heads/??/*)
	;;
*)
	exit 0 ;# we do not interrupt others.
	;;
esac

# Now we are dealing with a topic branch being rebased
# on top of master.  Is it OK to rebase it?

# Does the topic really exist?
git show-ref -q "$topic" || {
	echo >&2 "No such branch $topic"
	exit 1
}

# Is topic fully merged to master?
not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
if test -z "$not_in_master"
then
	echo >&2 "$topic is fully merged to master; better remove it."
	exit 1 ;# we could allow it, but there is no point.
fi

# Is topic ever merged to next?  If so you should not be rebasing it.
only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
only_next_2=`git rev-list ^master           ${publish} | sort`
if test "$only_next_1" = "$only_next_2"
then
	not_in_topic=`git rev-list "^$topic" master`
	if test -z "$not_in_topic"
	then
		echo >&2 "$topic is already up to date with master"
		exit 1 ;# we could allow it, but there is no point.
	else
		exit 0
	fi
else
	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
	/usr/bin/perl -e '
		my $topic = $ARGV[0];
		my $msg = "* $topic has commits already merged to public branch:\n";
		my (%not_in_next) = map {
			/^([0-9a-f]+) /;
			($1 => 1);
		} split(/\n/, $ARGV[1]);
		for my $elem (map {
				/^([0-9a-f]+) (.*)$/;
				[$1 => $2];
			} split(/\n/, $ARGV[2])) {
			if (!exists $not_in_next{$elem->[0]}) {
				if ($msg) {
					print STDERR $msg;
					undef $msg;
				}
				print STDERR " $elem->[1]\n";
			}
		}
	' "$topic" "$not_in_next" "$not_in_master"
	exit 1
fi

<<\DOC_END

This sample hook safeguards topic branches that have been
published from being rewound.

The workflow assumed here is:

 * Once a topic branch forks from "master", "master" is never
   merged into it again (either directly or indirectly).

 * Once a topic branch is fully cooked and merged into "master",
   it is deleted.  If you need to build on top of it to correct
   earlier mistakes, a new topic branch is created by forking at
   the tip of the "master".  This is not strictly necessary, but
   it makes it easier to keep your history simple.

 * Whenever you need to test or publish your changes to topic
   branches, merge them into "next" branch.

The script, being an example, hardcodes the publish branch name
to be "next", but it is trivial to make it configurable via
$GIT_DIR/config mechanism.

With this workflow, you would want to know:

(1) ... if a topic branch has ever been merged to "next".  Young
    topic branches can have stupid mistakes you would rather
    clean up before publishing, and things that have not been
    merged into other branches can be easily rebased without
    affecting other people.  But once it is published, you would
    not want to rewind it.

(2) ... if a topic branch has been fully merged to "master".
    Then you can delete it.  More importantly, you should not
    build on top of it -- other people may already want to
    change things related to the topic as patches against your
    "master", so if you need further changes, it is better to
    fork the topic (perhaps with the same name) afresh from the
    tip of "master".

Let's look at this example:

		   o---o---o---o---o---o---o---o---o---o "next"
		  /       /           /           /
		 /   a---a---b A     /           /
		/   /               /           /
	       /   /   c---c---c---c B         /
	      /   /   /             \         /
	     /   /   /   b---b C     \       /
	    /   /   /   /             \     /
    ---o---o---o---o---o---o---o---o---o---o---o "master"


A, B and C are topic branches.

 * A has one fix since it was merged up to "next".

 * B has finished.  It has been fully merged up to "master" and "next",
   and is ready to be deleted.

 * C has not merged to "next" at all.

We would want to allow C to be rebased, refuse A, and encourage
B to be deleted.

To compute (1):

	git rev-list ^master ^topic next
	git rev-list ^master        next

	if these match, topic has not merged in next at all.

To compute (2):

	git rev-list master..topic

	if this is empty, it is fully merged to "master".

DOC_END


================================================
FILE: .git/hooks/pre-receive.sample
================================================
#!/bin/sh
#
# An example hook script to make use of push options.
# The example simply echoes all push options that start with 'echoback='
# and rejects all pushes when the "reject" push option is used.
#
# To enable this hook, rename this file to "pre-receive".

if test -n "$GIT_PUSH_OPTION_COUNT"
then
	i=0
	while test "$i" -lt "$GIT_PUSH_OPTION_COUNT"
	do
		eval "value=\$GIT_PUSH_OPTION_$i"
		case "$value" in
		echoback=*)
			echo "echo from the pre-receive-hook: ${value#*=}" >&2
			;;
		reject)
			exit 1
		esac
		i=$((i + 1))
	done
fi


================================================
FILE: .git/hooks/prepare-commit-msg.sample
================================================
#!/bin/sh
#
# An example hook script to prepare the commit log message.
# Called by "git commit" with the name of the file that has the
# commit message, followed by the description of the commit
# message's source.  The hook's purpose is to edit the commit
# message file.  If the hook fails with a non-zero status,
# the commit is aborted.
#
# To enable this hook, rename this file to "prepare-commit-msg".

# This hook includes three examples. The first one removes the
# "# Please enter the commit message..." help message.
#
# The second includes the output of "git diff --name-status -r"
# into the message, just before the "git status" output.  It is
# commented because it doesn't cope with --amend or with squashed
# commits.
#
# The third example adds a Signed-off-by line to the message, that can
# still be edited.  This is rarely a good idea.

COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE"

# case "$COMMIT_SOURCE,$SHA1" in
#  ,|template,)
#    /usr/bin/perl -i.bak -pe '
#       print "\n" . `git diff --cached --name-status -r`
# 	 if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;;
#  *) ;;
# esac

# SOB=$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# git interpret-trailers --in-place --trailer "$SOB" "$COMMIT_MSG_FILE"
# if test -z "$COMMIT_SOURCE"
# then
#   /usr/bin/perl -i.bak -pe 'print "\n" if !$first_line++' "$COMMIT_MSG_FILE"
# fi


================================================
FILE: .git/hooks/push-to-checkout.sample
================================================
#!/bin/sh

# An example hook script to update a checked-out tree on a git push.
#
# This hook is invoked by git-receive-pack(1) when it reacts to git
# push and updates reference(s) in its repository, and when the push
# tries to update the branch that is currently checked out and the
# receive.denyCurrentBranch configuration variable is set to
# updateInstead.
#
# By default, such a push is refused if the working tree and the index
# of the remote repository has any difference from the currently
# checked out commit; when both the working tree and the index match
# the current commit, they are updated to match the newly pushed tip
# of the branch. This hook is to be used to override the default
# behaviour; however the code below reimplements the default behaviour
# as a starting point for convenient modification.
#
# The hook receives the commit with which the tip of the current
# branch is going to be updated:
commit=$1

# It can exit with a non-zero status to refuse the push (when it does
# so, it must not modify the index or the working tree).
die () {
	echo >&2 "$*"
	exit 1
}

# Or it can make any necessary changes to the working tree and to the
# index to bring them to the desired state when the tip of the current
# branch is updated to the new commit, and exit with a zero status.
#
# For example, the hook can simply run git read-tree -u -m HEAD "$1"
# in order to emulate git fetch that is run in the reverse direction
# with git push, as the two-tree form of git read-tree -u -m is
# essentially the same as git switch or git checkout that switches
# branches while keeping the local changes in the working tree that do
# not interfere with the difference between the branches.

# The below is a more-or-less exact translation to shell of the C code
# for the default behaviour for git's push-to-checkout hook defined in
# the push_to_deploy() function in builtin/receive-pack.c.
#
# Note that the hook will be executed from the repository directory,
# not from the working tree, so if you want to perform operations on
# the working tree, you will have to adapt your code accordingly, e.g.
# by adding "cd .." or using relative paths.

if ! git update-index -q --ignore-submodules --refresh
then
	die "Up-to-date check failed"
fi

if ! git diff-files --quiet --ignore-submodules --
then
	die "Working directory has unstaged changes"
fi

# This is a rough translation of:
#
#   head_has_history() ? "HEAD" : EMPTY_TREE_SHA1_HEX
if git cat-file -e HEAD 2>/dev/null
then
	head=HEAD
else
	head=$(git hash-object -t tree --stdin </dev/null)
fi

if ! git diff-index --quiet --cached --ignore-submodules $head --
then
	die "Working directory has staged changes"
fi

if ! git read-tree -u -m "$commit"
then
	die "Could not update working tree to new HEAD"
fi


================================================
FILE: .git/hooks/sendemail-validate.sample
================================================
#!/bin/sh

# An example hook script to validate a patch (and/or patch series) before
# sending it via email.
#
# The hook should exit with non-zero status after issuing an appropriate
# message if it wants to prevent the email(s) from being sent.
#
# To enable this hook, rename this file to "sendemail-validate".
#
# By default, it will only check that the patch(es) can be applied on top of
# the default upstream branch without conflicts in a secondary worktree. After
# validation (successful or not) of the last patch of a series, the worktree
# will be deleted.
#
# The following config variables can be set to change the default remote and
# remote ref that are used to apply the patches against:
#
#   sendemail.validateRemote (default: origin)
#   sendemail.validateRemoteRef (default: HEAD)
#
# Replace the TODO placeholders with appropriate checks according to your
# needs.

validate_cover_letter () {
	file="$1"
	# TODO: Replace with appropriate checks (e.g. spell checking).
	true
}

validate_patch () {
	file="$1"
	# Ensure that the patch applies without conflicts.
	git am -3 "$file" || return
	# TODO: Replace with appropriate checks for this patch
	# (e.g. checkpatch.pl).
	true
}

validate_series () {
	# TODO: Replace with appropriate checks for the whole series
	# (e.g. quick build, coding style checks, etc.).
	true
}

# main -------------------------------------------------------------------------

if test "$GIT_SENDEMAIL_FILE_COUNTER" = 1
then
	remote=$(git config --default origin --get sendemail.validateRemote) &&
	ref=$(git config --default HEAD --get sendemail.validateRemoteRef) &&
	worktree=$(mktemp --tmpdir -d sendemail-validate.XXXXXXX) &&
	git worktree add -fd --checkout "$worktree" "refs/remotes/$remote/$ref" &&
	git config --replace-all sendemail.validateWorktree "$worktree"
else
	worktree=$(git config --get sendemail.validateWorktree)
fi || {
	echo "sendemail-validate: error: failed to prepare worktree" >&2
	exit 1
}

unset GIT_DIR GIT_WORK_TREE
cd "$worktree" &&

if grep -q "^diff --git " "$1"
then
	validate_patch "$1"
else
	validate_cover_letter "$1"
fi &&

if test "$GIT_SENDEMAIL_FILE_COUNTER" = "$GIT_SENDEMAIL_FILE_TOTAL"
then
	git config --unset-all sendemail.validateWorktree &&
	trap 'git worktree remove -ff "$worktree"' EXIT &&
	validate_series
fi


================================================
FILE: .git/hooks/update.sample
================================================
#!/bin/sh
#
# An example hook script to block unannotated tags from entering.
# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
#
# To enable this hook, rename this file to "update".
#
# Config
# ------
# hooks.allowunannotated
#   This boolean sets whether unannotated tags will be allowed into the
#   repository.  By default they won't be.
# hooks.allowdeletetag
#   This boolean sets whether deleting tags will be allowed in the
#   repository.  By default they won't be.
# hooks.allowmodifytag
#   This boolean sets whether a tag may be modified after creation. By default
#   it won't be.
# hooks.allowdeletebranch
#   This boolean sets whether deleting branches will be allowed in the
#   repository.  By default they won't be.
# hooks.denycreatebranch
#   This boolean sets whether remotely creating branches will be denied
#   in the repository.  By default this is allowed.
#

# --- Command line
refname="$1"
oldrev="$2"
newrev="$3"

# --- Safety check
if [ -z "$GIT_DIR" ]; then
	echo "Don't run this script from the command line." >&2
	echo " (if you want, you could supply GIT_DIR then run" >&2
	echo "  $0 <ref> <oldrev> <newrev>)" >&2
	exit 1
fi

if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
	echo "usage: $0 <ref> <oldrev> <newrev>" >&2
	exit 1
fi

# --- Config
allowunannotated=$(git config --type=bool hooks.allowunannotated)
allowdeletebranch=$(git config --type=bool hooks.allowdeletebranch)
denycreatebranch=$(git config --type=bool hooks.denycreatebranch)
allowdeletetag=$(git config --type=bool hooks.allowdeletetag)
allowmodifytag=$(git config --type=bool hooks.allowmodifytag)

# check for no description
projectdesc=$(sed -e '1q' "$GIT_DIR/description")
case "$projectdesc" in
"Unnamed repository"* | "")
	echo "*** Project description file hasn't been set" >&2
	exit 1
	;;
esac

# --- Check types
# if $newrev is 0000...0000, it's a commit to delete a ref.
zero=$(git hash-object --stdin </dev/null | tr '[0-9a-f]' '0')
if [ "$newrev" = "$zero" ]; then
	newrev_type=delete
else
	newrev_type=$(git cat-file -t $newrev)
fi

case "$refname","$newrev_type" in
	refs/tags/*,commit)
		# un-annotated tag
		short_refname=${refname##refs/tags/}
		if [ "$allowunannotated" != "true" ]; then
			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
			exit 1
		fi
		;;
	refs/tags/*,delete)
		# delete tag
		if [ "$allowdeletetag" != "true" ]; then
			echo "*** Deleting a tag is not allowed in this repository" >&2
			exit 1
		fi
		;;
	refs/tags/*,tag)
		# annotated tag
		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
		then
			echo "*** Tag '$refname' already exists." >&2
			echo "*** Modifying a tag is not allowed in this repository." >&2
			exit 1
		fi
		;;
	refs/heads/*,commit)
		# branch
		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
			echo "*** Creating a branch is not allowed in this repository" >&2
			exit 1
		fi
		;;
	refs/heads/*,delete)
		# delete branch
		if [ "$allowdeletebranch" != "true" ]; then
			echo "*** Deleting a branch is not allowed in this repository" >&2
			exit 1
		fi
		;;
	refs/remotes/*,commit)
		# tracking branch
		;;
	refs/remotes/*,delete)
		# delete tracking branch
		if [ "$allowdeletebranch" != "true" ]; then
			echo "*** Deleting a tracking branch is not allowed in this repository" >&2
			exit 1
		fi
		;;
	*)
		# Anything else (is there anything else?)
		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
		exit 1
		;;
esac

# --- Finished
exit 0


================================================
FILE: .git/info/exclude
================================================
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~


================================================
FILE: .git/logs/HEAD
================================================
0000000000000000000000000000000000000000 0a078f5207323d2be24cbdede1de3abb19bc55a4 appuser <appuser@7c99e0e64a07.(none)> 1778556387 +0000	clone: from https://github.com/open-telemetry/opentelemetry-network


================================================
FILE: .git/logs/refs/heads/main
================================================
0000000000000000000000000000000000000000 0a078f5207323d2be24cbdede1de3abb19bc55a4 appuser <appuser@7c99e0e64a07.(none)> 1778556387 +0000	clone: from https://github.com/open-telemetry/opentelemetry-network


================================================
FILE: .git/logs/refs/remotes/origin/HEAD
================================================
0000000000000000000000000000000000000000 0a078f5207323d2be24cbdede1de3abb19bc55a4 appuser <appuser@7c99e0e64a07.(none)> 1778556387 +0000	clone: from https://github.com/open-telemetry/opentelemetry-network


================================================
FILE: .git/objects/pack/pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.promisor
================================================
0a078f5207323d2be24cbdede1de3abb19bc55a4 refs/heads/main


================================================
FILE: .git/packed-refs
================================================
# pack-refs with: peeled fully-peeled sorted 
0a078f5207323d2be24cbdede1de3abb19bc55a4 refs/remotes/origin/main


================================================
FILE: .git/refs/heads/main
================================================
0a078f5207323d2be24cbdede1de3abb19bc55a4


================================================
FILE: .git/refs/remotes/origin/HEAD
================================================
ref: refs/remotes/origin/main


================================================
FILE: .git/shallow
================================================
0a078f5207323d2be24cbdede1de3abb19bc55a4


================================================
FILE: .git-blame-ignore-revs
================================================
5ac6cdf70d1b8f407e873a7a3fcf0bec07232c75


================================================
FILE: .github/.actionlint.yaml
================================================
self-hosted-runner:
  labels:
    - ubuntu-24.04-arm


================================================
FILE: .github/CODEOWNERS
================================================
#####################################################
#
# List of approvers for OpenTelemetry Collector Contrib
#
#####################################################
#
# Learn about membership in OpenTelemetry community:
#  https://github.com/open-telemetry/community/blob/main/community-membership.md
#
#
# Learn about CODEOWNERS file format:
# https://help.github.com/en/articles/about-code-owners
#
# NOTE: Lines should be entered in the following format:
# <component_path_relative_from_project_root>/<min_1_space><owner_1><space><owner_2><space>..<owner_n>
# reducer/logging/                 @open-telemetry/ebpf-approvers @bjandras @jimwsplk
# Path separator and minimum of 1 space between component path and owners is
# important for validation steps
#

* @open-telemetry/network-approvers

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yaml
================================================
name: Bug report
description: Create a report to help us improve
labels: ["bug", "needs triage"]
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report! Please make sure to fill out the entire form below, providing as much context as you can in order to help us triage and track down your bug as quickly as possible.

        Before filing a bug, please be sure you have searched through [existing bugs](https://github.com/open-telemetry/opentelemetry-ebpf/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Abug) to see if an existing issue covers your bug.
  - type: textarea
    attributes:
      label: What happened?
      description: Please provide as much detail as you reasonably can.
      value: |
        ## Description

        ## Steps to Reproduce

        ## Expected Result

        ## Actual Result

    validations:
      required: true
  - type: input
    attributes:
      label: eBPF Collector version
      description: What version did you use? (e.g., `v0.4.0`, `1eb551b`, etc)
    validations:
      required: true
  - type: textarea
    attributes:
      label: Environment information
      description: Please provide any additional information about your installation.
      value: |
        ## Environment
        OS: (e.g., "Ubuntu 20.04")
        Compiler(if manually compiled): (e.g., "go 14.2")

  - type: textarea
    attributes:
      label: eBPF Collector configuration
      description: Please provide the configuration you are using (e.g. the YAML config file).
      placeholder:
      render: yaml
  - type: textarea
    attributes:
      label: Log output
      description: |
        Please copy and paste any relevant log output.
      render: shell
  - type: textarea
    attributes:
      label: Additional context
      description: Any additional information you think may be relevant to this issue.
  - type: dropdown
    attributes:
      label: Tip
      description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
      options:
        - <sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>
      default: 0



================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: eBPF Collector Slack Channel
    url: https://cloud-native.slack.com/archives/C02AB15583A
    about: Please ask and answer questions here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.yaml
================================================
name: Feature request
description: Suggest an idea for this project
labels: ["enhancement", "needs triage"]
body:
  - type: textarea
    attributes:
      label: Is your feature request related to a problem? Please describe.
      description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
    validations:
      required: true
  - type: textarea
    attributes:
      label: Describe the solution you'd like
      description: A clear and concise description of what you want to happen.
    validations:
      required: true
  - type: textarea
    attributes:
      label: Describe alternatives you've considered
      description: A clear and concise description of any alternative solutions or features you've considered.
  - type: textarea
    attributes:
      label: Additional context
      description: Add any other context or screenshots about the feature request here.
  - type: dropdown
    attributes:
      label: Tip
      description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
      options:
        - <sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>
      default: 0



================================================
FILE: .github/ISSUE_TEMPLATE/other.yaml
================================================
name: Other issue
description: Create a new issue to help us improve the collector
labels: ["needs triage"]
body:
  - type: textarea
    attributes:
      label: Describe the issue you're reporting
      description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
    validations:
      required: true
  - type: dropdown
    attributes:
      label: Tip
      description: This element is static, used to render a helpful sub-heading for end-users and community members to help prioritize issues. Please leave as is.
      options:
        - <sub>[React](https://github.blog/news-insights/product-news/add-reactions-to-pull-requests-issues-and-comments/) with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding `+1` or `me too`, to help us triage it. Learn more [here](https://opentelemetry.io/community/end-user/issue-participation/).</sub>
      default: 0


================================================
FILE: .github/actions/build-tools-single-stage/action.yml
================================================
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

name: 'Build and Push Container'
description: 'Build and push a Docker container with dependency management and registry caching'

inputs:
  directory:
    description: 'Directory name to build'
    required: true
  registry:
    description: 'Container registry to use'
    required: true
    default: 'ghcr.io'
  registry_username:
    description: 'Registry username'
    required: true
  registry_password:
    description: 'Registry password/token'
    required: true
  image_prefix:
    description: 'Prefix for image names'
    required: false
    default: 'benv'
  ref:
    description: 'Git ref to checkout'
    required: false
    default: 'main'
  force_rebuild:
    description: 'Force rebuild and push even if image exists in registry'
    required: false
    default: 'false'
  arch:
    description: 'Target architecture (amd64 or arm64)'
    required: false
    default: 'amd64'

outputs:
  image-tag:
    description: 'The computed image tag'
    value: ${{ steps.compute-recursive-tags.outputs.image-tag }}
  full-image-tag:
    description: 'The full image tag with registry'
    value: ${{ steps.compute-recursive-tags.outputs.full-image-tag }}
  image-exists:
    description: 'Whether the image already exists in registry'
    value: ${{ steps.check-exists.outputs.exists }}
  build-needed:
    description: 'Whether a build was needed'
    value: ${{ steps.check-exists.outputs.exists == 'false' }}

runs:
  using: 'composite'
  steps:
    - name: Checkout sources
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        ref: ${{ inputs.ref }}
        fetch-depth: 0

    - name: Compute recursive tags for all directories
      id: compute-recursive-tags
      shell: bash
      env:
        DOCKER_TAG_PREFIX: ${{ github.repository_owner }}/
      run: |
        DIRECTORY="build-tools/${{ inputs.directory }}"
        BASE_DIRECTORY="${{ inputs.directory }}"
        ARCH="${{ inputs.arch }}"
        
        # Define dependency mapping based on CMakeLists.txt
        declare -A DEPS
        DEPS["base"]=""
        DEPS["libuv"]="base"
        DEPS["cpp_misc"]="base"
        DEPS["libmaxminddb"]="base"
        DEPS["libbpf"]="base"
        DEPS["aws_sdk"]="base"
        DEPS["final"]="base libuv aws_sdk cpp_misc libmaxminddb libbpf"
        
        # Compute direct hashes for all directories upfront
        declare -A DIRECT_HASHES
        ALL_DIRS="base libuv cpp_misc libmaxminddb libbpf aws_sdk final"
        
        echo "Computing direct hashes..." >&2
        for dir in $ALL_DIRS; do
          direct_hash=$(git log -1 --format=%h "build-tools/${dir}")
          DIRECT_HASHES[$dir]=$direct_hash
          echo "Direct hash for $dir: $direct_hash" >&2
        done
        
        # Function to compute dependency closure (all transitive dependencies)
        compute_closure() {
          local target="$1"
          local visited_key="VISITED_$target"
          
          # Check for circular dependency
          if [[ -n "${!visited_key:-}" ]]; then
            echo "ERROR: Circular dependency detected for $target" >&2
            exit 1
          fi
          
          # Mark as visiting
          declare -g "$visited_key=1"
          
          # Start with direct dependencies
          local deps="${DEPS[$target]:-}"
          local closure_set=""
          
          # Add direct dependencies
          for dep in $deps; do
            closure_set="$closure_set $dep"
            
            # Recursively add their closures
            local dep_closure=$(compute_closure "$dep")
            closure_set="$closure_set $dep_closure"
          done
          
          # Remove duplicates by converting to array and back
          local unique_closure=($(echo $closure_set | tr ' ' '\n' | sort -u | tr '\n' ' '))
          
          # Unmark visiting
          unset "$visited_key"
          
          echo "${unique_closure[@]}"
        }
        
        # Function to compute recursive hash using closure approach
        compute_recursive_hash() {
          local dir="$1"
          
          # Get the full dependency closure
          local closure=$(compute_closure "$dir")
          
          # Include the directory itself in the hash computation
          local all_dirs_for_hash="$dir $closure"
          
          # Sort all directories
          local sorted_dirs=($(echo $all_dirs_for_hash | tr ' ' '\n' | sort -u | tr '\n' ' '))
          
          # Concatenate their direct hashes with dashes
          local hash_input=""
          for d in "${sorted_dirs[@]}"; do
            if [[ -n "$d" ]]; then
              if [[ -n "$hash_input" ]]; then
                hash_input="$hash_input-${DIRECT_HASHES[$d]}"
              else
                hash_input="${DIRECT_HASHES[$d]}"
              fi
            fi
          done
          
          # Use the dash-separated hashes directly as the tag
          local final_hash="$hash_input"
          
          echo "Closure for $dir: ${sorted_dirs[@]}" >&2
          echo "Final hash for $dir: $final_hash" >&2
          
          echo "$final_hash"
        }
        
        # Compute recursive hash for target directory
        RECURSIVE_HASH=$(compute_recursive_hash "$BASE_DIRECTORY")
        
        # Create image tag
        IMAGE_TAG="${{ github.repository_owner }}/opentelemetry-network-build-tools-cache:${BASE_DIRECTORY}-${ARCH}-${RECURSIVE_HASH}"
        FULL_IMAGE_TAG="${{ inputs.registry }}/${IMAGE_TAG}"
        
        echo "image-tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT
        echo "full-image-tag=${FULL_IMAGE_TAG}" >> $GITHUB_OUTPUT
        echo "recursive-hash=${RECURSIVE_HASH}" >> $GITHUB_OUTPUT
        
        echo "Computed recursive image tag: ${IMAGE_TAG}" >&2
        echo "Full image tag: ${FULL_IMAGE_TAG}" >&2
        echo "Recursive hash: ${RECURSIVE_HASH}" >&2
        
        # Compute all dependency tags for build args
        echo "Computing all dependency tags..." >&2
        
        for dir in $ALL_DIRS; do
          if [[ "$dir" != "$BASE_DIRECTORY" ]]; then
            dir_hash=$(compute_recursive_hash "$dir")
            dir_image_tag="${{ github.repository_owner }}/opentelemetry-network-build-tools-cache:${dir}-${ARCH}-${dir_hash}"
            dir_full_tag="${{ inputs.registry }}/${dir_image_tag}"
            
            # Export as environment variable for use in build args
            export "${dir}_IMAGE_TAG=${dir_full_tag}"
            echo "${dir}_IMAGE_TAG=${dir_full_tag}" >> $GITHUB_OUTPUT
            
            echo "Dependency: ${dir} -> ${dir_full_tag}" >&2
          fi
        done

    - name: Check if image exists in registry
      id: check-exists
      shell: bash
      run: |
        FULL_IMAGE_TAG="${{ steps.compute-recursive-tags.outputs.full-image-tag }}"
        
        if [[ "${{ inputs.force_rebuild }}" == "true" ]]; then
          echo "exists=false" >> $GITHUB_OUTPUT
          echo "Force rebuild enabled - will rebuild ${FULL_IMAGE_TAG} regardless of registry state"
        elif docker manifest inspect "${FULL_IMAGE_TAG}" >/dev/null 2>&1; then
          echo "exists=true" >> $GITHUB_OUTPUT
          echo "Image ${FULL_IMAGE_TAG} already exists in registry"
        else
          echo "exists=false" >> $GITHUB_OUTPUT
          echo "Image ${FULL_IMAGE_TAG} does not exist in registry"
        fi

    - name: Initialize directory submodules
      if: steps.check-exists.outputs.exists == 'false'
      shell: bash
      run: |
        DIRECTORY="build-tools/${{ inputs.directory }}"
        echo "Initializing submodules for directory: ${DIRECTORY}"
        
        # Initialize submodules for the specific directory path  
        git submodule update --init --recursive -- "${DIRECTORY}/"


    - name: Log in to Container Registry
      if: steps.check-exists.outputs.exists == 'false'
      uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
      with:
        registry: ${{ inputs.registry }}
        username: ${{ inputs.registry_username }}
        password: ${{ inputs.registry_password }}

    - name: Build and push image
      if: steps.check-exists.outputs.exists == 'false'
      shell: bash
      run: |
        DIRECTORY="build-tools/${{ inputs.directory }}"
        FULL_IMAGE_TAG="${{ steps.compute-recursive-tags.outputs.full-image-tag }}"
        
        # Start building the docker command
        BUILD_ARGS="--build-arg NPROC=$(nproc)"
        
        # Add all dependency image tags as build args using outputs from compute-recursive-tags step
        BUILD_ARGS="${BUILD_ARGS} --build-arg base_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.base_IMAGE_TAG }}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg libuv_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.libuv_IMAGE_TAG }}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg cpp_misc_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.cpp_misc_IMAGE_TAG }}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg libmaxminddb_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.libmaxminddb_IMAGE_TAG }}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg libbpf_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.libbpf_IMAGE_TAG }}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg aws_sdk_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.aws_sdk_IMAGE_TAG }}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg final_IMAGE_TAG=${{ steps.compute-recursive-tags.outputs.final_IMAGE_TAG }}"
        
        # Add environment-specific build args if they exist
        if [ -n "${BENV_BASE_IMAGE_DISTRO}" ]; then
          BUILD_ARGS="${BUILD_ARGS} --build-arg BENV_BASE_IMAGE_DISTRO=${BENV_BASE_IMAGE_DISTRO}"
        fi
        
        if [ -n "${BENV_BASE_IMAGE_VERSION}" ]; then
          BUILD_ARGS="${BUILD_ARGS} --build-arg BENV_BASE_IMAGE_VERSION=${BENV_BASE_IMAGE_VERSION}"
        fi
        
        # Add CMAKE_BUILD_TYPE (defaults to Release if not set)
        CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Release}"
        BUILD_ARGS="${BUILD_ARGS} --build-arg CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
        
        # Add BUILD_CFLAGS based on build type
        if [ "${CMAKE_BUILD_TYPE}" = "Debug" ]; then
          BUILD_ARGS="${BUILD_ARGS} --build-arg BUILD_CFLAGS='-O0 -g'"
        fi
        
        # Build the image
        echo "Building image: ${FULL_IMAGE_TAG}"
        echo "Build args: ${BUILD_ARGS}"
        
        docker build -t "${FULL_IMAGE_TAG}" ${BUILD_ARGS} "${DIRECTORY}/"
        
        # Always push intermediate builds to cache registry (dry_run only affects final Docker Hub push)
        echo "Pushing image to cache registry: ${FULL_IMAGE_TAG}"
        docker push "${FULL_IMAGE_TAG}"


================================================
FILE: .github/pull_request_template.md
================================================
**Description:** <Describe what has changed.>
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->

**Link to tracking Issue:** <Issue number if applicable>

**Testing:** <Describe what testing was performed and which tests were added.>

**Documentation:** <Describe the documentation added.>

================================================
FILE: .github/renovate.json5
================================================
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:best-practices",
    "helpers:pinGitHubActionDigestsToSemver"
  ],
  "packageRules": [
    {
      "groupName": "all patch versions",
      "matchUpdateTypes": ["patch"],
      "schedule": ["before 8am every weekday"]
    },
    {
      "matchUpdateTypes": ["minor", "major"],
      "schedule": ["before 8am on Monday"]
    }
  ],
  "labels": [
    "dependencies"
  ]
}


================================================
FILE: .github/workflows/build-and-release.yaml
================================================
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

name: build-and-release
run-name: Publishing a release

on:
  workflow_dispatch:
    inputs:
      release_type:
        description: "Release type"
        required: true
        type: choice
        options:
          - public
          - unofficial
        default: public
      ref:
        description: "Tag, branch or SHA to checkout"
        required: true
        type: string
        default: "main"
      image_prefix:
        description: "Prefix to use for destination image name"
        required: false
        type: string
        default: "opentelemetry-ebpf-"
      additional_tag:
        description: "Additional tag to use when pushing to docker repository"
        required: false
        type: string
      dry_run:
        description: "Build everything but don't actually push to repository"
        required: false
        type: boolean
        default: false
  workflow_call:
    inputs:
      release_type:
        description: "Release type"
        required: true
        type: string
      ref:
        description: "Tag, branch or SHA to checkout"
        required: true
        type: string
      image_prefix:
        description: "Prefix to use for destination image name"
        required: false
        type: string
        default: "opentelemetry-ebpf-"
      additional_tag:
        description: "Additional tag to use when pushing to docker repository"
        required: false
        type: string
      dry_run:
        description: "Build everything but don't actually push to repository"
        required: false
        type: boolean
        default: false

permissions:
  contents: write
  packages: write

env:
  BENV_IMAGE: ${{ vars.BENV_IMAGE || 'docker.io/otel/opentelemetry-network-build-tools' }}
  DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
  DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
  DOCKER_REGISTRY: ${{ vars.DOCKER_REGISTRY }}
  DOCKER_NAMESPACE: ${{ vars.DOCKER_NAMESPACE }}
  IMAGE_PREFIX: ${{ inputs.image_prefix || 'opentelemetry-ebpf-' }}
  RELEASE_TYPE: ${{ inputs.release_type || 'public' }}
  DRY_RUN: ${{ inputs.dry_run && 'true' || 'false' }}

jobs:
  compute-version:
    name: Compute version
    runs-on: ubuntu-24.04
    outputs:
      git_short_hash: ${{ steps.version.outputs.git_short_hash }}
      short_version_number: ${{ steps.version.outputs.short_version_number }}
      full_version_number: ${{ steps.version.outputs.full_version_number }}
      github_tag: ${{ steps.version.outputs.github_tag }}
    steps:
      - name: Checkout sources
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ inputs.ref }}
          fetch-depth: 0
      - name: Compute version numbers
        id: version
        run: |
          source ./version.sh
          git_short_hash=$(git rev-parse --short=8 HEAD)
          short_version_number="${EBPF_NET_MAJOR_VERSION}.${EBPF_NET_MINOR_VERSION}"
          full_version_number="${EBPF_NET_MAJOR_VERSION}.${EBPF_NET_MINOR_VERSION}.${EBPF_NET_PATCH_VERSION}"
          if [[ "${RELEASE_TYPE}" == "public" ]]; then
            github_tag=v${full_version_number}
          else
            github_tag=v${full_version_number}-${git_short_hash}
          fi
          echo "git_short_hash=${git_short_hash}" >> "$GITHUB_OUTPUT"
          echo "short_version_number=${short_version_number}" >> "$GITHUB_OUTPUT"
          echo "full_version_number=${full_version_number}" >> "$GITHUB_OUTPUT"
          echo "github_tag=${github_tag}" >> "$GITHUB_OUTPUT"

  build-per-arch:
    name: Build ${{ matrix.arch }} artifacts
    needs: compute-version
    strategy:
      matrix:
        include:
          - arch: amd64
            runner: ubuntu-24.04
          - arch: arm64
            runner: ubuntu-24.04-arm
    runs-on: ${{ matrix.runner }}
    steps:
      - name: Checkout sources
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ inputs.ref }}
          fetch-depth: 0
          submodules: false
          path: src
      - name: Checkout ext/ submodules
        run: |
          cd $GITHUB_WORKSPACE/src
          git submodule update --init --recursive ext/
      - name: Fetch build environment
        run: |
          docker pull $BENV_IMAGE
      - name: Create and fix permissions for output directory
        run: |
          mkdir -p $GITHUB_WORKSPACE/out
          sudo chown -R 1000:1000 $GITHUB_WORKSPACE/out
      - name: Build artifacts
        run: |
          docker run -d -p 5000:5000 --name registry docker.io/library/registry:2
          docker run -t --rm \
            --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \
            --mount "type=bind,source=$GITHUB_WORKSPACE/src,destination=/home/user/src,readonly" \
            --mount "type=bind,source=$GITHUB_WORKSPACE/out,destination=/home/user/out" \
            --env EBPF_NET_SRC_ROOT=/home/user/src \
            --network host \
            --privileged \
            $BENV_IMAGE \
            ./build.sh pipeline-docker-registry
          docker pull localhost:5000/reducer
          docker pull localhost:5000/kernel-collector  
          docker pull localhost:5000/cloud-collector
          docker pull localhost:5000/k8s-collector
      - name: Build packages
        run: |
          docker run -t --rm \
            --mount "type=bind,source=$GITHUB_WORKSPACE/src,destination=/home/user/src,readonly" \
            --mount "type=bind,source=$GITHUB_WORKSPACE/out,destination=/home/user/out" \
            --env EBPF_NET_SRC_ROOT=/home/user/src \
            --workdir /home/user/out \
            $BENV_IMAGE \
            cpack -G 'RPM;DEB'
      - name: Log-in to container registry
        run: |
          docker login --username="$DOCKER_USERNAME" --password-stdin $DOCKER_REGISTRY <<< "$DOCKER_PASSWORD"
      - name: Tag and push arch-specific images
        run: |
          docker_registry=$(sed -e 's,^https://,,' -e 's,/*$,,' <<< $DOCKER_REGISTRY)
          images=(reducer kernel-collector cloud-collector k8s-collector)
          for image in ${images[@]}; do
            image_name="${IMAGE_PREFIX}${image}"
            image_path="${docker_registry}/${DOCKER_NAMESPACE}/${image_name}"
            docker tag localhost:5000/$image ${image_path}:${{ matrix.arch }}-${{ needs.compute-version.outputs.git_short_hash }}
            if [[ "${DRY_RUN}" == "false" ]]; then
              docker push ${image_path}:${{ matrix.arch }}-${{ needs.compute-version.outputs.git_short_hash }}
            fi
          done
          docker stop registry || true
          docker rm registry || true
      - name: Upload packages
        uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
        with:
          name: packages-${{ matrix.arch }}
          path: |
            out/opentelemetry-ebpf-*.rpm
            out/opentelemetry-ebpf-*.deb

  create-manifests:
    name: Create multi-arch manifests
    needs: [compute-version, build-per-arch]
    runs-on: ubuntu-24.04
    if: ${{ inputs.dry_run != true }}
    steps:
      - name: Log-in to container registry
        run: |
          docker login --username="$DOCKER_USERNAME" --password-stdin $DOCKER_REGISTRY <<< "$DOCKER_PASSWORD"
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3
      - name: Create and push multi-arch manifests
        run: |
          docker_registry=$(sed -e 's,^https://,,' -e 's,/*$,,' <<< $DOCKER_REGISTRY)
          git_short_hash="${{ needs.compute-version.outputs.git_short_hash }}"
          short_version="${{ needs.compute-version.outputs.short_version_number }}"
          full_version="${{ needs.compute-version.outputs.full_version_number }}"
          
          if [[ "${RELEASE_TYPE}" == "public" ]]; then
            tags=(latest latest-v${short_version} v${full_version})
          else
            tags=(v${full_version}-${git_short_hash})
          fi
          
          if [[ "${{ inputs.additional_tag }}" != "" ]]; then
            tags=(${tags[@]} "${{ inputs.additional_tag }}")
          fi
          
          images=(reducer kernel-collector cloud-collector k8s-collector)
          
          for image in ${images[@]}; do
            image_name="${IMAGE_PREFIX}${image}"
            image_path="${docker_registry}/${DOCKER_NAMESPACE}/${image_name}"
            amd64_tag="${image_path}:amd64-${git_short_hash}"
            arm64_tag="${image_path}:arm64-${git_short_hash}"
            
            for tag in ${tags[@]}; do
              docker buildx imagetools create --tag "${image_path}:${tag}" \
                "${amd64_tag}" \
                "${arm64_tag}"
              echo "Created multi-arch manifest: ${image_path}:${tag}"
            done
          done

  upload-release:
    name: Upload release artifacts
    needs: [compute-version, build-per-arch]
    runs-on: ubuntu-24.04
    if: ${{ inputs.dry_run != true }}
    steps:
      - name: Download all packages
        uses: actions/download-artifact@v4
        with:
          pattern: packages-*
          merge-multiple: true
          path: packages
      - name: Upload packages to Release
        uses: softprops/action-gh-release@5be0e66d93ac7ed76da52eca8bb058f665c3a5fe
        with:
          tag_name: ${{ needs.compute-version.outputs.github_tag }}
          prerelease: ${{ env.RELEASE_TYPE != 'public' }}
          files: packages/*


================================================
FILE: .github/workflows/build-and-test.yaml
================================================
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

name: build-and-test
run-name: ${{ github.actor }} is running  GitHub Actions
on:
  push:
    branches:
      - main
  pull_request:
    paths:

permissions:
  contents: read

env:
  BENV_IMAGE: ${{ vars.BENV_IMAGE || 'docker.io/otel/opentelemetry-network-build-tools' }}

# concurrency:
#   group: build-and-test-${{ github.event.pull_request_number || github.ref }}
#   cancel-in-progress: true

jobs:
  clang-format-check:
    runs-on: ubuntu-24.04
    name: clang-format-check

    steps:
    - name: Print github workspace
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        echo "pr.ref = ${{github.event.pull_request.head.ref}}"
        echo "github.ref = ${{ github.ref }}"
        echo "$GITHUB_CONTEXT"

    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

    - name: Get current date
      id: date
      run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT

    - name: Runs format checker
      run: |
        # disable man page updates for faster apt install
        echo "set man-db/auto-update false" | sudo debconf-communicate || true
        sudo dpkg-reconfigure man-db

        sudo apt update
        sudo apt install -y --no-install-recommends clang-format-19
        cd ${{ github.workspace }}
        ./.github/workflows/scripts/check-clang-format.sh

    outputs:
      date: ${{ steps.date.outputs.date }}

  cargo-test:
    name: cargo-test
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Run cargo test
      env:
        PASS: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/

        docker run -t \
        --rm \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        $BENV_IMAGE \
        ./build.sh cargo-test

  build-reducer:
    name: build-reducer
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-reducer
        max-size: 1G
        verbose: 2

    - name: build-reducer
      env:
        PASS: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        
        # Start local registry for the build process
        docker run -d -p 5000:5000 --name registry docker.io/library/registry:2
        
        # Build reducer with registry access
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true
        
        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        --network host \
        --privileged \
        $BENV_IMAGE \
        ./build.sh reducer-docker-registry
        
        # Export reducer container
        mkdir -p container-exports
        docker pull localhost:5000/reducer
        docker save localhost:5000/reducer > container-exports/reducer.tar
        
        # Clean up registry
        docker stop registry
        docker rm registry

    - name: Upload reducer container
      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
      with:
        name: reducer-container
        path: container-exports/reducer.tar
        if-no-files-found: error
        retention-days: 1

  build-kernel-collector:
    name: build-kernel-collector
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-kernel-collector
        max-size: 1G
        verbose: 2

    - name: build-kernel-collector
      env:
        PASS: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        
        # Start local registry for the build process
        docker run -d -p 5000:5000 --name registry docker.io/library/registry:2
        
        # Build kernel-collector with registry access
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true
        
        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        --network host \
        --privileged \
        $BENV_IMAGE \
        ./build.sh kernel-collector-docker-registry
        
        # Export kernel-collector container
        mkdir -p container-exports
        docker pull localhost:5000/kernel-collector
        docker save localhost:5000/kernel-collector > container-exports/kernel-collector.tar
        
        # Clean up registry
        docker stop registry
        docker rm registry

    - name: Upload kernel collector container
      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
      with:
        name: kernel-collector-container
        path: container-exports/kernel-collector.tar
        if-no-files-found: error
        retention-days: 1

  build-kernel-collector-test:
    name: build-kernel-collector-test
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-kernel-collector-test
        max-size: 1G
        verbose: 2

    - name: build kernel-collector-test container
      env:
        PASS: ${{ secrets.DOCKER_PASSWORD }}
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        
        # Start local registry for the build process
        docker run -d -p 5000:5000 --name registry docker.io/library/registry:2
        
        # Build kernel-collector-test with registry access
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true
        
        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        --network host \
        --privileged \
        $BENV_IMAGE \
        ./build.sh kernel-collector-test-docker-registry
        
        # Export kernel-collector-test container
        mkdir -p container-exports
        docker pull localhost:5000/kernel-collector-test
        docker save localhost:5000/kernel-collector-test > container-exports/kernel-collector-test.tar
        
        # Clean up registry
        docker stop registry
        docker rm registry

    - name: Upload kernel-collector-test container
      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
      with:
        name: kernel-collector-test-container
        path: container-exports/kernel-collector-test.tar
        if-no-files-found: error
        retention-days: 1

  build-k8s-collector:
    name: build-k8s-collector
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-k8s-collector
        max-size: 1G
        verbose: 2

    - name: build k8s-collector
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        
        # Start local registry for the build process
        docker run -d -p 5000:5000 --name registry docker.io/library/registry:2
        
        # Build k8s-collector with registry access
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true

        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        --network host \
        --privileged \
        $BENV_IMAGE \
        ./build.sh k8s-collector-docker-registry
        
        # Export k8s-collector container
        mkdir -p container-exports
        docker pull localhost:5000/k8s-collector
        docker save localhost:5000/k8s-collector > container-exports/k8s-collector.tar
        
        # Clean up registry
        docker stop registry
        docker rm registry

    - name: Upload k8s-collector container
      uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
      with:
        name: k8s-collector-container
        path: container-exports/k8s-collector.tar
        if-no-files-found: error
        retention-days: 1

  build-cloud-collector:
    name: build-cloud-collector
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-cloud-collector
        max-size: 1G
        verbose: 2

    - name: build cloud-collector
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true

        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        $BENV_IMAGE \
        ./build.sh cloud-collector

  build-run-unit-tests:
    name: build-run-unit-tests
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0
    
    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-run-unit-tests
        max-size: 1G
        verbose: 2
    - name: run unit tests
      run: |
        echo "github.workspace = ${{ github.workspace }}"
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true

        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        --env ARGS="--output-on-failure --repeat until-pass:3" \
        --env SPDLOG_LEVEL="trace" \
        $BENV_IMAGE \
        ./build.sh unit_tests test

  build-run-unit-tests-with-asan-and-debug-flags:
    name: build-run-unit-tests-with-asan-and-debug-flags
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-run-unit-tests-asan-debug
        max-size: 1G
        verbose: 2
    - name: build unit tests with asan and debug flags on then run all tests
      run: |
        docker pull $BENV_IMAGE
        git submodule update  --init --recursive ext/
        # Ensure ccache directory is writable inside container
        mkdir -p "${{ github.workspace }}/.ccache"
        chmod -R 777 "${{ github.workspace }}/.ccache" || true

        docker run -t \
        --rm \
        --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
        --mount "type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock" \
        --mount "type=bind,source=$(git rev-parse --show-toplevel),destination=/home/user/src,readonly" \
        --env EBPF_NET_SRC_ROOT=/home/user/src \
        --env CCACHE_DIR=/ccache \
        --env ARGS="--output-on-failure --repeat until-pass:3 -E render_test" \
        --env SPDLOG_LEVEL="trace" \
        $BENV_IMAGE \
        ./build.sh --debug --asan unit_tests test

  build-deb-rpm:
    name: build-deb-rpm
    runs-on: ubuntu-24.04
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Cache and install ccache
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        packages: ccache
        version: 1.0

    - name: Setup ccache
      uses: hendrikmuhs/ccache-action@v1.2
      with:
        key: ccache-build-packages
        max-size: 1G
        verbose: 2

    - name: Build RPM/DEB packages
      run: |
        # Prepare output and ccache directories
        mkdir -p "${{ github.workspace }}/out"
        mkdir -p "${{ github.workspace }}/.ccache"
        # Ensure the build container user (uid 1000) can write here
        sudo chown -R 1000:1000 "${{ github.workspace }}/out" || true
        chmod -R 777 "${{ github.workspace }}/.ccache" || true

        docker pull $BENV_IMAGE
        git submodule update --init --recursive ext/

        # Configure and build the project into /home/user/out
        docker run -t --rm \
          --mount "type=bind,source=${{ github.workspace }}/.ccache,destination=/ccache" \
          --mount "type=bind,source=${{ github.workspace }},destination=/home/user/src,readonly" \
          --mount "type=bind,source=${{ github.workspace }}/out,destination=/home/user/out" \
          --env EBPF_NET_SRC_ROOT=/home/user/src \
          --env CCACHE_DIR=/ccache \
          $BENV_IMAGE \
          ./build.sh pipeline

        # Run CPack in the configured build directory
        docker run -t --rm \
          --mount "type=bind,source=${{ github.workspace }},destination=/home/user/src,readonly" \
          --mount "type=bind,source=${{ github.workspace }}/out,destination=/home/user/out" \
          --env EBPF_NET_SRC_ROOT=/home/user/src \
          --workdir /home/user/out \
          $BENV_IMAGE \
          cpack -G 'RPM;DEB'

  e2e-otel-jsonl:
    name: e2e-otel-jsonl
    needs: [build-reducer, build-kernel-collector, build-k8s-collector]
    runs-on: ubuntu-24.04
    timeout-minutes: 15
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Set up kind cluster
      uses: helm/kind-action@v1.10.0
      with:
        version: v0.30.0
        cluster_name: e2e-kind

    - name: Download reducer container
      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
      with:
        name: reducer-container
        path: ./container-exports

    - name: Download kernel-collector container
      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
      with:
        name: kernel-collector-container
        path: ./container-exports

    - name: Download k8s-collector container
      uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
      with:
        name: k8s-collector-container
        path: ./container-exports

    - name: Load images and prepare config/output
      run: |
        set -euxo pipefail
        docker load < container-exports/reducer.tar
        docker load < container-exports/kernel-collector.tar
        docker load < container-exports/k8s-collector.tar

        mkdir -p e2e-out
        # ensure otelcol (which runs non-root) can write here regardless of uid mapping
        chmod 0777 e2e-out
        cat > otel-e2e-config.yaml <<'EOF'
        receivers:
          otlp:
            protocols:
              grpc:
                endpoint: 0.0.0.0:4317

        processors:
          batch: {}

        exporters:
          file:
            path: /out/otel.jsonl
            # keep default json lines, rotate small just in case
            rotation:
              max_megabytes: 5
              max_days: 1
            format: json

        service:
          pipelines:
            metrics:
              receivers: [otlp]
              processors: [batch]
              exporters: [file]
            logs:
              receivers: [otlp]
              processors: [batch]
              exporters: [file]
        EOF

    - name: Start OpenTelemetry Collector
      run: |
        set -euxo pipefail
        # Use contrib distribution to ensure file exporter availability
        docker pull otel/opentelemetry-collector-contrib:0.102.0
        docker run -d --rm \
          --name otelcol-e2e \
          --network host \
          -v "$(pwd)/otel-e2e-config.yaml:/etc/otelcol/config.yaml:ro" \
          -v "$(pwd)/e2e-out:/out" \
          otel/opentelemetry-collector-contrib:0.102.0 \
          --config=/etc/otelcol/config.yaml
        # Give the collector a moment to start
        sleep 3
        docker logs --tail 50 otelcol-e2e || true

    - name: Start reducer
      run: |
        set -euxo pipefail
        REDUCER_ID=$(docker run -d --rm \
          --name reducer-e2e \
          --network host \
          localhost:5000/reducer \
          --port 8000 \
          --prom 0.0.0.0:7000 \
          --partitions-per-shard 1 \
          --num-ingest-shards=1 \
          --num-matching-shards=1 \
          --num-aggregation-shards=1 \
          --enable-aws-enrichment \
          --enable-id-id \
          --enable-flow-logs \
          --enable-otlp-grpc-metrics \
          --otlp-grpc-metrics-host 127.0.0.1 \
          --otlp-grpc-metrics-port 4317 \
          --log-console \
          --debug \
          --log-whitelist-all)
        echo "Reducer started: ${REDUCER_ID}"
        # brief wait to ensure listener is up
        sleep 5
        docker logs --tail 100 reducer-e2e || true

    - name: Start kernel collector
      run: |
        set -euxo pipefail
        KERNEL_ID=$(docker run -d --rm \
          --name kernel-collector-e2e \
          --env EBPF_NET_INTAKE_HOST="127.0.0.1" \
          --env EBPF_NET_INTAKE_PORT="8000" \
          --env EBPF_NET_HOST_DIR="/hostfs" \
          --privileged \
          --network host \
          --pid host \
          --volume /var/run/docker.sock:/var/run/docker.sock \
          --volume /sys/fs/cgroup:/hostfs/sys/fs/cgroup \
          --volume /usr/src:/hostfs/usr/src \
          --volume /lib/modules:/hostfs/lib/modules \
          --volume /etc:/hostfs/etc \
          --volume /var/cache:/hostfs/cache \
          localhost:5000/kernel-collector \
          --log-console)
        echo "Kernel collector started: ${KERNEL_ID}"
        # give it a moment to initialize BPF
        sleep 15
        docker logs --tail 50 kernel-collector-e2e || true

    - name: Start k8s collector
      run: |
        set -euxo pipefail
        KUBECONFIG_PATH="${KUBECONFIG:-$HOME/.kube/config}"
        if [ ! -f "${KUBECONFIG_PATH}" ]; then
          echo "KUBECONFIG not found at ${KUBECONFIG_PATH}"
          ls -la "${HOME}" || true
          ls -la "${HOME}/.kube" || true
          exit 1
        fi

        echo "Using kubeconfig at ${KUBECONFIG_PATH}"
        kubectl config current-context || true

        K8S_COLLECTOR_ID=$(docker run -d \
          --name k8s-collector-e2e \
          --network host \
          --env EBPF_NET_INTAKE_HOST="127.0.0.1" \
          --env EBPF_NET_INTAKE_PORT="8000" \
          --env RUST_LOG="info" \
          --env KUBECONFIG="/kubeconfig" \
          --volume "${KUBECONFIG_PATH}:/kubeconfig:ro" \
          localhost:5000/k8s-collector)
        echo "k8s-collector started: ${K8S_COLLECTOR_ID}"
        # allow it to connect and start watching
        sleep 10
        docker logs --tail 100 k8s-collector-e2e || true

    - name: Generate traffic and wait for collection
      run: |
        set -euxo pipefail
        # Deploy Kubernetes traffic generator in the kind cluster
        KUBECONFIG_PATH="${KUBECONFIG:-$HOME/.kube/config}"
        if [ ! -f "${KUBECONFIG_PATH}" ]; then
          echo "KUBECONFIG not found at ${KUBECONFIG_PATH}"
          ls -la "${HOME}" || true
          ls -la "${HOME}/.kube" || true
          exit 1
        fi

        kubectl create namespace e2e-kind || true

        cat > e2e-kind-traffic.yaml <<'EOF'
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: e2e-wget
          namespace: e2e-kind
          labels:
            app: e2e-wget
            e2e-role: traffic
        spec:
          replicas: 10
          selector:
            matchLabels:
              app: e2e-wget
          template:
            metadata:
              labels:
                app: e2e-wget
                e2e-role: traffic
            spec:
              containers:
              - name: wget
                image: busybox:1.36
                command:
                  - /bin/sh
                  - -c
                  - |
                    echo "e2e-wget: starting in pod $(hostname)"
                    echo "e2e-wget: uname: $(uname -a || echo 'uname failed')"
                    echo "e2e-wget: /etc/resolv.conf:"
                    cat /etc/resolv.conf || echo "e2e-wget: unable to read /etc/resolv.conf"
                    echo "e2e-wget: testing DNS for example.com"
                    nslookup example.com || echo "e2e-wget: nslookup example.com failed (command may be missing)"
                    TARGET_URL="http://example.com"
                    echo "e2e-wget: running wget to ${TARGET_URL}"
                    if wget --timeout=15 --tries=3 -O /dev/null "${TARGET_URL}"; then
                      echo "e2e-wget: wget succeeded"
                    else
                      ec=$?
                      echo "e2e-wget: wget failed with exit code ${ec}"
                    fi
                    echo "e2e-wget: finished, sleeping"
                    # keep the pod running long enough that it does not restart during the test
                    sleep 600
        EOF

        kubectl apply -f e2e-kind-traffic.yaml
        kubectl -n e2e-kind rollout status deploy/e2e-wget --timeout=180s
        kubectl -n e2e-kind get pods -o wide || true

        # Allow time for metrics to propagate and be exported through collectors
        sleep 60

    - name: Stop services and collect logs
      if: always()
      run: |
        set -euxo pipefail
        mkdir -p e2e-logs || true
        docker ps || true
        # Capture full container logs to files for later inspection
        docker logs k8s-collector-e2e > e2e-logs/k8s-collector-e2e.log 2>&1 || true
        docker logs kernel-collector-e2e > e2e-logs/kernel-collector-e2e.log 2>&1 || true
        docker logs reducer-e2e > e2e-logs/reducer-e2e.log 2>&1 || true
        docker logs otelcol-e2e > e2e-logs/otelcol-e2e.log 2>&1 || true
        # Also emit a short tail to the job logs for quick debugging
        docker logs --tail 200 k8s-collector-e2e || true
        docker logs --tail 200 kernel-collector-e2e || true
        docker logs --tail 200 reducer-e2e || true
        docker logs --tail 200 otelcol-e2e || true
        docker stop k8s-collector-e2e || true
        docker rm k8s-collector-e2e || true
        docker stop kernel-collector-e2e || true
        docker stop reducer-e2e || true
        docker stop otelcol-e2e || true
        ls -la e2e-out || true
        sudo chmod -R a+r e2e-out || true
        # Show a small preview for debugging convenience
        if [ -f e2e-out/otel.jsonl ]; then head -n 50 e2e-out/otel.jsonl || true; fi

    - name: Upload OpenTelemetry JSONL
      if: always()
      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
      with:
        name: e2e-otel-jsonl
        path: |
          e2e-out/*
        if-no-files-found: warn
        retention-days: 7

    - name: Upload e2e container logs
      if: always()
      uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
      with:
        name: e2e-container-logs
        path: |
          e2e-logs/*
        if-no-files-found: warn
        retention-days: 7

    - name: Show tcp.bytes metrics from JSONL
      if: always()
      run: |
        set +e
        if [ ! -f e2e-out/otel.jsonl ]; then
          echo "e2e-out/otel.jsonl not found; skipping tcp.bytes display"
          exit 0
        fi

        if ! command -v jq >/dev/null 2>&1; then
          echo "jq not found; attempting to install"
          sudo apt-get update && sudo apt-get install -y jq || true
        fi

        if ! command -v jq >/dev/null 2>&1; then
          echo "jq still not available; skipping tcp.bytes display"
          exit 0
        fi

        echo "=== tcp.bytes metrics (pretty-printed) ==="
        jq '
          .resourceMetrics[]?
          | .scopeMetrics[]?
          | .metrics[]?
          | select(.name == "tcp.bytes")
        ' e2e-out/otel.jsonl || true

    - name: Show wget pod logs
      if: always()
      run: |
        set +e
        KUBECONFIG_PATH="${KUBECONFIG:-$HOME/.kube/config}"
        if [ ! -f "${KUBECONFIG_PATH}" ]; then
          echo "KUBECONFIG not found; skipping wget pod logs"
          exit 0
        fi

        echo "=== e2e-kind namespace pods ==="
        kubectl -n e2e-kind get pods -o wide || true

        echo "=== e2e-wget pod logs (tail) ==="
        kubectl -n e2e-kind logs -l app=e2e-wget --tail=100 || true

  run-kernel-collector-simple-tests:
    name: run-kernel-collector-simple-tests
    needs: [build-kernel-collector]
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        include:
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '5.4-20250721.013324'
            description: 'Kernel 5.4'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '5.10-20250507.063028'
            description: 'Kernel 5.10'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '5.15-20250507.063028'
            description: 'Kernel 5.15'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '6.1-20250507.063028'
            description: 'Kernel 6.1'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '6.6-20250507.063028'
            description: 'Kernel 6.6'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '6.12-20250507.063028'
            description: 'Kernel 6.12'
    timeout-minutes: 10
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Download kernel-collector container
      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
      with:
        name: kernel-collector-container
        path: ./container-exports

    - name: Cache and install LVH host dependencies
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        # Match LVH action.yaml dependency_list exactly
        packages: cpu-checker qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
        version: lvh-deps-1

    - name: Run kernel collector simple tests on ${{ matrix.description }}
      uses: yonch/little-vm-helper@main
      with:
        test-name: kernel-collector-simple-test-${{ matrix.kernel }}
        image: 'complexity-test'
        image-version: ${{ matrix.kernel }}
        host-mount: ./
        images-folder-parent: "/tmp"
        cpu: 2
        mem: 2G
        cpu-kind: 'host,pmu=on'
        lvh-version: "v0.0.23"
        install-dependencies: 'true'
        verbose: 'true'
        cmd: |
          set -e  # Exit on any error
          cd /host
          
          # Load container images
          docker load < container-exports/kernel-collector.tar
          
          # Start nc listener
          apt-get update && apt-get install -y netcat-openbsd
          
          echo "Starting netcat listener on port 8000..."
          nc -vl 8000 &
          nc_pid=$!
          echo "NC listener started with PID: $nc_pid"
          
          # Wait a moment for nc to start
          sleep 2
          
          # Test: Verify kernel collector loads successfully with libbpf
          echo "=== Kernel Collector Simple Test with libbpf ==="
          
          # Run kernel collector and verify it starts successfully
          container_id=$(docker create \
            --name "test-kernel-collector-libbpf" \
            --env EBPF_NET_INTAKE_PORT="8000" \
            --env EBPF_NET_INTAKE_HOST="127.0.0.1" \
            --env EBPF_NET_HOST_DIR="/hostfs" \
            --privileged --pid host --network host \
            --volume /sys/fs/cgroup:/hostfs/sys/fs/cgroup \
            --volume /etc:/hostfs/etc \
            --volume /var/run/docker.sock:/var/run/docker.sock \
            localhost:5000/kernel-collector --log-console --debug)
          
          echo "Starting kernel collector and running for 30 seconds..."
          docker start $container_id &
          collector_pid=$!
          
          # Wait for 30 seconds
          sleep 30
          
          # Check if container is still running
          echo Checking if container is still running:
          if docker ps --filter "id=$container_id" --filter "status=running" --quiet > /dev/null; then
            echo "✓ Kernel collector loaded successfully and ran for 30 seconds"
            echo "---Kernel collector logs:"
            collector_logs=$(docker logs $container_id 2>&1 || true)
            echo "$collector_logs"
            
            # Fail if a crash was detected in the kernel collector logs
            if echo "$collector_logs" | grep -qi "CRASH DETECTED"; then
              echo "✗ Crash detected in kernel collector output - test failed"
              docker stop $container_id || true
              docker rm $container_id || true
              # Stop nc listener
              kill $nc_pid || true
              exit 1
            fi
            
            # Check for error strings in the logs (exclude GCP metadata fetch errors which are expected)
            if echo "$collector_logs" | grep -i "error" | grep -v "Unable to fetch GCP metadata: error while fetching Google Cloud Platform instance metadata" > /dev/null 2>&1; then
              echo "✗ Found 'error' in kernel collector output - test failed"
              docker stop $container_id || true
              docker rm $container_id || true
              # Stop nc listener
              kill $nc_pid || true
              exit 1
            fi
            
            docker stop $container_id || true
            docker rm $container_id || true
            # Stop nc listener
            kill $nc_pid || true
            exit 0
          else
            echo "✗ Kernel collector failed to run properly"
            echo "---Kernel collector logs:"
            docker logs $container_id || true
            docker rm $container_id || true
            # Stop nc listener
            kill $nc_pid || true
            exit 1
          fi

    - name: Stop qemu
      if: always()
      run: |
        sudo pkill -f qemu-system-x86_64 || true

  run-kernel-collector-tests:
    name: run-kernel-collector-tests
    needs: [build-reducer, build-kernel-collector-test]
    runs-on: ubuntu-24.04
    strategy:
      fail-fast: false
      matrix:
        include:
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '5.4-20250721.013324'
            description: 'Kernel 5.4'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '5.10-20250507.063028'
            description: 'Kernel 5.10'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '5.15-20250507.063028'
            description: 'Kernel 5.15'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '6.1-20250507.063028'
            description: 'Kernel 6.1'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '6.6-20250507.063028'
            description: 'Kernel 6.6'
          # renovate: datasource=docker depName=quay.io/lvh-images/complexity-test
          - kernel: '6.12-20250507.063028'
            description: 'Kernel 6.12'
    timeout-minutes: 10
    steps:
    - name: Check out the codebase
      uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      with:
        fetch-depth: 0

    - name: Download reducer container
      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
      with:
        name: reducer-container
        path: ./container-exports

    - name: Download kernel-collector-test container
      uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
      with:
        name: kernel-collector-test-container
        path: ./container-exports

    - name: Cache and install LVH host dependencies
      uses: awalsh128/cache-apt-pkgs-action@latest
      with:
        # Match LVH action.yaml dependency_list exactly
        packages: cpu-checker qemu-system-x86 libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
        version: lvh-deps-1

    - name: Run kernel collector tests on ${{ matrix.description }}
      uses: yonch/little-vm-helper@main
      with:
        test-name: kernel-collector-test-${{ matrix.kernel }}
        image: 'complexity-test'
        image-version: ${{ matrix.kernel }}
        host-mount: ./
        images-folder-parent: "/tmp"
        cpu: 2
        mem: 2G
        cpu-kind: 'host,pmu=on'
        lvh-version: "v0.0.23"
        install-dependencies: 'true'
        verbose: 'true'
        cmd: |
          set -e  # Exit on any error
          cd /host
          
          # Load container images
          docker load < container-exports/reducer.tar
          docker load < container-exports/kernel-collector-test.tar
          
          # Create data directory
          mkdir -p data
          
          # Start reducer
          reducer_id=$(docker run --detach --rm \
            --network=host \
            localhost:5000/reducer \
            --port 8000 \
            --prom 0.0.0.0:7000 \
            --partitions-per-shard 1 \
            --num-ingest-shards=1 \
            --num-matching-shards=1 \
            --num-aggregation-shards=1 \
            --enable-aws-enrichment \
            --enable-otlp-grpc-metrics \
            --log-console \
            --debug)
          
          echo "Reducer started with ID: $reducer_id"
          
          # Wait a moment for reducer to start
          sleep 5
          
          # Run kernel collector test and capture real exit code
          echo "Starting kernel collector test..."
          set +e  # disable exit on error to capture exit status
          docker run --name kernel-collector-test-$$ \
            --rm \
            --env EBPF_NET_HOST_DIR="/hostfs" \
            --privileged \
            --network host \
            --volume /sys/fs/cgroup:/hostfs/sys/fs/cgroup \
            --volume /usr/src:/hostfs/usr/src \
            --volume /lib/modules:/hostfs/lib/modules \
            --volume /etc:/hostfs/etc \
            --volume /var/cache:/hostfs/cache \
            --volume /var/run/docker.sock:/var/run/docker.sock \
            --env EBPF_NET_KERNEL_HEADERS_AUTO_FETCH="true" \
            --env EBPF_NET_EXPORT_BPF_SRC_FILE="/hostfs/data/bpf.src.c" \
            --volume "$(pwd)/data:/hostfs/data" \
            localhost:5000/kernel-collector-test \
            --log-console
          test_exit_code=$?
          set -e  # re-enable exit on error
          
          # Stop reducer
          docker stop $reducer_id || true
          
          echo "Test completed with exit code: $test_exit_code"
          exit $test_exit_code

    - name: Stop qemu
      if: always()
      run: |
        sudo pkill -f qemu-system-x86_64 || true

    - name: Upload kernel-collector dumps
      if: always()
      uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
      with:
        name: kernel-collector-dumps-${{ matrix.kernel }}
        path: |
          data/*.json
        if-no-files-found: warn


================================================
FILE: .github/workflows/build-benv-multiarch.yaml
================================================
name: build-benv-multiarch

on:
  workflow_dispatch:
  push:
    branches: [ main ]
    paths:
      - 'build-tools/**'
      - '.github/workflows/build-benv-multiarch.yaml'

permissions:
  contents: read
  packages: write

jobs:
  context:
    runs-on: ubuntu-latest
    outputs:
      short-sha: ${{ steps.s.outputs.s }}
    steps:
      - name: Checkout code
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      - name: Get short SHA
        id: s
        run: echo "s=$(git rev-parse --short=7 ${{ github.sha }})" >> "$GITHUB_OUTPUT"

  build-amd64:
    needs: context
    uses: ./.github/workflows/build-benv-single-arch.yaml
    permissions:
      contents: read
      packages: write
    with:
      runner: ubuntu-24.04
      arch: amd64
      ref: ${{ github.ref }}
      force_rebuild: false
      cache_registry: ghcr.io
    secrets: inherit

  build-arm64:
    needs: context
    uses: ./.github/workflows/build-benv-single-arch.yaml
    permissions:
      contents: read
      packages: write
    with:
      runner: ubuntu-24.04-arm
      arch: arm64
      ref: ${{ github.ref }}
      force_rebuild: false
      cache_registry: ghcr.io
    secrets: inherit

  manifest:
    needs: [context, build-amd64, build-arm64]
    if: github.event_name != 'pull_request'
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    env:
      GHCR_CACHE_REPO: ghcr.io/${{ github.repository_owner }}/opentelemetry-network-build-tools-cache
      DOCKER_REPO: docker.io/${{ vars.DOCKER_NAMESPACE || 'otel' }}/opentelemetry-network-build-tools
      SHORT_SHA: ${{ needs.context.outputs.short-sha }}
      AMD64_SRC: ${{ needs.build-amd64.outputs.final_image }}
      ARM64_SRC: ${{ needs.build-arm64.outputs.final_image }}
    steps:
      - name: Login to GHCR
        uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1

      - name: Create GHCR multi-arch cache manifest
        shell: bash
        run: |
          set -euo pipefail
          CACHE_TAG="$GHCR_CACHE_REPO:final-multiarch-$SHORT_SHA"
          docker buildx imagetools create --tag "$CACHE_TAG" "$AMD64_SRC" "$ARM64_SRC"
          docker buildx imagetools inspect "$CACHE_TAG"

      - name: Login to Docker Hub
        uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
        with:
          registry: docker.io
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Create Docker Hub multi-arch manifest
        shell: bash
        run: |
          set -euo pipefail
          MAIN_TAG="$DOCKER_REPO:git-$SHORT_SHA"
          docker buildx imagetools create --tag "$MAIN_TAG" "$AMD64_SRC" "$ARM64_SRC"
          if [ "${GITHUB_REF##*/}" = "main" ]; then
            docker buildx imagetools create --tag "$DOCKER_REPO:latest" "$AMD64_SRC" "$ARM64_SRC"
          fi
          docker buildx imagetools inspect "$MAIN_TAG"


================================================
FILE: .github/workflows/build-benv-single-arch.yaml
================================================
name: build-benv-single-arch

on:
  workflow_call:
    inputs:
      runner:
        description: Runner label (ubuntu-24.04 or ubuntu-24.04-arm)
        required: true
        type: string
      arch:
        description: Target architecture (amd64 or arm64)
        required: true
        type: string
      ref:
        description: Tag, branch or SHA to checkout
        required: false
        type: string
        default: main
      cache_registry:
        description: Cache registry to use (GHCR)
        required: false
        type: string
        default: ghcr.io
      force_rebuild:
        description: Force rebuild all containers (ignore cache)
        required: false
        type: boolean
        default: false
    outputs:
      final_image:
        description: Full image tag for the final stage in the cache registry
        value: ${{ jobs.build-final.outputs['full-image-tag'] }}

permissions:
  contents: read
  packages: write

env:
  CACHE_REGISTRY: ${{ inputs.cache_registry || 'ghcr.io' }}
  REF: ${{ inputs.ref || github.ref }}
  FORCE_REBUILD: ${{ inputs.force_rebuild || false }}

jobs:
  build-base:
    name: Build base image
    runs-on: ${{ inputs.runner }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push base image
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: base
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}


  build-libuv:
    name: Build libuv image
    runs-on: ${{ inputs.runner }}
    needs: build-base
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push libuv image
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: libuv
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}

  build-cpp-misc:
    name: Build cpp_misc image
    runs-on: ${{ inputs.runner }}
    needs: build-base
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push cpp_misc image
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: cpp_misc
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}

  build-libmaxminddb:
    name: Build libmaxminddb image
    runs-on: ${{ inputs.runner }}
    needs: build-base
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push libmaxminddb image
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: libmaxminddb
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}

  build-libbpf:
    name: Build libbpf image
    runs-on: ${{ inputs.runner }}
    needs: build-base
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push libbpf image
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: libbpf
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}

  build-aws-sdk:
    name: Build aws_sdk image
    runs-on: ${{ inputs.runner }}
    needs: [build-base]
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push aws_sdk image
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: aws_sdk
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}

  build-final:
    name: Build final image
    runs-on: ${{ inputs.runner }}
    needs: [
      build-base,
      build-libuv,
      build-aws-sdk,
      build-cpp-misc,
      build-libmaxminddb,
      build-libbpf
    ]
    outputs:
      image-tag: ${{ steps.build.outputs.image-tag }}
      full-image-tag: ${{ steps.build.outputs.full-image-tag }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          ref: ${{ env.REF }}

      - name: Build and push final image to cache registry
        id: build
        uses: ./.github/actions/build-tools-single-stage/
        with:
          directory: final
          arch: ${{ inputs.arch }}
          registry: ${{ env.CACHE_REGISTRY }}
          registry_username: ${{ github.actor }}
          registry_password: ${{ secrets.GITHUB_TOKEN }}
          ref: ${{ env.REF }}
          force_rebuild: ${{ env.FORCE_REBUILD }}


================================================
FILE: .github/workflows/fossa.yml
================================================
name: FOSSA scanning

on:
  push:
    branches:
      - main

permissions:
  contents: read

jobs:
  fossa:
    if: github.repository == 'open-telemetry/opentelemetry-network-build-tools'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - uses: fossas/fossa-action@3ebcea1862c6ffbd5cf1b4d0bd6b3fe7bd6f2cac # v1.7.0
        with:
          api-key: ${{secrets.FOSSA_API_KEY}}
          team: OpenTelemetry


================================================
FILE: .github/workflows/k8s-collector-integration.yaml
================================================
name: k8s-collector-integration

on:
  workflow_call:
  push:
    branches:
      - main
  pull_request:
    paths:
      - "crates/k8s-collector/**"
      - ".github/workflows/k8s-collector-integration.yaml"

jobs:
  build-k8s-collector-tests:
    runs-on: ubuntu-24.04
    steps:
      - name: Check out the codebase
        uses: actions/checkout@v4

      - name: Cache Rust build
        uses: Swatinem/rust-cache@v2
        with:
          prefix-key: k8s-collector-integration-${{ runner.os }}

      - name: Install Rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Build k8s-collector integration tests (no-run)
        run: |
          cargo test -p k8s-collector --tests --release --no-run

      - name: Collect k8s-collector integration test binary
        run: |
          set -euxo pipefail
          BIN=$(find target/release/deps -maxdepth 1 -type f -executable -name 'integration_test-*' | head -n 1)
          test -n "$BIN" || { echo "k8s-collector integration test binary not found"; exit 1; }
          cp "$BIN" k8s-collector-integration
          chmod +x k8s-collector-integration

      - name: Upload k8s-collector integration binary
        uses: actions/upload-artifact@v4
        with:
          name: k8s-collector-integration
          path: k8s-collector-integration
          if-no-files-found: error

  k8s-collector-e2e:
    needs: build-k8s-collector-tests
    runs-on: ubuntu-24.04
    timeout-minutes: 30
    steps:
      - name: Check out the codebase
        uses: actions/checkout@v4

      - name: Set up kind cluster
        uses: helm/kind-action@v1.10.0
        with:
          version: v0.30.0
          cluster_name: k8s-collector-e2e

      - name: Download k8s-collector integration binary
        uses: actions/download-artifact@v4
        with:
          name: k8s-collector-integration
          path: ./

      - name: Prepare test binary
        run: |
          chmod +x ./k8s-collector-integration || true

      - name: Run k8s-collector integration tests
        env:
          RUST_LOG: info
        run: |
          for i in {1..10}; do
            echo "k8s-collector integration test run ${i}/10"
            ./k8s-collector-integration --include-ignored --nocapture --test-threads=1 || exit 1
          done


================================================
FILE: .github/workflows/ossf-scorecard.yml
================================================
name: OSSF Scorecard

on:
  push:
    branches:
      - main
  schedule:
    - cron: "50 10 * * 3" # once a week
  workflow_dispatch:

permissions: read-all

jobs:
  analysis:
    if: github.repository == 'open-telemetry/opentelemetry-network-build-tools'
    runs-on: ubuntu-latest
    permissions:
      # Needed for Code scanning upload
      security-events: write
      # Needed for GitHub OIDC token if publish_results is true
      id-token: write
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          persist-credentials: false

      - uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3
        with:
          results_file: results.sarif
          results_format: sarif
          publish_results: true

      # Upload the results as artifacts (optional). Commenting out will disable
      # uploads of run results in SARIF format to the repository Actions tab.
      # https://docs.github.com/en/actions/advanced-guides/storing-workflow-data-as-artifacts
      - name: "Upload artifact"
        uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
        with:
          name: SARIF file
          path: results.sarif
          retention-days: 5

      # Upload the results to GitHub's code scanning dashboard (optional).
      # Commenting out will disable upload of results to your repo's Code Scanning dashboard
      - name: "Upload to code-scanning"
        uses: github/codeql-action/upload-sarif@014f16e7ab1402f30e7c3329d33797e7948572db # v4.31.3
        with:
          sarif_file: results.sarif


================================================
FILE: .github/workflows/release-please.yml
================================================
name: release-please

on:
  push:
    branches: [ main ]
  workflow_dispatch: {}

permissions:
  contents: write
  pull-requests: write

jobs:
  release-please:
    runs-on: ubuntu-24.04
    outputs:
      release_created: ${{ steps.release.outputs.release_created }}
      tag_name: ${{ steps.release.outputs.tag_name }}
    steps:
      - name: Run Release Please
        id: release
        uses: googleapis/release-please-action@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          config-file: release-please-config.json
          manifest-file: .release-please-manifest.json

  build-and-release:
    needs: release-please
    if: ${{ needs.release-please.outputs.release_created == 'true' }}
    uses: ./.github/workflows/build-and-release.yaml
    with:
      release_type: public
      # Build from the tag that Release Please just created (e.g., v0.12.0).
      ref: ${{ needs.release-please.outputs.tag_name }}
      image_prefix: opentelemetry-ebpf-
      additional_tag: ''
      dry_run: false
    secrets: inherit


================================================
FILE: .github/workflows/scripts/check-clang-format.sh
================================================
#!/bin/bash
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0


CLANG_FORMAT="clang-format-19"
if ! command -v ${CLANG_FORMAT}
then
  echo "ERROR: requires ${CLANG_FORMAT}"
  exit 1
fi

RC=0
CMD="${CLANG_FORMAT} -Werror --dry-run -style=file"
function check_file
{
  if ! ${CMD} $1
  then
    RC=1
  fi
}

# Check that C and C++ source files are properly clang-formatted
FILES=$(find ./geoip ./reducer ./test ./collector/kernel ./common ./tools \
	-type f                                                           \
	\( -name "*.c"                                                    \
	-o -name "*.cc"                                                   \
	-o -name "*.h"                                                    \
	-o -name "*.inl" \)                                               \
	-print)

for FILE in ${FILES}
do
  check_file ${FILE}
done

exit ${RC}


================================================
FILE: .github/workflows/trivy-scans.yml
================================================
name: trivy scans

on:
  push:
    branches:
      - main
  pull_request:
    paths:
      - '.github/workflows/trivy-scans.yml'
      - '.trivyignore'

permissions:
  contents: read

jobs:
  trivy-fs-scan:
    if: github.repository == 'open-telemetry/opentelemetry-network-build-tools'
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      - name: Run trivy filesystem scan
        uses: aquasecurity/trivy-action@b6643a29fecd7f34b3597bc6acb0a98b03d33ff8 # 0.33.1
        with:
          scan-type: 'fs'
          scan-ref: '.'
          skip-dirs: 'docs,cmake,ext'
          format: 'table'
          exit-code: '1'
          severity: 'CRITICAL,HIGH'
          ignore-unfixed: true
          vuln-type: 'os,library'
          timeout: 10m



================================================
FILE: .gitignore
================================================
*.o
*.pyc
*.bak
*.so
*.a
*~
!.*
*.backup
*.aux
*.log
*.out
*.profile
*.bbl
*.blg
*.brf
.autotools
.cproject
.*.cmd
.*.d
.deps
.dirstamp
*.la
*.lo
.libs
.pydevproject
.Rhistory
.settings
.settings/
.~lock*#
*.xxd
payload_trace.dat
trace_stats.csv
exec_at
generated/
.DS_Store
*.sw?
*.orig
target/

MANIFEST
.sconsign.dblite

CMakeFiles/
cmake_install.cmake
CMakeCache.txt
CTestTestfile.cmake
Testing/
install_manifest.txt

.idea/

aclocal.m4
configure
autom4te.cache
build-aux
install-sh
missing
py-compile
release/
out/

stamp-h1
src/Makefile
config.h
config.status
libtool

perf.data
perf.data.old

# Visual Studio Code
.vscode/settings.json
# Visual C++ cache files
ipch/

# Gnu Global
GPATH
GRTAGS
GTAGS


#local
Vagrantfile


================================================
FILE: .gitmodules
================================================
[submodule "ext/civetweb"]
	path = ext/civetweb
	url = https://github.com/civetweb/civetweb.git
[submodule "build-tools/libmaxminddb/libmaxminddb"]
	path = build-tools/libmaxminddb/libmaxminddb
	url = https://github.com/maxmind/libmaxminddb
[submodule "build-tools/libbpf/bpftool"]
	path = build-tools/libbpf/bpftool
	url = https://github.com/libbpf/bpftool.git
[submodule "build-tools/cpp_misc/lz4"]
	path = build-tools/cpp_misc/lz4
	url = https://github.com/lz4/lz4.git
[submodule "build-tools/aws_sdk/aws-sdk-cpp"]
	path = build-tools/aws_sdk/aws-sdk-cpp
	url = https://github.com/aws/aws-sdk-cpp
[submodule "build-tools/cpp_misc/json"]
	path = build-tools/cpp_misc/json
	url = https://github.com/nlohmann/json.git
[submodule "build-tools/libuv/libuv"]
	path = build-tools/libuv/libuv
	url = https://github.com/libuv/libuv.git
[submodule "build-tools/cpp_misc/spdlog"]
	path = build-tools/cpp_misc/spdlog
	url = https://github.com/gabime/spdlog.git
[submodule "build-tools/cpp_misc/args"]
	path = build-tools/cpp_misc/args
	url = https://github.com/Taywee/args.git
[submodule "build-tools/libbpf/libbpf"]
	path = build-tools/libbpf/libbpf
	url = https://github.com/libbpf/libbpf.git
[submodule "build-tools/cpp_misc/yaml-cpp"]
	path = build-tools/cpp_misc/yaml-cpp
	url = https://github.com/jbeder/yaml-cpp.git
[submodule "build-tools/cpp_misc/googletest"]
	path = build-tools/cpp_misc/googletest
	url = https://github.com/google/googletest.git
[submodule "ext/vmlinux.h"]
	path = ext/vmlinux.h
	url = https://github.com/libbpf/vmlinux.h.git


================================================
FILE: .release-please-manifest.json
================================================
{
  ".": "0.11.0"
}



================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file by Release Please.



================================================
FILE: CMakeLists.txt
================================================
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

cmake_minimum_required(VERSION 3.12)

# Load container-friendly defaults (paths, build type, version vars)
include(${CMAKE_CURRENT_LIST_DIR}/cmake/defaults.cmake)

project(
  opentelemetry-ebpf
  VERSION ${EBPF_NET_MAJOR_VERSION}.${EBPF_NET_MINOR_VERSION}.${EBPF_NET_PATCH_VERSION}
)

include(GNUInstallDirs)

list(
  APPEND
  CMAKE_MODULE_PATH
    ${CMAKE_CURRENT_LIST_DIR}/cmake
)

include(FindPkgConfig)

if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
  # Building as a subproject (submodule).
  set(EBPF_NET_SUBPROJECT TRUE)
endif()

# Custom modules
#
include(cpp-compiler)
include(ccache)
include(docker-utils)
include(sanitizer)
include(executable)
include(xxd)
include(shell)
include(debug)
include(lz4)
include(openssl)
include(civetweb)
include(curl)
include(curlpp)
include(spdlog)
include(aws-sdk)
include(geoip)
include(protobuf)
include(llvm)
include(clang)
include(libelf)
include(test)
include(uv)
include(abseil)
include(yamlcpp)
include(libbpf)
include(render)
include(cargo-test)
include(rust_cxxbridge)

include_directories(
  ${PROJECT_SOURCE_DIR}
  ${CMAKE_BINARY_DIR}
  ${CMAKE_INSTALL_PREFIX}
  ${CMAKE_INSTALL_PREFIX}/include
)

include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CONFIG_H_DIR ${CMAKE_CURRENT_BINARY_DIR})

add_custom_target(pipeline)
add_custom_target(pipeline-docker)
add_custom_target(pipeline-docker-registry)

add_subdirectory(renderc)
add_subdirectory(render)
add_subdirectory(config)
add_subdirectory(channel)
add_subdirectory(platform)
add_subdirectory(scheduling)
add_subdirectory(util)
add_subdirectory(geoip)
add_subdirectory(jitbuf)
add_subdirectory(collector)
add_subdirectory(reducer)
add_subdirectory(dev)
add_subdirectory(tools)
add_subdirectory(dist)

configure_file(config.h.cmake_in config.h)
configure_file(util/version_config.h.cmake_in util/version_config.h)

add_dependencies(pipeline collectors reducer)
add_dependencies(pipeline-docker collectors-docker)
add_dependencies(pipeline-docker-registry collectors-docker-registry)


================================================
FILE: Cargo.toml
================================================
[workspace]
resolver = "2"
members = [
  "crates/kernel-collector-sys",
  "crates/kernel-collector-bin",
  "crates/reducer-sys",
  "crates/reducer-bin",
  "crates/cloud-collector-sys",
  "crates/cloud-collector-bin",
  "crates/k8s-relay-sys",
  "crates/k8s-relay-bin",
  "crates/reducer",
  "crates/perfect_hash_map",
  "crates/render_parser",
  "crates/otlp_export",
  "crates/element-queue",
  "crates/timeslot",
  # Render encoders (ebpf_net)
  "crates/render/ebpf_net",
  "crates/render/ebpf_net/agent_internal",
  "crates/render/ebpf_net/aggregation",
  "crates/render/ebpf_net/cloud_collector",
  "crates/render/ebpf_net/ingest",
  "crates/render/ebpf_net/kernel_collector",
  "crates/render/ebpf_net/logging",
  "crates/render/ebpf_net/matching",
  "crates/k8s-collector",
  "crates/k8s-collector-bin",
]

[workspace.dependencies]
render_parser = { path = "crates/render_parser" }
otlp_export = { path = "crates/otlp_export" }
reducer = { path = "crates/reducer" }
reducer-sys = { path = "crates/reducer-sys" }
rc-hashmap = { version = "0.1" }


================================================
FILE: LICENSE.txt
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   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.


================================================
FILE: NOTICE.txt
================================================
OpenTelemetry eBPF
==================

https://github.com/open-telemetry/opentelemetry-ebpf

Copyright The OpenTelemetry Authors

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.


Third party software
====================


-------------------------------------------------------------------------------
args

https://github.com/Taywee/args

Copyright (c) 2016-2017 Taylor C. Richberger <taywee@gmx.com> and Pavel Belikov

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


-------------------------------------------------------------------------------
spdlog

https://github.com/gabime/spdlog

Copyright (c) 2016 Gabi Melman.                                       

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


-------------------------------------------------------------------------------
ares

https://github.com/c-ares/c-ares

/* Copyright 1998 by the Massachusetts Institute of Technology.
 * Copyright (C) 2007-2013 by Daniel Stenberg
 *
 * Permission to use, copy, modify, and distribute this
 * software and its documentation for any purpose and without
 * fee is hereby granted, provided that the above copyright
 * notice appear in all copies and that both that copyright
 * notice and this permission notice appear in supporting
 * documentation, and that the name of M.I.T. not be used in
 * advertising or publicity pertaining to distribution of the
 * software without specific, written prior permission.
 * M.I.T. makes no representations about the suitability of
 * this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 */


-------------------------------------------------------------------------------
bcc

https://github.com/iovisor/bcc

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   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.


-------------------------------------------------------------------------------
abseil

https://github.com/abseil/abseil-cpp

                                 Apache License
                           Version 2.0, January 2004
                        https://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   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

       https://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.


-------------------------------------------------------------------------------
llvm

https://github.com/llvm/llvm-project

University of Illinois/NCSA
Open Source License

Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign.
All rights reserved.

Developed by:

    LLVM Team

    University of Illinois at Urbana-Champaign

    http://llvm.org

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:

    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimers.

    * Redistributions in binary form must reproduce the above copyright notice,
      this list of conditions and the following disclaimers in the
      documentation and/or other materials provided with the distribution.

    * Neither the names of the LLVM Team, University of Illinois at
      Urbana-Champaign, nor the names of its contributors may be used to
      endorse or promote products derived from this Software without specific
      prior written permission.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.

==============================================================================
Copyrights and Licenses for Third Party Software Distributed with LLVM:
==============================================================================
The LLVM software contains code written by third parties.  Such software will
have its own individual LICENSE.TXT file in the directory in which it appears.
This file will describe the copyrights, license, and restrictions which apply
to that code.

The disclaimer of warranty in the University of Illinois Open Source License
applies to all code in the LLVM Distribution, and nothing in any of the
other licenses gives permission to use the names of the LLVM Team or the
University of Illinois to endorse or promote products derived from this
Software.

The following pieces of software have additional or alternate copyrights,
licenses, and/or restrictions:

Program             Directory
-------             ---------
Google Test         llvm/utils/unittest/googletest
OpenBSD regex       llvm/lib/Support/{reg*, COPYRIGHT.regex}
pyyaml tests        llvm/test/YAMLParser/{*.data, LICENSE.TXT}
ARM contributions   llvm/lib/Target/ARM/LICENSE.TXT
md5 contributions   llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h


-------------------------------------------------------------------------------
json

https://github.com/nlohmann/json

Copyright (c) 2013-2018 Niels Lohmann

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


-------------------------------------------------------------------------------
lookup3

http://www.burtleburtle.net/bob/c/lookup3.c

lookup3.c, by Bob Jenkins, May 2006, Public Domain.


-------------------------------------------------------------------------------
libuv

https://github.com/libuv/libuv

libuv is licensed for use as follows:

====
Copyright (c) 2015-present libuv project contributors.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
====

This license applies to parts of libuv originating from the
https://github.com/joyent/libuv repository:

====

Copyright Joyent, Inc. and other Node contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

====

This license applies to all parts of libuv that are not externally
maintained libraries.

The externally maintained libraries used by libuv are:

  - tree.h (from FreeBSD), copyright Niels Provos. Two clause BSD license.

  - inet_pton and inet_ntop implementations, contained in src/inet.c, are
    copyright the Internet Systems Consortium, Inc., and licensed under the ISC
    license.

  - stdint-msvc2008.h (from msinttypes), copyright Alexander Chemeris. Three
    clause BSD license.

  - pthread-fixes.c, copyright Google Inc. and Sony Mobile Communications AB.
    Three clause BSD license.

  - android-ifaddrs.h, android-ifaddrs.c, copyright Berkeley Software Design
    Inc, Kenneth MacKay and Emergya (Cloud4all, FP7/2007-2013, grant agreement
    n° 289016). Three clause BSD license.


-------------------------------------------------------------------------------
openssl

https://github.com/openssl/openssl

/* ====================================================================
 * Copyright (c) 1998-2019 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
 *
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 *    endorse or promote products derived from this software without
 *    prior written permission. For written permission, please contact
 *    openssl-core@openssl.org.
 *
 * 5. Products derived from this software may not be called "OpenSSL"
 *    nor may "OpenSSL" appear in their names without prior written
 *    permission of the OpenSSL Project.
 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
 *
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 *
 * This product includes cryptographic software written by Eric Young
 * (eay@cryptsoft.com).  This product includes software written by Tim
 * Hudson (tjh@cryptsoft.com).
 *
 */

 Original SSLeay License
 -----------------------

/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
 * All rights reserved.
 *
 * This package is an SSL implementation written
 * by Eric Young (eay@cryptsoft.com).
 * The implementation was written so as to conform with Netscapes SSL.
 *
 * This library is free for commercial and non-commercial use as long as
 * the following conditions are aheared to.  The following conditions
 * apply to all code found in this distribution, be it the RC4, RSA,
 * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
 * included with this distribution is covered by the same copyright terms
 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
 *
 * Copyright remains Eric Young's, and as such any Copyright notices in
 * the code are not to be removed.
 * If this package is used in a product, Eric Young should be given attribution
 * as the author of the parts of the library used.
 * This can be in the form of a textual message at program startup or
 * in documentation (online or textual) provided with the package.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *    "This product includes cryptographic software written by
 *     Eric Young (eay@cryptsoft.com)"
 *    The word 'cryptographic' can be left out if the rouines from the library
 *    being used are not cryptographic related :-).
 * 4. If you include any Windows specific code (or a derivative thereof) from
 *    the apps directory (application code) you must include an acknowledgement:
 *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
 *
 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * The licence and distribution terms for any publically available version or
 * derivative of this code cannot be changed.  i.e. this code cannot simply be
 * copied and put under another distribution licence
 * [including the GNU Public Licence.]
 */


-------------------------------------------------------------------------------
grpc

https://github.com/grpc/grpc

Copyright 2014 gRPC authors.

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.


-------------------------------------------------------------------------------
curl

https://github.com/curl/curl

COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1996 - 2017, Daniel Stenberg, <daniel@haxx.se>, and many
contributors, see the THANKS file.

All rights reserved.

Permission to use, copy, modify, and distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright
notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.


-------------------------------------------------------------------------------
curlpp

https://github.com/jpbarrette/curlpp

Copyright (c) <2002-2004> <Jean-Philippe Barrette-LaPierre>

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files 
(cURLpp), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, 
subject to the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


-------------------------------------------------------------------------------
aws-sdk-cpp

https://github.com/aws/aws-sdk-cpp

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   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.


-------------------------------------------------------------------------------
google-cloud-cpp

https://github.com/googleapis/google-cloud-cpp

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      ex
Download .txt
gitextract_vvvufxro/

├── .clang-format
├── .devcontainer/
│   └── devcontainer.json
├── .git/
│   ├── HEAD
│   ├── config
│   ├── description
│   ├── hooks/
│   │   ├── applypatch-msg.sample
│   │   ├── commit-msg.sample
│   │   ├── fsmonitor-watchman.sample
│   │   ├── post-update.sample
│   │   ├── pre-applypatch.sample
│   │   ├── pre-commit.sample
│   │   ├── pre-merge-commit.sample
│   │   ├── pre-push.sample
│   │   ├── pre-rebase.sample
│   │   ├── pre-receive.sample
│   │   ├── prepare-commit-msg.sample
│   │   ├── push-to-checkout.sample
│   │   ├── sendemail-validate.sample
│   │   └── update.sample
│   ├── index
│   ├── info/
│   │   └── exclude
│   ├── logs/
│   │   ├── HEAD
│   │   └── refs/
│   │       ├── heads/
│   │       │   └── main
│   │       └── remotes/
│   │           └── origin/
│   │               └── HEAD
│   ├── objects/
│   │   └── pack/
│   │       ├── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.idx
│   │       ├── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.pack
│   │       ├── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.promisor
│   │       └── pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.rev
│   ├── packed-refs
│   ├── refs/
│   │   ├── heads/
│   │   │   └── main
│   │   └── remotes/
│   │       └── origin/
│   │           └── HEAD
│   └── shallow
├── .git-blame-ignore-revs
├── .github/
│   ├── .actionlint.yaml
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.yaml
│   │   ├── config.yml
│   │   ├── feature_request.yaml
│   │   └── other.yaml
│   ├── actions/
│   │   └── build-tools-single-stage/
│   │       └── action.yml
│   ├── pull_request_template.md
│   ├── renovate.json5
│   └── workflows/
│       ├── build-and-release.yaml
│       ├── build-and-test.yaml
│       ├── build-benv-multiarch.yaml
│       ├── build-benv-single-arch.yaml
│       ├── fossa.yml
│       ├── k8s-collector-integration.yaml
│       ├── ossf-scorecard.yml
│       ├── release-please.yml
│       ├── scripts/
│       │   └── check-clang-format.sh
│       └── trivy-scans.yml
├── .gitignore
├── .gitmodules
├── .release-please-manifest.json
├── CHANGELOG.md
├── CMakeLists.txt
├── Cargo.toml
├── LICENSE.txt
├── NOTICE.txt
├── README.md
├── RELEASING.md
├── VERSION
├── build-tools/
│   ├── .gitignore
│   ├── .templates/
│   │   └── dependency/
│   │       └── Dockerfile
│   ├── CMakeLists.txt
│   ├── add_dependency.sh
│   ├── aws_sdk/
│   │   └── Dockerfile
│   ├── base/
│   │   └── Dockerfile
│   ├── benv/
│   │   └── docker.d/
│   │       ├── cgroups
│   │       ├── gdb
│   │       ├── kernel-headers
│   │       ├── pid-host
│   │       ├── privileged
│   │       └── vimrc
│   ├── build.sh
│   ├── build_directory.sh
│   ├── check_missing.sh
│   ├── cpp_misc/
│   │   ├── Dockerfile
│   │   └── ccan/
│   │       ├── build_assert/
│   │       │   ├── _info
│   │       │   ├── build_assert.h
│   │       │   └── test/
│   │       │       ├── compile_fail-expr.c
│   │       │       ├── compile_fail.c
│   │       │       ├── compile_ok.c
│   │       │       └── run-BUILD_ASSERT_OR_ZERO.c
│   │       ├── check_type/
│   │       │   ├── _info
│   │       │   ├── check_type.h
│   │       │   └── test/
│   │       │       ├── compile_fail-check_type.c
│   │       │       ├── compile_fail-check_type_unsigned.c
│   │       │       ├── compile_fail-check_types_match.c
│   │       │       └── run.c
│   │       ├── compiler/
│   │       │   ├── _info
│   │       │   ├── compiler.h
│   │       │   └── test/
│   │       │       ├── compile_fail-printf.c
│   │       │       └── run-is_compile_constant.c
│   │       ├── container_of/
│   │       │   ├── _info
│   │       │   ├── container_of.h
│   │       │   └── test/
│   │       │       ├── compile_fail-bad-type.c
│   │       │       ├── compile_fail-types.c
│   │       │       ├── compile_fail-var-types.c
│   │       │       └── run.c
│   │       ├── hash/
│   │       │   ├── _info
│   │       │   ├── hash.c
│   │       │   ├── hash.h
│   │       │   └── test/
│   │       │       ├── api-hash_stable.c
│   │       │       └── run.c
│   │       ├── licenses/
│   │       │   ├── BSD-MIT
│   │       │   └── CC0
│   │       └── list/
│   │           ├── _info
│   │           ├── list.c
│   │           ├── list.h
│   │           └── test/
│   │               ├── compile_ok-constant.c
│   │               ├── helper.c
│   │               ├── helper.h
│   │               ├── run-check-corrupt.c
│   │               ├── run-list_del_from-assert.c
│   │               ├── run-list_prev-list_next.c
│   │               ├── run-prepend_list.c
│   │               ├── run-single-eval.c
│   │               ├── run-with-debug.c
│   │               └── run.c
│   ├── final/
│   │   ├── Dockerfile
│   │   ├── LICENSE.txt
│   │   └── NOTICE.txt
│   ├── get_tag.sh
│   ├── libbpf/
│   │   └── Dockerfile
│   ├── libmaxminddb/
│   │   └── Dockerfile
│   ├── libuv/
│   │   └── Dockerfile
│   └── nproc.sh
├── channel/
│   ├── CMakeLists.txt
│   ├── buffered_writer.cc
│   ├── buffered_writer.h
│   ├── buffered_writer_test.cc
│   ├── callbacks.h
│   ├── channel.h
│   ├── component.h
│   ├── connection_caretaker.cc
│   ├── connection_caretaker.h
│   ├── double_write_channel.cc
│   ├── double_write_channel.h
│   ├── file_channel.cc
│   ├── file_channel.h
│   ├── ibuffered_writer.h
│   ├── lz4_channel.cc
│   ├── lz4_channel.h
│   ├── mock_channel.h
│   ├── network_channel.h
│   ├── reconnecting_channel.cc
│   ├── reconnecting_channel.h
│   ├── tcp_channel.cc
│   ├── tcp_channel.h
│   ├── test_channel.cc
│   ├── test_channel.h
│   ├── tls_handler.cc
│   ├── tls_handler.h
│   ├── upstream_connection.cc
│   └── upstream_connection.h
├── clang-format.sh
├── cmake/
│   ├── abseil.cmake
│   ├── aws-sdk.cmake
│   ├── cargo-test.cmake
│   ├── cargo_build_rust.cmake
│   ├── ccache.cmake
│   ├── civetweb.cmake
│   ├── clang.cmake
│   ├── cpp-compiler.cmake
│   ├── curl.cmake
│   ├── curlpp.cmake
│   ├── debug.cmake
│   ├── defaults.cmake
│   ├── docker-utils.cmake
│   ├── executable.cmake
│   ├── geoip.cmake
│   ├── libbpf.cmake
│   ├── libelf.cmake
│   ├── llvm.cmake
│   ├── lz4.cmake
│   ├── openssl.cmake
│   ├── protobuf.cmake
│   ├── render.cmake
│   ├── rust_cxxbridge.cmake
│   ├── rust_main.cmake
│   ├── sanitizer.cmake
│   ├── shell.cmake
│   ├── spdlog.cmake
│   ├── test.cmake
│   ├── tool.cmake
│   ├── uv.cmake
│   ├── xxd.cmake
│   └── yamlcpp.cmake
├── collector/
│   ├── CMakeLists.txt
│   ├── Dockerfile.k8s-collector
│   ├── agent_log.h
│   ├── cloud/
│   │   ├── CMakeLists.txt
│   │   ├── Dockerfile
│   │   ├── README.md
│   │   ├── collector.cc
│   │   ├── collector.h
│   │   ├── entrypoint.cc
│   │   ├── entrypoint.sh
│   │   ├── enumerator.cc
│   │   ├── enumerator.h
│   │   ├── ingest_connection.cc
│   │   └── ingest_connection.h
│   ├── constants.h
│   ├── kernel/
│   │   ├── CMakeLists.txt
│   │   ├── Dockerfile
│   │   ├── bpf_handler.cc
│   │   ├── bpf_handler.h
│   │   ├── bpf_src/
│   │   │   ├── render_bpf.c
│   │   │   ├── render_bpf.h
│   │   │   ├── tcp-processor/
│   │   │   │   ├── bpf_data_channel.h
│   │   │   │   ├── bpf_debug.h
│   │   │   │   ├── bpf_http_protocol.h
│   │   │   │   ├── bpf_inet_csk_accept.h
│   │   │   │   ├── bpf_memory.h
│   │   │   │   ├── bpf_tcp_events.h
│   │   │   │   ├── bpf_tcp_processor.c
│   │   │   │   ├── bpf_tcp_send_recv.h
│   │   │   │   ├── bpf_tcp_socket.h
│   │   │   │   ├── bpf_types.h
│   │   │   │   ├── tcp-processor.py
│   │   │   │   └── tcp_processor.h
│   │   │   ├── vmlinux_compat.h
│   │   │   └── vmlinux_extensions.h
│   │   ├── buffered_poller.cc
│   │   ├── buffered_poller.h
│   │   ├── cgroup_handler.cc
│   │   ├── cgroup_handler.h
│   │   ├── cgroup_handler_test.cc
│   │   ├── cgroup_prober.cc
│   │   ├── cgroup_prober.h
│   │   ├── dns/
│   │   │   ├── ares.h
│   │   │   ├── ares_expand_name.c
│   │   │   ├── ares_parse_a_aaaa_reply.c
│   │   │   ├── ares_parse_query.c
│   │   │   ├── c_ares_nameser.h
│   │   │   └── dns.h
│   │   ├── dns_requests.cc
│   │   ├── dns_requests.h
│   │   ├── entrypoint-kct.sh
│   │   ├── entrypoint.cc
│   │   ├── entrypoint.sh
│   │   ├── fd_reader.cc
│   │   ├── fd_reader.h
│   │   ├── hostport_tuple.h
│   │   ├── kernel_blacklist.h
│   │   ├── kernel_collector.cc
│   │   ├── kernel_collector.h
│   │   ├── kernel_collector_restarter.cc
│   │   ├── kernel_collector_restarter.h
│   │   ├── kernel_collector_test.cc
│   │   ├── kernel_collector_test_docker/
│   │   │   └── Dockerfile
│   │   ├── kernel_symbols.cc
│   │   ├── kernel_symbols.h
│   │   ├── kernel_symbols_test.cc
│   │   ├── main.cc
│   │   ├── nat_handler.cc
│   │   ├── nat_handler.h
│   │   ├── nat_prober.cc
│   │   ├── nat_prober.h
│   │   ├── perf_poller.cc
│   │   ├── perf_poller.h
│   │   ├── perf_reader.cc
│   │   ├── perf_reader.h
│   │   ├── probe_handler.cc
│   │   ├── probe_handler.h
│   │   ├── proc_cmdline.cc
│   │   ├── proc_cmdline.h
│   │   ├── proc_net_reader.cc
│   │   ├── proc_net_reader.h
│   │   ├── proc_reader.cc
│   │   ├── proc_reader.h
│   │   ├── process_handler.cc
│   │   ├── process_handler.h
│   │   ├── process_prober.cc
│   │   ├── process_prober.h
│   │   ├── protocols/
│   │   │   ├── protocol_handler_base.cc
│   │   │   ├── protocol_handler_base.h
│   │   │   ├── protocol_handler_http.cc
│   │   │   ├── protocol_handler_http.h
│   │   │   ├── protocol_handler_unknown.cc
│   │   │   ├── protocol_handler_unknown.h
│   │   │   └── protocol_tools.h
│   │   ├── socket_prober.cc
│   │   ├── socket_prober.h
│   │   ├── socket_table.h
│   │   ├── tcp_data_handler.cc
│   │   ├── tcp_data_handler.h
│   │   ├── troubleshoot_item.h
│   │   ├── troubleshooting.cc
│   │   └── troubleshooting.h
│   └── server_command.h
├── common/
│   ├── client_server_type.h
│   ├── client_type.h
│   ├── cloud_platform.h
│   ├── collected_blob_type.h
│   ├── collector_status.h
│   ├── component.h
│   ├── constants.h
│   ├── host_info.h
│   ├── http_status_code.h
│   ├── intake_encoder.h
│   ├── kernel_headers_source.h
│   ├── linux_distro.h
│   ├── operating_system.h
│   └── port_protocol.h
├── config/
│   ├── CMakeLists.txt
│   ├── config_file.cc
│   ├── config_file.h
│   ├── intake_config.cc
│   └── intake_config.h
├── config.h.cmake_in
├── crates/
│   ├── build/
│   │   └── otn_link_build.rs
│   ├── cloud-collector-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── cloud-collector-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── element-queue/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── layout.rs
│   │       ├── lib.rs
│   │       └── raw.rs
│   ├── k8s-collector/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   ├── collector.rs
│   │   │   ├── config.rs
│   │   │   ├── convert_to_meta.rs
│   │   │   ├── encode.rs
│   │   │   ├── lib.rs
│   │   │   ├── matcher.rs
│   │   │   ├── output.rs
│   │   │   ├── tombstone_adapter.rs
│   │   │   ├── types.rs
│   │   │   └── writer.rs
│   │   └── tests/
│   │       ├── collector_prop.rs
│   │       └── integration_test.rs
│   ├── k8s-collector-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── k8s-relay-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── k8s-relay-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── kernel-collector-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── kernel-collector-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── otlp_export/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── lib.rs
│   ├── perfect_hash_map/
│   │   ├── Cargo.toml
│   │   ├── src/
│   │   │   └── lib.rs
│   │   └── tests/
│   │       ├── basic.rs
│   │       ├── drops.rs
│   │       └── prop.rs
│   ├── reducer/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── aggregation_core.rs
│   │       ├── aggregation_framework.rs
│   │       ├── aggregation_message_handler.rs
│   │       ├── aggregator.rs
│   │       ├── ffi.rs
│   │       ├── internal_events.rs
│   │       ├── lib.rs
│   │       ├── metrics.rs
│   │       ├── otlp_encoding.rs
│   │       └── queue_handler.rs
│   ├── reducer-bin/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       └── main.rs
│   ├── reducer-sys/
│   │   ├── Cargo.toml
│   │   ├── build.rs
│   │   └── src/
│   │       └── lib.rs
│   ├── render/
│   │   ├── ebpf_net/
│   │   │   ├── Cargo.toml
│   │   │   ├── agent_internal/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── aggregation/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── cloud_collector/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── ingest/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── kernel_collector/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── logging/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   ├── matching/
│   │   │   │   ├── Cargo.toml
│   │   │   │   └── src/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── hash.rs
│   │   │   │       ├── lib.rs
│   │   │   │       ├── parsed_message.rs
│   │   │   │       └── wire_messages.rs
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   └── test/
│   │       ├── Cargo.toml
│   │       ├── app1/
│   │       │   ├── Cargo.toml
│   │       │   └── src/
│   │       │       ├── encoder.rs
│   │       │       ├── hash.rs
│   │       │       ├── lib.rs
│   │       │       ├── parsed_message.rs
│   │       │       └── wire_messages.rs
│   │       └── src/
│   │           └── lib.rs
│   ├── render_parser/
│   │   ├── Cargo.toml
│   │   └── src/
│   │       ├── lib.rs
│   │       └── message.rs
│   └── timeslot/
│       ├── Cargo.toml
│       └── src/
│           ├── fast_div.rs
│           ├── lib.rs
│           └── virtual_clock.rs
├── dev/
│   ├── CMakeLists.txt
│   ├── benv-build.sh
│   ├── benv-list.sh
│   ├── benv-run.sh
│   ├── commits_to_prs.sh
│   ├── commits_to_stacked_prs.sh
│   ├── devbox/
│   │   ├── .gitignore
│   │   ├── CMakeLists.txt
│   │   ├── README.md
│   │   ├── boxes/
│   │   │   ├── .gitignore
│   │   │   ├── centos-7/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── debian-bullseye/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── ubuntu-focal/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── ubuntu-jammy/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   ├── ubuntu-lunar/
│   │   │   │   ├── .gitignore
│   │   │   │   └── build.sh
│   │   │   └── vagrant-base-boxes/
│   │   │       ├── base-bento-amazonlinux-2/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-centos-7/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-debian-bullseye/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-ubuntu-focal/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       ├── base-ubuntu-jammy/
│   │   │       │   ├── .gitignore
│   │   │       │   └── run.sh
│   │   │       └── base-ubuntu-lunar/
│   │   │           ├── .gitignore
│   │   │           └── run.sh
│   │   ├── build.sh
│   │   ├── run.sh
│   │   └── source/
│   │       ├── .rgrc
│   │       ├── Vagrantfile.packer.box.rb
│   │       ├── cloud-collector.sh
│   │       ├── collector-entrypoint.sh
│   │       ├── devbox.packer.json
│   │       ├── k8s/
│   │       │   ├── deploy.sh
│   │       │   ├── ebpf-net-local-registry.yaml
│   │       │   ├── ebpf-net-logging-exporter.yaml
│   │       │   ├── ebpf-net-modify-otelcol-metricstransform-processor.yaml
│   │       │   ├── ebpf-net-modify-otelcol-splunk-hec-exporter.yaml
│   │       │   ├── ebpf-net-modify-reducer-enable-flow-logs.yaml
│   │       │   ├── ebpf-net-modify-reducer.yaml
│   │       │   ├── ebpf-net-use-otel-demo-otelcol.yaml
│   │       │   ├── ebpf-net.yaml
│   │       │   ├── init.sh
│   │       │   ├── modify.sh
│   │       │   └── otel-demo.yaml
│   │       ├── k8s-collector.sh
│   │       ├── kernel-collector.sh
│   │       ├── otelcol-config.yaml
│   │       ├── otelcol-gateway.sh
│   │       ├── prometheus.yml
│   │       ├── provision/
│   │       │   ├── core.sh
│   │       │   ├── docker.sh
│   │       │   ├── k8s.sh
│   │       │   ├── kernel.sh
│   │       │   ├── packages.sh
│   │       │   ├── prometheus.sh
│   │       │   ├── repo.sh
│   │       │   ├── symlinks.sh
│   │       │   └── upgrade.sh
│   │       ├── reducer.sh
│   │       └── test-kernel-collector.sh
│   ├── docker-registry-login.sh
│   ├── docker-registry-push.sh
│   ├── docker-registry.sh
│   ├── git-pull-request.sh
│   ├── git-upstream-branch.sh
│   ├── otel/
│   │   ├── otel-config.yaml
│   │   ├── run-ncat.sh
│   │   └── run-otel.sh
│   ├── script/
│   │   ├── CMakeLists.txt
│   │   ├── bash-error-lib.sh
│   │   ├── benv-lib.sh
│   │   └── docker-registry-lib.sh
│   ├── selinux-bpf.sh
│   └── strip-symbols.sh
├── dist/
│   ├── CMakeLists.txt
│   ├── cloud-collector/
│   │   ├── cloud-collector.args
│   │   ├── cloud-collector.service
│   │   ├── cloud-collector.yaml
│   │   ├── deb/
│   │   │   ├── conffiles
│   │   │   ├── postinst
│   │   │   ├── postrm
│   │   │   └── prerm
│   │   └── rpm/
│   │       ├── post.sh
│   │       ├── postun.sh
│   │       └── preun.sh
│   ├── kernel-collector/
│   │   ├── deb/
│   │   │   ├── conffiles
│   │   │   ├── postinst
│   │   │   ├── postrm
│   │   │   └── prerm
│   │   ├── kernel-collector.args
│   │   ├── kernel-collector.service
│   │   ├── kernel-collector.yaml
│   │   └── rpm/
│   │       ├── post.sh
│   │       ├── postun.sh
│   │       └── preun.sh
│   └── reducer/
│       ├── deb/
│       │   ├── conffiles
│       │   ├── postinst
│       │   ├── postrm
│       │   └── prerm
│       ├── reducer.args
│       ├── reducer.service
│       ├── reducer.yaml
│       └── rpm/
│           ├── post.sh
│           ├── postun.sh
│           └── preun.sh
├── docs/
│   ├── cloud-collector.md
│   ├── data-model.md
│   ├── developing.md
│   ├── dns-and-http.md
│   ├── k8s-collector.md
│   ├── kernel-collector.md
│   ├── metrics/
│   │   ├── dimensions.yaml
│   │   ├── internal_metrics/
│   │   │   ├── dimensions.yaml
│   │   │   └── metrics.yaml
│   │   └── metrics.yaml
│   ├── processes-and-cgroups.md
│   ├── reducer/
│   │   └── architecture.md
│   ├── reducer.md
│   ├── render.md
│   ├── roadmap.md
│   ├── running-multiple-agents.md
│   └── tcp-and-udp.md
├── geoip/
│   ├── CMakeLists.txt
│   ├── geoip.cc
│   ├── geoip.h
│   └── geoip.inl
├── jitbuf/
│   ├── CMakeLists.txt
│   ├── descriptor.h
│   ├── descriptor_reader.cc
│   ├── descriptor_reader.h
│   ├── fixed_handler.c
│   ├── fixed_handler.h
│   ├── handler.cc
│   ├── handler.h
│   ├── jb.h
│   ├── perfect_hash.h
│   ├── service.h
│   ├── transform_builder.cc
│   ├── transform_builder.h
│   ├── transformer.cc
│   └── transformer.h
├── platform/
│   ├── CMakeLists.txt
│   ├── bitops.h
│   ├── debug.h
│   ├── fastpass_linux.h
│   ├── generic.h
│   ├── linux-platform.h
│   ├── memory.h
│   ├── no-dpdk.h
│   ├── platform.h
│   ├── spin_lock.h
│   ├── types.h
│   ├── types_test.cc
│   └── userspace-time.h
├── reducer/
│   ├── CMakeLists.txt
│   ├── Dockerfile
│   ├── aggregation/
│   │   ├── agg_core.cc
│   │   ├── agg_core.h
│   │   ├── agg_root_span.h
│   │   ├── labels.h
│   │   ├── labels.inl
│   │   └── stat_counters.h
│   ├── constants.h
│   ├── constants.inl
│   ├── copy_metrics.h
│   ├── core.cc
│   ├── core.h
│   ├── core_base.h
│   ├── core_base.inl
│   ├── core_type.h
│   ├── disabled_metrics.cc
│   ├── disabled_metrics.h
│   ├── disabled_metrics_test.cc
│   ├── dns_cache.h
│   ├── entrypoint.cc
│   ├── entrypoint.h
│   ├── entrypoint.sh
│   ├── health_check.sh
│   ├── ingest/
│   │   ├── agent_span.cc
│   │   ├── agent_span.h
│   │   ├── aws_network_interface_span.cc
│   │   ├── aws_network_interface_span.h
│   │   ├── cgroup_span.cc
│   │   ├── cgroup_span.h
│   │   ├── component.h
│   │   ├── container_updater.h
│   │   ├── flow_updater.cc
│   │   ├── flow_updater.h
│   │   ├── ingest_core.cc
│   │   ├── ingest_core.h
│   │   ├── ingest_worker.cc
│   │   ├── ingest_worker.h
│   │   ├── k8s_pod_span.cc
│   │   ├── k8s_pod_span.h
│   │   ├── npm_connection.cc
│   │   ├── npm_connection.h
│   │   ├── process_span.cc
│   │   ├── process_span.h
│   │   ├── shared_state.cc
│   │   ├── shared_state.h
│   │   ├── socket_span.cc
│   │   ├── socket_span.h
│   │   ├── tcp_server.cc
│   │   ├── tcp_server.h
│   │   ├── udp_socket_span.cc
│   │   └── udp_socket_span.h
│   ├── internal_metrics_encoder.h
│   ├── internal_stats.h
│   ├── json_formatter.cc
│   ├── json_formatter.h
│   ├── latency_accumulator.h
│   ├── latency_accumulator.inl
│   ├── load_balancer.h
│   ├── logging/
│   │   ├── agg_core_stats_span.cc
│   │   ├── agg_core_stats_span.h
│   │   ├── component.h
│   │   ├── connection_metrics.h
│   │   ├── core_stats_span.cc
│   │   ├── core_stats_span.h
│   │   ├── ingest_core_stats_span.cc
│   │   ├── ingest_core_stats_span.h
│   │   ├── logger_span.cc
│   │   ├── logger_span.h
│   │   ├── logging_core.cc
│   │   └── logging_core.h
│   ├── matching/
│   │   ├── aws_enrichment_info.h
│   │   ├── aws_enrichment_span.cc
│   │   ├── aws_enrichment_span.h
│   │   ├── component.h
│   │   ├── flow_span.cc
│   │   ├── flow_span.h
│   │   ├── k8s_container_span.cc
│   │   ├── k8s_container_span.h
│   │   ├── k8s_pod_span.cc
│   │   ├── k8s_pod_span.h
│   │   ├── matching_core.cc
│   │   └── matching_core.h
│   ├── metric_info.cc
│   ├── metric_info.h
│   ├── null_publisher.cc
│   ├── null_publisher.h
│   ├── otlp_grpc_formatter.cc
│   ├── otlp_grpc_formatter.h
│   ├── otlp_grpc_publisher.cc
│   ├── otlp_grpc_publisher.h
│   ├── outbound_metrics.h
│   ├── outbound_stats.h
│   ├── prometheus_formatter.cc
│   ├── prometheus_formatter.h
│   ├── prometheus_handler.cc
│   ├── prometheus_handler.h
│   ├── prometheus_publisher.cc
│   ├── prometheus_publisher.h
│   ├── publisher.h
│   ├── reducer.cc
│   ├── reducer.h
│   ├── reducer_config.cc
│   ├── reducer_config.h
│   ├── reducer_config.inl
│   ├── rpc_queue_matrix.h
│   ├── rpc_queue_matrix_test.cc
│   ├── rpc_stats.cc
│   ├── rpc_stats.h
│   ├── rpc_stats.inl
│   ├── stat_info.cc
│   ├── stat_info.h
│   ├── thread_safe_map.h
│   ├── tsdb_format.h
│   ├── tsdb_formatter.cc
│   ├── tsdb_formatter.h
│   ├── uid_key.cc
│   ├── uid_key.h
│   ├── util/
│   │   ├── CMakeLists.txt
│   │   ├── blob_collector.cc
│   │   ├── blob_collector.h
│   │   ├── docker_image.h
│   │   ├── docker_image.inl
│   │   ├── index_dumper.cc
│   │   ├── index_dumper.h
│   │   ├── index_dumper.inl
│   │   ├── signal_handler.cc
│   │   ├── signal_handler.h
│   │   ├── thread_ops.cc
│   │   ├── thread_ops.h
│   │   ├── time_tracker.cc
│   │   ├── time_tracker.h
│   │   ├── virtual_clock.cc
│   │   ├── virtual_clock.h
│   │   └── virtual_clock_test.cc
│   ├── worker.cc
│   ├── worker.h
│   └── write_metrics.h
├── release-please-config.json
├── render/
│   ├── CMakeLists.txt
│   └── ebpf_net.render
├── renderc/
│   ├── .gitignore
│   ├── CMakeLists.txt
│   ├── build.gradle
│   ├── gradle/
│   │   ├── repositories.gradle
│   │   ├── source-layout.gradle
│   │   └── wrapper/
│   │       ├── gradle-wrapper.jar
│   │       └── gradle-wrapper.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── io.opentelemetry.render/
│   │   ├── META-INF/
│   │   │   └── MANIFEST.MF
│   │   ├── build.gradle
│   │   └── src/
│   │       └── io/
│   │           └── opentelemetry/
│   │               └── render/
│   │                   ├── GenerateRender.mwe2
│   │                   ├── Render.xtext
│   │                   ├── RenderRuntimeModule.xtend
│   │                   ├── RenderStandaloneSetup.xtend
│   │                   ├── extensions/
│   │                   │   ├── AppExtensions.xtend
│   │                   │   ├── FieldExtensions.xtend
│   │                   │   ├── FieldTypeExtensions.xtend
│   │                   │   ├── MessageExtensions.xtend
│   │                   │   ├── MetricFieldExtension.xtend
│   │                   │   ├── SpanExtensions.xtend
│   │                   │   ├── UtilityExtensions.xtend
│   │                   │   └── XPackedMessageExtensions.xtend
│   │                   ├── formatting/
│   │                   │   └── RenderFormatter.xtend
│   │                   ├── generator/
│   │                   │   ├── AppGenerator.xtend
│   │                   │   ├── AppPacker.xtend
│   │                   │   ├── BpfGenerator.xtend
│   │                   │   ├── ConnectionGenerator.xtend
│   │                   │   ├── HashGenerator.xtend
│   │                   │   ├── MessageGenerator.xtend
│   │                   │   ├── MetricsGenerator.xtend
│   │                   │   ├── PerfectHash.xtend
│   │                   │   ├── ProtocolGenerator.xtend
│   │                   │   ├── RenderGenerator.xtend
│   │                   │   ├── RustCargoGenerator.xtend
│   │                   │   ├── RustEncoderGenerator.xtend
│   │                   │   ├── RustMessageGenerator.xtend
│   │                   │   ├── SpanAutoDependencies.xtend
│   │                   │   ├── SpanGenerator.xtend
│   │                   │   ├── TransformBuilderGenerator.xtend
│   │                   │   └── WriterGenerator.xtend
│   │                   ├── scoping/
│   │                   │   └── RenderScopeProvider.xtend
│   │                   └── validation/
│   │                       └── RenderValidator.xtend
│   ├── io.opentelemetry.render.standalone/
│   │   ├── build.gradle
│   │   ├── plugin.properties
│   │   └── src/
│   │       └── Main.xtend
│   ├── settings.gradle
│   └── test/
│       ├── CMakeLists.txt
│       ├── render_test.cc
│       └── test.render
├── scheduling/
│   ├── CMakeLists.txt
│   ├── interval_scheduler.cc
│   ├── interval_scheduler.h
│   ├── job.h
│   ├── timer.cc
│   └── timer.h
├── scratchpad/
│   └── modules.md
├── test/
│   └── kernel/
│       ├── .gitignore
│       ├── README.md
│       ├── bootstrap.sh
│       ├── distros-and-kernels.sh
│       ├── gen-tests.sh
│       ├── run-test.sh
│       ├── run-tests.sh
│       └── source/
│           ├── data/
│           │   ├── agent.sh
│           │   ├── centos-provision.sh
│           │   ├── debian-provision.sh
│           │   ├── env-provision.sh
│           │   ├── get-agent-shell.sh
│           │   ├── reducer.sh
│           │   ├── test-entrypoint.sh
│           │   └── ubuntu-provision.sh
│           └── runners/
│               ├── 0-setup.sh
│               ├── 1-apply-selinux-policy.sh
│               ├── 2-start-reducer.sh
│               ├── 3-fetch.sh
│               ├── 4-cached.sh
│               ├── 5-pre-installed.sh
│               ├── 6-cleanup.sh
│               └── run-kernel-collector-test.sh
├── tools/
│   ├── CMakeLists.txt
│   ├── aggregation_wire_to_json.cc
│   ├── bpf_wire_to_json.cc
│   ├── error_lookup.cc
│   ├── intake_wire_to_json.cc
│   └── matching_wire_to_json.cc
├── util/
│   ├── CMakeLists.txt
│   ├── LRU.h
│   ├── agent_id.cc
│   ├── agent_id.h
│   ├── args_parser.cc
│   ├── args_parser.h
│   ├── args_parser.inl
│   ├── aws_instance_metadata.cc
│   ├── aws_instance_metadata.h
│   ├── base64.cc
│   ├── base64.h
│   ├── base64_test.cc
│   ├── bits.h
│   ├── bits_test.cc
│   ├── boot_time.c
│   ├── boot_time.h
│   ├── buffer.h
│   ├── cgroup_parser.cc
│   ├── cgroup_parser.h
│   ├── cgroup_parser_test.cc
│   ├── circular_queue.h
│   ├── circular_queue_cpp.h
│   ├── code_timing.cc
│   ├── code_timing.h
│   ├── common_test.h
│   ├── container_of.h
│   ├── counter.h
│   ├── counter.inl
│   ├── counter_test.cc
│   ├── curl_engine.cc
│   ├── curl_engine.h
│   ├── debug.h
│   ├── defer.h
│   ├── defer_test.cc
│   ├── docker_host_config_metadata.cc
│   ├── docker_host_config_metadata.h
│   ├── docker_host_config_metadata.inl
│   ├── element_queue.c
│   ├── element_queue.h
│   ├── element_queue_cpp.h
│   ├── element_queue_writer.cc
│   ├── element_queue_writer.h
│   ├── enum.h
│   ├── enum.inl
│   ├── enum_operators.inl
│   ├── enum_test.cc
│   ├── environment_variables.cc
│   ├── environment_variables.h
│   ├── environment_variables.inl
│   ├── error_handling.cc
│   ├── error_handling.h
│   ├── expected.h
│   ├── expected_test.cc
│   ├── fast_div.h
│   ├── file_ops.cc
│   ├── file_ops.h
│   ├── fixed_hash.h
│   ├── fixed_hash_test.cc
│   ├── fmt_extensions.h
│   ├── gauge.h
│   ├── gauge.inl
│   ├── gauge_test.cc
│   ├── gcp_instance_metadata.cc
│   ├── gcp_instance_metadata.h
│   ├── histogram.h
│   ├── ip_address.cc
│   ├── ip_address.h
│   ├── ip_address_test.cc
│   ├── iterable_bitmap.h
│   ├── jitter.h
│   ├── jitter.inl
│   ├── jitter_test.cc
│   ├── json.h
│   ├── json_converter.h
│   ├── json_test.cc
│   ├── k8s_metadata.cc
│   ├── k8s_metadata.h
│   ├── k8s_metadata.inl
│   ├── lazy_array.h
│   ├── log.cc
│   ├── log.h
│   ├── log_formatters.h
│   ├── log_modifiers.h
│   ├── log_modifiers_test.cc
│   ├── log_whitelist.cc
│   ├── log_whitelist.h
│   ├── log_whitelist.inl
│   ├── logger.h
│   ├── lookup3.c
│   ├── lookup3.h
│   ├── lookup3_hasher.h
│   ├── lookup3_hasher_test.cc
│   ├── lz4_decompressor.cc
│   ├── lz4_decompressor.h
│   ├── meta.h
│   ├── meta.inl
│   ├── meta_test.cc
│   ├── metric_store.h
│   ├── nomad_metadata.cc
│   ├── nomad_metadata.h
│   ├── overloaded_visitor.h
│   ├── parser_utils.h
│   ├── perf_ring.c
│   ├── perf_ring.h
│   ├── perf_ring_cpp.h
│   ├── pool.h
│   ├── pool_allocator.c
│   ├── pool_allocator.h
│   ├── preprocessor.h
│   ├── proc_io_view.inl
│   ├── proc_ops.cc
│   ├── proc_ops.h
│   ├── proc_ops_test.cc
│   ├── proc_stat_view.inl
│   ├── proc_status_view.inl
│   ├── process_state.h
│   ├── protobuf_log.h
│   ├── raii.h
│   ├── random.cc
│   ├── random.h
│   ├── random.inl
│   ├── random_test.cc
│   ├── raw_json.h
│   ├── render.h
│   ├── resource_usage.h
│   ├── resource_usage_reporter.cc
│   ├── resource_usage_reporter.h
│   ├── restful.cc
│   ├── restful.h
│   ├── restful.inl
│   ├── short_string.h
│   ├── signal_handler.cc
│   ├── signal_handler.h
│   ├── stop_watch.h
│   ├── string.h
│   ├── string.inl
│   ├── string_view.h
│   ├── string_view.inl
│   ├── string_view_test.cc
│   ├── system_ops.cc
│   ├── system_ops.h
│   ├── tdigest.cc
│   ├── tdigest.h
│   ├── tdigest_test.cc
│   ├── time.cc
│   ├── time.h
│   ├── time_test.cc
│   ├── utility.h
│   ├── uv_helpers.cc
│   ├── uv_helpers.h
│   ├── version.cc
│   ├── version.h
│   └── version_config.h.cmake_in
└── version.sh
Download .txt
Showing preview only (341K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4233 symbols across 483 files)

FILE: build-tools/cpp_misc/ccan/build_assert/test/compile_fail-expr.c
  function main (line 3) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/build_assert/test/compile_fail.c
  function main (line 3) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/build_assert/test/compile_ok.c
  function main (line 3) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c
  function main (line 4) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/check_type/test/compile_fail-check_type.c
  function main (line 3) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/check_type/test/compile_fail-check_type_unsigned.c
  function main (line 3) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/check_type/test/compile_fail-check_types_match.c
  function main (line 3) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/check_type/test/run.c
  function main (line 4) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/compiler/test/run-is_compile_constant.c
  function main (line 4) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/container_of/test/compile_fail-bad-type.c
  type foo (line 4) | struct foo {
  function main (line 9) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/container_of/test/compile_fail-types.c
  type foo (line 4) | struct foo {
  function main (line 9) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/container_of/test/compile_fail-var-types.c
  type foo (line 4) | struct foo {
  function main (line 9) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/container_of/test/run.c
  type foo (line 4) | struct foo {
  function main (line 9) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/hash/hash.c
  function hash_u32 (line 191) | uint32_t hash_u32(
  function hashlittle (line 254) | static uint32_t hashlittle( const void *key, size_t length, uint32_t *va...
  function hashbig (line 431) | static uint32_t hashbig( const void *key, size_t length, uint32_t *val2)
  function hash64_stable_64 (line 559) | uint64_t hash64_stable_64(const void *key, size_t n, uint64_t base)
  function hash64_stable_32 (line 598) | uint64_t hash64_stable_32(const void *key, size_t n, uint64_t base)
  function hash64_stable_16 (line 628) | uint64_t hash64_stable_16(const void *key, size_t n, uint64_t base)
  function hash64_stable_8 (line 665) | uint64_t hash64_stable_8(const void *key, size_t n, uint64_t base)
  function hash_any (line 673) | uint32_t hash_any(const void *key, size_t length, uint32_t base)
  function hash_stable_64 (line 681) | uint32_t hash_stable_64(const void *key, size_t n, uint32_t base)
  function hash_stable_32 (line 686) | uint32_t hash_stable_32(const void *key, size_t n, uint32_t base)
  function hash_stable_16 (line 691) | uint32_t hash_stable_16(const void *key, size_t n, uint32_t base)
  function hash_stable_8 (line 696) | uint32_t hash_stable_8(const void *key, size_t n, uint32_t base)
  function hash64_any (line 703) | uint64_t hash64_any(const void *key, size_t length, uint64_t base)
  function driver1 (line 719) | void driver1()
  function driver2 (line 741) | void driver2()
  function driver3 (line 811) | void driver3()
  function driver4 (line 902) | void driver4()
  function main (line 919) | int main()

FILE: build-tools/cpp_misc/ccan/hash/hash.h
  function hash_string (line 129) | static inline uint32_t hash_string(const char *string)
  function hash_pointer (line 299) | static inline uint32_t hash_pointer(const void *p, uint32_t base)

FILE: build-tools/cpp_misc/ccan/hash/test/api-hash_stable.c
  function main (line 8) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/hash/test/run.c
  function main (line 9) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/list/list.c
  type list_node (line 7) | struct list_node
  type list_node (line 8) | struct list_node
  type list_node (line 20) | struct list_node
  type list_node (line 20) | struct list_node
  type list_node (line 23) | struct list_node
  type list_node (line 35) | struct list_node
  type list_head (line 38) | struct list_head
  type list_head (line 38) | struct list_head
  type list_head (line 42) | struct list_head

FILE: build-tools/cpp_misc/ccan/list/list.h
  type list_node (line 22) | struct list_node
  type list_head (line 39) | struct list_head
  type list_head (line 70) | struct list_head
  type list_head (line 70) | struct list_head
  type list_node (line 88) | struct list_node
  type list_node (line 88) | struct list_node
  function list_head_init (line 140) | static inline void list_head_init(struct list_head *h)
  function list_add (line 158) | static inline void list_add(struct list_head *h, struct list_node *n)
  function list_add_tail (line 177) | static inline void list_add_tail(struct list_head *h, struct list_node *n)
  function list_empty (line 195) | static inline bool list_empty(const struct list_head *h)
  function list_del (line 215) | static inline void list_del(struct list_node *n)
  function list_del_from (line 240) | static inline void list_del_from(struct list_head *h, struct list_node *n)
  type list_head (line 288) | struct list_head
  type list_head (line 312) | struct list_head
  type list_node (line 314) | struct list_node
  type list_head (line 340) | struct list_head
  function list_append_list (line 454) | static inline void list_append_list(struct list_head *to,
  function list_prepend_list (line 484) | static inline void list_prepend_list(struct list_head *to,
  type list_node (line 582) | struct list_node
  type list_node (line 586) | struct list_node
  type list_node (line 588) | struct list_node
  type list_head (line 607) | struct list_head
  type list_node (line 608) | struct list_node

FILE: build-tools/cpp_misc/ccan/list/test/compile_ok-constant.c
  type child (line 7) | struct child {
  function children (line 12) | static bool children(const struct list_head *list)
  type child (line 17) | struct child
  type list_head (line 17) | struct list_head
  type child (line 22) | struct child
  type list_head (line 22) | struct list_head
  function check_children (line 27) | static void check_children(const struct list_head *list)
  function print_children (line 32) | static void print_children(const struct list_head *list)
  function main (line 39) | int main(void)

FILE: build-tools/cpp_misc/ccan/list/test/helper.c
  type opaque (line 11) | struct opaque {
  type opaque (line 19) | struct opaque
  type opaque (line 21) | struct opaque
  type opaque (line 21) | struct opaque
  function if_blobs_know_the_secret (line 35) | bool if_blobs_know_the_secret(struct opaque *blob)
  function destroy_opaque_blob (line 51) | void destroy_opaque_blob(struct opaque *blob)

FILE: build-tools/cpp_misc/ccan/list/test/helper.h
  type opaque (line 2) | struct opaque
  type opaque_t (line 3) | typedef struct opaque opaque_t;

FILE: build-tools/cpp_misc/ccan/list/test/run-check-corrupt.c
  function my_fprintf (line 15) | static int my_fprintf(FILE *stream, const char *format, ...)
  function main (line 29) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/list/test/run-list_del_from-assert.c
  function main (line 10) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/list/test/run-list_prev-list_next.c
  type parent (line 6) | struct parent {
  type child (line 12) | struct child {
  function main (line 17) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/list/test/run-prepend_list.c
  function list_expect (line 6) | static bool list_expect(struct list_head *h, ...)
  function main (line 20) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/list/test/run-single-eval.c
  type parent (line 6) | struct parent {
  type child (line 13) | struct child {
  function main (line 22) | int main(int argc, char *argv[])

FILE: build-tools/cpp_misc/ccan/list/test/run.c
  type parent (line 6) | struct parent {
  type child (line 12) | struct child {
  function main (line 19) | int main(int argc, char *argv[])

FILE: channel/buffered_writer.cc
  type channel (line 10) | namespace channel {
    function u32 (line 98) | u32 BufferedWriter::buf_size() const

FILE: channel/buffered_writer.h
  function namespace (line 11) | namespace channel {

FILE: channel/buffered_writer_test.cc
  class BufferedWriterTest (line 22) | class BufferedWriterTest : public Test {
    method SetUp (line 24) | void SetUp() override { writer_.reset(new channel::BufferedWriter(mock...
  function TEST_F (line 30) | TEST_F(BufferedWriterTest, empty_writer)
  function TEST_F (line 37) | TEST_F(BufferedWriterTest, one_flush)

FILE: channel/callbacks.h
  function namespace (line 10) | namespace channel {

FILE: channel/channel.h
  function namespace (line 13) | namespace channel {

FILE: channel/connection_caretaker.cc
  type channel (line 14) | namespace channel {
    function heartbeat_timer_cb (line 18) | void heartbeat_timer_cb(uv_timer_t *timer)
    type sockaddr_in (line 126) | struct sockaddr_in
    type sockaddr_in6 (line 137) | struct sockaddr_in6
    type sockaddr_in (line 148) | struct sockaddr_in
    type sockaddr_in (line 153) | struct sockaddr_in

FILE: channel/connection_caretaker.h
  function namespace (line 22) | namespace channel {

FILE: channel/double_write_channel.cc
  type channel (line 6) | namespace channel {

FILE: channel/double_write_channel.h
  function namespace (line 10) | namespace channel {

FILE: channel/file_channel.cc
  type channel (line 13) | namespace channel {

FILE: channel/file_channel.h
  function namespace (line 11) | namespace channel {

FILE: channel/ibuffered_writer.h
  function class (line 17) | class IBufferedWriter {

FILE: channel/lz4_channel.cc
  type channel (line 7) | namespace channel {

FILE: channel/lz4_channel.h
  function namespace (line 16) | namespace channel {

FILE: channel/mock_channel.h
  function namespace (line 9) | namespace channel {

FILE: channel/network_channel.h
  function namespace (line 12) | namespace channel {

FILE: channel/reconnecting_channel.cc
  type channel (line 12) | namespace channel {
    function connection_timer_cb (line 15) | void connection_timer_cb(uv_timer_t *timer)
    function start_timer_cb (line 24) | void start_timer_cb(uv_timer_t *timer)
    function u32 (line 68) | u32 ReconnectingChannel::received_data(const u8 *data, int data_len)
    function BufferedWriter (line 145) | BufferedWriter &ReconnectingChannel::buffered_writer()
    function u64 (line 162) | u64 ReconnectingChannel::get_start_wait_time() const

FILE: channel/tcp_channel.cc
  type channel (line 25) | namespace channel {
    type addrinfo (line 175) | struct addrinfo
    type addrinfo (line 180) | struct addrinfo
    type sockaddr_in (line 194) | struct sockaddr_in
    type sockaddr_in (line 194) | struct sockaddr_in
    type TCPChannel::send_buffer_t (line 265) | struct TCPChannel::send_buffer_t
    type send_buffer_t (line 267) | struct send_buffer_t
    type send_buffer_t (line 268) | struct send_buffer_t
    type send_buffer_t (line 268) | struct send_buffer_t
    type send_buffer_t (line 280) | struct send_buffer_t
    function in_addr_t (line 327) | in_addr_t const *channel::TCPChannel::connected_address() const

FILE: channel/tcp_channel.h
  function namespace (line 15) | namespace channel {

FILE: channel/test_channel.cc
  type channel (line 10) | namespace channel {
    function u64 (line 74) | u64 TestChannel::get_num_sends()
    function u64 (line 79) | u64 TestChannel::get_num_failed_sends()
    function in_addr_t (line 134) | in_addr_t const *TestChannel::connected_address() const

FILE: channel/test_channel.h
  function namespace (line 20) | namespace channel {

FILE: channel/tls_handler.cc
  type channel (line 8) | namespace channel {
    function in_addr_t (line 42) | in_addr_t const *TLSHandler::connected_address() const

FILE: channel/tls_handler.h
  function namespace (line 13) | namespace channel {

FILE: channel/upstream_connection.cc
  type channel (line 9) | namespace channel {
    function BufferedWriter (line 61) | BufferedWriter &UpstreamConnection::buffered_writer()
    function in_addr_t (line 66) | in_addr_t const *UpstreamConnection::connected_address() const

FILE: channel/upstream_connection.h
  function namespace (line 15) | namespace channel {

FILE: collector/cloud/collector.cc
  type collector::cloud (line 16) | namespace collector::cloud {

FILE: collector/cloud/collector.h
  function namespace (line 19) | namespace collector::cloud {

FILE: collector/cloud/entrypoint.cc
  function cloud_collector_run (line 39) | static int cloud_collector_run(int argc, char **argv)
  function otn_cloud_collector_main (line 127) | int otn_cloud_collector_main(int argc, const char **argv)

FILE: collector/cloud/enumerator.cc
  type collector::cloud (line 26) | namespace collector::cloud {
    function translate_interfaces_to_spans (line 53) | void translate_interfaces_to_spans(

FILE: collector/cloud/enumerator.h
  function namespace (line 18) | namespace collector::cloud {

FILE: collector/cloud/ingest_connection.cc
  type collector::cloud (line 8) | namespace collector::cloud {
    function u32 (line 50) | u32 IngestConnection::received_data(const u8 *data, int data_len)

FILE: collector/cloud/ingest_connection.h
  function namespace (line 19) | namespace collector::cloud {

FILE: collector/kernel/bpf_handler.cc
  function u64 (line 257) | u64 BPFHandler::serv_lost_count()

FILE: collector/kernel/bpf_handler.h
  type render_bpf_bpf (line 21) | struct render_bpf_bpf
  function class (line 23) | class BPFHandler {

FILE: collector/kernel/bpf_src/render_bpf.c
  function u64 (line 67) | static u64 abs_val(int val)
  type pkts_if_t (line 73) | struct pkts_if_t {
  function u32 (line 80) | static inline u32 packets_in_flight_helper(struct sock *sk)
  type tcp_open_socket_t (line 95) | struct tcp_open_socket_t {
  type udp_stats_t (line 107) | struct udp_stats_t {
  type udp_open_socket_t (line 122) | struct udp_open_socket_t {
  type task_struct (line 136) | struct task_struct
  type task_struct (line 137) | struct task_struct
  type nf_conn (line 151) | struct nf_conn
  type nf_conn (line 152) | struct nf_conn
  type sk_buff (line 162) | struct sk_buff
  type sock (line 167) | struct sock
  type tcp_open_socket_t (line 168) | struct tcp_open_socket_t
  type sock (line 174) | struct sock
  type udp_open_socket_t (line 175) | struct udp_open_socket_t
  type sock (line 182) | struct sock
  function get_flow_cgroup_subsys (line 195) | int get_flow_cgroup_subsys()
  type pt_regs (line 205) | struct pt_regs
  type sock (line 205) | struct sock
  type sk_buff (line 205) | struct sk_buff
  function report_pid_exit (line 210) | static int report_pid_exit(TIMESTAMP timestamp, struct pt_regs *ctx, str...
  function set_task_group_dead (line 216) | static int set_task_group_dead(struct pt_regs *ctx, struct task_struct *...
  function task_group_check_dead_and_remove (line 240) | static int task_group_check_dead_and_remove(struct pt_regs *ctx, struct ...
  function task_is_group_leader (line 251) | static int task_is_group_leader(struct pt_regs *ctx, struct task_struct ...
  function u64 (line 278) | static u64 get_task_cgroup(struct pt_regs *ctx, struct task_struct *tsk)
  function pid_t (line 297) | static pid_t get_task_parent(struct pt_regs *ctx, struct task_struct *tsk)
  function insert_tgid_info (line 315) | static int insert_tgid_info(struct pt_regs *ctx, TGID tgid)
  function remove_tgid_info (line 342) | static int remove_tgid_info(struct pt_regs *ctx, TGID tgid)
  function on_taskstats_exit (line 358) | int on_taskstats_exit(struct pt_regs *ctx)
  function on_cgroup_exit (line 373) | int on_cgroup_exit(struct pt_regs *ctx)
  function onret_cgroup_exit (line 400) | int onret_cgroup_exit(struct pt_regs *ctx)
  function on_set_task_comm (line 432) | int on_set_task_comm(struct pt_regs *ctx)
  function on_wake_up_new_task (line 459) | int on_wake_up_new_task(struct pt_regs *ctx)
  function onret_get_pid_task (line 494) | int onret_get_pid_task(struct pt_regs *ctx)
  function u32 (line 529) | static inline u32 tcp_get_delivered(struct sock *sk)
  function report_rtt_estimator (line 547) | static inline void
  function add_tcp_open_socket (line 639) | static int add_tcp_open_socket(struct pt_regs *ctx, struct sock *sk, u32...
  function remove_tcp_open_socket (line 681) | static void remove_tcp_open_socket(struct pt_regs *ctx, struct sock *sk)
  function submit_set_state_ipv6 (line 712) | static inline void submit_set_state_ipv6(struct pt_regs *ctx, u64 now, i...
  function submit_set_state_ipv4 (line 733) | static inline void submit_set_state_ipv4(struct pt_regs *ctx, u64 now, i...
  function submit_reset_tcp_counters (line 754) | static inline void submit_reset_tcp_counters(struct pt_regs *ctx, u64 no...
  function ensure_tcp_existing (line 770) | static int ensure_tcp_existing(struct pt_regs *ctx, struct sock *sk, u32...
  type tcp_open_socket_t (line 807) | struct tcp_open_socket_t
  type pt_regs (line 807) | struct pt_regs
  type sock (line 807) | struct sock
  type tcp_open_socket_t (line 833) | struct tcp_open_socket_t
  function restart_tcp_socket (line 840) | static void restart_tcp_socket(struct pt_regs *ctx, TIMESTAMP now, struc...
  function on_tcp_connect (line 866) | int on_tcp_connect(struct pt_regs *ctx)
  function on_inet_csk_listen_start (line 906) | int on_inet_csk_listen_start(struct pt_regs *ctx)
  function tcp_lifetime_hack (line 948) | static void tcp_lifetime_hack(struct pt_regs *ctx, struct sock *sk)
  function on_tcp_init_sock (line 965) | int on_tcp_init_sock(struct pt_regs *ctx)
  function on_inet_csk_accept (line 1007) | int on_inet_csk_accept(struct pt_regs *ctx)
  function onret_inet_csk_accept (line 1043) | int onret_inet_csk_accept(struct pt_regs *ctx)
  function tcp46_seq_show_impl (line 1136) | static int tcp46_seq_show_impl(struct pt_regs *ctx, struct seq_file *seq...
  function on_tcp4_seq_show (line 1175) | int on_tcp4_seq_show(struct pt_regs *ctx)
  function on_tcp6_seq_show (line 1183) | int on_tcp6_seq_show(struct pt_regs *ctx)
  function __always_inline (line 1204) | static __always_inline int add_udp_open_socket(struct pt_regs *ctx, stru...
  function __always_inline (line 1230) | static __always_inline int ensure_udp_existing(struct pt_regs *ctx, stru...
  function udp_open_socket_t (line 1264) | udp_open_socket_t *udp_existing_hack(struct pt_regs *ctx, struct sock *sk)
  function __always_inline (line 1295) | static __always_inline void
  function remove_udp_open_socket (line 1323) | static void remove_udp_open_socket(struct pt_regs *ctx, struct sock *sk)
  function udp_lifetime_hack (line 1356) | static void udp_lifetime_hack(struct pt_regs *ctx, struct sock *sk)
  function udp46_seq_show_impl (line 1371) | static int udp46_seq_show_impl(struct pt_regs *ctx, struct seq_file *seq...
  function on_udp4_seq_show (line 1405) | int on_udp4_seq_show(struct pt_regs *ctx)
  function on_udp6_seq_show (line 1413) | int on_udp6_seq_show(struct pt_regs *ctx)
  function udp_v46_get_port_impl (line 1421) | static int udp_v46_get_port_impl(struct pt_regs *ctx, struct sock *sk)
  function on_udp_v4_get_port (line 1445) | int on_udp_v4_get_port(struct pt_regs *ctx)
  function on_udp_v6_get_port (line 1452) | int on_udp_v6_get_port(struct pt_regs *ctx)
  function onret_udp_get_port_impl (line 1458) | static int onret_udp_get_port_impl(struct pt_regs *ctx)
  function onret_udp_v4_get_port (line 1504) | int onret_udp_v4_get_port(struct pt_regs *ctx)
  function onret_udp_v6_get_port (line 1510) | int onret_udp_v6_get_port(struct pt_regs *ctx)
  function remove_open_socket (line 1526) | static inline void remove_open_socket(struct pt_regs *ctx, struct sock *sk)
  function on_security_sk_free (line 1552) | int on_security_sk_free(struct pt_regs *ctx)
  function on_inet_release (line 1564) | int on_inet_release(struct pt_regs *ctx)
  function onret_inet_release (line 1584) | int onret_inet_release(struct pt_regs *ctx)
  function handle_tcp_reset (line 1605) | static void handle_tcp_reset(struct pt_regs *ctx, struct sock *sk, u8 is...
  function on_tcp_reset (line 1620) | int on_tcp_reset(struct pt_regs *ctx)
  function __always_inline (line 1634) | static __always_inline void udp_update_stats(
  function on_udp_send_skb__2 (line 1731) | int on_udp_send_skb__2(struct pt_regs *ctx)
  function on_udp_v6_send_skb__2 (line 1746) | int on_udp_v6_send_skb__2(struct pt_regs *ctx)
  function on_ip_send_skb__2 (line 1763) | int on_ip_send_skb__2(struct pt_regs *ctx)
  function on_ip6_send_skb__2 (line 1791) | int on_ip6_send_skb__2(struct pt_regs *ctx)
  function on_udp_send_skb (line 1817) | int on_udp_send_skb(struct pt_regs *ctx)
  function on_udp_v6_send_skb (line 1843) | int on_udp_v6_send_skb(struct pt_regs *ctx)
  function on_tcp_send_active_reset (line 1877) | int on_tcp_send_active_reset(struct pt_regs *ctx)
  function on_ip_send_skb (line 1889) | int on_ip_send_skb(struct pt_regs *ctx)
  function on_ip6_send_skb (line 1932) | int on_ip6_send_skb(struct pt_regs *ctx)
  function handle_receive_udp_skb (line 1987) | int handle_receive_udp_skb(struct pt_regs *ctx)
  function handle_receive_udp_skb__2 (line 2046) | int handle_receive_udp_skb__2(struct pt_regs *ctx)
  function report_rtt_estimator_if_time (line 2066) | static void report_rtt_estimator_if_time(struct pt_regs *ctx, struct soc...
  function on_tcp_rtt_estimator (line 2077) | int on_tcp_rtt_estimator(struct pt_regs *ctx)
  function on_tcp_rcv_established (line 2099) | int on_tcp_rcv_established(struct pt_regs *ctx)
  function on_tcp_event_data_recv (line 2133) | int on_tcp_event_data_recv(struct pt_regs *ctx)
  function handle_syn_timeout (line 2161) | static void handle_syn_timeout(struct pt_regs *ctx, struct sock *sk)
  function on_tcp_retransmit_timer (line 2185) | int on_tcp_retransmit_timer(struct pt_regs *ctx)
  function on_tcp_syn_ack_timeout (line 2197) | int on_tcp_syn_ack_timeout(struct pt_regs *ctx)
  type dns_message_data (line 2245) | struct dns_message_data {
  type dns_message_data (line 2253) | struct dns_message_data
  function __always_inline (line 2260) | static __always_inline void
  function on_skb_consume_udp (line 2373) | int on_skb_consume_udp(struct pt_regs *ctx, struct sock *sk, struct sk_b...
  function on___skb_free_datagram_locked (line 2382) | int on___skb_free_datagram_locked(struct pt_regs *ctx)
  function on_skb_free_datagram_locked (line 2389) | int on_skb_free_datagram_locked(struct pt_regs *ctx)
  function __always_inline (line 2398) | static __always_inline u32 get_css_id(struct cgroup_subsys_state *css)
  function cgroup (line 2403) | cgroup *get_css_parent_cgroup(struct cgroup_subsys_state *css)
  type cgroup (line 2412) | struct cgroup
  type cgroup___3_11 (line 2422) | struct cgroup___3_11
  type cgroup_name___3_11 (line 2423) | struct cgroup_name___3_11
  type cgroup (line 2431) | struct cgroup
  type cgroup (line 2431) | struct cgroup
  type cgroup___3_11 (line 2437) | struct cgroup___3_11
  function on_kill_css (line 2446) | int on_kill_css(struct pt_regs *ctx)
  function on_cgroup_destroy_locked (line 2464) | int on_cgroup_destroy_locked(struct pt_regs *ctx)
  function on_css_populate_dir (line 2483) | int on_css_populate_dir(struct pt_regs *ctx)
  function on_cgroup_populate_dir (line 2501) | int on_cgroup_populate_dir(struct pt_regs *ctx)
  function on_cgroup_control (line 2524) | int on_cgroup_control(struct pt_regs *ctx)
  function handle_existing_cgroup (line 2538) | static inline int handle_existing_cgroup(struct pt_regs *ctx, struct cgr...
  function onret_cgroup_control (line 2553) | int onret_cgroup_control(struct pt_regs *ctx)
  function onret_cgroup_get_from_fd (line 2571) | int onret_cgroup_get_from_fd(struct pt_regs *ctx)
  function on_cgroup_clone_children_read_css (line 2588) | int on_cgroup_clone_children_read_css(struct pt_regs *ctx, struct cgroup...
  function on_cgroup_clone_children_read (line 2610) | int on_cgroup_clone_children_read(struct pt_regs *ctx)
  function on_cgroup_attach_task (line 2627) | int on_cgroup_attach_task(struct pt_regs *ctx)
  function on_nf_ct_delete (line 2652) | int on_nf_ct_delete(struct pt_regs *ctx)
  function on___nf_conntrack_confirm (line 2695) | int on___nf_conntrack_confirm(struct pt_regs *ctx)
  function onret___nf_conntrack_confirm (line 2709) | int onret___nf_conntrack_confirm(struct pt_regs *ctx)
  function on_ctnetlink_dump_tuples (line 2800) | int on_ctnetlink_dump_tuples(struct pt_regs *ctx)

FILE: collector/kernel/bpf_src/render_bpf.h
  type BPF_LOG_CODE (line 83) | enum BPF_LOG_CODE {
  type BPF_TABLE_ID (line 104) | enum BPF_TABLE_ID {

FILE: collector/kernel/bpf_src/tcp-processor/bpf_data_channel.h
  function __always_inline (line 137) | static __always_inline void

FILE: collector/kernel/bpf_src/tcp-processor/bpf_debug.h
  function s_print_bpf_assert (line 20) | static void s_print_bpf_assert(int cond, const char *condstr)
  function __always_inline (line 39) | static __always_inline void stack_trace(struct pt_regs *ctx)
  function __always_inline (line 53) | static __always_inline int __check_broken_in6_addr(struct in6_addr *addr...

FILE: collector/kernel/bpf_src/tcp-processor/bpf_http_protocol.h
  type http_protocol_state_data_t (line 12) | struct http_protocol_state_data_t {
  function TCP_PROTOCOL_DETECT_RESULT (line 17) | TCP_PROTOCOL_DETECT_RESULT http_detect(
  function __always_inline (line 98) | static __always_inline void http_process_request(
  function __always_inline (line 126) | static __always_inline void http_process_response(

FILE: collector/kernel/bpf_src/tcp-processor/bpf_inet_csk_accept.h
  function SEC (line 22) | END_DECLARE_SAVED_ARGS(inet_csk_accept)
  type pt_regs (line 65) | struct pt_regs
  type sock (line 70) | struct sock
  type tcp_connection_t (line 91) | struct tcp_connection_t

FILE: collector/kernel/bpf_src/tcp-processor/bpf_memory.h
  function __always_inline (line 20) | static __always_inline int string_starts_with(const char *s1, const size...
  function __always_inline (line 46) | static __always_inline int char_to_number(char x)

FILE: collector/kernel/bpf_src/tcp-processor/bpf_tcp_events.h
  type tcp_events_t (line 19) | struct tcp_events_t {
  function __always_inline (line 56) | static __always_inline void
  function __always_inline (line 78) | static __always_inline void tcp_events_submit_tcp_data(

FILE: collector/kernel/bpf_src/tcp-processor/bpf_tcp_processor.c
  type pt_regs (line 43) | struct pt_regs
  type tcp_connection_t (line 44) | struct tcp_connection_t
  type tcp_control_value_t (line 45) | struct tcp_control_value_t
  type STREAM_TYPE (line 46) | enum STREAM_TYPE
  type pt_regs (line 50) | struct pt_regs
  type tcp_connection_t (line 51) | struct tcp_connection_t
  type tcp_control_value_t (line 52) | struct tcp_control_value_t
  type STREAM_TYPE (line 53) | enum STREAM_TYPE
  function __always_inline (line 74) | static __always_inline void tcp_client_handler(
  function __always_inline (line 133) | static __always_inline void tcp_server_handler(

FILE: collector/kernel/bpf_src/tcp-processor/bpf_tcp_send_recv.h
  type msghdr (line 32) | struct msghdr
  function BEGIN_DECLARE_SAVED_ARGS (line 42) | END_DECLARE_SAVED_ARGS(tcp_recvmsg)
  function iovec (line 119) | iovec *msg_iter_get_iov(struct msghdr *msg)
  function __always_inline (line 136) | static __always_inline bool iter_is_ubuf(const struct msghdr *msg)
  function __always_inline (line 154) | static __always_inline void ubuf_as_iovec(const struct msghdr *msg, void...
  function __always_inline (line 172) | static __always_inline void tcp_send_stream_handler(
  function __always_inline (line 190) | static __always_inline void tcp_recv_stream_handler(
  function handle_kprobe__tcp_sendmsg (line 214) | __attribute__((noinline)) int handle_kprobe__tcp_sendmsg(struct pt_regs ...
  function handle_kretprobe__tcp_sendmsg (line 324) | int handle_kretprobe__tcp_sendmsg(struct pt_regs *ctx)
  function continue_tcp_sendmsg (line 333) | int continue_tcp_sendmsg(struct pt_regs *ctx)
  function handle_kprobe__tcp_recvmsg (line 413) | int handle_kprobe__tcp_recvmsg(struct pt_regs *ctx)
  function handle_kretprobe__tcp_recvmsg (line 517) | int handle_kretprobe__tcp_recvmsg(struct pt_regs *ctx)
  function continue_tcp_recvmsg (line 526) | int continue_tcp_recvmsg(struct pt_regs *ctx)

FILE: collector/kernel/bpf_src/tcp-processor/bpf_tcp_socket.h
  type tcp_stream_info_t (line 37) | struct tcp_stream_info_t {
  type tcp_protocol_state_t (line 47) | struct tcp_protocol_state_t {
  type tcp_connection_t (line 55) | struct tcp_connection_t {
  type sock (line 67) | struct sock
  type tcp_connection_t (line 68) | struct tcp_connection_t
  type tcp_control_key_t (line 74) | struct tcp_control_key_t
  type tcp_control_value_t (line 75) | struct tcp_control_value_t
  function tcp_connection_t (line 83) | tcp_connection_t *lookup_tcp_connection(struct sock *sk)
  type tcp_connection_t (line 93) | struct tcp_connection_t
  type pt_regs (line 93) | struct pt_regs
  type sock (line 93) | struct sock
  type tcp_connection_t (line 95) | struct tcp_connection_t
  type tcp_connection_t (line 116) | struct tcp_connection_t
  type tcp_control_key_t (line 126) | struct tcp_control_key_t
  type tcp_control_value_t (line 127) | struct tcp_control_value_t
  function tcp_control_value_t (line 140) | tcp_control_value_t *get_tcp_control(struct tcp_connection_t *pconn)
  function __always_inline (line 150) | static __always_inline void enable_tcp_connection(struct tcp_control_val...
  function delete_tcp_connection (line 163) | static void delete_tcp_connection(struct pt_regs *ctx, struct tcp_connec...
  function __always_inline (line 183) | static __always_inline void write_to_tcp_stream(
  function handle_kprobe__tcp_init_sock (line 234) | int handle_kprobe__tcp_init_sock(struct pt_regs *ctx)
  function handle_kprobe__security_sk_free (line 255) | int handle_kprobe__security_sk_free(struct pt_regs *ctx)

FILE: collector/kernel/bpf_src/tcp-processor/bpf_types.h
  type u64 (line 8) | typedef u64 PID_TGID;
  type u32 (line 9) | typedef u32 TGID;
  type u32 (line 10) | typedef u32 PID;
  type u64 (line 31) | typedef u64 TIMESTAMP;
  function __always_inline (line 105) | static __always_inline TIMESTAMP get_timestamp(void)
  type BPF_LOG_GLOBALS (line 116) | struct BPF_LOG_GLOBALS {
  type BPF_LOG_GLOBALS (line 123) | struct BPF_LOG_GLOBALS
  function _bpf_log (line 132) | static void __always_inline _bpf_log(int filelineid, struct pt_regs *ctx...
  function in6_addr (line 179) | in6_addr make_ipv6_address(__be32 addr)

FILE: collector/kernel/bpf_src/tcp-processor/tcp-processor.py
  class BPFWrapper (line 30) | class BPFWrapper:
    method __init__ (line 32) | def __init__(self, bpf):
    method attach_kprobe (line 35) | def attach_kprobe(self, event=b"", event_off=0, fn_name=b"", event_re=...
    method attach_kprobe_all (line 44) | def attach_kprobe_all(self, events, event_off=0, fn_name=b"", event_re...
    method attach_kretprobe (line 54) | def attach_kretprobe(self, event=b"", fn_name=b"", event_re=b"", maxac...
    method attach_kretprobe_all (line 63) | def attach_kretprobe_all(self, events, fn_name=b"", event_re=b"", maxa...
    method __getattr__ (line 74) | def __getattr__(self, name):
    method __getitem__ (line 81) | def __getitem__(self, key):
  class PassThruPreprocessor (line 88) | class PassThruPreprocessor(Preprocessor):
    method __init__ (line 89) | def __init__(self,lexer=None):
    method write_debug_info (line 95) | def write_debug_info(self, debugfile):
    method token (line 110) | def token(self):
    method on_include_not_found (line 119) | def on_include_not_found(self, is_system_include, curdir, includepath):
    method on_unknown_macro_in_defined_expr (line 123) | def on_unknown_macro_in_defined_expr(self, tok):
    method on_unknown_macro_in_expr (line 126) | def on_unknown_macro_in_expr(self, tok):
    method on_directive_handle (line 129) | def on_directive_handle(self, directive, toks, ifpassthru, precedingto...
    method on_directive_unknown (line 160) | def on_directive_unknown(self, directive, toks, ifpassthru, precedingt...
  class TCPEventHTTPResponse (line 220) | class TCPEventHTTPResponse(ct.Structure):
  class TCPEventTCPData (line 227) | class TCPEventTCPData(ct.Structure):
  class TCPEventData (line 236) | class TCPEventData(ct.Union):
  class TCPEvent (line 244) | class TCPEvent(ct.Structure):
  class TCPDataHeader (line 254) | class TCPDataHeader(ct.Structure):
  class TCPDataMessage (line 260) | class TCPDataMessage(ct.Structure):
  function print_tcp_event (line 270) | def print_tcp_event(cpu, data, size):
  function process_data_channel (line 282) | def process_data_channel(cpu, data, size):

FILE: collector/kernel/bpf_src/tcp-processor/tcp_processor.h
  type STREAM_TYPE (line 21) | enum STREAM_TYPE { ST_SEND = 0, ST_RECV = 1 }
  type STREAM_TYPE (line 25) | enum STREAM_TYPE
  type tcp_control_key_t (line 42) | struct tcp_control_key_t {
  type tcp_control_stream_t (line 46) | struct tcp_control_stream_t {
  type tcp_control_value_t (line 51) | struct tcp_control_value_t {
  type data_channel_header_t (line 57) | struct data_channel_header_t {
  type TCP_PROTOCOL_DETECT_RESULT (line 62) | enum TCP_PROTOCOL_DETECT_RESULT { TPD_FAILED = -1, TPD_UNKNOWN = 0, TPD_...

FILE: collector/kernel/bpf_src/vmlinux_compat.h
  type iov_iter___5_13_19 (line 13) | struct iov_iter___5_13_19 {
  type msghdr___5_13_19 (line 39) | struct msghdr___5_13_19 {
  type css_id___3_11 (line 59) | struct css_id___3_11 {
  type cgroup_name___3_11 (line 86) | struct cgroup_name___3_11 {
  type cgroup___3_11 (line 91) | struct cgroup___3_11 {
  type cgroup_subsys_state___3_11 (line 166) | struct cgroup_subsys_state___3_11 {
  type tcp_sock___rcv_rtt_est_rtt (line 185) | struct tcp_sock___rcv_rtt_est_rtt {

FILE: collector/kernel/bpf_src/vmlinux_extensions.h
  type in_addr (line 33) | struct in_addr
  type in6_addr (line 34) | struct in6_addr
  type nf_conntrack_man (line 41) | struct nf_conntrack_man {
  type nf_conntrack_tuple (line 47) | struct nf_conntrack_tuple {
  type nf_conntrack_tuple_hash (line 60) | struct nf_conntrack_tuple_hash {
  type nf_conn (line 65) | struct nf_conn {
  type sk_buff___with_nfct (line 70) | struct sk_buff___with_nfct {
  type cgroup (line 74) | struct cgroup
  type cgroup_subsys (line 75) | struct cgroup_subsys
  type cftype (line 77) | struct cftype {
  type cgroup_subsys (line 88) | struct cgroup_subsys {
  type cgroup_subsys_state (line 104) | struct cgroup_subsys_state {
  type cgroup (line 120) | struct cgroup {
  type cgroup_root (line 167) | struct cgroup_root {
  type css_set (line 189) | struct css_set {
  type task_struct___with_css_set (line 214) | struct task_struct___with_css_set {
  type cgroup_subsys_id (line 219) | enum cgroup_subsys_id { mem_cgroup_subsys_id, memory_cgrp_id }

FILE: collector/kernel/buffered_poller.cc
  function comm_to_string (line 41) | std::string_view comm_to_string(std::uint8_t const (&comm)[16])
  type render_bpf_bpf (line 58) | struct render_bpf_bpf
  function u64 (line 232) | u64 BufferedPoller::serv_lost_count()
  type in_addr (line 348) | struct in_addr
  type in6_addr (line 350) | struct in6_addr
  type in6_addr (line 512) | struct in6_addr
  type CLIENT_SERVER_TYPE (line 824) | enum CLIENT_SERVER_TYPE
  type in6_addr (line 894) | struct in6_addr
  type in6_addr (line 989) | struct in6_addr
  type in6_addr (line 993) | struct in6_addr
  type in6_addr (line 996) | struct in6_addr
  type in6_addr (line 999) | struct in6_addr
  function trace_print_udp_socket_entry (line 1104) | void trace_print_udp_socket_entry(const std::string_view &location, udp_...
  function u32 (line 1227) | u32 BufferedPoller::u64_hasher::operator()(u64 const &s) const noexcept
  type STREAM_TYPE (line 1320) | enum STREAM_TYPE
  type CLIENT_SERVER_TYPE (line 1322) | enum CLIENT_SERVER_TYPE

FILE: collector/kernel/buffered_poller.h
  type render_bpf_bpf (line 34) | struct render_bpf_bpf
  function class (line 42) | class BufferedPoller : public PerfPoller {

FILE: collector/kernel/cgroup_handler.cc
  function make_docker_query_url (line 23) | inline std::string make_docker_query_url(std::string const &container_name)
  type jb_agent_internal__kill_css (line 60) | struct jb_agent_internal__kill_css
  type jb_agent_internal__css_populate_dir (line 91) | struct jb_agent_internal__css_populate_dir
  type jb_agent_internal__existing_cgroup_probe (line 117) | struct jb_agent_internal__existing_cgroup_probe
  type jb_agent_internal__cgroup_attach_task (line 137) | struct jb_agent_internal__cgroup_attach_task
  function get_string (line 319) | inline std::string get_string(json const &j)
  function get_string (line 328) | inline std::string get_string(json const &object, char const *key)
  function jb_blob (line 342) | inline jb_blob blob(std::string const &str)

FILE: collector/kernel/cgroup_handler.h
  function class (line 18) | class CgroupHandler {

FILE: collector/kernel/cgroup_handler_test.cc
  class CgroupHandlerTest (line 330) | class CgroupHandlerTest : public ::testing::Test {
    method SetUp (line 332) | void SetUp() override { ASSERT_EQ(0, uv_loop_init(&loop_)); }
    method TearDown (line 334) | void TearDown() override
  function TEST_F (line 343) | TEST_F(CgroupHandlerTest, handle_docker_response)

FILE: collector/kernel/cgroup_prober.cc
  type render_bpf_bpf (line 27) | struct render_bpf_bpf
  type dirent (line 160) | struct dirent
  type dirent (line 213) | struct dirent
  function file_exists (line 231) | static bool file_exists(std::string file_path)
  function is_cgroup_v1_mountpoint (line 242) | static bool is_cgroup_v1_mountpoint(std::string dir_path)
  function is_cgroup_v2_mountpoint (line 249) | static bool is_cgroup_v2_mountpoint(std::string dir_path)

FILE: collector/kernel/cgroup_prober.h
  type render_bpf_bpf (line 18) | struct render_bpf_bpf
  function class (line 24) | class CgroupProber {

FILE: collector/kernel/dns/ares.h
  type CARES_TYPEOF_ARES_SOCKLEN_T (line 71) | typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
  type CARES_TYPEOF_ARES_SSIZE_T (line 72) | typedef CARES_TYPEOF_ARES_SSIZE_T ares_ssize_t;
  type SOCKET (line 218) | typedef SOCKET ares_socket_t;
  type ares_socket_t (line 221) | typedef int ares_socket_t;
  type apattern (line 229) | struct apattern
  type ares_options (line 248) | struct ares_options {
  type hostent (line 269) | struct hostent
  type timeval (line 270) | struct timeval
  type sockaddr (line 271) | struct sockaddr
  type ares_channeldata (line 272) | struct ares_channeldata
  type ares_channeldata (line 274) | struct ares_channeldata
  type hostent (line 278) | struct hostent
  type ares_options (line 305) | struct ares_options
  type ares_options (line 307) | struct ares_options
  type ares_options (line 309) | struct ares_options
  type iovec (line 343) | struct iovec
  type ares_socket_functions (line 344) | struct ares_socket_functions {
  type ares_socket_functions (line 352) | struct ares_socket_functions
  type hostent (line 364) | struct hostent
  type sockaddr (line 371) | struct sockaddr
  type timeval (line 381) | struct timeval
  type timeval (line 381) | struct timeval
  type ares_in6_addr (line 405) | struct ares_in6_addr {
  type ares_addrttl (line 411) | struct ares_addrttl {
  type ares_addr6ttl (line 416) | struct ares_addr6ttl {
  type ares_srv_reply (line 421) | struct ares_srv_reply {
  type ares_mx_reply (line 429) | struct ares_mx_reply {
  type ares_txt_reply (line 435) | struct ares_txt_reply {
  type ares_txt_ext (line 443) | struct ares_txt_ext {
  type ares_naptr_reply (line 452) | struct ares_naptr_reply {
  type ares_soa_reply (line 462) | struct ares_soa_reply {
  type hostent (line 481) | struct hostent
  type ares_addrttl (line 481) | struct ares_addrttl
  type hostent (line 484) | struct hostent
  type ares_addr6ttl (line 484) | struct ares_addr6ttl
  type hostent (line 487) | struct hostent
  type hostent (line 489) | struct hostent
  type ares_srv_reply (line 491) | struct ares_srv_reply
  type ares_mx_reply (line 493) | struct ares_mx_reply
  type ares_txt_reply (line 495) | struct ares_txt_reply
  type ares_txt_ext (line 497) | struct ares_txt_ext
  type ares_naptr_reply (line 499) | struct ares_naptr_reply
  type ares_soa_reply (line 501) | struct ares_soa_reply
  type hostent (line 505) | struct hostent
  type ares_addr_node (line 511) | struct ares_addr_node {
  type ares_addr_port_node (line 520) | struct ares_addr_port_node {
  type ares_addr_node (line 531) | struct ares_addr_node
  type ares_addr_port_node (line 532) | struct ares_addr_port_node
  type ares_addr_node (line 538) | struct ares_addr_node
  type ares_addr_port_node (line 539) | struct ares_addr_port_node

FILE: collector/kernel/dns/ares_expand_name.c
  function _aresx_uztosl (line 32) | long _aresx_uztosl(size_t uznum)
  function dns_expand_name (line 70) | void dns_expand_name(const unsigned char *encoded, const unsigned char *...
  function dns_name_length (line 110) | int dns_name_length(const unsigned char *encoded, const unsigned char *a...
  function dns_expand_name_maxlen (line 164) | int dns_expand_name_maxlen(

FILE: collector/kernel/dns/ares_parse_a_aaaa_reply.c
  function dns_parse_a_aaaa_reply (line 33) | int dns_parse_a_aaaa_reply(

FILE: collector/kernel/dns/ares_parse_query.c
  function dns_parse_query (line 43) | int dns_parse_query(

FILE: collector/kernel/dns/c_ares_nameser.h
  type ns_class (line 26) | typedef enum __ns_class {
  type ns_type (line 38) | typedef enum __ns_type {
  type ns_opcode (line 98) | typedef enum __ns_opcode {
  type ns_rcode (line 108) | typedef enum __ns_rcode {

FILE: collector/kernel/dns/dns.h
  type in_addr (line 42) | struct in_addr
  type in6_addr (line 44) | struct in6_addr

FILE: collector/kernel/dns_requests.h
  function class (line 13) | class DnsRequests {

FILE: collector/kernel/entrypoint.cc
  function refill_log_rate_limit_cb (line 62) | static void refill_log_rate_limit_cb(uv_timer_t *timer)
  function check_permissions (line 85) | void check_permissions()
  function mount_debugfs_if_required (line 109) | void mount_debugfs_if_required()
  function control_stdout_stderr (line 133) | int control_stdout_stderr(bool disable_stdout, bool disable_stderr)
  function set_resource_limits (line 171) | void set_resource_limits()
  function get_uname (line 186) | void get_uname(struct utsname &unamebuf)
  function verify_kernel_blacklist (line 206) | void verify_kernel_blacklist(bool override, struct utsname &unamebuf)
  function kernel_collector_run (line 270) | static int kernel_collector_run(int argc, char **argv)
  function otn_kernel_collector_main (line 610) | int otn_kernel_collector_main(int argc, const char **argv)

FILE: collector/kernel/fd_reader.h
  function class (line 18) | class FDReader {

FILE: collector/kernel/hostport_tuple.h
  function reversed (line 16) | struct hostport_tuple {

FILE: collector/kernel/kernel_collector.cc
  function __try_connecting_cb (line 38) | void __try_connecting_cb(uv_timer_t *timer)
  function __connection_timeout_cb (line 44) | void __connection_timeout_cb(uv_timer_t *timer)
  function __probe_holdoff_cb (line 52) | void __probe_holdoff_cb(uv_timer_t *timer)
  function __polling_steady_state_cb (line 60) | void __polling_steady_state_cb(uv_timer_t *timer)
  function __polling_steady_state_slow_cb (line 66) | void __polling_steady_state_slow_cb(uv_timer_t *timer)
  function __handle_close_cb (line 72) | void __handle_close_cb(uv_handle_t *handle)
  type sockaddr_in (line 387) | struct sockaddr_in
  type sockaddr_in6 (line 398) | struct sockaddr_in6
  type sockaddr_in (line 409) | struct sockaddr_in
  type sockaddr_in (line 414) | struct sockaddr_in
  function u32 (line 538) | u32 KernelCollector::Callbacks::received_data(const u8 *data, int data_len)

FILE: collector/kernel/kernel_collector.h
  function class (line 28) | class KernelCollector {

FILE: collector/kernel/kernel_collector_restarter.h
  function class (line 19) | class KernelCollectorRestarter {

FILE: collector/kernel/kernel_collector_test.cc
  class TestIntakeConfig (line 47) | class TestIntakeConfig : public config::IntakeConfig {
    method allow_compression (line 50) | bool allow_compression() const { return false; }
    method make_channel (line 52) | std::unique_ptr<channel::NetworkChannel> make_channel(uv_loop_t &loop)...
  type StopConditions (line 59) | struct StopConditions {
  class KernelCollectorTest (line 66) | class KernelCollectorTest : public CommonTest {
    method SetUp (line 69) | void SetUp() override
    method TearDown (line 79) | void TearDown() override
    method start_kernel_collector (line 85) | void start_kernel_collector(
    method stop_kernel_collector (line 175) | void stop_kernel_collector()
    method run_test_stopper (line 201) | void run_test_stopper()
    method start_workload (line 264) | void start_workload(std::function<void()> workload_cb)
    method add_workload (line 279) | void add_workload(std::function<void()> workload) { workloads_.push_ba...
    method add_workload_processes (line 281) | void add_workload_processes()
    method add_workload_curl_otel (line 289) | void add_workload_curl_otel()
    method add_workload_curl_localhost (line 297) | void add_workload_curl_localhost()
    method add_workload_stress_ng_sock (line 316) | void add_workload_stress_ng_sock()
    method start_workloads (line 339) | void start_workloads()
    method run_workload_starter (line 348) | void run_workload_starter()
    method stop_workloads (line 369) | void stop_workloads()
    method print_stop_conditions (line 378) | void print_stop_conditions()
    method print_message_counts (line 393) | void print_message_counts()
    method print_json_messages (line 401) | void print_json_messages()
    method binary_messages_check_counts (line 411) | bool binary_messages_check_counts()
    method ProbeHandler (line 445) | ProbeHandler &get_probe_handler()
  function TEST_F (line 497) | TEST_F(KernelCollectorTest, binary)
  function TEST_F (line 514) | TEST_F(KernelCollectorTest, bpf_log)

FILE: collector/kernel/kernel_symbols.cc
  function parse_symbol_name (line 14) | inline std::string_view parse_symbol_name(std::string_view s)
  function KernelSymbols (line 35) | KernelSymbols read_proc_kallsyms(std::istream &stream)
  function KernelSymbols (line 58) | KernelSymbols read_proc_kallsyms(const char *path)

FILE: collector/kernel/kernel_symbols_test.cc
  function TEST (line 38) | TEST(KernelSymbolsTest, ReadStream)
  function TEST (line 52) | TEST(KernelSymbolsTest, ReadProcKallsyms)
  function TEST (line 79) | TEST(KernelSymbolsTest, NoSuchFile)
  function TEST (line 84) | TEST(KernelSymbolsTest, ParseError)
  function TEST (line 90) | TEST(KernelSymbolsTest, NoParseError)
  function TEST (line 96) | TEST(KernelSymbolsTest, Empty)

FILE: collector/kernel/main.cc
  function main (line 6) | int main(int argc, char *argv[])

FILE: collector/kernel/nat_handler.cc
  type jb_agent_internal__nf_nat_cleanup_conntrack (line 18) | struct jb_agent_internal__nf_nat_cleanup_conntrack
  type jb_agent_internal__nf_conntrack_alter_reply (line 45) | struct jb_agent_internal__nf_conntrack_alter_reply
  type jb_agent_internal__existing_conntrack_tuple (line 95) | struct jb_agent_internal__existing_conntrack_tuple
  function hostport_tuple (line 401) | hostport_tuple *NatHandler::get_nat_mapping(u32 src, u32 dst, u16 sport,...

FILE: collector/kernel/nat_handler.h
  function class (line 17) | class NatHandler {

FILE: collector/kernel/nat_prober.cc
  type render_bpf_bpf (line 17) | struct render_bpf_bpf
  type sockaddr_nl (line 76) | struct sockaddr_nl
  type sockaddr (line 81) | struct sockaddr
  type sockaddr_nl (line 90) | struct sockaddr_nl
  type nlct_query_msg (line 99) | struct nlct_query_msg {
    type nlmsghdr (line 100) | struct nlmsghdr
    type nfgenmsg (line 101) | struct nfgenmsg
    type nfattr (line 102) | struct nfattr
    type nfattr (line 104) | struct nfattr
  type nlct_query_msg (line 107) | struct nlct_query_msg
    type nlmsghdr (line 100) | struct nlmsghdr
    type nfgenmsg (line 101) | struct nfgenmsg
    type nfattr (line 102) | struct nfattr
    type nfattr (line 104) | struct nfattr
  type sockaddr (line 131) | struct sockaddr
  type sockaddr (line 143) | struct sockaddr
  type nlmsghdr (line 161) | struct nlmsghdr
  type nlmsghdr (line 161) | struct nlmsghdr

FILE: collector/kernel/nat_prober.h
  type render_bpf_bpf (line 15) | struct render_bpf_bpf
  function class (line 24) | class NatProber {

FILE: collector/kernel/perf_poller.h
  function class (line 13) | class PerfPoller {

FILE: collector/kernel/perf_reader.h
  function class (line 30) | class PerfContainer {
  function class (line 109) | class PerfReader {
  function peek_index (line 188) | inline size_t peek_index() const

FILE: collector/kernel/probe_handler.cc
  function get_online_cpus (line 32) | std::vector<int> get_online_cpus()
  type render_bpf_bpf (line 89) | struct render_bpf_bpf
  type bpf_map (line 91) | struct bpf_map
  function libbpf_print_messages (line 105) | static int libbpf_print_messages(enum libbpf_print_level level, const ch...
  type render_bpf_bpf (line 125) | struct render_bpf_bpf
  type render_bpf_bpf (line 130) | struct render_bpf_bpf
  type render_bpf_bpf (line 138) | struct render_bpf_bpf
  type render_bpf_bpf (line 157) | struct render_bpf_bpf
  type render_bpf_bpf (line 164) | struct render_bpf_bpf
  type bpf_map (line 204) | struct bpf_map
  type render_bpf_bpf (line 204) | struct render_bpf_bpf
  type render_bpf_bpf (line 252) | struct render_bpf_bpf
  type bpf_map (line 254) | struct bpf_map
  type bpf_program (line 262) | struct bpf_program
  type render_bpf_bpf (line 290) | struct render_bpf_bpf
  type render_bpf_bpf (line 305) | struct render_bpf_bpf
  type bpf_link (line 320) | struct bpf_link
  type render_bpf_bpf (line 345) | struct render_bpf_bpf
  type render_bpf_bpf (line 359) | struct render_bpf_bpf
  type render_bpf_bpf (line 373) | struct render_bpf_bpf
  type render_bpf_bpf (line 410) | struct render_bpf_bpf
  type render_bpf_bpf (line 416) | struct render_bpf_bpf
  type render_bpf_bpf (line 440) | struct render_bpf_bpf
  type bpf_map (line 447) | struct bpf_map

FILE: collector/kernel/probe_handler.h
  type render_bpf_bpf (line 22) | struct render_bpf_bpf
  type BpfConfiguration (line 28) | struct BpfConfiguration {
  type ProbeAlternatives (line 38) | struct ProbeAlternatives {
  function class (line 56) | class ProbeHandler {

FILE: collector/kernel/proc_cmdline.cc
  function read_proc_cmdline (line 15) | Expected<std::string, std::error_code> read_proc_cmdline(u32 pid)
  function try_read_proc_cmdline (line 39) | Expected<std::string, std::error_code> try_read_proc_cmdline(u32 pid)

FILE: collector/kernel/proc_net_reader.h
  function class (line 14) | class ProcNetReader {

FILE: collector/kernel/proc_reader.h
  function class (line 12) | class ProcReader {

FILE: collector/kernel/process_handler.cc
  function comm_to_string (line 21) | std::string_view comm_to_string(std::uint8_t const (&comm)[16])
  type jb_agent_internal__pid_info (line 51) | struct jb_agent_internal__pid_info
  type jb_agent_internal__pid_close (line 96) | struct jb_agent_internal__pid_close
  type jb_agent_internal__cgroup_attach_task (line 112) | struct jb_agent_internal__cgroup_attach_task
  type jb_agent_internal__pid_set_comm (line 127) | struct jb_agent_internal__pid_set_comm
  type jb_agent_internal__pid_exit (line 142) | struct jb_agent_internal__pid_exit

FILE: collector/kernel/process_handler.h
  function class (line 28) | class ProcessHandler {

FILE: collector/kernel/process_prober.cc
  type render_bpf_bpf (line 13) | struct render_bpf_bpf
  type render_bpf_bpf (line 17) | struct render_bpf_bpf

FILE: collector/kernel/process_prober.h
  type render_bpf_bpf (line 12) | struct render_bpf_bpf
  function class (line 14) | class ProcessProber {

FILE: collector/kernel/protocols/protocol_handler_base.h
  function class (line 16) | class ProtocolHandlerBase {

FILE: collector/kernel/protocols/protocol_handler_http.cc
  type CLIENT_SERVER_TYPE (line 121) | enum CLIENT_SERVER_TYPE

FILE: collector/kernel/protocols/protocol_handler_http.h
  function class (line 10) | class ProtocolHandler_HTTP : public ProtocolHandlerBase {

FILE: collector/kernel/protocols/protocol_handler_unknown.cc
  function TCP_PROTOCOL_DETECT_RESULT (line 45) | TCP_PROTOCOL_DETECT_RESULT

FILE: collector/kernel/protocols/protocol_handler_unknown.h
  function class (line 10) | class ProtocolHandler_UNKNOWN : public ProtocolHandlerBase {

FILE: collector/kernel/protocols/protocol_tools.h
  function prefix_check (line 8) | inline bool prefix_check(const void *haystack, const size_t haystack_len...
  function char_to_number (line 14) | inline int char_to_number(char x)

FILE: collector/kernel/socket_prober.cc
  type render_bpf_bpf (line 19) | struct render_bpf_bpf
  type bpf_map (line 58) | struct bpf_map

FILE: collector/kernel/socket_prober.h
  type render_bpf_bpf (line 18) | struct render_bpf_bpf
  function class (line 25) | class SocketProber {

FILE: collector/kernel/socket_table.h
  type tcp_statistics (line 18) | struct tcp_statistics {
  type tcp_socket_entry (line 34) | struct tcp_socket_entry {
  type udp_statistics (line 44) | struct udp_statistics {
  type udp_remote_endpoint (line 51) | struct udp_remote_endpoint {
  type udp_socket_entry (line 59) | struct udp_socket_entry {

FILE: collector/kernel/tcp_data_handler.cc
  type render_bpf_bpf (line 32) | struct render_bpf_bpf
  type bpf_map (line 39) | struct bpf_map

FILE: collector/kernel/tcp_data_handler.h
  type render_bpf_bpf (line 24) | struct render_bpf_bpf
  function class (line 27) | class TCPDataHandler {

FILE: collector/kernel/troubleshooting.cc
  function close_agent (line 21) | void close_agent(int exit_code, std::function<void()> flush_and_close, s...
  function print_troubleshooting_message_and_exit (line 32) | void print_troubleshooting_message_and_exit(

FILE: collector/server_command.h
  function ServerCommand (line 10) | enum class ServerCommand : u64 {

FILE: common/client_server_type.h
  type CLIENT_SERVER_TYPE (line 11) | enum CLIENT_SERVER_TYPE {
  type CLIENT_SERVER_TYPE (line 18) | enum CLIENT_SERVER_TYPE

FILE: common/constants.h
  function namespace (line 15) | namespace kernel {
  function namespace (line 21) | namespace versions {

FILE: common/host_info.h
  type HostInfo (line 14) | struct HostInfo {

FILE: common/http_status_code.h
  function is_informational_class (line 92) | constexpr bool is_informational_class(HttpStatusCode code)
  function is_success_class (line 98) | constexpr bool is_success_class(HttpStatusCode code)
  function is_redirection_class (line 104) | constexpr bool is_redirection_class(HttpStatusCode code)
  function is_client_error_class (line 110) | constexpr bool is_client_error_class(HttpStatusCode code)
  function is_server_error_class (line 116) | constexpr bool is_server_error_class(HttpStatusCode code)

FILE: common/intake_encoder.h
  function std (line 16) | inline std::string_view format_as(IntakeEncoder v)

FILE: config/config_file.cc
  type config (line 9) | namespace config {

FILE: config/config_file.h
  function namespace (line 13) | namespace config {

FILE: config/intake_config.cc
  type config (line 14) | namespace config {
    function FileDescriptor (line 23) | FileDescriptor IntakeConfig::create_output_record_file() const

FILE: config/intake_config.h
  function namespace (line 24) | namespace config {
  function namespace (line 124) | namespace fmt {

FILE: crates/build/otn_link_build.rs
  function run (line 1) | pub fn run() {

FILE: crates/cloud-collector-bin/src/main.rs
  function main (line 1) | fn main() {

FILE: crates/cloud-collector-sys/build.rs
  function main (line 3) | fn main() {

FILE: crates/cloud-collector-sys/src/lib.rs
  function otn_cloud_collector_main (line 11) | pub fn otn_cloud_collector_main(argc: c_int, argv: *const *const c_char)...
  function run_with_args (line 14) | pub fn run_with_args<I, S>(args: I) -> i32

FILE: crates/element-queue/src/layout.rs
  type ElementQueueShared (line 7) | pub struct ElementQueueShared {
    method init (line 16) | pub unsafe fn init(shared: *mut ElementQueueShared) {
  type ElementQueueSharedOps (line 23) | pub(crate) trait ElementQueueSharedOps {
    method init_zero (line 24) | fn init_zero(self);
    method get_elem_head (line 27) | fn get_elem_head(self) -> u32;
    method get_buf_head (line 28) | fn get_buf_head(self) -> u32;
    method get_elem_tail (line 29) | fn get_elem_tail(self) -> u32;
    method get_buf_tail (line 30) | fn get_buf_tail(self) -> u32;
    method set_elem_head (line 33) | fn set_elem_head(self, v: u32);
    method set_buf_head (line 34) | fn set_buf_head(self, v: u32);
    method set_elem_tail (line 35) | fn set_elem_tail(self, v: u32);
    method set_buf_tail (line 36) | fn set_buf_tail(self, v: u32);
    method init_zero (line 41) | fn init_zero(self) {
    method get_elem_head (line 51) | fn get_elem_head(self) -> u32 {
    method get_buf_head (line 55) | fn get_buf_head(self) -> u32 {
    method get_elem_tail (line 59) | fn get_elem_tail(self) -> u32 {
    method get_buf_tail (line 63) | fn get_buf_tail(self) -> u32 {
    method set_elem_head (line 68) | fn set_elem_head(self, v: u32) {
    method set_buf_head (line 72) | fn set_buf_head(self, v: u32) {
    method set_elem_tail (line 76) | fn set_elem_tail(self, v: u32) {
    method set_buf_tail (line 80) | fn set_buf_tail(self, v: u32) {
  function contig_size (line 86) | pub fn contig_size(n_elems: u32, buf_len: u32) -> usize {

FILE: crates/element-queue/src/lib.rs
  constant EINVAL (line 6) | pub const EINVAL: i32 = -22;
  constant ENOSPC (line 7) | pub const ENOSPC: i32 = -28;
  constant ENOENT (line 8) | pub const ENOENT: i32 = -2;
  constant EAGAIN (line 9) | pub const EAGAIN: i32 = -11;
  constant ENOSYS (line 10) | pub const ENOSYS: i32 = -38;
  type MemElementQueueStorage (line 21) | pub struct MemElementQueueStorage {
    method new (line 28) | pub fn new(n_elems: u32, buf_len: u32) -> Self {
    method n_elems (line 43) | pub fn n_elems(&self) -> u32 {
    method buf_len (line 46) | pub fn buf_len(&self) -> u32 {
    method data_ptr (line 49) | pub fn data_ptr(&self) -> *mut u8 {
    method make_queue (line 53) | pub fn make_queue(&self) -> Result<ElementQueue, EqError> {
    method queue_from_ptr (line 60) | pub unsafe fn queue_from_ptr(
  function layout_size (line 74) | fn layout_size() {
  function write_read_basic (line 85) | fn write_read_basic() {
  function wrap_around_alignment (line 108) | fn wrap_around_alignment() {
  function peek_value_u64 (line 127) | fn peek_value_u64() {

FILE: crates/element-queue/src/raw.rs
  type EqError (line 9) | pub enum EqError {
    method code (line 18) | pub fn code(self) -> i32 {
  type ElementQueue (line 35) | pub struct ElementQueue {
    method fmt (line 53) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    method new_from_contiguous (line 70) | pub unsafe fn new_from_contiguous(
    method start_write (line 129) | pub fn start_write<'q>(&'q mut self) -> WriteBatch<'q> {
    method start_read (line 214) | pub fn start_read<'q>(&'q mut self) -> ReadBatch<'q> {
    method elem_count (line 291) | pub fn elem_count(&self) -> u32 {
    method elem_capacity (line 296) | pub fn elem_capacity(&self) -> u32 {
    method buf_used (line 301) | pub fn buf_used(&self) -> u32 {
    method buf_capacity (line 306) | pub fn buf_capacity(&self) -> u32 {
    method __next_offset_by_len (line 311) | fn __next_offset_by_len(buf_offset: u32, buf_mask: u32, len: u32) -> u...
    method elems_ref (line 324) | fn elems_ref(&self) -> &[u32] {
    method elems_mut (line 330) | fn elems_mut(&mut self) -> &mut [u32] {
    method data_ref (line 336) | fn data_ref(&self) -> &[u8] {
    method data_mut (line 342) | fn data_mut(&mut self) -> &mut [u8] {
  type WriteBatch (line 120) | pub struct WriteBatch<'q> {
  function write (line 145) | pub fn write<'a>(&'a mut self, len: u32) -> Result<&'a mut [u8], EqError> {
  function finish (line 179) | pub fn finish(self) -> &'q mut ElementQueue {
  function move_from (line 190) | pub fn move_from(&mut self, reader: &ReadBatch<'_>) -> Result<usize, EqE...
  type ReadBatch (line 205) | pub struct ReadBatch<'q> {
  function peek_len (line 228) | pub fn peek_len(&self) -> Result<u32, EqError> {
  function peek (line 236) | pub fn peek(&self) -> Result<&[u8], EqError> {
  function peek_value (line 250) | pub fn peek_value<T: Copy>(&self) -> Result<T, EqError> {
  function read (line 265) | pub fn read(&self) -> Result<&[u8], EqError> {
  function finish (line 278) | pub fn finish(self) -> &'q mut ElementQueue {

FILE: crates/k8s-collector-bin/src/main.rs
  type Cli (line 14) | struct Cli {
  function build_config (line 35) | fn build_config(cli: &Cli) -> Result<Config, String> {
  function print_config (line 68) | fn print_config(cfg: &Config) {
  function main (line 75) | fn main() {

FILE: crates/k8s-collector/src/collector.rs
  type PodStream (line 35) | type PodStream =
  type OwnerStream (line 38) | type OwnerStream = Pin<
  type Collector (line 46) | pub struct Collector {
    method new (line 63) | pub async fn new(cfg: Config) -> Result<Self, crate::Error> {
    method with_client (line 71) | pub fn with_client(cfg: Config, client: Client) -> Self {
    method next_messages (line 115) | pub async fn next_messages(&mut self) -> Result<Vec<RenderEvent>, crat...
    method start_new_epoch (line 188) | pub fn start_new_epoch(&mut self) -> Vec<RenderEvent> {
    method debug_snapshot (line 196) | pub fn debug_snapshot(&self) -> String {
  function run (line 208) | pub async fn run(cfg: Config) -> Result<(), crate::Error> {
  function map_kube_event (line 342) | fn map_kube_event<K, T>(
  function collector_version (line 355) | fn collector_version() -> (u32, u32, u32) {
  function collector_hostname (line 366) | fn collector_hostname() -> String {
  function perform_handshake (line 376) | async fn perform_handshake<W>(writer: &mut Writer<W>, hostname: &str) ->...
  function timestamp (line 399) | fn timestamp() -> u64 {

FILE: crates/k8s-collector/src/config.rs
  type Config (line 8) | pub struct Config {
  method default (line 23) | fn default() -> Self {

FILE: crates/k8s-collector/src/convert_to_meta.rs
  function pod_to_meta (line 18) | pub fn pod_to_meta(pod: Pod) -> PodMeta {
  function rs_to_owner (line 85) | pub fn rs_to_owner(rs: ReplicaSet) -> OwnerMeta {
  function job_to_owner (line 105) | pub fn job_to_owner(job: Job) -> OwnerMeta {
  function build_version_string (line 125) | fn build_version_string(images: Vec<String>) -> String {

FILE: crates/k8s-collector/src/encode.rs
  type JbBlob (line 18) | struct JbBlob {
  function ebpf_net_ingest_encode_pod_new_with_name (line 24) | fn ebpf_net_ingest_encode_pod_new_with_name(
  function ebpf_net_ingest_encode_pod_container (line 38) | fn ebpf_net_ingest_encode_pod_container(
  function ebpf_net_ingest_encode_pod_delete (line 47) | fn ebpf_net_ingest_encode_pod_delete(dest: *mut u8, dest_len: u32, tstam...
  function ebpf_net_ingest_encode_pod_resync (line 48) | fn ebpf_net_ingest_encode_pod_resync(
  function ebpf_net_ingest_encode_version_info (line 56) | fn ebpf_net_ingest_encode_version_info(
  function ebpf_net_ingest_encode_connect (line 66) | fn ebpf_net_ingest_encode_connect(
  function ebpf_net_ingest_encode_heartbeat (line 75) | fn ebpf_net_ingest_encode_heartbeat(dest: *mut u8, dest_len: u32, tstamp...
  function as_blob (line 79) | fn as_blob(s: &str) -> JbBlob {
  function owner_kind_code (line 87) | fn owner_kind_code(k: OwnerKind) -> u8 {
  function ipv4_to_u32 (line 99) | fn ipv4_to_u32(ip: &str) -> u32 {
  function encode (line 104) | pub fn encode(event: &RenderEvent, tstamp: u64) -> Vec<u8> {
  function encode_version_info (line 193) | pub fn encode_version_info(major: u32, minor: u32, patch: u32, tstamp: u...
  function encode_connect (line 213) | pub fn encode_connect(collector_type: u8, hostname: &str, tstamp: u64) -...
  function encode_heartbeat (line 230) | pub fn encode_heartbeat(tstamp: u64) -> Vec<u8> {

FILE: crates/k8s-collector/src/lib.rs
  type Error (line 28) | pub enum Error {
  function run_with_config (line 43) | pub fn run_with_config(cfg: Config) -> Result<(), Error> {

FILE: crates/k8s-collector/src/matcher.rs
  type DynamicType (line 38) | type DynamicType = ();
  method kind (line 40) | fn kind(_: &Self::DynamicType) -> Cow<'_, str> {
  method group (line 43) | fn group(_: &Self::DynamicType) -> Cow<'_, str> {
  method version (line 46) | fn version(_: &Self::DynamicType) -> Cow<'_, str> {
  method plural (line 49) | fn plural(_: &Self::DynamicType) -> Cow<'_, str> {
  method name (line 52) | fn name(&self) -> Option<Cow<'_, str>> {
  method namespace (line 55) | fn namespace(&self) -> Option<Cow<'_, str>> {
  method resource_version (line 58) | fn resource_version(&self) -> Option<Cow<'_, str>> {
  method uid (line 61) | fn uid(&self) -> Option<Cow<'_, str>> {
  type DynamicType (line 67) | type DynamicType = ();
  method kind (line 69) | fn kind(_: &Self::DynamicType) -> Cow<'_, str> {
  method group (line 72) | fn group(_: &Self::DynamicType) -> Cow<'_, str> {
  method version (line 75) | fn version(_: &Self::DynamicType) -> Cow<'_, str> {
  method plural (line 78) | fn plural(_: &Self::DynamicType) -> Cow<'_, str> {
  method name (line 81) | fn name(&self) -> Option<Cow<'_, str>> {
  method namespace (line 84) | fn namespace(&self) -> Option<Cow<'_, str>> {
  method resource_version (line 87) | fn resource_version(&self) -> Option<Cow<'_, str>> {
  method uid (line 90) | fn uid(&self) -> Option<Cow<'_, str>> {
  type Matcher (line 95) | pub struct Matcher {
    method new (line 109) | pub fn new(
    method pod_ref (line 125) | fn pod_ref(uid: &str) -> ObjectRef<PodMeta> {
    method owner_ref (line 130) | fn owner_ref(uid: &str) -> ObjectRef<OwnerMeta> {
    method get_owner_meta (line 135) | fn get_owner_meta(&self, uid: &str) -> Option<OwnerMeta> {
    method owner_exists (line 144) | fn owner_exists(&self, uid: &str) -> bool {
    method handle_owner (line 150) | pub fn handle_owner(&mut self, ev: Event<OwnerMeta>) -> Vec<RenderEven...
    method handle_pod (line 191) | pub fn handle_pod(&mut self, ev: Event<PodMeta>) -> Vec<RenderEvent> {
    method start_new_epoch (line 226) | pub fn start_new_epoch(&mut self) -> Vec<RenderEvent> {
    method debug_snapshot (line 241) | pub fn debug_snapshot(&self) -> String {
    method try_emit_pod (line 275) | fn try_emit_pod(&mut self, p: PodMeta) -> Vec<RenderEvent> {
  type Harness (line 321) | struct Harness {
    method new (line 329) | fn new() -> Self {
    method handle_rs_owner (line 341) | fn handle_rs_owner(&mut self, ev: Event<OwnerMeta>) -> Vec<RenderEvent> {
    method handle_job_owner (line 345) | fn handle_job_owner(&mut self, ev: Event<OwnerMeta>) -> Vec<RenderEven...
    method handle_pod (line 349) | fn handle_pod(&mut self, ev: Event<PodMeta>) -> Vec<RenderEvent> {
  function pod (line 355) | fn pod(uid: &str, ip: &str, owner: Option<OwnerRef>) -> PodMeta {
  function rs_owner (line 372) | fn rs_owner(uid: &str, controller: Option<OwnerRef>) -> OwnerMeta {
  function ref_kind (line 379) | fn ref_kind(kind: OwnerKind, uid: &str, name: &str) -> OwnerRef {
  function pod_first_then_owner_emits_on_owner_apply (line 390) | fn pod_first_then_owner_emits_on_owner_apply() {
  function owner_first_then_pod_emits_immediately (line 423) | fn owner_first_then_pod_emits_immediately() {
  function initdone_starts_epoch_and_emits_resolvable (line 453) | fn initdone_starts_epoch_and_emits_resolvable() {
  function ownerless_pod_emits_with_no_owner (line 474) | fn ownerless_pod_emits_with_no_owner() {
  function non_rs_job_owner_emits_directly (line 497) | fn non_rs_job_owner_emits_directly() {
  function job_cronjob_escalation (line 524) | fn job_cronjob_escalation() {
  function delete_emits_pod_delete_when_live (line 555) | fn delete_emits_pod_delete_when_live() {
  function owner_flaps_apply_delete_then_pod_apply_emits (line 582) | fn owner_flaps_apply_delete_then_pod_apply_emits() {
  function pod_flaps_apply_delete_then_owner_apply_emits (line 616) | fn pod_flaps_apply_delete_then_owner_apply_emits() {

FILE: crates/k8s-collector/src/output.rs
  type RenderEvent (line 9) | pub enum RenderEvent {
    method from_pod_new (line 45) | pub fn from_pod_new(pod: &PodMeta, owner: Option<&OwnerRef>) -> Vec<Re...

FILE: crates/k8s-collector/src/tombstone_adapter.rs
  type TombstoneAdapter (line 11) | pub struct TombstoneAdapter<T> {
  function new (line 19) | pub fn new(ttl: Duration, cap: usize) -> Self {
  function handle (line 31) | pub fn handle(&mut self, ev: Event<T>) -> impl Iterator<Item = Event<T>> {
  function capacity_evicts_oldest_delete (line 91) | fn capacity_evicts_oldest_delete() {
  function initdone_clears_queue (line 108) | fn initdone_clears_queue() {
  function ttl_expires_before_apply (line 128) | fn ttl_expires_before_apply() {

FILE: crates/k8s-collector/src/types.rs
  type OwnerKind (line 9) | pub enum OwnerKind {
    method is_rs_or_job (line 25) | pub fn is_rs_or_job(self) -> bool {
    type Err (line 31) | type Err = ();
    method from_str (line 34) | fn from_str(s: &str) -> Result<Self, Self::Err> {
  type OwnerRef (line 47) | pub struct OwnerRef {
    method fmt (line 57) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  type ContainerMeta (line 76) | pub struct ContainerMeta {
  type PodMeta (line 86) | pub struct PodMeta {
    method has_ip (line 106) | pub fn has_ip(&self) -> bool {
  type OwnerMeta (line 112) | pub struct OwnerMeta {

FILE: crates/k8s-collector/src/writer.rs
  type Sink (line 20) | enum Sink<W: AsyncWrite + Unpin + Send + 'static> {
  type Writer (line 27) | pub struct Writer<W: AsyncWrite + Unpin + Send + 'static> {
  function new (line 35) | pub fn new(sink: W) -> Self {
  function send (line 42) | pub async fn send(&mut self, buf: &[u8]) -> io::Result<()> {
  function flush (line 75) | pub async fn flush(&mut self) -> io::Result<()> {
  type TestSink (line 112) | struct TestSink(pub Arc<Mutex<Vec<u8>>>);
  method poll_write (line 115) | fn poll_write(
  method poll_flush (line 125) | fn poll_flush(
  method poll_shutdown (line 132) | fn poll_shutdown(
  function flush_visibility_compressed_prop (line 145) | fn flush_visibility_compressed_prop() {

FILE: crates/k8s-collector/tests/collector_prop.rs
  type PipelineHarness (line 16) | struct PipelineHarness {
    method new (line 27) | fn new() -> Self {
    method apply_rs_owner (line 46) | fn apply_rs_owner(&mut self, ev: Event<OwnerMeta>) -> Vec<RenderEvent> {
    method apply_job_owner (line 55) | fn apply_job_owner(&mut self, ev: Event<OwnerMeta>) -> Vec<RenderEvent> {
    method apply_pod (line 64) | fn apply_pod(&mut self, ev: Event<PodMeta>) -> Vec<RenderEvent> {
  type OwnerScenario (line 77) | enum OwnerScenario {
    method from_tag (line 86) | fn from_tag(tag: u8) -> Self {
    method build_for_pod (line 100) | fn build_for_pod(&self, pod_id: u8) -> (Option<OwnerRef>, Vec<OwnerMet...
  type ModelPod (line 175) | struct ModelPod {
  type ModelState (line 185) | struct ModelState {
    method is_live (line 191) | fn is_live(&self, pod_id: u8) -> bool {
    method live_uids (line 198) | fn live_uids(&self) -> BTreeSet<String> {
  function build_pod_meta (line 209) | fn build_pod_meta(pod_id: u8, owner: Option<OwnerRef>) -> PodMeta {
  type Op (line 228) | enum Op {
  function prop_collector_matches_pod_model (line 235) | fn prop_collector_matches_pod_model() {

FILE: crates/k8s-collector/tests/integration_test.rs
  function init_test_logger (line 22) | fn init_test_logger() {
  function ensure_namespace (line 34) | async fn ensure_namespace(client: &Client, name: &str) -> anyhow::Result...
  function delete_if_exists (line 51) | async fn delete_if_exists<T>(api: &Api<T>, name: &str) -> anyhow::Result...
  function wait_for_pod_running_by_label (line 70) | async fn wait_for_pod_running_by_label(
  function containers_ready (line 97) | fn containers_ready(status: &PodStatus) -> bool {
  function create_sleep_deployment (line 105) | async fn create_sleep_deployment(
  function create_replicaset (line 154) | async fn create_replicaset(
  function create_cronjob (line 201) | async fn create_cronjob(client: &Client, namespace: &str, name: &str) ->...
  function create_job_with_cron_owner (line 254) | async fn create_job_with_cron_owner(
  type ObservedPod (line 316) | struct ObservedPod {
  function update_observed_from_event (line 325) | fn update_observed_from_event(obs: &mut ObservedPod, ev: &RenderEvent) {
  function observed_done (line 356) | fn observed_done(obs: &ObservedPod) -> bool {
  function pump_until (line 360) | async fn pump_until<F>(collector: &mut Collector, timeout: Duration, mut...
  function test_k8s_collector_end_to_end_e2e (line 416) | async fn test_k8s_collector_end_to_end_e2e() -> anyhow::Result<()> {

FILE: crates/k8s-relay-bin/src/main.rs
  function main (line 1) | fn main() {

FILE: crates/k8s-relay-sys/build.rs
  function main (line 3) | fn main() {

FILE: crates/k8s-relay-sys/src/lib.rs
  function otn_k8s_relay_main (line 9) | pub fn otn_k8s_relay_main(argc: c_int, argv: *const *const c_char) -> c_...
  function run_with_args (line 12) | pub fn run_with_args<I, S>(args: I) -> i32

FILE: crates/kernel-collector-bin/src/main.rs
  function main (line 1) | fn main() {

FILE: crates/kernel-collector-sys/build.rs
  function main (line 3) | fn main() {

FILE: crates/kernel-collector-sys/src/lib.rs
  function otn_kernel_collector_main (line 11) | pub fn otn_kernel_collector_main(argc: c_int, argv: *const *const c_char...
  function run_with_args (line 14) | pub fn run_with_args<I, S>(args: I) -> i32

FILE: crates/otlp_export/src/lib.rs
  type Label (line 7) | pub struct Label {
  type PublisherStats (line 14) | pub struct PublisherStats {
  type MetricKind (line 27) | pub enum MetricKind {
  function otlp_publisher_new (line 36) | fn otlp_publisher_new(endpoint: &str) -> Box<Publisher>;
  function publish_metric_u64 (line 39) | fn publish_metric_u64(
  function publish_metric_f64 (line 51) | fn publish_metric_f64(
  function publish_flow_log (line 63) | fn publish_flow_log(
  function flush (line 79) | fn flush(self: &mut Publisher);
  function shutdown (line 82) | fn shutdown(self: &mut Publisher);
  function stats (line 85) | fn stats(self: &Publisher) -> PublisherStats;
  type Publisher (line 100) | pub struct Publisher {
    method publish_metric_u64 (line 168) | pub fn publish_metric_u64(
    method publish_metric_f64 (line 199) | pub fn publish_metric_f64(
    method publish_flow_log (line 232) | pub fn publish_flow_log(
    method flush (line 252) | pub fn flush(&mut self) {
    method shutdown (line 446) | pub fn shutdown(&mut self) {
    method stats (line 451) | pub fn stats(&self) -> PublisherStats {
  type PointValue (line 120) | enum PointValue {
  type PendingMetric (line 125) | struct PendingMetric {
  function otlp_publisher_new (line 135) | pub fn otlp_publisher_new(endpoint: &str) -> Box<Publisher> {
  function approx_bytes_metric (line 464) | fn approx_bytes_metric(name: &str, labels: &Vec<Label>) -> u64 {
  function labels_to_otlp_kv (line 472) | fn labels_to_otlp_kv(labels: &Vec<Label>) -> Vec<otlp_common::KeyValue> {
  function normalize_grpc_endpoint (line 484) | fn normalize_grpc_endpoint(input: &str) -> String {
  function saturating_u64_to_i64 (line 495) | fn saturating_u64_to_i64(v: u64) -> i64 {

FILE: crates/perfect_hash_map/src/lib.rs
  type Key (line 42) | pub type Key = u32;
  type HashFn (line 45) | pub type HashFn = fn(Key) -> u32;
  type Entry (line 49) | pub struct Entry<V> {
  type CollisionError (line 58) | pub struct CollisionError {
  type OccupiedEntry (line 64) | pub struct OccupiedEntry<'a, V> {
  function get (line 70) | pub fn get(&self) -> &V {
  function get_mut (line 75) | pub fn get_mut(&mut self) -> &mut V {
  function replace (line 80) | pub fn replace(&mut self, new_value: V) -> V {
  type TryInsertError (line 86) | pub enum TryInsertError<'a, V> {
  function fmt (line 104) | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
  type PerfectHashMap (line 120) | pub struct PerfectHashMap<V, F = HashFn>
  function new (line 139) | pub fn new(hash_size: usize, hash: F) -> Self {
  function len (line 150) | pub fn len(&self) -> usize {
  function is_empty (line 155) | pub fn is_empty(&self) -> bool {
  function capacity (line 160) | pub fn capacity(&self) -> usize {
  function contains_key (line 165) | pub fn contains_key(&self, key: &Key) -> bool {
  function get (line 172) | pub fn get(&self, key: &Key) -> Option<&V> {
  function get_mut (line 183) | pub fn get_mut(&mut self, key: &Key) -> Option<&mut V> {
  function remove (line 192) | pub fn remove(&mut self, key: &Key) -> Option<V> {
  function clear (line 208) | pub fn clear(&mut self) {
  function insert (line 225) | pub fn insert(&mut self, key: Key, value: V) -> Result<Option<V>, Collis...
  function try_insert (line 252) | pub fn try_insert(&mut self, key: Key, value: V) -> Result<&mut V, TryIn...
  function iter (line 284) | pub fn iter(&self) -> Iter<'_, V> {
  function iter_mut (line 294) | pub fn iter_mut(&mut self) -> IterMut<'_, V> {
  function keys (line 304) | pub fn keys(&self) -> Keys<'_, V> {
  function values (line 309) | pub fn values(&self) -> Values<'_, V> {
  function values_mut (line 314) | pub fn values_mut(&mut self) -> ValuesMut<'_, V> {
  type Iter (line 322) | pub struct Iter<'a, V> {
  type Item (line 328) | type Item = (&'a Key, &'a V);
  method next (line 329) | fn next(&mut self) -> Option<Self::Item> {
  method size_hint (line 339) | fn size_hint(&self) -> (usize, Option<usize>) {
  type IterMut (line 347) | pub struct IterMut<'a, V> {
  type Item (line 355) | type Item = (Key, &'a mut V);
  method next (line 356) | fn next(&mut self) -> Option<Self::Item> {
  method size_hint (line 374) | fn size_hint(&self) -> (usize, Option<usize>) {
  type Keys (line 380) | pub struct Keys<'a, V> {
  type Item (line 385) | type Item = &'a Key;
  method next (line 386) | fn next(&mut self) -> Option<Self::Item> {
  method size_hint (line 389) | fn size_hint(&self) -> (usize, Option<usize>) {
  type Values (line 395) | pub struct Values<'a, V> {
  type Item (line 400) | type Item = &'a V;
  method next (line 401) | fn next(&mut self) -> Option<Self::Item> {
  method size_hint (line 404) | fn size_hint(&self) -> (usize, Option<usize>) {
  type ValuesMut (line 410) | pub struct ValuesMut<'a, V> {
  type Item (line 415) | type Item = &'a mut V;
  method next (line 416) | fn next(&mut self) -> Option<Self::Item> {
  method size_hint (line 419) | fn size_hint(&self) -> (usize, Option<usize>) {

FILE: crates/perfect_hash_map/tests/basic.rs
  function phash (line 7) | fn phash(k: u32) -> u32 {
  function new_and_capacity (line 13) | fn new_and_capacity() {
  function basic_insert_get_update_remove (line 22) | fn basic_insert_get_update_remove() {
  function collision_handling (line 37) | fn collision_handling() {
  function clear_empties_map (line 59) | fn clear_empties_map() {
  function queries_and_get_mut (line 76) | fn queries_and_get_mut() {
  function iterators (line 91) | fn iterators() {
  function insert_panics_on_out_of_range_hash (line 117) | fn insert_panics_on_out_of_range_hash() {
  function try_insert_panics_on_out_of_range_hash (line 125) | fn try_insert_panics_on_out_of_range_hash() {
  function get_remove_out_of_range_hash (line 132) | fn get_remove_out_of_range_hash() {
  function generic_hash_closure (line 140) | fn generic_hash_closure() {

FILE: crates/perfect_hash_map/tests/drops.rs
  function phash (line 9) | fn phash(k: u32) -> u32 {
  type DropCounter (line 14) | struct DropCounter(Rc<Cell<usize>>);
  method drop (line 17) | fn drop(&mut self) {
  function drop_on_replace (line 24) | fn drop_on_replace() {
  function drop_on_remove (line 37) | fn drop_on_remove() {
  function drop_on_clear (line 48) | fn drop_on_clear() {
  function drop_on_map_drop (line 59) | fn drop_on_map_drop() {

FILE: crates/perfect_hash_map/tests/prop.rs
  type Shadow (line 11) | struct Shadow {
    method new (line 16) | fn new(n: usize) -> Self {
    method capacity (line 21) | fn capacity(&self) -> usize {
    method hash (line 24) | fn hash(&self, seed: u32, k: u32) -> usize {
    method insert (line 28) | fn insert(&mut self, seed: u32, key: u32, val: i32) -> Result<Option<i...
    method try_insert (line 39) | fn try_insert(&mut self, seed: u32, key: u32, val: i32) -> Result<(), ...
    method get (line 50) | fn get(&self, seed: u32, key: u32) -> Option<i32> {
    method get_mut_add (line 57) | fn get_mut_add(&mut self, seed: u32, key: u32, delta: i32) -> bool {
    method remove (line 67) | fn remove(&mut self, seed: u32, key: u32) -> Option<i32> {
    method clear (line 74) | fn clear(&mut self) {
    method len (line 79) | fn len(&self) -> usize {
  type TryOutcome (line 85) | enum TryOutcome {
  type Op (line 91) | enum Op {
  function prop_sequence_matches_shadow (line 103) | fn prop_sequence_matches_shadow() {
  function prop_iter_mut_transform (line 177) | fn prop_iter_mut_transform() {

FILE: crates/reducer-bin/src/main.rs
  function main (line 1) | fn main() {

FILE: crates/reducer-sys/build.rs
  function main (line 3) | fn main() {

FILE: crates/reducer-sys/src/lib.rs
  type TsdbFormat (line 16) | pub enum TsdbFormat {
  type ReducerConfig (line 27) | pub struct ReducerConfig {
  function otn_reducer_main_with_config (line 80) | unsafe fn otn_reducer_main_with_config(cfg: &ReducerConfig) -> i32;
  function otn_init_logging (line 83) | unsafe fn otn_init_logging(log_console: bool, no_log_file: bool);
  function otn_set_log_level (line 85) | unsafe fn otn_set_log_level(level_code: i32);

FILE: crates/reducer/src/aggregation_core.rs
  type Handler (line 15) | type Handler = Box<dyn Fn(u32, usize, u64, &[u8]) + 'static>;
  type AggregationCore (line 17) | pub struct AggregationCore {
    method new (line 27) | pub fn new(
    method stop (line 71) | pub fn stop(&self) {
    method run (line 75) | pub fn run(&mut self) {

FILE: crates/reducer/src/aggregation_framework.rs
  function aggregate_with (line 49) | pub fn aggregate_with<I, E, R, T, P, F, A, H>(
  function aggregate (line 76) | pub fn aggregate<I, E, R, T, P, A>(iter: I, project: P, add: A) -> HashM...
  function empty_iterator_returns_empty_map (line 98) | fn empty_iterator_returns_empty_map() {
  function single_key_all_elements_aggregated (line 109) | fn single_key_all_elements_aggregated() {
  function distinct_keys_each_once (line 118) | fn distinct_keys_each_once() {
  function aggregate_with_custom_init_non_default_type (line 132) | fn aggregate_with_custom_init_non_default_type() {

FILE: crates/reducer/src/aggregation_message_handler.rs
  type Handler (line 13) | type Handler = Box<dyn Fn(u32, usize, u64, &[u8]) + 'static>;
  type AggregationMessageHandler (line 16) | pub struct AggregationMessageHandler {
    method new (line 21) | pub fn new(
    method on_agg_root_start (line 88) | fn on_agg_root_start(&self, queue_idx: usize, buf: &[u8]) {
    method on_agg_root_end (line 102) | fn on_agg_root_end(&self, queue_idx: usize, buf: &[u8]) {
    method on_update_node (line 112) | fn on_update_node(&self, queue_idx: usize, buf: &[u8]) {
    method on_update_tcp (line 143) | fn on_update_tcp(&self, queue_idx: usize, buf: &[u8]) {
    method on_update_udp (line 169) | fn on_update_udp(&self, queue_idx: usize, buf: &[u8]) {
    method on_update_http (line 191) | fn on_update_http(&self, queue_idx: usize, buf: &[u8]) {
    method on_update_dns (line 215) | fn on_update_dns(&self, queue_idx: usize, buf: &[u8]) {
    method on_pulse (line 239) | fn on_pulse(&self, buf: &[u8]) {

FILE: crates/reducer/src/aggregator.rs
  type Side (line 16) | pub enum Side {
  type Direction (line 22) | pub enum Direction {
  type AggRootKey (line 27) | pub type AggRootKey = (usize, u64);
  type Az (line 30) | pub struct Az {
  type Node (line 43) | pub struct Node {
  type AzRef (line 49) | type AzRef = Ref<Az, ()>;
  type NodeRef (line 50) | type NodeRef = Ref<Node, ()>;
  type AggRoot (line 53) | struct AggRoot {
  type NodeNodeKey (line 63) | struct NodeNodeKey {
    method to_otlp_labels (line 130) | fn to_otlp_labels(
  type NodeAzKey (line 71) | struct NodeAzKey {
    method to_otlp_labels (line 151) | fn to_otlp_labels(
  type AzNodeKey (line 77) | struct AzNodeKey {
    method to_otlp_labels (line 172) | fn to_otlp_labels(
  type AzAzKey (line 83) | struct AzAzKey {
    method to_otlp_labels (line 193) | fn to_otlp_labels(
  type NodeNodeEntry (line 88) | struct NodeNodeEntry {
  type NodeNodeRef (line 93) | type NodeNodeRef = Ref<NodeNodeKey, NodeNodeEntry>;
  function compute_labels (line 96) | fn compute_labels(
  type Aggregator (line 215) | pub struct Aggregator {
    method new (line 233) | pub fn new() -> Self {
    method agg_root_start (line 246) | pub fn agg_root_start(&mut self, key: AggRootKey) {
    method agg_root_end (line 250) | pub fn agg_root_end(&mut self, key: AggRootKey) {
    method update_node (line 255) | pub fn update_node(&mut self, key: AggRootKey, side: Side, az: Az, mut...
    method add_tcp (line 326) | pub fn add_tcp(&mut self, key: AggRootKey, dir: Direction, m: TcpMetri...
    method add_udp (line 338) | pub fn add_udp(&mut self, key: AggRootKey, dir: Direction, m: UdpMetri...
    method add_http (line 350) | pub fn add_http(&mut self, key: AggRootKey, dir: Direction, m: HttpMet...
    method add_dns (line 362) | pub fn add_dns(&mut self, key: AggRootKey, dir: Direction, m: DnsMetri...
    method find_node_node_ref (line 375) | fn find_node_node_ref(&mut self, key: AggRootKey, dir: Direction) -> O...
    method output_metrics (line 389) | pub fn output_metrics(&mut self, window_end_ns: u64, exporter: &mut Ot...
  type AllMetrics (line 503) | pub struct AllMetrics {
    method add (line 515) | fn add(&mut self, other: &Self) {
    method should_emit_any (line 525) | fn should_emit_any(&self) -> bool {

FILE: crates/reducer/src/ffi.rs
  type EqView (line 5) | pub struct EqView {
  function aggregation_core_new (line 15) | fn aggregation_core_new(
  function aggregation_core_run (line 25) | fn aggregation_core_run(self: Pin<&mut AggregationCore>);
  function aggregation_core_stop (line 27) | fn aggregation_core_stop(self: Pin<&mut AggregationCore>);
  method from_views (line 34) | fn from_views(
  function aggregation_core_new (line 59) | fn aggregation_core_new(
  method aggregation_core_run (line 80) | fn aggregation_core_run(self: core::pin::Pin<&mut Self>) {
  method aggregation_core_stop (line 86) | fn aggregation_core_stop(self: core::pin::Pin<&mut Self>) {

FILE: crates/reducer/src/internal_events.rs
  type Counters (line 4) | pub struct Counters {
    method inc_decode_error_agg_root_start (line 19) | pub fn inc_decode_error_agg_root_start(&mut self) {
    method inc_decode_error_agg_root_end (line 22) | pub fn inc_decode_error_agg_root_end(&mut self) {
    method inc_decode_error_update_node (line 25) | pub fn inc_decode_error_update_node(&mut self) {
    method inc_decode_error_update_tcp (line 28) | pub fn inc_decode_error_update_tcp(&mut self) {
    method inc_decode_error_update_udp (line 31) | pub fn inc_decode_error_update_udp(&mut self) {
    method inc_decode_error_update_http (line 34) | pub fn inc_decode_error_update_http(&mut self) {
    method inc_decode_error_update_dns (line 37) | pub fn inc_decode_error_update_dns(&mut self) {
    method inc_decode_error_pulse (line 40) | pub fn inc_decode_error_pulse(&mut self) {
    method inc_missing_root_for_metric (line 44) | pub fn inc_missing_root_for_metric(&mut self) {
    method inc_metric_before_sides_resolved (line 47) | pub fn inc_metric_before_sides_resolved(&mut self) {

FILE: crates/reducer/src/lib.rs
  type Cli (line 19) | struct Cli {
  function default_config (line 143) | fn default_config() -> FfiReducerConfig {
  function parse_tsdb_format (line 192) | fn parse_tsdb_format(s: &str) -> Result<TsdbFormat, String> {
  function build_final_config (line 203) | fn build_final_config(cli: &Cli) -> Result<FfiReducerConfig, String> {
  function to_string_tsdb (line 302) | fn to_string_tsdb(fmt: TsdbFormat) -> &'static str {
  function print_config (line 312) | fn print_config(cfg: &FfiReducerConfig) {
  function run_with_env_args (line 383) | pub fn run_with_env_args() -> i32 {

FILE: crates/reducer/src/metrics.rs
  type TcpMetrics (line 4) | pub struct TcpMetrics {
    method add_from (line 17) | pub fn add_from(&mut self, other: &Self) {
    method is_zero (line 28) | pub fn is_zero(&self) -> bool {
  type UdpMetrics (line 35) | pub struct UdpMetrics {
    method add_from (line 44) | pub fn add_from(&mut self, other: &Self) {
    method is_zero (line 51) | pub fn is_zero(&self) -> bool {
  type HttpMetrics (line 57) | pub struct HttpMetrics {
    method add_from (line 68) | pub fn add_from(&mut self, other: &Self) {
    method is_zero (line 77) | pub fn is_zero(&self) -> bool {
  type DnsMetrics (line 83) | pub struct DnsMetrics {
    method add_from (line 94) | pub fn add_from(&mut self, other: &Self) {
    method is_zero (line 103) | pub fn is_zero(&self) -> bool {

FILE: crates/reducer/src/otlp_encoding.rs
  constant DESC_TCP_BYTES (line 9) | const DESC_TCP_BYTES: &str =
  constant DESC_TCP_RTT_NUM (line 11) | const DESC_TCP_RTT_NUM: &str =
  constant DESC_TCP_ACTIVE (line 13) | const DESC_TCP_ACTIVE: &str =
  constant DESC_TCP_RTT_AVG (line 15) | const DESC_TCP_RTT_AVG: &str =
  constant DESC_TCP_PACKETS (line 17) | const DESC_TCP_PACKETS: &str =
  constant DESC_TCP_RETRANS (line 19) | const DESC_TCP_RETRANS: &str =
  constant DESC_TCP_SYN_TIMEOUTS (line 21) | const DESC_TCP_SYN_TIMEOUTS: &str =
  constant DESC_TCP_NEW_SOCKETS (line 23) | const DESC_TCP_NEW_SOCKETS: &str =
  constant DESC_TCP_RESETS (line 25) | const DESC_TCP_RESETS: &str =
  constant DESC_UDP_BYTES (line 28) | const DESC_UDP_BYTES: &str =
  constant DESC_UDP_PACKETS (line 30) | const DESC_UDP_PACKETS: &str =
  constant DESC_UDP_ACTIVE (line 32) | const DESC_UDP_ACTIVE: &str =
  constant DESC_UDP_DROPS (line 34) | const DESC_UDP_DROPS: &str =
  constant DESC_DNS_CLIENT_AVG (line 37) | const DESC_DNS_CLIENT_AVG: &str =
  constant DESC_DNS_SERVER_AVG (line 39) | const DESC_DNS_SERVER_AVG: &str =
  constant DESC_DNS_ACTIVE (line 41) | const DESC_DNS_ACTIVE: &str =
  constant DESC_DNS_RESPONSES (line 43) | const DESC_DNS_RESPONSES: &str =
  constant DESC_DNS_TIMEOUTS (line 45) | const DESC_DNS_TIMEOUTS: &str =
  constant DESC_HTTP_CLIENT_AVG (line 48) | const DESC_HTTP_CLIENT_AVG: &str =
  constant DESC_HTTP_SERVER_AVG (line 50) | const DESC_HTTP_SERVER_AVG: &str =
  constant DESC_HTTP_ACTIVE (line 52) | const DESC_HTTP_ACTIVE: &str =
  constant DESC_HTTP_STATUS (line 54) | const DESC_HTTP_STATUS: &str =
  type Labels (line 58) | pub type Labels = Vec<OLabel>;
  function resolution_type_string (line 60) | pub fn resolution_type_string(node_type: u8) -> &'static str {
  function add_node_labels (line 77) | pub fn add_node_labels(prefix: &str, node: Option<&Node>, az: Option<&Az...
  constant LABEL_SF_PRODUCT (line 133) | pub const LABEL_SF_PRODUCT: &str = "sf_product";
  constant LABEL_SF_PRODUCT_VALUE (line 134) | pub const LABEL_SF_PRODUCT_VALUE: &str = "network-explorer";
  constant LABEL_AGGREGATION (line 135) | pub const LABEL_AGGREGATION: &str = "aggregation";
  type OtlpExporter (line 138) | pub struct OtlpExporter {
    method with_endpoint (line 158) | pub fn with_endpoint(endpoint: String, enable_descriptions: bool) -> S...
    method new_local (line 166) | pub fn new_local(enable_descriptions: bool) -> Self {
    method publish_u64 (line 176) | fn publish_u64(
    method publish_f64 (line 196) | fn publish_f64(
    method emit_tcp (line 218) | pub fn emit_tcp(&mut self, ts: i64, labels: &Labels, tcp: &TcpMetrics) {
    method emit_udp (line 307) | pub fn emit_udp(&mut self, ts: i64, labels: &Labels, udp: &UdpMetrics) {
    method emit_dns (line 346) | pub fn emit_dns(&mut self, ts: i64, labels: &Labels, dns: &DnsMetrics) {
    method emit_http (line 404) | pub fn emit_http(&mut self, ts: i64, labels: &Labels, http: &HttpMetri...
    method emit_all_metrics (line 506) | pub fn emit_all_metrics(&mut self, ts: i64, labels: &Labels, m: &AllMe...
    method flush (line 521) | pub fn flush(&mut self) {
    method stats (line 524) | pub fn stats(&self) -> PublisherStats {
  method default (line 145) | fn default() -> Self {

FILE: crates/reducer/src/queue_handler.rs
  constant K_MAX_RPC_BATCH_PER_QUEUE (line 10) | const K_MAX_RPC_BATCH_PER_QUEUE: usize = 10_000;
  type QueueHandler (line 14) | pub struct QueueHandler {
    method new_from_views (line 24) | pub fn new_from_views(eq_views: &[(usize, u32, u32)], stop: Arc<Atomic...
    method is_empty (line 48) | pub fn is_empty(&self) -> bool {
    method run (line 59) | pub fn run<HM, HT>(&mut self, mut handle_message: HM, mut handle_times...

FILE: crates/render/ebpf_net/agent_internal/src/encoder.rs
  function ebpf_net_agent_internal_encode_dns_packet (line 13) | pub extern "C" fn ebpf_net_agent_internal_encode_dns_packet(
  function ebpf_net_agent_internal_encode_reset_tcp_counters (line 65) | pub extern "C" fn ebpf_net_agent_internal_encode_reset_tcp_counters(
  function ebpf_net_agent_internal_encode_new_sock_created (line 111) | pub extern "C" fn ebpf_net_agent_internal_encode_new_sock_created(
  function ebpf_net_agent_internal_encode_udp_new_socket (line 149) | pub extern "C" fn ebpf_net_agent_internal_encode_udp_new_socket(
  function ebpf_net_agent_internal_encode_udp_destroy_socket (line 192) | pub extern "C" fn ebpf_net_agent_internal_encode_udp_destroy_socket(
  function ebpf_net_agent_internal_encode_udp_stats (line 228) | pub extern "C" fn ebpf_net_agent_internal_encode_udp_stats(
  function ebpf_net_agent_internal_encode_pid_info (line 284) | pub extern "C" fn ebpf_net_agent_internal_encode_pid_info(
  function ebpf_net_agent_internal_encode_pid_close (line 327) | pub extern "C" fn ebpf_net_agent_internal_encode_pid_close(
  function ebpf_net_agent_internal_encode_pid_set_comm (line 366) | pub extern "C" fn ebpf_net_agent_internal_encode_pid_set_comm(
  function ebpf_net_agent_internal_encode_set_state_ipv4 (line 405) | pub extern "C" fn ebpf_net_agent_internal_encode_set_state_ipv4(
  function ebpf_net_agent_internal_encode_set_state_ipv6 (line 451) | pub extern "C" fn ebpf_net_agent_internal_encode_set_state_ipv6(
  function ebpf_net_agent_internal_encode_rtt_estimator (line 499) | pub extern "C" fn ebpf_net_agent_internal_encode_rtt_estimator(
  function ebpf_net_agent_internal_encode_close_sock_info (line 557) | pub extern "C" fn ebpf_net_agent_internal_encode_close_sock_info(
  function ebpf_net_agent_internal_encode_kill_css (line 593) | pub extern "C" fn ebpf_net_agent_internal_encode_kill_css(
  function ebpf_net_agent_internal_encode_css_populate_dir (line 634) | pub extern "C" fn ebpf_net_agent_internal_encode_css_populate_dir(
  function ebpf_net_agent_internal_encode_existing_cgroup_probe (line 675) | pub extern "C" fn ebpf_net_agent_internal_encode_existing_cgroup_probe(
  function ebpf_net_agent_internal_encode_cgroup_attach_task (line 717) | pub extern "C" fn ebpf_net_agent_internal_encode_cgroup_attach_task(
  function ebpf_net_agent_internal_encode_nf_conntrack_alter_reply (line 758) | pub extern "C" fn ebpf_net_agent_internal_encode_nf_conntrack_alter_reply(
  function ebpf_net_agent_internal_encode_nf_nat_cleanup_conntrack (line 815) | pub extern "C" fn ebpf_net_agent_internal_encode_nf_nat_cleanup_conntrack(
  function ebpf_net_agent_internal_encode_existing_conntrack_tuple (line 862) | pub extern "C" fn ebpf_net_agent_internal_encode_existing_conntrack_tuple(
  function ebpf_net_agent_internal_encode_tcp_syn_timeout (line 911) | pub extern "C" fn ebpf_net_agent_internal_encode_tcp_syn_timeout(
  function ebpf_net_agent_internal_encode_http_response (line 947) | pub extern "C" fn ebpf_net_agent_internal_encode_http_response(
  function ebpf_net_agent_internal_encode_bpf_log (line 991) | pub extern "C" fn ebpf_net_agent_internal_encode_bpf_log(
  function ebpf_net_agent_internal_encode_stack_trace (line 1035) | pub extern "C" fn ebpf_net_agent_internal_encode_stack_trace(
  function ebpf_net_agent_internal_encode_tcp_data (line 1078) | pub extern "C" fn ebpf_net_agent_internal_encode_tcp_data(
  function ebpf_net_agent_internal_encode_pid_exit (line 1124) | pub extern "C" fn ebpf_net_agent_internal_encode_pid_exit(
  function ebpf_net_agent_internal_encode_report_debug_event (line 1164) | pub extern "C" fn ebpf_net_agent_internal_encode_report_debug_event(
  function ebpf_net_agent_internal_encode_tcp_reset (line 1208) | pub extern "C" fn ebpf_net_agent_internal_encode_tcp_reset(
  function ebpf_net_agent_internal_encode_pulse (line 1246) | pub extern "C" fn ebpf_net_agent_internal_encode_pulse(

FILE: crates/render/ebpf_net/agent_internal/src/hash.rs
  constant AGENT_INTERNAL_HASH_SIZE (line 17) | pub const AGENT_INTERNAL_HASH_SIZE: u32 = 64u32;
  function agent_internal_hash (line 24) | pub fn agent_internal_hash(rpc_id: u32) -> u32 {

FILE: crates/render/ebpf_net/agent_internal/src/lib.rs
  type JbBlob (line 8) | pub struct JbBlob {

FILE: crates/render/ebpf_net/agent_internal/src/parsed_message.rs
  type DecodeError (line 13) | pub enum DecodeError {
  type dns_packet (line 21) | pub struct dns_packet {
    constant RPC_ID (line 30) | pub const RPC_ID: u16 = 331u16;
    method decode (line 33) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type reset_tcp_counters (line 86) | pub struct reset_tcp_counters {
    constant RPC_ID (line 97) | pub const RPC_ID: u16 = 332u16;
    method decode (line 100) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type new_sock_created (line 138) | pub struct new_sock_created {
    constant RPC_ID (line 145) | pub const RPC_ID: u16 = 333u16;
    method decode (line 148) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_new_socket (line 178) | pub struct udp_new_socket {
    constant RPC_ID (line 187) | pub const RPC_ID: u16 = 334u16;
    method decode (line 190) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_destroy_socket (line 234) | pub struct udp_destroy_socket {
    constant RPC_ID (line 240) | pub const RPC_ID: u16 = 335u16;
    method decode (line 243) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_stats (line 271) | pub struct udp_stats {
    constant RPC_ID (line 286) | pub const RPC_ID: u16 = 336u16;
    method decode (line 289) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_info (line 355) | pub struct pid_info {
    constant RPC_ID (line 364) | pub const RPC_ID: u16 = 337u16;
    method decode (line 367) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_close (line 411) | pub struct pid_close {
    constant RPC_ID (line 418) | pub const RPC_ID: u16 = 338u16;
    method decode (line 421) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_set_comm (line 461) | pub struct pid_set_comm {
    constant RPC_ID (line 468) | pub const RPC_ID: u16 = 371u16;
    method decode (line 471) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_state_ipv4 (line 511) | pub struct set_state_ipv4 {
    constant RPC_ID (line 522) | pub const RPC_ID: u16 = 339u16;
    method decode (line 525) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_state_ipv6 (line 563) | pub struct set_state_ipv6 {
    constant RPC_ID (line 574) | pub const RPC_ID: u16 = 340u16;
    method decode (line 577) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type rtt_estimator (line 635) | pub struct rtt_estimator {
    constant RPC_ID (line 652) | pub const RPC_ID: u16 = 361u16;
    method decode (line 655) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type close_sock_info (line 705) | pub struct close_sock_info {
    constant RPC_ID (line 711) | pub const RPC_ID: u16 = 362u16;
    method decode (line 714) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type kill_css (line 742) | pub struct kill_css {
    constant RPC_ID (line 750) | pub const RPC_ID: u16 = 363u16;
    method decode (line 753) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type css_populate_dir (line 795) | pub struct css_populate_dir {
    constant RPC_ID (line 803) | pub const RPC_ID: u16 = 364u16;
    method decode (line 806) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type existing_cgroup_probe (line 848) | pub struct existing_cgroup_probe {
    constant RPC_ID (line 856) | pub const RPC_ID: u16 = 365u16;
    method decode (line 859) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type cgroup_attach_task (line 901) | pub struct cgroup_attach_task {
    constant RPC_ID (line 909) | pub const RPC_ID: u16 = 366u16;
    method decode (line 912) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type nf_conntrack_alter_reply (line 954) | pub struct nf_conntrack_alter_reply {
    constant RPC_ID (line 970) | pub const RPC_ID: u16 = 367u16;
    method decode (line 973) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type nf_nat_cleanup_conntrack (line 1021) | pub struct nf_nat_cleanup_conntrack {
    constant RPC_ID (line 1032) | pub const RPC_ID: u16 = 368u16;
    method decode (line 1035) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type existing_conntrack_tuple (line 1073) | pub struct existing_conntrack_tuple {
    constant RPC_ID (line 1085) | pub const RPC_ID: u16 = 369u16;
    method decode (line 1088) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type tcp_syn_timeout (line 1128) | pub struct tcp_syn_timeout {
    constant RPC_ID (line 1134) | pub const RPC_ID: u16 = 370u16;
    method decode (line 1137) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type http_response (line 1165) | pub struct http_response {
    constant RPC_ID (line 1175) | pub const RPC_ID: u16 = 372u16;
    method decode (line 1178) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type bpf_log (line 1214) | pub struct bpf_log {
    constant RPC_ID (line 1224) | pub const RPC_ID: u16 = 373u16;
    method decode (line 1227) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type stack_trace (line 1263) | pub struct stack_trace {
    constant RPC_ID (line 1272) | pub const RPC_ID: u16 = 374u16;
    method decode (line 1275) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type tcp_data (line 1319) | pub struct tcp_data {
    constant RPC_ID (line 1330) | pub const RPC_ID: u16 = 375u16;
    method decode (line 1333) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_exit (line 1371) | pub struct pid_exit {
    constant RPC_ID (line 1379) | pub const RPC_ID: u16 = 377u16;
    method decode (line 1382) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type report_debug_event (line 1414) | pub struct report_debug_event {
    constant RPC_ID (line 1424) | pub const RPC_ID: u16 = 378u16;
    method decode (line 1427) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type tcp_reset (line 1463) | pub struct tcp_reset {
    constant RPC_ID (line 1470) | pub const RPC_ID: u16 = 379u16;
    method decode (line 1473) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pulse (line 1503) | pub struct pulse {
    constant RPC_ID (line 1508) | pub const RPC_ID: u16 = 65535u16;
    method decode (line 1511) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {

FILE: crates/render/ebpf_net/agent_internal/src/wire_messages.rs
  type jb_agent_internal__dns_packet (line 10) | pub struct jb_agent_internal__dns_packet {
    method metadata (line 20) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 27) | fn default() -> Self {
  constant DNS_PACKET_WIRE_SIZE (line 32) | pub const DNS_PACKET_WIRE_SIZE: usize = 16;
  function struct_size (line 39) | fn struct_size() {
  function field_offsets (line 46) | fn field_offsets() {
  type jb_agent_internal__reset_tcp_counters (line 56) | pub struct jb_agent_internal__reset_tcp_counters {
    method metadata (line 68) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 75) | fn default() -> Self {
  constant RESET_TCP_COUNTERS_WIRE_SIZE (line 80) | pub const RESET_TCP_COUNTERS_WIRE_SIZE: usize = 40;
  function struct_size (line 87) | fn struct_size() {
  function field_offsets (line 94) | fn field_offsets() {
  type jb_agent_internal__new_sock_created (line 127) | pub struct jb_agent_internal__new_sock_created {
    method metadata (line 135) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 142) | fn default() -> Self {
  constant NEW_SOCK_CREATED_WIRE_SIZE (line 147) | pub const NEW_SOCK_CREATED_WIRE_SIZE: usize = 16;
  function struct_size (line 154) | fn struct_size() {
  function field_offsets (line 161) | fn field_offsets() {
  type jb_agent_internal__udp_new_socket (line 169) | pub struct jb_agent_internal__udp_new_socket {
    method metadata (line 179) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 186) | fn default() -> Self {
  constant UDP_NEW_SOCKET_WIRE_SIZE (line 191) | pub const UDP_NEW_SOCKET_WIRE_SIZE: usize = 32;
  function struct_size (line 198) | fn struct_size() {
  function field_offsets (line 205) | fn field_offsets() {
  type jb_agent_internal__udp_destroy_socket (line 218) | pub struct jb_agent_internal__udp_destroy_socket {
    method metadata (line 225) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 232) | fn default() -> Self {
  constant UDP_DESTROY_SOCKET_WIRE_SIZE (line 237) | pub const UDP_DESTROY_SOCKET_WIRE_SIZE: usize = 16;
  function struct_size (line 244) | fn struct_size() {
  function field_offsets (line 251) | fn field_offsets() {
  type jb_agent_internal__udp_stats (line 264) | pub struct jb_agent_internal__udp_stats {
    method metadata (line 280) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 287) | fn default() -> Self {
  constant UDP_STATS_WIRE_SIZE (line 292) | pub const UDP_STATS_WIRE_SIZE: usize = 60;
  function struct_size (line 299) | fn struct_size() {
  function field_offsets (line 306) | fn field_offsets() {
  type jb_agent_internal__pid_info (line 325) | pub struct jb_agent_internal__pid_info {
    method metadata (line 335) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 342) | fn default() -> Self {
  constant PID_INFO_WIRE_SIZE (line 347) | pub const PID_INFO_WIRE_SIZE: usize = 36;
  function struct_size (line 354) | fn struct_size() {
  function field_offsets (line 361) | fn field_offsets() {
  type jb_agent_internal__pid_close (line 371) | pub struct jb_agent_internal__pid_close {
    method metadata (line 379) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 386) | fn default() -> Self {
  constant PID_CLOSE_WIRE_SIZE (line 391) | pub const PID_CLOSE_WIRE_SIZE: usize = 24;
  function struct_size (line 398) | fn struct_size() {
  function field_offsets (line 405) | fn field_offsets() {
  type jb_agent_internal__pid_set_comm (line 413) | pub struct jb_agent_internal__pid_set_comm {
    method metadata (line 421) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 428) | fn default() -> Self {
  constant PID_SET_COMM_WIRE_SIZE (line 433) | pub const PID_SET_COMM_WIRE_SIZE: usize = 24;
  function struct_size (line 440) | fn struct_size() {
  function field_offsets (line 447) | fn field_offsets() {
  type jb_agent_internal__set_state_ipv4 (line 455) | pub struct jb_agent_internal__set_state_ipv4 {
    method metadata (line 467) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 474) | fn default() -> Self {
  constant SET_STATE_IPV4_WIRE_SIZE (line 479) | pub const SET_STATE_IPV4_WIRE_SIZE: usize = 26;
  function struct_size (line 486) | fn struct_size() {
  function field_offsets (line 493) | fn field_offsets() {
  type jb_agent_internal__set_state_ipv6 (line 511) | pub struct jb_agent_internal__set_state_ipv6 {
    method metadata (line 523) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 530) | fn default() -> Self {
  constant SET_STATE_IPV6_WIRE_SIZE (line 535) | pub const SET_STATE_IPV6_WIRE_SIZE: usize = 50;
  function struct_size (line 542) | fn struct_size() {
  function field_offsets (line 549) | fn field_offsets() {
  type jb_agent_internal__rtt_estimator (line 564) | pub struct jb_agent_internal__rtt_estimator {
    method metadata (line 582) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 589) | fn default() -> Self {
  constant RTT_ESTIMATOR_WIRE_SIZE (line 594) | pub const RTT_ESTIMATOR_WIRE_SIZE: usize = 60;
  function struct_size (line 601) | fn struct_size() {
  function field_offsets (line 608) | fn field_offsets() {
  type jb_agent_internal__close_sock_info (line 656) | pub struct jb_agent_internal__close_sock_info {
    method metadata (line 663) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 670) | fn default() -> Self {
  constant CLOSE_SOCK_INFO_WIRE_SIZE (line 675) | pub const CLOSE_SOCK_INFO_WIRE_SIZE: usize = 16;
  function struct_size (line 682) | fn struct_size() {
  function field_offsets (line 689) | fn field_offsets() {
  type jb_agent_internal__kill_css (line 696) | pub struct jb_agent_internal__kill_css {
    method metadata (line 705) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 712) | fn default() -> Self {
  constant KILL_CSS_WIRE_SIZE (line 717) | pub const KILL_CSS_WIRE_SIZE: usize = 280;
  function struct_size (line 724) | fn struct_size() {
  function field_offsets (line 731) | fn field_offsets() {
  type jb_agent_internal__css_populate_dir (line 743) | pub struct jb_agent_internal__css_populate_dir {
    method metadata (line 752) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 759) | fn default() -> Self {
  constant CSS_POPULATE_DIR_WIRE_SIZE (line 764) | pub const CSS_POPULATE_DIR_WIRE_SIZE: usize = 280;
  function struct_size (line 771) | fn struct_size() {
  function field_offsets (line 778) | fn field_offsets() {
  type jb_agent_internal__existing_cgroup_probe (line 796) | pub struct jb_agent_internal__existing_cgroup_probe {
    method metadata (line 805) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 812) | fn default() -> Self {
  constant EXISTING_CGROUP_PROBE_WIRE_SIZE (line 817) | pub const EXISTING_CGROUP_PROBE_WIRE_SIZE: usize = 280;
  function struct_size (line 824) | fn struct_size() {
  function field_offsets (line 831) | fn field_offsets() {
  type jb_agent_internal__cgroup_attach_task (line 852) | pub struct jb_agent_internal__cgroup_attach_task {
    method metadata (line 861) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 868) | fn default() -> Self {
  constant CGROUP_ATTACH_TASK_WIRE_SIZE (line 873) | pub const CGROUP_ATTACH_TASK_WIRE_SIZE: usize = 32;
  function struct_size (line 880) | fn struct_size() {
  function field_offsets (line 887) | fn field_offsets() {
  type jb_agent_internal__nf_conntrack_alter_reply (line 908) | pub struct jb_agent_internal__nf_conntrack_alter_reply {
    method metadata (line 925) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 932) | fn default() -> Self {
  constant NF_CONNTRACK_ALTER_REPLY_WIRE_SIZE (line 937) | pub const NF_CONNTRACK_ALTER_REPLY_WIRE_SIZE: usize = 36;
  function struct_size (line 944) | fn struct_size() {
  function field_offsets (line 951) | fn field_offsets() {
  type jb_agent_internal__nf_nat_cleanup_conntrack (line 1004) | pub struct jb_agent_internal__nf_nat_cleanup_conntrack {
    method metadata (line 1016) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1023) | fn default() -> Self {
  constant NF_NAT_CLEANUP_CONNTRACK_WIRE_SIZE (line 1028) | pub const NF_NAT_CLEANUP_CONNTRACK_WIRE_SIZE: usize = 23;
  function struct_size (line 1035) | fn struct_size() {
  function field_offsets (line 1042) | fn field_offsets() {
  type jb_agent_internal__existing_conntrack_tuple (line 1075) | pub struct jb_agent_internal__existing_conntrack_tuple {
    method metadata (line 1088) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1095) | fn default() -> Self {
  constant EXISTING_CONNTRACK_TUPLE_WIRE_SIZE (line 1100) | pub const EXISTING_CONNTRACK_TUPLE_WIRE_SIZE: usize = 24;
  function struct_size (line 1107) | fn struct_size() {
  function field_offsets (line 1114) | fn field_offsets() {
  type jb_agent_internal__tcp_syn_timeout (line 1151) | pub struct jb_agent_internal__tcp_syn_timeout {
    method metadata (line 1158) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1165) | fn default() -> Self {
  constant TCP_SYN_TIMEOUT_WIRE_SIZE (line 1170) | pub const TCP_SYN_TIMEOUT_WIRE_SIZE: usize = 16;
  function struct_size (line 1177) | fn struct_size() {
  function field_offsets (line 1184) | fn field_offsets() {
  type jb_agent_internal__http_response (line 1191) | pub struct jb_agent_internal__http_response {
    method metadata (line 1202) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1209) | fn default() -> Self {
  constant HTTP_RESPONSE_WIRE_SIZE (line 1214) | pub const HTTP_RESPONSE_WIRE_SIZE: usize = 25;
  function struct_size (line 1221) | fn struct_size() {
  function field_offsets (line 1228) | fn field_offsets() {
  type jb_agent_internal__bpf_log (line 1245) | pub struct jb_agent_internal__bpf_log {
    method metadata (line 1256) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1263) | fn default() -> Self {
  constant BPF_LOG_WIRE_SIZE (line 1268) | pub const BPF_LOG_WIRE_SIZE: usize = 48;
  function struct_size (line 1275) | fn struct_size() {
  function field_offsets (line 1282) | fn field_offsets() {
  type jb_agent_internal__stack_trace (line 1293) | pub struct jb_agent_internal__stack_trace {
    method metadata (line 1303) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1310) | fn default() -> Self {
  constant STACK_TRACE_WIRE_SIZE (line 1315) | pub const STACK_TRACE_WIRE_SIZE: usize = 32;
  function struct_size (line 1322) | fn struct_size() {
  function field_offsets (line 1329) | fn field_offsets() {
  type jb_agent_internal__tcp_data (line 1345) | pub struct jb_agent_internal__tcp_data {
    method metadata (line 1357) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1364) | fn default() -> Self {
  constant TCP_DATA_WIRE_SIZE (line 1369) | pub const TCP_DATA_WIRE_SIZE: usize = 28;
  function struct_size (line 1376) | fn struct_size() {
  function field_offsets (line 1383) | fn field_offsets() {
  type jb_agent_internal__pid_exit (line 1398) | pub struct jb_agent_internal__pid_exit {
    method metadata (line 1407) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1414) | fn default() -> Self {
  constant PID_EXIT_WIRE_SIZE (line 1419) | pub const PID_EXIT_WIRE_SIZE: usize = 20;
  function struct_size (line 1426) | fn struct_size() {
  function field_offsets (line 1433) | fn field_offsets() {
  type jb_agent_internal__report_debug_event (line 1442) | pub struct jb_agent_internal__report_debug_event {
    method metadata (line 1453) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1460) | fn default() -> Self {
  constant REPORT_DEBUG_EVENT_WIRE_SIZE (line 1465) | pub const REPORT_DEBUG_EVENT_WIRE_SIZE: usize = 40;
  function struct_size (line 1472) | fn struct_size() {
  function field_offsets (line 1479) | fn field_offsets() {
  type jb_agent_internal__tcp_reset (line 1508) | pub struct jb_agent_internal__tcp_reset {
    method metadata (line 1516) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1523) | fn default() -> Self {
  constant TCP_RESET_WIRE_SIZE (line 1528) | pub const TCP_RESET_WIRE_SIZE: usize = 16;
  function struct_size (line 1535) | fn struct_size() {
  function field_offsets (line 1542) | fn field_offsets() {
  type jb_agent_internal__pulse (line 1550) | pub struct jb_agent_internal__pulse {
    method metadata (line 1556) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1563) | fn default() -> Self {
  constant PULSE_WIRE_SIZE (line 1568) | pub const PULSE_WIRE_SIZE: usize = 2;
  function struct_size (line 1575) | fn struct_size() {
  function field_offsets (line 1582) | fn field_offsets() {
  function all_message_metadata (line 1588) | pub fn all_message_metadata() -> ::std::vec::Vec<render_parser::MessageM...

FILE: crates/render/ebpf_net/aggregation/src/encoder.rs
  function ebpf_net_aggregation_encode_agg_root_start (line 13) | pub extern "C" fn ebpf_net_aggregation_encode_agg_root_start(
  function ebpf_net_aggregation_encode_agg_root_end (line 49) | pub extern "C" fn ebpf_net_aggregation_encode_agg_root_end(
  function ebpf_net_aggregation_encode_update_node (line 85) | pub extern "C" fn ebpf_net_aggregation_encode_update_node(
  function ebpf_net_aggregation_encode_update_tcp_metrics (line 244) | pub extern "C" fn ebpf_net_aggregation_encode_update_tcp_metrics(
  function ebpf_net_aggregation_encode_update_udp_metrics (line 300) | pub extern "C" fn ebpf_net_aggregation_encode_update_udp_metrics(
  function ebpf_net_aggregation_encode_update_http_metrics (line 348) | pub extern "C" fn ebpf_net_aggregation_encode_update_http_metrics(
  function ebpf_net_aggregation_encode_update_dns_metrics (line 400) | pub extern "C" fn ebpf_net_aggregation_encode_update_dns_metrics(
  function ebpf_net_aggregation_encode_pulse (line 452) | pub extern "C" fn ebpf_net_aggregation_encode_pulse(

FILE: crates/render/ebpf_net/aggregation/src/hash.rs
  constant AGGREGATION_HASH_SIZE (line 17) | pub const AGGREGATION_HASH_SIZE: u32 = 16u32;
  function aggregation_hash (line 24) | pub fn aggregation_hash(rpc_id: u32) -> u32 {

FILE: crates/render/ebpf_net/aggregation/src/lib.rs
  type JbBlob (line 8) | pub struct JbBlob {

FILE: crates/render/ebpf_net/aggregation/src/parsed_message.rs
  type DecodeError (line 13) | pub enum DecodeError {
  type agg_root_start (line 21) | pub struct agg_root_start {
    constant RPC_ID (line 27) | pub const RPC_ID: u16 = 461u16;
    method decode (line 30) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type agg_root_end (line 58) | pub struct agg_root_end {
    constant RPC_ID (line 64) | pub const RPC_ID: u16 = 462u16;
    method decode (line 67) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type update_node (line 95) | pub struct update_node {
    constant RPC_ID (line 114) | pub const RPC_ID: u16 = 463u16;
    method decode (line 117) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type update_tcp_metrics (line 320) | pub struct update_tcp_metrics {
    constant RPC_ID (line 336) | pub const RPC_ID: u16 = 465u16;
    method decode (line 339) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type update_udp_metrics (line 387) | pub struct update_udp_metrics {
    constant RPC_ID (line 399) | pub const RPC_ID: u16 = 466u16;
    method decode (line 402) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type update_http_metrics (line 442) | pub struct update_http_metrics {
    constant RPC_ID (line 456) | pub const RPC_ID: u16 = 467u16;
    method decode (line 459) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type update_dns_metrics (line 504) | pub struct update_dns_metrics {
    constant RPC_ID (line 518) | pub const RPC_ID: u16 = 468u16;
    method decode (line 521) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pulse (line 566) | pub struct pulse {
    constant RPC_ID (line 571) | pub const RPC_ID: u16 = 65535u16;
    method decode (line 574) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {

FILE: crates/render/ebpf_net/aggregation/src/wire_messages.rs
  type jb_aggregation__agg_root_start (line 10) | pub struct jb_aggregation__agg_root_start {
    method metadata (line 17) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 24) | fn default() -> Self {
  constant AGG_ROOT_START_WIRE_SIZE (line 29) | pub const AGG_ROOT_START_WIRE_SIZE: usize = 16;
  function struct_size (line 36) | fn struct_size() {
  function field_offsets (line 43) | fn field_offsets() {
  type jb_aggregation__agg_root_end (line 50) | pub struct jb_aggregation__agg_root_end {
    method metadata (line 57) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 64) | fn default() -> Self {
  constant AGG_ROOT_END_WIRE_SIZE (line 69) | pub const AGG_ROOT_END_WIRE_SIZE: usize = 16;
  function struct_size (line 76) | fn struct_size() {
  function field_offsets (line 83) | fn field_offsets() {
  type jb_aggregation__update_node (line 90) | pub struct jb_aggregation__update_node {
    method metadata (line 110) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 117) | fn default() -> Self {
  constant UPDATE_NODE_WIRE_SIZE (line 122) | pub const UPDATE_NODE_WIRE_SIZE: usize = 34;
  function struct_size (line 129) | fn struct_size() {
  function field_offsets (line 136) | fn field_offsets() {
  type jb_aggregation__update_tcp_metrics (line 156) | pub struct jb_aggregation__update_tcp_metrics {
    method metadata (line 173) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 180) | fn default() -> Self {
  constant UPDATE_TCP_METRICS_WIRE_SIZE (line 185) | pub const UPDATE_TCP_METRICS_WIRE_SIZE: usize = 60;
  function struct_size (line 192) | fn struct_size() {
  function field_offsets (line 199) | fn field_offsets() {
  type jb_aggregation__update_udp_metrics (line 249) | pub struct jb_aggregation__update_udp_metrics {
    method metadata (line 262) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 269) | fn default() -> Self {
  constant UPDATE_UDP_METRICS_WIRE_SIZE (line 274) | pub const UPDATE_UDP_METRICS_WIRE_SIZE: usize = 36;
  function struct_size (line 281) | fn struct_size() {
  function field_offsets (line 288) | fn field_offsets() {
  type jb_aggregation__update_http_metrics (line 322) | pub struct jb_aggregation__update_http_metrics {
    method metadata (line 337) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 344) | fn default() -> Self {
  constant UPDATE_HTTP_METRICS_WIRE_SIZE (line 349) | pub const UPDATE_HTTP_METRICS_WIRE_SIZE: usize = 48;
  function struct_size (line 356) | fn struct_size() {
  function field_offsets (line 363) | fn field_offsets() {
  type jb_aggregation__update_dns_metrics (line 405) | pub struct jb_aggregation__update_dns_metrics {
    method metadata (line 420) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 427) | fn default() -> Self {
  constant UPDATE_DNS_METRICS_WIRE_SIZE (line 432) | pub const UPDATE_DNS_METRICS_WIRE_SIZE: usize = 48;
  function struct_size (line 439) | fn struct_size() {
  function field_offsets (line 446) | fn field_offsets() {
  type jb_aggregation__pulse (line 488) | pub struct jb_aggregation__pulse {
    method metadata (line 494) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 501) | fn default() -> Self {
  constant PULSE_WIRE_SIZE (line 506) | pub const PULSE_WIRE_SIZE: usize = 2;
  function struct_size (line 513) | fn struct_size() {
  function field_offsets (line 520) | fn field_offsets() {
  function all_message_metadata (line 526) | pub fn all_message_metadata() -> ::std::vec::Vec<render_parser::MessageM...

FILE: crates/render/ebpf_net/cloud_collector/src/encoder.rs
  function ebpf_net_cloud_collector_encode_pulse (line 13) | pub extern "C" fn ebpf_net_cloud_collector_encode_pulse(

FILE: crates/render/ebpf_net/cloud_collector/src/hash.rs
  constant CLOUD_COLLECTOR_HASH_SIZE (line 17) | pub const CLOUD_COLLECTOR_HASH_SIZE: u32 = 4u32;
  function cloud_collector_hash (line 24) | pub fn cloud_collector_hash(rpc_id: u32) -> u32 {

FILE: crates/render/ebpf_net/cloud_collector/src/lib.rs
  type JbBlob (line 8) | pub struct JbBlob {

FILE: crates/render/ebpf_net/cloud_collector/src/parsed_message.rs
  type DecodeError (line 13) | pub enum DecodeError {
  type pulse (line 21) | pub struct pulse {
    constant RPC_ID (line 26) | pub const RPC_ID: u16 = 65535u16;
    method decode (line 29) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {

FILE: crates/render/ebpf_net/cloud_collector/src/wire_messages.rs
  type jb_cloud_collector__pulse (line 10) | pub struct jb_cloud_collector__pulse {
    method metadata (line 16) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 23) | fn default() -> Self {
  constant PULSE_WIRE_SIZE (line 28) | pub const PULSE_WIRE_SIZE: usize = 2;
  function struct_size (line 35) | fn struct_size() {
  function field_offsets (line 42) | fn field_offsets() {
  function all_message_metadata (line 48) | pub fn all_message_metadata() -> ::std::vec::Vec<render_parser::MessageM...

FILE: crates/render/ebpf_net/ingest/src/encoder.rs
  function ebpf_net_ingest_encode_pid_info (line 13) | pub extern "C" fn ebpf_net_ingest_encode_pid_info(
  function ebpf_net_ingest_encode_pid_close_info (line 52) | pub extern "C" fn ebpf_net_ingest_encode_pid_close_info(
  function ebpf_net_ingest_encode_pid_info_create_deprecated (line 91) | pub extern "C" fn ebpf_net_ingest_encode_pid_info_create_deprecated(
  function ebpf_net_ingest_encode_pid_info_create (line 132) | pub extern "C" fn ebpf_net_ingest_encode_pid_info_create(
  function ebpf_net_ingest_encode_pid_cgroup_move (line 188) | pub extern "C" fn ebpf_net_ingest_encode_pid_cgroup_move(
  function ebpf_net_ingest_encode_pid_set_comm (line 226) | pub extern "C" fn ebpf_net_ingest_encode_pid_set_comm(
  function ebpf_net_ingest_encode_pid_set_cmdline (line 265) | pub extern "C" fn ebpf_net_ingest_encode_pid_set_cmdline(
  function ebpf_net_ingest_encode_tracked_process_start (line 314) | pub extern "C" fn ebpf_net_ingest_encode_tracked_process_start(
  function ebpf_net_ingest_encode_tracked_process_end (line 350) | pub extern "C" fn ebpf_net_ingest_encode_tracked_process_end(
  function ebpf_net_ingest_encode_set_tgid (line 386) | pub extern "C" fn ebpf_net_ingest_encode_set_tgid(
  function ebpf_net_ingest_encode_set_cgroup (line 424) | pub extern "C" fn ebpf_net_ingest_encode_set_cgroup(
  function ebpf_net_ingest_encode_set_command (line 462) | pub extern "C" fn ebpf_net_ingest_encode_set_command(
  function ebpf_net_ingest_encode_pid_exit (line 511) | pub extern "C" fn ebpf_net_ingest_encode_pid_exit(
  function ebpf_net_ingest_encode_cgroup_create_deprecated (line 553) | pub extern "C" fn ebpf_net_ingest_encode_cgroup_create_deprecated(
  function ebpf_net_ingest_encode_cgroup_create (line 594) | pub extern "C" fn ebpf_net_ingest_encode_cgroup_create(
  function ebpf_net_ingest_encode_cgroup_close (line 635) | pub extern "C" fn ebpf_net_ingest_encode_cgroup_close(
  function ebpf_net_ingest_encode_container_metadata (line 671) | pub extern "C" fn ebpf_net_ingest_encode_container_metadata(
  function ebpf_net_ingest_encode_pod_name (line 807) | pub extern "C" fn ebpf_net_ingest_encode_pod_name(
  function ebpf_net_ingest_encode_nomad_metadata (line 871) | pub extern "C" fn ebpf_net_ingest_encode_nomad_metadata(
  function ebpf_net_ingest_encode_k8s_metadata (line 952) | pub extern "C" fn ebpf_net_ingest_encode_k8s_metadata(
  function ebpf_net_ingest_encode_k8s_metadata_port (line 1046) | pub extern "C" fn ebpf_net_ingest_encode_k8s_metadata_port(
  function ebpf_net_ingest_encode_container_resource_limits_deprecated (line 1099) | pub extern "C" fn ebpf_net_ingest_encode_container_resource_limits_depre...
  function ebpf_net_ingest_encode_container_resource_limits (line 1150) | pub extern "C" fn ebpf_net_ingest_encode_container_resource_limits(
  function ebpf_net_ingest_encode_container_annotation (line 1200) | pub extern "C" fn ebpf_net_ingest_encode_container_annotation(
  function ebpf_net_ingest_encode_new_sock_info (line 1259) | pub extern "C" fn ebpf_net_ingest_encode_new_sock_info(
  function ebpf_net_ingest_encode_set_state_ipv4 (line 1297) | pub extern "C" fn ebpf_net_ingest_encode_set_state_ipv4(
  function ebpf_net_ingest_encode_set_state_ipv6 (line 1343) | pub extern "C" fn ebpf_net_ingest_encode_set_state_ipv6(
  function ebpf_net_ingest_encode_socket_stats (line 1391) | pub extern "C" fn ebpf_net_ingest_encode_socket_stats(
  function ebpf_net_ingest_encode_nat_remapping (line 1437) | pub extern "C" fn ebpf_net_ingest_encode_nat_remapping(
  function ebpf_net_ingest_encode_close_sock_info (line 1481) | pub extern "C" fn ebpf_net_ingest_encode_close_sock_info(
  function ebpf_net_ingest_encode_syn_timeout (line 1517) | pub extern "C" fn ebpf_net_ingest_encode_syn_timeout(
  function ebpf_net_ingest_encode_http_response (line 1553) | pub extern "C" fn ebpf_net_ingest_encode_http_response(
  function ebpf_net_ingest_encode_tcp_reset (line 1597) | pub extern "C" fn ebpf_net_ingest_encode_tcp_reset(
  function ebpf_net_ingest_encode_process_steady_state (line 1635) | pub extern "C" fn ebpf_net_ingest_encode_process_steady_state(
  function ebpf_net_ingest_encode_socket_steady_state (line 1671) | pub extern "C" fn ebpf_net_ingest_encode_socket_steady_state(
  function ebpf_net_ingest_encode_version_info (line 1707) | pub extern "C" fn ebpf_net_ingest_encode_version_info(
  function ebpf_net_ingest_encode_set_node_info (line 1747) | pub extern "C" fn ebpf_net_ingest_encode_set_node_info(
  function ebpf_net_ingest_encode_set_config_label (line 1827) | pub extern "C" fn ebpf_net_ingest_encode_set_config_label(
  function ebpf_net_ingest_encode_set_availability_zone_deprecated (line 1884) | pub extern "C" fn ebpf_net_ingest_encode_set_availability_zone_deprecated(
  function ebpf_net_ingest_encode_set_iam_role_deprecated (line 1924) | pub extern "C" fn ebpf_net_ingest_encode_set_iam_role_deprecated(
  function ebpf_net_ingest_encode_set_instance_id_deprecated (line 1963) | pub extern "C" fn ebpf_net_ingest_encode_set_instance_id_deprecated(
  function ebpf_net_ingest_encode_set_instance_type_deprecated (line 2002) | pub extern "C" fn ebpf_net_ingest_encode_set_instance_type_deprecated(
  function ebpf_net_ingest_encode_dns_response_fake (line 2041) | pub extern "C" fn ebpf_net_ingest_encode_dns_response_fake(
  function ebpf_net_ingest_encode_dns_response_dep_a_deprecated (line 2100) | pub extern "C" fn ebpf_net_ingest_encode_dns_response_dep_a_deprecated(
  function ebpf_net_ingest_encode_set_config_label_deprecated (line 2172) | pub extern "C" fn ebpf_net_ingest_encode_set_config_label_deprecated(
  function ebpf_net_ingest_encode_api_key (line 2212) | pub extern "C" fn ebpf_net_ingest_encode_api_key(
  function ebpf_net_ingest_encode_private_ipv4_addr (line 2252) | pub extern "C" fn ebpf_net_ingest_encode_private_ipv4_addr(
  function ebpf_net_ingest_encode_ipv6_addr (line 2291) | pub extern "C" fn ebpf_net_ingest_encode_ipv6_addr(
  function ebpf_net_ingest_encode_public_to_private_ipv4 (line 2331) | pub extern "C" fn ebpf_net_ingest_encode_public_to_private_ipv4(
  function ebpf_net_ingest_encode_metadata_complete (line 2372) | pub extern "C" fn ebpf_net_ingest_encode_metadata_complete(
  function ebpf_net_ingest_encode_bpf_lost_samples (line 2408) | pub extern "C" fn ebpf_net_ingest_encode_bpf_lost_samples(
  function ebpf_net_ingest_encode_pod_new_legacy (line 2444) | pub extern "C" fn ebpf_net_ingest_encode_pod_new_legacy(
  function ebpf_net_ingest_encode_pod_new_legacy2 (line 2528) | pub extern "C" fn ebpf_net_ingest_encode_pod_new_legacy2(
  function ebpf_net_ingest_encode_pod_new_with_name (line 2623) | pub extern "C" fn ebpf_net_ingest_encode_pod_new_with_name(
  function ebpf_net_ingest_encode_pod_container_legacy (line 2729) | pub extern "C" fn ebpf_net_ingest_encode_pod_container_legacy(
  function ebpf_net_ingest_encode_pod_container (line 2786) | pub extern "C" fn ebpf_net_ingest_encode_pod_container(
  function ebpf_net_ingest_encode_pod_delete (line 2870) | pub extern "C" fn ebpf_net_ingest_encode_pod_delete(
  function ebpf_net_ingest_encode_pod_resync (line 2916) | pub extern "C" fn ebpf_net_ingest_encode_pod_resync(
  function ebpf_net_ingest_encode_span_duration_info (line 2952) | pub extern "C" fn ebpf_net_ingest_encode_span_duration_info(
  function ebpf_net_ingest_encode_heartbeat (line 2988) | pub extern "C" fn ebpf_net_ingest_encode_heartbeat(
  function ebpf_net_ingest_encode_connect (line 3022) | pub extern "C" fn ebpf_net_ingest_encode_connect(
  function ebpf_net_ingest_encode_health_check (line 3071) | pub extern "C" fn ebpf_net_ingest_encode_health_check(
  function ebpf_net_ingest_encode_log_message (line 3120) | pub extern "C" fn ebpf_net_ingest_encode_log_message(
  function ebpf_net_ingest_encode_agent_resource_usage (line 3169) | pub extern "C" fn ebpf_net_ingest_encode_agent_resource_usage(
  function ebpf_net_ingest_encode_cloud_platform (line 3225) | pub extern "C" fn ebpf_net_ingest_encode_cloud_platform(
  function ebpf_net_ingest_encode_os_info_deprecated (line 3261) | pub extern "C" fn ebpf_net_ingest_encode_os_info_deprecated(
  function ebpf_net_ingest_encode_os_info (line 3313) | pub extern "C" fn ebpf_net_ingest_encode_os_info(
  function ebpf_net_ingest_encode_kernel_headers_source (line 3376) | pub extern "C" fn ebpf_net_ingest_encode_kernel_headers_source(
  function ebpf_net_ingest_encode_entrypoint_error (line 3412) | pub extern "C" fn ebpf_net_ingest_encode_entrypoint_error(
  function ebpf_net_ingest_encode_bpf_compiled (line 3448) | pub extern "C" fn ebpf_net_ingest_encode_bpf_compiled(
  function ebpf_net_ingest_encode_begin_telemetry (line 3482) | pub extern "C" fn ebpf_net_ingest_encode_begin_telemetry(
  function ebpf_net_ingest_encode_cloud_platform_account_info (line 3516) | pub extern "C" fn ebpf_net_ingest_encode_cloud_platform_account_info(
  function ebpf_net_ingest_encode_collector_health (line 3563) | pub extern "C" fn ebpf_net_ingest_encode_collector_health(
  function ebpf_net_ingest_encode_system_wide_process_settings (line 3601) | pub extern "C" fn ebpf_net_ingest_encode_system_wide_process_settings(
  function ebpf_net_ingest_encode_collect_blob (line 3639) | pub extern "C" fn ebpf_net_ingest_encode_collect_blob(
  function ebpf_net_ingest_encode_report_cpu_cores (line 3701) | pub extern "C" fn ebpf_net_ingest_encode_report_cpu_cores(
  function ebpf_net_ingest_encode_bpf_log (line 3737) | pub extern "C" fn ebpf_net_ingest_encode_bpf_log(
  function ebpf_net_ingest_encode_aws_network_interface_start (line 3794) | pub extern "C" fn ebpf_net_ingest_encode_aws_network_interface_start(
  function ebpf_net_ingest_encode_aws_network_interface_end (line 3832) | pub extern "C" fn ebpf_net_ingest_encode_aws_network_interface_end(
  function ebpf_net_ingest_encode_network_interface_info_deprecated (line 3868) | pub extern "C" fn ebpf_net_ingest_encode_network_interface_info_deprecated(
  function ebpf_net_ingest_encode_network_interface_info (line 4000) | pub extern "C" fn ebpf_net_ingest_encode_network_interface_info(
  function ebpf_net_ingest_encode_udp_new_socket (line 4154) | pub extern "C" fn ebpf_net_ingest_encode_udp_new_socket(
  function ebpf_net_ingest_encode_udp_stats_addr_unchanged (line 4197) | pub extern "C" fn ebpf_net_ingest_encode_udp_stats_addr_unchanged(
  function ebpf_net_ingest_encode_udp_stats_addr_changed_v4 (line 4239) | pub extern "C" fn ebpf_net_ingest_encode_udp_stats_addr_changed_v4(
  function ebpf_net_ingest_encode_udp_stats_addr_changed_v6 (line 4285) | pub extern "C" fn ebpf_net_ingest_encode_udp_stats_addr_changed_v6(
  function ebpf_net_ingest_encode_dns_response_dep_b (line 4332) | pub extern "C" fn ebpf_net_ingest_encode_dns_response_dep_b(
  function ebpf_net_ingest_encode_dns_timeout (line 4407) | pub extern "C" fn ebpf_net_ingest_encode_dns_timeout(
  function ebpf_net_ingest_encode_udp_stats_drops_changed (line 4460) | pub extern "C" fn ebpf_net_ingest_encode_udp_stats_drops_changed(
  function ebpf_net_ingest_encode_dns_response (line 4498) | pub extern "C" fn ebpf_net_ingest_encode_dns_response(
  function ebpf_net_ingest_encode_udp_destroy_socket (line 4575) | pub extern "C" fn ebpf_net_ingest_encode_udp_destroy_socket(
  function ebpf_net_ingest_encode_pulse (line 4611) | pub extern "C" fn ebpf_net_ingest_encode_pulse(__dest: *mut u8, __dest_l...

FILE: crates/render/ebpf_net/ingest/src/hash.rs
  constant INGEST_HASH_SIZE (line 17) | pub const INGEST_HASH_SIZE: u32 = 128u32;
  function ingest_hash (line 27) | pub fn ingest_hash(rpc_id: u32) -> u32 {

FILE: crates/render/ebpf_net/ingest/src/lib.rs
  type JbBlob (line 8) | pub struct JbBlob {

FILE: crates/render/ebpf_net/ingest/src/parsed_message.rs
  type DecodeError (line 13) | pub enum DecodeError {
  type pid_info (line 21) | pub struct pid_info {
    constant RPC_ID (line 28) | pub const RPC_ID: u16 = 301u16;
    method decode (line 31) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_close_info (line 71) | pub struct pid_close_info {
    constant RPC_ID (line 78) | pub const RPC_ID: u16 = 306u16;
    method decode (line 81) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_info_create_deprecated (line 121) | pub struct pid_info_create_deprecated {
    constant RPC_ID (line 129) | pub const RPC_ID: u16 = 393u16;
    method decode (line 132) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_info_create (line 174) | pub struct pid_info_create {
    constant RPC_ID (line 184) | pub const RPC_ID: u16 = 546u16;
    method decode (line 187) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_cgroup_move (line 252) | pub struct pid_cgroup_move {
    constant RPC_ID (line 259) | pub const RPC_ID: u16 = 397u16;
    method decode (line 262) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_set_comm (line 292) | pub struct pid_set_comm {
    constant RPC_ID (line 299) | pub const RPC_ID: u16 = 399u16;
    method decode (line 302) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_set_cmdline (line 342) | pub struct pid_set_cmdline {
    constant RPC_ID (line 349) | pub const RPC_ID: u16 = 547u16;
    method decode (line 352) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type tracked_process_start (line 401) | pub struct tracked_process_start {
    constant RPC_ID (line 407) | pub const RPC_ID: u16 = 500u16;
    method decode (line 410) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type tracked_process_end (line 438) | pub struct tracked_process_end {
    constant RPC_ID (line 444) | pub const RPC_ID: u16 = 501u16;
    method decode (line 447) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_tgid (line 475) | pub struct set_tgid {
    constant RPC_ID (line 482) | pub const RPC_ID: u16 = 502u16;
    method decode (line 485) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_cgroup (line 515) | pub struct set_cgroup {
    constant RPC_ID (line 522) | pub const RPC_ID: u16 = 503u16;
    method decode (line 525) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_command (line 555) | pub struct set_command {
    constant RPC_ID (line 562) | pub const RPC_ID: u16 = 504u16;
    method decode (line 565) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pid_exit (line 614) | pub struct pid_exit {
    constant RPC_ID (line 623) | pub const RPC_ID: u16 = 517u16;
    method decode (line 626) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type cgroup_create_deprecated (line 660) | pub struct cgroup_create_deprecated {
    constant RPC_ID (line 668) | pub const RPC_ID: u16 = 394u16;
    method decode (line 671) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type cgroup_create (line 713) | pub struct cgroup_create {
    constant RPC_ID (line 721) | pub const RPC_ID: u16 = 544u16;
    method decode (line 724) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type cgroup_close (line 766) | pub struct cgroup_close {
    constant RPC_ID (line 772) | pub const RPC_ID: u16 = 395u16;
    method decode (line 775) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type container_metadata (line 803) | pub struct container_metadata {
    constant RPC_ID (line 818) | pub const RPC_ID: u16 = 396u16;
    method decode (line 821) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_name (line 993) | pub struct pod_name {
    constant RPC_ID (line 1001) | pub const RPC_ID: u16 = 410u16;
    method decode (line 1004) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type nomad_metadata (line 1069) | pub struct nomad_metadata {
    constant RPC_ID (line 1079) | pub const RPC_ID: u16 = 508u16;
    method decode (line 1082) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type k8s_metadata (line 1177) | pub struct k8s_metadata {
    constant RPC_ID (line 1188) | pub const RPC_ID: u16 = 512u16;
    method decode (line 1191) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type k8s_metadata_port (line 1301) | pub struct k8s_metadata_port {
    constant RPC_ID (line 1310) | pub const RPC_ID: u16 = 513u16;
    method decode (line 1313) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type container_resource_limits_deprecated (line 1366) | pub struct container_resource_limits_deprecated {
    constant RPC_ID (line 1379) | pub const RPC_ID: u16 = 514u16;
    method decode (line 1382) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type container_resource_limits (line 1424) | pub struct container_resource_limits {
    constant RPC_ID (line 1437) | pub const RPC_ID: u16 = 518u16;
    method decode (line 1440) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type container_annotation (line 1482) | pub struct container_annotation {
    constant RPC_ID (line 1490) | pub const RPC_ID: u16 = 538u16;
    method decode (line 1493) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type new_sock_info (line 1557) | pub struct new_sock_info {
    constant RPC_ID (line 1564) | pub const RPC_ID: u16 = 302u16;
    method decode (line 1567) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_state_ipv4 (line 1597) | pub struct set_state_ipv4 {
    constant RPC_ID (line 1608) | pub const RPC_ID: u16 = 303u16;
    method decode (line 1611) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_state_ipv6 (line 1649) | pub struct set_state_ipv6 {
    constant RPC_ID (line 1660) | pub const RPC_ID: u16 = 304u16;
    method decode (line 1663) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type socket_stats (line 1721) | pub struct socket_stats {
    constant RPC_ID (line 1732) | pub const RPC_ID: u16 = 326u16;
    method decode (line 1735) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type nat_remapping (line 1773) | pub struct nat_remapping {
    constant RPC_ID (line 1783) | pub const RPC_ID: u16 = 360u16;
    method decode (line 1786) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type close_sock_info (line 1822) | pub struct close_sock_info {
    constant RPC_ID (line 1828) | pub const RPC_ID: u16 = 308u16;
    method decode (line 1831) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type syn_timeout (line 1859) | pub struct syn_timeout {
    constant RPC_ID (line 1865) | pub const RPC_ID: u16 = 398u16;
    method decode (line 1868) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type http_response (line 1896) | pub struct http_response {
    constant RPC_ID (line 1906) | pub const RPC_ID: u16 = 401u16;
    method decode (line 1909) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type tcp_reset (line 1945) | pub struct tcp_reset {
    constant RPC_ID (line 1952) | pub const RPC_ID: u16 = 519u16;
    method decode (line 1955) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type process_steady_state (line 1985) | pub struct process_steady_state {
    constant RPC_ID (line 1991) | pub const RPC_ID: u16 = 307u16;
    method decode (line 1994) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type socket_steady_state (line 2022) | pub struct socket_steady_state {
    constant RPC_ID (line 2028) | pub const RPC_ID: u16 = 309u16;
    method decode (line 2031) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type version_info (line 2059) | pub struct version_info {
    constant RPC_ID (line 2067) | pub const RPC_ID: u16 = 310u16;
    method decode (line 2070) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_node_info (line 2102) | pub struct set_node_info {
    constant RPC_ID (line 2111) | pub const RPC_ID: u16 = 415u16;
    method decode (line 2114) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_config_label (line 2207) | pub struct set_config_label {
    constant RPC_ID (line 2214) | pub const RPC_ID: u16 = 416u16;
    method decode (line 2217) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_availability_zone_deprecated (line 2279) | pub struct set_availability_zone_deprecated {
    constant RPC_ID (line 2286) | pub const RPC_ID: u16 = 321u16;
    method decode (line 2289) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_iam_role_deprecated (line 2329) | pub struct set_iam_role_deprecated {
    constant RPC_ID (line 2336) | pub const RPC_ID: u16 = 322u16;
    method decode (line 2339) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_instance_id_deprecated (line 2379) | pub struct set_instance_id_deprecated {
    constant RPC_ID (line 2386) | pub const RPC_ID: u16 = 323u16;
    method decode (line 2389) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_instance_type_deprecated (line 2429) | pub struct set_instance_type_deprecated {
    constant RPC_ID (line 2436) | pub const RPC_ID: u16 = 324u16;
    method decode (line 2439) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type dns_response_fake (line 2479) | pub struct dns_response_fake {
    constant RPC_ID (line 2487) | pub const RPC_ID: u16 = 325u16;
    method decode (line 2490) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type dns_response_dep_a_deprecated (line 2554) | pub struct dns_response_dep_a_deprecated {
    constant RPC_ID (line 2563) | pub const RPC_ID: u16 = 391u16;
    method decode (line 2566) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type set_config_label_deprecated (line 2647) | pub struct set_config_label_deprecated {
    constant RPC_ID (line 2654) | pub const RPC_ID: u16 = 327u16;
    method decode (line 2657) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type api_key (line 2707) | pub struct api_key {
    constant RPC_ID (line 2714) | pub const RPC_ID: u16 = 352u16;
    method decode (line 2717) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type private_ipv4_addr (line 2767) | pub struct private_ipv4_addr {
    constant RPC_ID (line 2774) | pub const RPC_ID: u16 = 353u16;
    method decode (line 2777) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type ipv6_addr (line 2817) | pub struct ipv6_addr {
    constant RPC_ID (line 2824) | pub const RPC_ID: u16 = 354u16;
    method decode (line 2827) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type public_to_private_ipv4 (line 2877) | pub struct public_to_private_ipv4 {
    constant RPC_ID (line 2885) | pub const RPC_ID: u16 = 355u16;
    method decode (line 2888) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type metadata_complete (line 2930) | pub struct metadata_complete {
    constant RPC_ID (line 2936) | pub const RPC_ID: u16 = 356u16;
    method decode (line 2939) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type bpf_lost_samples (line 2967) | pub struct bpf_lost_samples {
    constant RPC_ID (line 2973) | pub const RPC_ID: u16 = 357u16;
    method decode (line 2976) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_new_legacy (line 3004) | pub struct pod_new_legacy {
    constant RPC_ID (line 3016) | pub const RPC_ID: u16 = 358u16;
    method decode (line 3019) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_new_legacy2 (line 3118) | pub struct pod_new_legacy2 {
    constant RPC_ID (line 3131) | pub const RPC_ID: u16 = 414u16;
    method decode (line 3134) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_new_with_name (line 3248) | pub struct pod_new_with_name {
    constant RPC_ID (line 3262) | pub const RPC_ID: u16 = 515u16;
    method decode (line 3265) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_container_legacy (line 3394) | pub struct pod_container_legacy {
    constant RPC_ID (line 3401) | pub const RPC_ID: u16 = 400u16;
    method decode (line 3404) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_container (line 3466) | pub struct pod_container {
    constant RPC_ID (line 3475) | pub const RPC_ID: u16 = 494u16;
    method decode (line 3478) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_delete (line 3572) | pub struct pod_delete {
    constant RPC_ID (line 3578) | pub const RPC_ID: u16 = 359u16;
    method decode (line 3581) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pod_resync (line 3628) | pub struct pod_resync {
    constant RPC_ID (line 3634) | pub const RPC_ID: u16 = 390u16;
    method decode (line 3637) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type span_duration_info (line 3665) | pub struct span_duration_info {
    constant RPC_ID (line 3671) | pub const RPC_ID: u16 = 351u16;
    method decode (line 3674) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type heartbeat (line 3702) | pub struct heartbeat {
    constant RPC_ID (line 3707) | pub const RPC_ID: u16 = 392u16;
    method decode (line 3710) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type connect (line 3734) | pub struct connect {
    constant RPC_ID (line 3741) | pub const RPC_ID: u16 = 548u16;
    method decode (line 3744) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type health_check (line 3793) | pub struct health_check {
    constant RPC_ID (line 3800) | pub const RPC_ID: u16 = 409u16;
    method decode (line 3803) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type log_message (line 3852) | pub struct log_message {
    constant RPC_ID (line 3859) | pub const RPC_ID: u16 = 411u16;
    method decode (line 3862) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type agent_resource_usage (line 3911) | pub struct agent_resource_usage {
    constant RPC_ID (line 3927) | pub const RPC_ID: u16 = 412u16;
    method decode (line 3930) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type cloud_platform (line 3982) | pub struct cloud_platform {
    constant RPC_ID (line 3988) | pub const RPC_ID: u16 = 413u16;
    method decode (line 3991) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type os_info_deprecated (line 4019) | pub struct os_info_deprecated {
    constant RPC_ID (line 4027) | pub const RPC_ID: u16 = 419u16;
    method decode (line 4030) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type os_info (line 4081) | pub struct os_info {
    constant RPC_ID (line 4090) | pub const RPC_ID: u16 = 545u16;
    method decode (line 4093) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type kernel_headers_source (line 4160) | pub struct kernel_headers_source {
    constant RPC_ID (line 4166) | pub const RPC_ID: u16 = 420u16;
    method decode (line 4169) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type entrypoint_error (line 4197) | pub struct entrypoint_error {
    constant RPC_ID (line 4203) | pub const RPC_ID: u16 = 491u16;
    method decode (line 4206) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type bpf_compiled (line 4234) | pub struct bpf_compiled {
    constant RPC_ID (line 4239) | pub const RPC_ID: u16 = 492u16;
    method decode (line 4242) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type begin_telemetry (line 4266) | pub struct begin_telemetry {
    constant RPC_ID (line 4271) | pub const RPC_ID: u16 = 493u16;
    method decode (line 4274) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type cloud_platform_account_info (line 4298) | pub struct cloud_platform_account_info {
    constant RPC_ID (line 4304) | pub const RPC_ID: u16 = 495u16;
    method decode (line 4307) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type collector_health (line 4354) | pub struct collector_health {
    constant RPC_ID (line 4361) | pub const RPC_ID: u16 = 496u16;
    method decode (line 4364) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type system_wide_process_settings (line 4394) | pub struct system_wide_process_settings {
    constant RPC_ID (line 4401) | pub const RPC_ID: u16 = 498u16;
    method decode (line 4404) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type collect_blob (line 4435) | pub struct collect_blob {
    constant RPC_ID (line 4444) | pub const RPC_ID: u16 = 511u16;
    method decode (line 4447) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type report_cpu_cores (line 4513) | pub struct report_cpu_cores {
    constant RPC_ID (line 4519) | pub const RPC_ID: u16 = 536u16;
    method decode (line 4522) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type bpf_log (line 4550) | pub struct bpf_log {
    constant RPC_ID (line 4561) | pub const RPC_ID: u16 = 537u16;
    method decode (line 4564) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type aws_network_interface_start (line 4621) | pub struct aws_network_interface_start {
    constant RPC_ID (line 4628) | pub const RPC_ID: u16 = 406u16;
    method decode (line 4631) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type aws_network_interface_end (line 4661) | pub struct aws_network_interface_end {
    constant RPC_ID (line 4667) | pub const RPC_ID: u16 = 407u16;
    method decode (line 4670) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type network_interface_info_deprecated (line 4698) | pub struct network_interface_info_deprecated {
    constant RPC_ID (line 4714) | pub const RPC_ID: u16 = 408u16;
    method decode (line 4717) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type network_interface_info (line 4884) | pub struct network_interface_info {
    constant RPC_ID (line 4900) | pub const RPC_ID: u16 = 417u16;
    method decode (line 4903) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_new_socket (line 5080) | pub struct udp_new_socket {
    constant RPC_ID (line 5089) | pub const RPC_ID: u16 = 328u16;
    method decode (line 5092) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_stats_addr_unchanged (line 5136) | pub struct udp_stats_addr_unchanged {
    constant RPC_ID (line 5145) | pub const RPC_ID: u16 = 330u16;
    method decode (line 5148) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_stats_addr_changed_v4 (line 5182) | pub struct udp_stats_addr_changed_v4 {
    constant RPC_ID (line 5193) | pub const RPC_ID: u16 = 341u16;
    method decode (line 5196) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_stats_addr_changed_v6 (line 5234) | pub struct udp_stats_addr_changed_v6 {
    constant RPC_ID (line 5245) | pub const RPC_ID: u16 = 350u16;
    method decode (line 5248) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type dns_response_dep_b (line 5296) | pub struct dns_response_dep_b {
    constant RPC_ID (line 5307) | pub const RPC_ID: u16 = 402u16;
    method decode (line 5310) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type dns_timeout (line 5395) | pub struct dns_timeout {
    constant RPC_ID (line 5404) | pub const RPC_ID: u16 = 403u16;
    method decode (line 5407) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_stats_drops_changed (line 5460) | pub struct udp_stats_drops_changed {
    constant RPC_ID (line 5467) | pub const RPC_ID: u16 = 405u16;
    method decode (line 5470) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type dns_response (line 5500) | pub struct dns_response {
    constant RPC_ID (line 5512) | pub const RPC_ID: u16 = 418u16;
    method decode (line 5515) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type udp_destroy_socket (line 5602) | pub struct udp_destroy_socket {
    constant RPC_ID (line 5608) | pub const RPC_ID: u16 = 329u16;
    method decode (line 5611) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {
  type pulse (line 5639) | pub struct pulse {
    constant RPC_ID (line 5644) | pub const RPC_ID: u16 = 65535u16;
    method decode (line 5647) | pub fn decode(body: &[u8]) -> Result<Self, DecodeError> {

FILE: crates/render/ebpf_net/ingest/src/wire_messages.rs
  type jb_ingest__pid_info (line 10) | pub struct jb_ingest__pid_info {
    method metadata (line 18) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 25) | fn default() -> Self {
  constant PID_INFO_WIRE_SIZE (line 30) | pub const PID_INFO_WIRE_SIZE: usize = 24;
  function struct_size (line 37) | fn struct_size() {
  function field_offsets (line 44) | fn field_offsets() {
  type jb_ingest__pid_close_info (line 52) | pub struct jb_ingest__pid_close_info {
    method metadata (line 60) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 67) | fn default() -> Self {
  constant PID_CLOSE_INFO_WIRE_SIZE (line 72) | pub const PID_CLOSE_INFO_WIRE_SIZE: usize = 24;
  function struct_size (line 79) | fn struct_size() {
  function field_offsets (line 86) | fn field_offsets() {
  type jb_ingest__pid_info_create_deprecated (line 94) | pub struct jb_ingest__pid_info_create_deprecated {
    method metadata (line 103) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 110) | fn default() -> Self {
  constant PID_INFO_CREATE_DEPRECATED_WIRE_SIZE (line 115) | pub const PID_INFO_CREATE_DEPRECATED_WIRE_SIZE: usize = 32;
  function struct_size (line 122) | fn struct_size() {
  function field_offsets (line 129) | fn field_offsets() {
  type jb_ingest__pid_info_create (line 150) | pub struct jb_ingest__pid_info_create {
    method metadata (line 161) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 168) | fn default() -> Self {
  constant PID_INFO_CREATE_WIRE_SIZE (line 173) | pub const PID_INFO_CREATE_WIRE_SIZE: usize = 36;
  function struct_size (line 180) | fn struct_size() {
  function field_offsets (line 187) | fn field_offsets() {
  type jb_ingest__pid_cgroup_move (line 198) | pub struct jb_ingest__pid_cgroup_move {
    method metadata (line 206) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 213) | fn default() -> Self {
  constant PID_CGROUP_MOVE_WIRE_SIZE (line 218) | pub const PID_CGROUP_MOVE_WIRE_SIZE: usize = 16;
  function struct_size (line 225) | fn struct_size() {
  function field_offsets (line 232) | fn field_offsets() {
  type jb_ingest__pid_set_comm (line 240) | pub struct jb_ingest__pid_set_comm {
    method metadata (line 248) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 255) | fn default() -> Self {
  constant PID_SET_COMM_WIRE_SIZE (line 260) | pub const PID_SET_COMM_WIRE_SIZE: usize = 24;
  function struct_size (line 267) | fn struct_size() {
  function field_offsets (line 274) | fn field_offsets() {
  type jb_ingest__pid_set_cmdline (line 282) | pub struct jb_ingest__pid_set_cmdline {
    method metadata (line 290) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 297) | fn default() -> Self {
  constant PID_SET_CMDLINE_WIRE_SIZE (line 302) | pub const PID_SET_CMDLINE_WIRE_SIZE: usize = 8;
  function struct_size (line 309) | fn struct_size() {
  function field_offsets (line 316) | fn field_offsets() {
  type jb_ingest__tracked_process_start (line 324) | pub struct jb_ingest__tracked_process_start {
    method metadata (line 331) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 338) | fn default() -> Self {
  constant TRACKED_PROCESS_START_WIRE_SIZE (line 343) | pub const TRACKED_PROCESS_START_WIRE_SIZE: usize = 16;
  function struct_size (line 350) | fn struct_size() {
  function field_offsets (line 357) | fn field_offsets() {
  type jb_ingest__tracked_process_end (line 364) | pub struct jb_ingest__tracked_process_end {
    method metadata (line 371) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 378) | fn default() -> Self {
  constant TRACKED_PROCESS_END_WIRE_SIZE (line 383) | pub const TRACKED_PROCESS_END_WIRE_SIZE: usize = 16;
  function struct_size (line 390) | fn struct_size() {
  function field_offsets (line 397) | fn field_offsets() {
  type jb_ingest__set_tgid (line 404) | pub struct jb_ingest__set_tgid {
    method metadata (line 412) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 419) | fn default() -> Self {
  constant SET_TGID_WIRE_SIZE (line 424) | pub const SET_TGID_WIRE_SIZE: usize = 16;
  function struct_size (line 431) | fn struct_size() {
  function field_offsets (line 438) | fn field_offsets() {
  type jb_ingest__set_cgroup (line 446) | pub struct jb_ingest__set_cgroup {
    method metadata (line 454) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 461) | fn default() -> Self {
  constant SET_CGROUP_WIRE_SIZE (line 466) | pub const SET_CGROUP_WIRE_SIZE: usize = 24;
  function struct_size (line 473) | fn struct_size() {
  function field_offsets (line 480) | fn field_offsets() {
  type jb_ingest__set_command (line 488) | pub struct jb_ingest__set_command {
    method metadata (line 496) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 503) | fn default() -> Self {
  constant SET_COMMAND_WIRE_SIZE (line 508) | pub const SET_COMMAND_WIRE_SIZE: usize = 16;
  function struct_size (line 515) | fn struct_size() {
  function field_offsets (line 522) | fn field_offsets() {
  type jb_ingest__pid_exit (line 530) | pub struct jb_ingest__pid_exit {
    method metadata (line 540) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 547) | fn default() -> Self {
  constant PID_EXIT_WIRE_SIZE (line 552) | pub const PID_EXIT_WIRE_SIZE: usize = 28;
  function struct_size (line 559) | fn struct_size() {
  function field_offsets (line 566) | fn field_offsets() {
  type jb_ingest__cgroup_create_deprecated (line 576) | pub struct jb_ingest__cgroup_create_deprecated {
    method metadata (line 585) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 592) | fn default() -> Self {
  constant CGROUP_CREATE_DEPRECATED_WIRE_SIZE (line 597) | pub const CGROUP_CREATE_DEPRECATED_WIRE_SIZE: usize = 88;
  function struct_size (line 604) | fn struct_size() {
  function field_offsets (line 611) | fn field_offsets() {
  type jb_ingest__cgroup_create (line 629) | pub struct jb_ingest__cgroup_create {
    method metadata (line 638) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 645) | fn default() -> Self {
  constant CGROUP_CREATE_WIRE_SIZE (line 650) | pub const CGROUP_CREATE_WIRE_SIZE: usize = 280;
  function struct_size (line 657) | fn struct_size() {
  function field_offsets (line 664) | fn field_offsets() {
  type jb_ingest__cgroup_close (line 676) | pub struct jb_ingest__cgroup_close {
    method metadata (line 683) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 690) | fn default() -> Self {
  constant CGROUP_CLOSE_WIRE_SIZE (line 695) | pub const CGROUP_CLOSE_WIRE_SIZE: usize = 16;
  function struct_size (line 702) | fn struct_size() {
  function field_offsets (line 709) | fn field_offsets() {
  type jb_ingest__container_metadata (line 716) | pub struct jb_ingest__container_metadata {
    method metadata (line 732) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 739) | fn default() -> Self {
  constant CONTAINER_METADATA_WIRE_SIZE (line 744) | pub const CONTAINER_METADATA_WIRE_SIZE: usize = 28;
  function struct_size (line 751) | fn struct_size() {
  function field_offsets (line 758) | fn field_offsets() {
  type jb_ingest__pod_name (line 783) | pub struct jb_ingest__pod_name {
    method metadata (line 792) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 799) | fn default() -> Self {
  constant POD_NAME_WIRE_SIZE (line 804) | pub const POD_NAME_WIRE_SIZE: usize = 16;
  function struct_size (line 811) | fn struct_size() {
  function field_offsets (line 818) | fn field_offsets() {
  type jb_ingest__nomad_metadata (line 827) | pub struct jb_ingest__nomad_metadata {
    method metadata (line 838) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 845) | fn default() -> Self {
  constant NOMAD_METADATA_WIRE_SIZE (line 850) | pub const NOMAD_METADATA_WIRE_SIZE: usize = 18;
  function struct_size (line 857) | fn struct_size() {
  function field_offsets (line 864) | fn field_offsets() {
  type jb_ingest__k8s_metadata (line 875) | pub struct jb_ingest__k8s_metadata {
    method metadata (line 887) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 894) | fn default() -> Self {
  constant K8S_METADATA_WIRE_SIZE (line 899) | pub const K8S_METADATA_WIRE_SIZE: usize = 20;
  function struct_size (line 906) | fn struct_size() {
  function field_offsets (line 913) | fn field_offsets() {
  type jb_ingest__k8s_metadata_port (line 925) | pub struct jb_ingest__k8s_metadata_port {
    method metadata (line 935) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 942) | fn default() -> Self {
  constant K8S_METADATA_PORT_WIRE_SIZE (line 947) | pub const K8S_METADATA_PORT_WIRE_SIZE: usize = 16;
  function struct_size (line 954) | fn struct_size() {
  function field_offsets (line 961) | fn field_offsets() {
  type jb_ingest__container_resource_limits_deprecated (line 971) | pub struct jb_ingest__container_resource_limits_deprecated {
    method metadata (line 985) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 992) | fn default() -> Self {
  constant CONTAINER_RESOURCE_LIMITS_DEPRECATED_WIRE_SIZE (line 997) | pub const CONTAINER_RESOURCE_LIMITS_DEPRECATED_WIRE_SIZE: usize = 41;
  function struct_size (line 1004) | fn struct_size() {
  function field_offsets (line 1012) | fn field_offsets() {
  type jb_ingest__container_resource_limits (line 1065) | pub struct jb_ingest__container_resource_limits {
    method metadata (line 1079) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1086) | fn default() -> Self {
  constant CONTAINER_RESOURCE_LIMITS_WIRE_SIZE (line 1091) | pub const CONTAINER_RESOURCE_LIMITS_WIRE_SIZE: usize = 45;
  function struct_size (line 1098) | fn struct_size() {
  function field_offsets (line 1105) | fn field_offsets() {
  type jb_ingest__container_annotation (line 1143) | pub struct jb_ingest__container_annotation {
    method metadata (line 1152) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1159) | fn default() -> Self {
  constant CONTAINER_ANNOTATION_WIRE_SIZE (line 1164) | pub const CONTAINER_ANNOTATION_WIRE_SIZE: usize = 16;
  function struct_size (line 1171) | fn struct_size() {
  function field_offsets (line 1178) | fn field_offsets() {
  type jb_ingest__new_sock_info (line 1187) | pub struct jb_ingest__new_sock_info {
    method metadata (line 1195) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1202) | fn default() -> Self {
  constant NEW_SOCK_INFO_WIRE_SIZE (line 1207) | pub const NEW_SOCK_INFO_WIRE_SIZE: usize = 16;
  function struct_size (line 1214) | fn struct_size() {
  function field_offsets (line 1221) | fn field_offsets() {
  type jb_ingest__set_state_ipv4 (line 1229) | pub struct jb_ingest__set_state_ipv4 {
    method metadata (line 1241) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1248) | fn default() -> Self {
  constant SET_STATE_IPV4_WIRE_SIZE (line 1253) | pub const SET_STATE_IPV4_WIRE_SIZE: usize = 26;
  function struct_size (line 1260) | fn struct_size() {
  function field_offsets (line 1267) | fn field_offsets() {
  type jb_ingest__set_state_ipv6 (line 1279) | pub struct jb_ingest__set_state_ipv6 {
    method metadata (line 1291) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1298) | fn default() -> Self {
  constant SET_STATE_IPV6_WIRE_SIZE (line 1303) | pub const SET_STATE_IPV6_WIRE_SIZE: usize = 50;
  function struct_size (line 1310) | fn struct_size() {
  function field_offsets (line 1317) | fn field_offsets() {
  type jb_ingest__socket_stats (line 1329) | pub struct jb_ingest__socket_stats {
    method metadata (line 1341) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1348) | fn default() -> Self {
  constant SOCKET_STATS_WIRE_SIZE (line 1353) | pub const SOCKET_STATS_WIRE_SIZE: usize = 32;
  function struct_size (line 1360) | fn struct_size() {
  function field_offsets (line 1367) | fn field_offsets() {
  type jb_ingest__nat_remapping (line 1379) | pub struct jb_ingest__nat_remapping {
    method metadata (line 1390) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1397) | fn default() -> Self {
  constant NAT_REMAPPING_WIRE_SIZE (line 1402) | pub const NAT_REMAPPING_WIRE_SIZE: usize = 22;
  function struct_size (line 1409) | fn struct_size() {
  function field_offsets (line 1416) | fn field_offsets() {
  type jb_ingest__close_sock_info (line 1427) | pub struct jb_ingest__close_sock_info {
    method metadata (line 1434) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1441) | fn default() -> Self {
  constant CLOSE_SOCK_INFO_WIRE_SIZE (line 1446) | pub const CLOSE_SOCK_INFO_WIRE_SIZE: usize = 16;
  function struct_size (line 1453) | fn struct_size() {
  function field_offsets (line 1460) | fn field_offsets() {
  type jb_ingest__syn_timeout (line 1467) | pub struct jb_ingest__syn_timeout {
    method metadata (line 1474) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1481) | fn default() -> Self {
  constant SYN_TIMEOUT_WIRE_SIZE (line 1486) | pub const SYN_TIMEOUT_WIRE_SIZE: usize = 16;
  function struct_size (line 1493) | fn struct_size() {
  function field_offsets (line 1500) | fn field_offsets() {
  type jb_ingest__http_response (line 1507) | pub struct jb_ingest__http_response {
    method metadata (line 1518) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1525) | fn default() -> Self {
  constant HTTP_RESPONSE_WIRE_SIZE (line 1530) | pub const HTTP_RESPONSE_WIRE_SIZE: usize = 25;
  function struct_size (line 1537) | fn struct_size() {
  function field_offsets (line 1544) | fn field_offsets() {
  type jb_ingest__tcp_reset (line 1555) | pub struct jb_ingest__tcp_reset {
    method metadata (line 1563) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1570) | fn default() -> Self {
  constant TCP_RESET_WIRE_SIZE (line 1575) | pub const TCP_RESET_WIRE_SIZE: usize = 16;
  function struct_size (line 1582) | fn struct_size() {
  function field_offsets (line 1589) | fn field_offsets() {
  type jb_ingest__process_steady_state (line 1597) | pub struct jb_ingest__process_steady_state {
    method metadata (line 1604) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1611) | fn default() -> Self {
  constant PROCESS_STEADY_STATE_WIRE_SIZE (line 1616) | pub const PROCESS_STEADY_STATE_WIRE_SIZE: usize = 16;
  function struct_size (line 1623) | fn struct_size() {
  function field_offsets (line 1630) | fn field_offsets() {
  type jb_ingest__socket_steady_state (line 1637) | pub struct jb_ingest__socket_steady_state {
    method metadata (line 1644) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1651) | fn default() -> Self {
  constant SOCKET_STEADY_STATE_WIRE_SIZE (line 1656) | pub const SOCKET_STEADY_STATE_WIRE_SIZE: usize = 16;
  function struct_size (line 1663) | fn struct_size() {
  function field_offsets (line 1670) | fn field_offsets() {
  type jb_ingest__version_info (line 1677) | pub struct jb_ingest__version_info {
    method metadata (line 1686) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1693) | fn default() -> Self {
  constant VERSION_INFO_WIRE_SIZE (line 1698) | pub const VERSION_INFO_WIRE_SIZE: usize = 16;
  function struct_size (line 1705) | fn struct_size() {
  function field_offsets (line 1712) | fn field_offsets() {
  type jb_ingest__set_node_info (line 1721) | pub struct jb_ingest__set_node_info {
    method metadata (line 1731) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1738) | fn default() -> Self {
  constant SET_NODE_INFO_WIRE_SIZE (line 1743) | pub const SET_NODE_INFO_WIRE_SIZE: usize = 10;
  function struct_size (line 1750) | fn struct_size() {
  function field_offsets (line 1757) | fn field_offsets() {
  type jb_ingest__set_config_label (line 1767) | pub struct jb_ingest__set_config_label {
    method metadata (line 1775) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1782) | fn default() -> Self {
  constant SET_CONFIG_LABEL_WIRE_SIZE (line 1787) | pub const SET_CONFIG_LABEL_WIRE_SIZE: usize = 6;
  function struct_size (line 1794) | fn struct_size() {
  function field_offsets (line 1801) | fn field_offsets() {
  type jb_ingest__set_availability_zone_deprecated (line 1809) | pub struct jb_ingest__set_availability_zone_deprecated {
    method metadata (line 1817) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1824) | fn default() -> Self {
  constant SET_AVAILABILITY_ZONE_DEPRECATED_WIRE_SIZE (line 1829) | pub const SET_AVAILABILITY_ZONE_DEPRECATED_WIRE_SIZE: usize = 19;
  function struct_size (line 1836) | fn struct_size() {
  function field_offsets (line 1844) | fn field_offsets() {
  type jb_ingest__set_iam_role_deprecated (line 1861) | pub struct jb_ingest__set_iam_role_deprecated {
    method metadata (line 1869) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1876) | fn default() -> Self {
  constant SET_IAM_ROLE_DEPRECATED_WIRE_SIZE (line 1881) | pub const SET_IAM_ROLE_DEPRECATED_WIRE_SIZE: usize = 67;
  function struct_size (line 1888) | fn struct_size() {
  function field_offsets (line 1895) | fn field_offsets() {
  type jb_ingest__set_instance_id_deprecated (line 1906) | pub struct jb_ingest__set_instance_id_deprecated {
    method metadata (line 1914) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1921) | fn default() -> Self {
  constant SET_INSTANCE_ID_DEPRECATED_WIRE_SIZE (line 1926) | pub const SET_INSTANCE_ID_DEPRECATED_WIRE_SIZE: usize = 20;
  function struct_size (line 1933) | fn struct_size() {
  function field_offsets (line 1940) | fn field_offsets() {
  type jb_ingest__set_instance_type_deprecated (line 1957) | pub struct jb_ingest__set_instance_type_deprecated {
    method metadata (line 1965) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 1972) | fn default() -> Self {
  constant SET_INSTANCE_TYPE_DEPRECATED_WIRE_SIZE (line 1977) | pub const SET_INSTANCE_TYPE_DEPRECATED_WIRE_SIZE: usize = 20;
  function struct_size (line 1984) | fn struct_size() {
  function field_offsets (line 1991) | fn field_offsets() {
  type jb_ingest__dns_response_fake (line 2008) | pub struct jb_ingest__dns_response_fake {
    method metadata (line 2017) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2024) | fn default() -> Self {
  constant DNS_RESPONSE_FAKE_WIRE_SIZE (line 2029) | pub const DNS_RESPONSE_FAKE_WIRE_SIZE: usize = 8;
  function struct_size (line 2036) | fn struct_size() {
  function field_offsets (line 2043) | fn field_offsets() {
  type jb_ingest__dns_response_dep_a_deprecated (line 2055) | pub struct jb_ingest__dns_response_dep_a_deprecated {
    method metadata (line 2065) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2072) | fn default() -> Self {
  constant DNS_RESPONSE_DEP_A_DEPRECATED_WIRE_SIZE (line 2077) | pub const DNS_RESPONSE_DEP_A_DEPRECATED_WIRE_SIZE: usize = 10;
  function struct_size (line 2084) | fn struct_size() {
  function field_offsets (line 2091) | fn field_offsets() {
  type jb_ingest__set_config_label_deprecated (line 2116) | pub struct jb_ingest__set_config_label_deprecated {
    method metadata (line 2124) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2131) | fn default() -> Self {
  constant SET_CONFIG_LABEL_DEPRECATED_WIRE_SIZE (line 2136) | pub const SET_CONFIG_LABEL_DEPRECATED_WIRE_SIZE: usize = 62;
  function struct_size (line 2143) | fn struct_size() {
  function field_offsets (line 2150) | fn field_offsets() {
  type jb_ingest__api_key (line 2167) | pub struct jb_ingest__api_key {
    method metadata (line 2175) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2182) | fn default() -> Self {
  constant API_KEY_WIRE_SIZE (line 2187) | pub const API_KEY_WIRE_SIZE: usize = 86;
  function struct_size (line 2194) | fn struct_size() {
  function field_offsets (line 2201) | fn field_offsets() {
  type jb_ingest__private_ipv4_addr (line 2209) | pub struct jb_ingest__private_ipv4_addr {
    method metadata (line 2217) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2224) | fn default() -> Self {
  constant PRIVATE_IPV4_ADDR_WIRE_SIZE (line 2229) | pub const PRIVATE_IPV4_ADDR_WIRE_SIZE: usize = 28;
  function struct_size (line 2236) | fn struct_size() {
  function field_offsets (line 2243) | fn field_offsets() {
  type jb_ingest__ipv6_addr (line 2251) | pub struct jb_ingest__ipv6_addr {
    method metadata (line 2259) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2266) | fn default() -> Self {
  constant IPV6_ADDR_WIRE_SIZE (line 2271) | pub const IPV6_ADDR_WIRE_SIZE: usize = 40;
  function struct_size (line 2278) | fn struct_size() {
  function field_offsets (line 2285) | fn field_offsets() {
  type jb_ingest__public_to_private_ipv4 (line 2293) | pub struct jb_ingest__public_to_private_ipv4 {
    method metadata (line 2302) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2309) | fn default() -> Self {
  constant PUBLIC_TO_PRIVATE_IPV4_WIRE_SIZE (line 2314) | pub const PUBLIC_TO_PRIVATE_IPV4_WIRE_SIZE: usize = 32;
  function struct_size (line 2321) | fn struct_size() {
  function field_offsets (line 2328) | fn field_offsets() {
  type jb_ingest__metadata_complete (line 2346) | pub struct jb_ingest__metadata_complete {
    method metadata (line 2353) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2360) | fn default() -> Self {
  constant METADATA_COMPLETE_WIRE_SIZE (line 2365) | pub const METADATA_COMPLETE_WIRE_SIZE: usize = 16;
  function struct_size (line 2372) | fn struct_size() {
  function field_offsets (line 2379) | fn field_offsets() {
  type jb_ingest__bpf_lost_samples (line 2386) | pub struct jb_ingest__bpf_lost_samples {
    method metadata (line 2393) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2400) | fn default() -> Self {
  constant BPF_LOST_SAMPLES_WIRE_SIZE (line 2405) | pub const BPF_LOST_SAMPLES_WIRE_SIZE: usize = 16;
  function struct_size (line 2412) | fn struct_size() {
  function field_offsets (line 2419) | fn field_offsets() {
  type jb_ingest__pod_new_legacy (line 2426) | pub struct jb_ingest__pod_new_legacy {
    method metadata (line 2439) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2446) | fn default() -> Self {
  constant POD_NEW_LEGACY_WIRE_SIZE (line 2451) | pub const POD_NEW_LEGACY_WIRE_SIZE: usize = 16;
  function struct_size (line 2458) | fn struct_size() {
  function field_offsets (line 2465) | fn field_offsets() {
  type jb_ingest__pod_new_legacy2 (line 2481) | pub struct jb_ingest__pod_new_legacy2 {
    method metadata (line 2495) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2502) | fn default() -> Self {
  constant POD_NEW_LEGACY2_WIRE_SIZE (line 2507) | pub const POD_NEW_LEGACY2_WIRE_SIZE: usize = 18;
  function struct_size (line 2514) | fn struct_size() {
  function field_offsets (line 2521) | fn field_offsets() {
  type jb_ingest__pod_new_with_name (line 2538) | pub struct jb_ingest__pod_new_with_name {
    method metadata (line 2553) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2560) | fn default() -> Self {
  constant POD_NEW_WITH_NAME_WIRE_SIZE (line 2565) | pub const POD_NEW_WITH_NAME_WIRE_SIZE: usize = 20;
  function struct_size (line 2572) | fn struct_size() {
  function field_offsets (line 2579) | fn field_offsets() {
  type jb_ingest__pod_container_legacy (line 2603) | pub struct jb_ingest__pod_container_legacy {
    method metadata (line 2611) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2618) | fn default() -> Self {
  constant POD_CONTAINER_LEGACY_WIRE_SIZE (line 2623) | pub const POD_CONTAINER_LEGACY_WIRE_SIZE: usize = 6;
  function struct_size (line 2630) | fn struct_size() {
  function field_offsets (line 2637) | fn field_offsets() {
  type jb_ingest__pod_container (line 2645) | pub struct jb_ingest__pod_container {
    method metadata (line 2655) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2662) | fn default() -> Self {
  constant POD_CONTAINER_WIRE_SIZE (line 2667) | pub const POD_CONTAINER_WIRE_SIZE: usize = 10;
  function struct_size (line 2674) | fn struct_size() {
  function field_offsets (line 2681) | fn field_offsets() {
  type jb_ingest__pod_delete (line 2691) | pub struct jb_ingest__pod_delete {
    method metadata (line 2698) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2705) | fn default() -> Self {
  constant POD_DELETE_WIRE_SIZE (line 2710) | pub const POD_DELETE_WIRE_SIZE: usize = 4;
  function struct_size (line 2717) | fn struct_size() {
  function field_offsets (line 2724) | fn field_offsets() {
  type jb_ingest__pod_resync (line 2731) | pub struct jb_ingest__pod_resync {
    method metadata (line 2738) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2745) | fn default() -> Self {
  constant POD_RESYNC_WIRE_SIZE (line 2750) | pub const POD_RESYNC_WIRE_SIZE: usize = 16;
  function struct_size (line 2757) | fn struct_size() {
  function field_offsets (line 2764) | fn field_offsets() {
  type jb_ingest__span_duration_info (line 2771) | pub struct jb_ingest__span_duration_info {
    method metadata (line 2778) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2785) | fn default() -> Self {
  constant SPAN_DURATION_INFO_WIRE_SIZE (line 2790) | pub const SPAN_DURATION_INFO_WIRE_SIZE: usize = 16;
  function struct_size (line 2797) | fn struct_size() {
  function field_offsets (line 2804) | fn field_offsets() {
  type jb_ingest__heartbeat (line 2811) | pub struct jb_ingest__heartbeat {
    method metadata (line 2817) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2824) | fn default() -> Self {
  constant HEARTBEAT_WIRE_SIZE (line 2829) | pub const HEARTBEAT_WIRE_SIZE: usize = 2;
  function struct_size (line 2836) | fn struct_size() {
  function field_offsets (line 2843) | fn field_offsets() {
  type jb_ingest__connect (line 2849) | pub struct jb_ingest__connect {
    method metadata (line 2857) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2864) | fn default() -> Self {
  constant CONNECT_WIRE_SIZE (line 2869) | pub const CONNECT_WIRE_SIZE: usize = 5;
  function struct_size (line 2876) | fn struct_size() {
  function field_offsets (line 2883) | fn field_offsets() {
  type jb_ingest__health_check (line 2891) | pub struct jb_ingest__health_check {
    method metadata (line 2899) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2906) | fn default() -> Self {
  constant HEALTH_CHECK_WIRE_SIZE (line 2911) | pub const HEALTH_CHECK_WIRE_SIZE: usize = 5;
  function struct_size (line 2918) | fn struct_size() {
  function field_offsets (line 2925) | fn field_offsets() {
  type jb_ingest__log_message (line 2933) | pub struct jb_ingest__log_message {
    method metadata (line 2941) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2948) | fn default() -> Self {
  constant LOG_MESSAGE_WIRE_SIZE (line 2953) | pub const LOG_MESSAGE_WIRE_SIZE: usize = 5;
  function struct_size (line 2960) | fn struct_size() {
  function field_offsets (line 2967) | fn field_offsets() {
  type jb_ingest__agent_resource_usage (line 2975) | pub struct jb_ingest__agent_resource_usage {
    method metadata (line 2992) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 2999) | fn default() -> Self {
  constant AGENT_RESOURCE_USAGE_WIRE_SIZE (line 3004) | pub const AGENT_RESOURCE_USAGE_WIRE_SIZE: usize = 54;
  function struct_size (line 3011) | fn struct_size() {
  function field_offsets (line 3018) | fn field_offsets() {
  type jb_ingest__cloud_platform (line 3074) | pub struct jb_ingest__cloud_platform {
    method metadata (line 3081) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3088) | fn default() -> Self {
  constant CLOUD_PLATFORM_WIRE_SIZE (line 3093) | pub const CLOUD_PLATFORM_WIRE_SIZE: usize = 4;
  function struct_size (line 3100) | fn struct_size() {
  function field_offsets (line 3107) | fn field_offsets() {
  type jb_ingest__os_info_deprecated (line 3117) | pub struct jb_ingest__os_info_deprecated {
    method metadata (line 3126) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3133) | fn default() -> Self {
  constant OS_INFO_DEPRECATED_WIRE_SIZE (line 3138) | pub const OS_INFO_DEPRECATED_WIRE_SIZE: usize = 6;
  function struct_size (line 3145) | fn struct_size() {
  function field_offsets (line 3152) | fn field_offsets() {
  type jb_ingest__os_info (line 3161) | pub struct jb_ingest__os_info {
    method metadata (line 3171) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3178) | fn default() -> Self {
  constant OS_INFO_WIRE_SIZE (line 3183) | pub const OS_INFO_WIRE_SIZE: usize = 8;
  function struct_size (line 3190) | fn struct_size() {
  function field_offsets (line 3197) | fn field_offsets() {
  type jb_ingest__kernel_headers_source (line 3207) | pub struct jb_ingest__kernel_headers_source {
    method metadata (line 3214) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3221) | fn default() -> Self {
  constant KERNEL_HEADERS_SOURCE_WIRE_SIZE (line 3226) | pub const KERNEL_HEADERS_SOURCE_WIRE_SIZE: usize = 3;
  function struct_size (line 3233) | fn struct_size() {
  function field_offsets (line 3240) | fn field_offsets() {
  type jb_ingest__entrypoint_error (line 3247) | pub struct jb_ingest__entrypoint_error {
    method metadata (line 3254) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3261) | fn default() -> Self {
  constant ENTRYPOINT_ERROR_WIRE_SIZE (line 3266) | pub const ENTRYPOINT_ERROR_WIRE_SIZE: usize = 3;
  function struct_size (line 3273) | fn struct_size() {
  function field_offsets (line 3280) | fn field_offsets() {
  type jb_ingest__bpf_compiled (line 3287) | pub struct jb_ingest__bpf_compiled {
    method metadata (line 3293) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3300) | fn default() -> Self {
  constant BPF_COMPILED_WIRE_SIZE (line 3305) | pub const BPF_COMPILED_WIRE_SIZE: usize = 2;
  function struct_size (line 3312) | fn struct_size() {
  function field_offsets (line 3319) | fn field_offsets() {
  type jb_ingest__begin_telemetry (line 3325) | pub struct jb_ingest__begin_telemetry {
    method metadata (line 3331) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3338) | fn default() -> Self {
  constant BEGIN_TELEMETRY_WIRE_SIZE (line 3343) | pub const BEGIN_TELEMETRY_WIRE_SIZE: usize = 2;
  function struct_size (line 3350) | fn struct_size() {
  function field_offsets (line 3357) | fn field_offsets() {
  type jb_ingest__cloud_platform_account_info (line 3363) | pub struct jb_ingest__cloud_platform_account_info {
    method metadata (line 3370) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3377) | fn default() -> Self {
  constant CLOUD_PLATFORM_ACCOUNT_INFO_WIRE_SIZE (line 3382) | pub const CLOUD_PLATFORM_ACCOUNT_INFO_WIRE_SIZE: usize = 4;
  function struct_size (line 3389) | fn struct_size() {
  function field_offsets (line 3396) | fn field_offsets() {
  type jb_ingest__collector_health (line 3406) | pub struct jb_ingest__collector_health {
    method metadata (line 3414) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3421) | fn default() -> Self {
  constant COLLECTOR_HEALTH_WIRE_SIZE (line 3426) | pub const COLLECTOR_HEALTH_WIRE_SIZE: usize = 6;
  function struct_size (line 3433) | fn struct_size() {
  function field_offsets (line 3440) | fn field_offsets() {
  type jb_ingest__system_wide_process_settings (line 3448) | pub struct jb_ingest__system_wide_process_settings {
    method metadata (line 3456) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3463) | fn default() -> Self {
  constant SYSTEM_WIDE_PROCESS_SETTINGS_WIRE_SIZE (line 3468) | pub const SYSTEM_WIDE_PROCESS_SETTINGS_WIRE_SIZE: usize = 24;
  function struct_size (line 3475) | fn struct_size() {
  function field_offsets (line 3482) | fn field_offsets() {
  type jb_ingest__collect_blob (line 3502) | pub struct jb_ingest__collect_blob {
    method metadata (line 3512) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3519) | fn default() -> Self {
  constant COLLECT_BLOB_WIRE_SIZE (line 3524) | pub const COLLECT_BLOB_WIRE_SIZE: usize = 16;
  function struct_size (line 3531) | fn struct_size() {
  function field_offsets (line 3538) | fn field_offsets() {
  type jb_ingest__report_cpu_cores (line 3548) | pub struct jb_ingest__report_cpu_cores {
    method metadata (line 3555) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3562) | fn default() -> Self {
  constant REPORT_CPU_CORES_WIRE_SIZE (line 3567) | pub const REPORT_CPU_CORES_WIRE_SIZE: usize = 8;
  function struct_size (line 3574) | fn struct_size() {
  function field_offsets (line 3581) | fn field_offsets() {
  type jb_ingest__bpf_log (line 3591) | pub struct jb_ingest__bpf_log {
    method metadata (line 3603) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3610) | fn default() -> Self {
  constant BPF_LOG_WIRE_SIZE (line 3615) | pub const BPF_LOG_WIRE_SIZE: usize = 40;
  function struct_size (line 3622) | fn struct_size() {
  function field_offsets (line 3629) | fn field_offsets() {
  type jb_ingest__aws_network_interface_start (line 3641) | pub struct jb_ingest__aws_network_interface_start {
    method metadata (line 3649) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3656) | fn default() -> Self {
  constant AWS_NETWORK_INTERFACE_START_WIRE_SIZE (line 3661) | pub const AWS_NETWORK_INTERFACE_START_WIRE_SIZE: usize = 32;
  function struct_size (line 3668) | fn struct_size() {
  function field_offsets (line 3675) | fn field_offsets() {
  type jb_ingest__aws_network_interface_end (line 3692) | pub struct jb_ingest__aws_network_interface_end {
    method metadata (line 3699) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3706) | fn default() -> Self {
  constant AWS_NETWORK_INTERFACE_END_WIRE_SIZE (line 3711) | pub const AWS_NETWORK_INTERFACE_END_WIRE_SIZE: usize = 16;
  function struct_size (line 3718) | fn struct_size() {
  function field_offsets (line 3725) | fn field_offsets() {
  type jb_ingest__network_interface_info_deprecated (line 3735) | pub struct jb_ingest__network_interface_info_deprecated {
    method metadata (line 3752) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3759) | fn default() -> Self {
  constant NETWORK_INTERFACE_INFO_DEPRECATED_WIRE_SIZE (line 3764) | pub const NETWORK_INTERFACE_INFO_DEPRECATED_WIRE_SIZE: usize = 80;
  function struct_size (line 3771) | fn struct_size() {
  function field_offsets (line 3779) | fn field_offsets() {
  type jb_ingest__network_interface_info (line 3841) | pub struct jb_ingest__network_interface_info {
    method metadata (line 3858) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3865) | fn default() -> Self {
  constant NETWORK_INTERFACE_INFO_WIRE_SIZE (line 3870) | pub const NETWORK_INTERFACE_INFO_WIRE_SIZE: usize = 30;
  function struct_size (line 3877) | fn struct_size() {
  function field_offsets (line 3884) | fn field_offsets() {
  type jb_ingest__udp_new_socket (line 3925) | pub struct jb_ingest__udp_new_socket {
    method metadata (line 3935) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3942) | fn default() -> Self {
  constant UDP_NEW_SOCKET_WIRE_SIZE (line 3947) | pub const UDP_NEW_SOCKET_WIRE_SIZE: usize = 28;
  function struct_size (line 3954) | fn struct_size() {
  function field_offsets (line 3961) | fn field_offsets() {
  type jb_ingest__udp_stats_addr_unchanged (line 3971) | pub struct jb_ingest__udp_stats_addr_unchanged {
    method metadata (line 3981) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 3988) | fn default() -> Self {
  constant UDP_STATS_ADDR_UNCHANGED_WIRE_SIZE (line 3993) | pub const UDP_STATS_ADDR_UNCHANGED_WIRE_SIZE: usize = 16;
  function struct_size (line 4000) | fn struct_size() {
  function field_offsets (line 4007) | fn field_offsets() {
  type jb_ingest__udp_stats_addr_changed_v4 (line 4029) | pub struct jb_ingest__udp_stats_addr_changed_v4 {
    method metadata (line 4041) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4048) | fn default() -> Self {
  constant UDP_STATS_ADDR_CHANGED_V4_WIRE_SIZE (line 4053) | pub const UDP_STATS_ADDR_CHANGED_V4_WIRE_SIZE: usize = 21;
  function struct_size (line 4060) | fn struct_size() {
  function field_offsets (line 4067) | fn field_offsets() {
  type jb_ingest__udp_stats_addr_changed_v6 (line 4097) | pub struct jb_ingest__udp_stats_addr_changed_v6 {
    method metadata (line 4109) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4116) | fn default() -> Self {
  constant UDP_STATS_ADDR_CHANGED_V6_WIRE_SIZE (line 4121) | pub const UDP_STATS_ADDR_CHANGED_V6_WIRE_SIZE: usize = 33;
  function struct_size (line 4128) | fn struct_size() {
  function field_offsets (line 4135) | fn field_offsets() {
  type jb_ingest__dns_response_dep_b (line 4165) | pub struct jb_ingest__dns_response_dep_b {
    method metadata (line 4177) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4184) | fn default() -> Self {
  constant DNS_RESPONSE_DEP_B_WIRE_SIZE (line 4189) | pub const DNS_RESPONSE_DEP_B_WIRE_SIZE: usize = 22;
  function struct_size (line 4196) | fn struct_size() {
  function field_offsets (line 4203) | fn field_offsets() {
  type jb_ingest__dns_timeout (line 4227) | pub struct jb_ingest__dns_timeout {
    method metadata (line 4237) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4244) | fn default() -> Self {
  constant DNS_TIMEOUT_WIRE_SIZE (line 4249) | pub const DNS_TIMEOUT_WIRE_SIZE: usize = 18;
  function struct_size (line 4256) | fn struct_size() {
  function field_offsets (line 4263) | fn field_offsets() {
  type jb_ingest__udp_stats_drops_changed (line 4273) | pub struct jb_ingest__udp_stats_drops_changed {
    method metadata (line 4281) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4288) | fn default() -> Self {
  constant UDP_STATS_DROPS_CHANGED_WIRE_SIZE (line 4293) | pub const UDP_STATS_DROPS_CHANGED_WIRE_SIZE: usize = 12;
  function struct_size (line 4300) | fn struct_size() {
  function field_offsets (line 4307) | fn field_offsets() {
  type jb_ingest__dns_response (line 4321) | pub struct jb_ingest__dns_response {
    method metadata (line 4334) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4341) | fn default() -> Self {
  constant DNS_RESPONSE_WIRE_SIZE (line 4346) | pub const DNS_RESPONSE_WIRE_SIZE: usize = 23;
  function struct_size (line 4353) | fn struct_size() {
  function field_offsets (line 4360) | fn field_offsets() {
  type jb_ingest__udp_destroy_socket (line 4373) | pub struct jb_ingest__udp_destroy_socket {
    method metadata (line 4380) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4387) | fn default() -> Self {
  constant UDP_DESTROY_SOCKET_WIRE_SIZE (line 4392) | pub const UDP_DESTROY_SOCKET_WIRE_SIZE: usize = 8;
  function struct_size (line 4399) | fn struct_size() {
  function field_offsets (line 4406) | fn field_offsets() {
  type jb_ingest__pulse (line 4413) | pub struct jb_ingest__pulse {
    method metadata (line 4419) | pub fn metadata() -> render_parser::MessageMetadata {
  method default (line 4426) | fn default() -> Self {
  constant PULSE_WIRE_SIZE (line 4431) | pub const PULSE_WIRE_SIZE: usize = 2;
  function struct_size (line 4438) | fn struct_size() {
  function field_offsets (line 4445) | fn field_offsets() {
  function all_message_metadata (line 4451) | pub fn all_message_metadata() -> ::std::vec::Vec<render_parser::MessageM...

FILE: crates/render/ebpf_net/kernel_collector/src/encoder.rs
  function ebpf_net_kernel_collector_encode_pulse (line 13) | pub extern "C" fn ebpf_net_kernel_collector_encode_pulse(

FILE: crates/render/ebpf_net/kernel_collector/src/hash.rs
  constant KERNEL_COLLECTOR_HASH_SIZE (l
Condensed preview — 972 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,828K chars).
[
  {
    "path": ".clang-format",
    "chars": 335,
    "preview": "BasedOnStyle:  LLVM\nAlignAfterOpenBracket: AlwaysBreak\nAllowShortFunctionsOnASingleLine: Inline\nBinPackArguments: false\n"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 591,
    "preview": "{\n  \"name\": \"OpenTelemetry Network Dev\",\n  \"image\": \"otel/opentelemetry-network-build-tools:latest\",\n  \"features\": {\n   "
  },
  {
    "path": ".git/HEAD",
    "chars": 21,
    "preview": "ref: refs/heads/main\n"
  },
  {
    "path": ".git/config",
    "chars": 360,
    "preview": "[core]\n\trepositoryformatversion = 1\n\tfilemode = true\n\tbare = false\n\tlogallrefupdates = true\n[remote \"origin\"]\n\turl = htt"
  },
  {
    "path": ".git/description",
    "chars": 73,
    "preview": "Unnamed repository; edit this file 'description' to name the repository.\n"
  },
  {
    "path": ".git/hooks/applypatch-msg.sample",
    "chars": 478,
    "preview": "#!/bin/sh\n#\n# An example hook script to check the commit log message taken by\n# applypatch from an e-mail message.\n#\n# T"
  },
  {
    "path": ".git/hooks/commit-msg.sample",
    "chars": 896,
    "preview": "#!/bin/sh\n#\n# An example hook script to check the commit log message.\n# Called by \"git commit\" with one argument, the na"
  },
  {
    "path": ".git/hooks/fsmonitor-watchman.sample",
    "chars": 4726,
    "preview": "#!/usr/bin/perl\n\nuse strict;\nuse warnings;\nuse IPC::Open2;\n\n# An example hook script to integrate Watchman\n# (https://fa"
  },
  {
    "path": ".git/hooks/post-update.sample",
    "chars": 189,
    "preview": "#!/bin/sh\n#\n# An example hook script to prepare a packed repository for use over\n# dumb transports.\n#\n# To enable this h"
  },
  {
    "path": ".git/hooks/pre-applypatch.sample",
    "chars": 424,
    "preview": "#!/bin/sh\n#\n# An example hook script to verify what is about to be committed\n# by applypatch from an e-mail message.\n#\n#"
  },
  {
    "path": ".git/hooks/pre-commit.sample",
    "chars": 1649,
    "preview": "#!/bin/sh\n#\n# An example hook script to verify what is about to be committed.\n# Called by \"git commit\" with no arguments"
  },
  {
    "path": ".git/hooks/pre-merge-commit.sample",
    "chars": 416,
    "preview": "#!/bin/sh\n#\n# An example hook script to verify what is about to be committed.\n# Called by \"git merge\" with no arguments."
  },
  {
    "path": ".git/hooks/pre-push.sample",
    "chars": 1374,
    "preview": "#!/bin/sh\n\n# An example hook script to verify what is about to be pushed.  Called by \"git\n# push\" after it has checked t"
  },
  {
    "path": ".git/hooks/pre-rebase.sample",
    "chars": 4898,
    "preview": "#!/bin/sh\n#\n# Copyright (c) 2006, 2008 Junio C Hamano\n#\n# The \"pre-rebase\" hook is run just before \"git rebase\" starts d"
  },
  {
    "path": ".git/hooks/pre-receive.sample",
    "chars": 544,
    "preview": "#!/bin/sh\n#\n# An example hook script to make use of push options.\n# The example simply echoes all push options that star"
  },
  {
    "path": ".git/hooks/prepare-commit-msg.sample",
    "chars": 1492,
    "preview": "#!/bin/sh\n#\n# An example hook script to prepare the commit log message.\n# Called by \"git commit\" with the name of the fi"
  },
  {
    "path": ".git/hooks/push-to-checkout.sample",
    "chars": 2783,
    "preview": "#!/bin/sh\n\n# An example hook script to update a checked-out tree on a git push.\n#\n# This hook is invoked by git-receive-"
  },
  {
    "path": ".git/hooks/sendemail-validate.sample",
    "chars": 2308,
    "preview": "#!/bin/sh\n\n# An example hook script to validate a patch (and/or patch series) before\n# sending it via email.\n#\n# The hoo"
  },
  {
    "path": ".git/hooks/update.sample",
    "chars": 3650,
    "preview": "#!/bin/sh\n#\n# An example hook script to block unannotated tags from entering.\n# Called by \"git receive-pack\" with argume"
  },
  {
    "path": ".git/info/exclude",
    "chars": 240,
    "preview": "# git ls-files --others --exclude-from=.git/info/exclude\n# Lines that start with '#' are comments.\n# For a project mostl"
  },
  {
    "path": ".git/logs/HEAD",
    "chars": 205,
    "preview": "0000000000000000000000000000000000000000 0a078f5207323d2be24cbdede1de3abb19bc55a4 appuser <appuser@7c99e0e64a07.(none)> "
  },
  {
    "path": ".git/logs/refs/heads/main",
    "chars": 205,
    "preview": "0000000000000000000000000000000000000000 0a078f5207323d2be24cbdede1de3abb19bc55a4 appuser <appuser@7c99e0e64a07.(none)> "
  },
  {
    "path": ".git/logs/refs/remotes/origin/HEAD",
    "chars": 205,
    "preview": "0000000000000000000000000000000000000000 0a078f5207323d2be24cbdede1de3abb19bc55a4 appuser <appuser@7c99e0e64a07.(none)> "
  },
  {
    "path": ".git/objects/pack/pack-71fb82fb82ed2e298be25eaa90192ef76cf2859f.promisor",
    "chars": 57,
    "preview": "0a078f5207323d2be24cbdede1de3abb19bc55a4 refs/heads/main\n"
  },
  {
    "path": ".git/packed-refs",
    "chars": 112,
    "preview": "# pack-refs with: peeled fully-peeled sorted \n0a078f5207323d2be24cbdede1de3abb19bc55a4 refs/remotes/origin/main\n"
  },
  {
    "path": ".git/refs/heads/main",
    "chars": 41,
    "preview": "0a078f5207323d2be24cbdede1de3abb19bc55a4\n"
  },
  {
    "path": ".git/refs/remotes/origin/HEAD",
    "chars": 30,
    "preview": "ref: refs/remotes/origin/main\n"
  },
  {
    "path": ".git/shallow",
    "chars": 41,
    "preview": "0a078f5207323d2be24cbdede1de3abb19bc55a4\n"
  },
  {
    "path": ".git-blame-ignore-revs",
    "chars": 41,
    "preview": "5ac6cdf70d1b8f407e873a7a3fcf0bec07232c75\n"
  },
  {
    "path": ".github/.actionlint.yaml",
    "chars": 53,
    "preview": "self-hosted-runner:\n  labels:\n    - ubuntu-24.04-arm\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 798,
    "preview": "#####################################################\n#\n# List of approvers for OpenTelemetry Collector Contrib\n#\n######"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yaml",
    "chars": 2515,
    "preview": "name: Bug report\ndescription: Create a report to help us improve\nlabels: [\"bug\", \"needs triage\"]\nbody:\n  - type: markdow"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 192,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: eBPF Collector Slack Channel\n    url: https://cloud-native.slack.co"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yaml",
    "chars": 1523,
    "preview": "name: Feature request\ndescription: Suggest an idea for this project\nlabels: [\"enhancement\", \"needs triage\"]\nbody:\n  - ty"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/other.yaml",
    "chars": 943,
    "preview": "name: Other issue\ndescription: Create a new issue to help us improve the collector\nlabels: [\"needs triage\"]\nbody:\n  - ty"
  },
  {
    "path": ".github/actions/build-tools-single-stage/action.yml",
    "chars": 10774,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nname: 'Build and Push Container'\ndescriptio"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 363,
    "preview": "**Description:** <Describe what has changed.>\n<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.\nEx. "
  },
  {
    "path": ".github/renovate.json5",
    "chars": 465,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"config:best-practices\",\n    \"hel"
  },
  {
    "path": ".github/workflows/build-and-release.yaml",
    "chars": 9528,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nname: build-and-release\nrun-name: Publishin"
  },
  {
    "path": ".github/workflows/build-and-test.yaml",
    "chars": 40019,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nname: build-and-test\nrun-name: ${{ github.a"
  },
  {
    "path": ".github/workflows/build-benv-multiarch.yaml",
    "chars": 3230,
    "preview": "name: build-benv-multiarch\n\non:\n  workflow_dispatch:\n  push:\n    branches: [ main ]\n    paths:\n      - 'build-tools/**'\n"
  },
  {
    "path": ".github/workflows/build-benv-single-arch.yaml",
    "chars": 6184,
    "preview": "name: build-benv-single-arch\n\non:\n  workflow_call:\n    inputs:\n      runner:\n        description: Runner label (ubuntu-2"
  },
  {
    "path": ".github/workflows/fossa.yml",
    "chars": 482,
    "preview": "name: FOSSA scanning\n\non:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: read\n\njobs:\n  fossa:\n    if: gith"
  },
  {
    "path": ".github/workflows/k8s-collector-integration.yaml",
    "chars": 2384,
    "preview": "name: k8s-collector-integration\n\non:\n  workflow_call:\n  push:\n    branches:\n      - main\n  pull_request:\n    paths:\n    "
  },
  {
    "path": ".github/workflows/ossf-scorecard.yml",
    "chars": 1631,
    "preview": "name: OSSF Scorecard\n\non:\n  push:\n    branches:\n      - main\n  schedule:\n    - cron: \"50 10 * * 3\" # once a week\n  workf"
  },
  {
    "path": ".github/workflows/release-please.yml",
    "chars": 1048,
    "preview": "name: release-please\n\non:\n  push:\n    branches: [ main ]\n  workflow_dispatch: {}\n\npermissions:\n  contents: write\n  pull-"
  },
  {
    "path": ".github/workflows/scripts/check-clang-format.sh",
    "chars": 890,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n\nCLANG_FORMAT=\"clang-format-19\""
  },
  {
    "path": ".github/workflows/trivy-scans.yml",
    "chars": 813,
    "preview": "name: trivy scans\n\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    paths:\n      - '.github/workflows/trivy-sc"
  },
  {
    "path": ".gitignore",
    "chars": 728,
    "preview": "*.o\n*.pyc\n*.bak\n*.so\n*.a\n*~\n!.*\n*.backup\n*.aux\n*.log\n*.out\n*.profile\n*.bbl\n*.blg\n*.brf\n.autotools\n.cproject\n.*.cmd\n.*.d\n"
  },
  {
    "path": ".gitmodules",
    "chars": 1545,
    "preview": "[submodule \"ext/civetweb\"]\n\tpath = ext/civetweb\n\turl = https://github.com/civetweb/civetweb.git\n[submodule \"build-tools/"
  },
  {
    "path": ".release-please-manifest.json",
    "chars": 21,
    "preview": "{\n  \".\": \"0.11.0\"\n}\n\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 101,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file by Release Please.\n\n"
  },
  {
    "path": "CMakeLists.txt",
    "chars": 2082,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ncmake_minimum_required(VERSION 3.12)\n\n# Loa"
  },
  {
    "path": "Cargo.toml",
    "chars": 1051,
    "preview": "[workspace]\nresolver = \"2\"\nmembers = [\n  \"crates/kernel-collector-sys\",\n  \"crates/kernel-collector-bin\",\n  \"crates/reduc"
  },
  {
    "path": "LICENSE.txt",
    "chars": 11358,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "NOTICE.txt",
    "chars": 101525,
    "preview": "OpenTelemetry eBPF\n==================\n\nhttps://github.com/open-telemetry/opentelemetry-ebpf\n\nCopyright The OpenTelemetry"
  },
  {
    "path": "README.md",
    "chars": 2629,
    "preview": "# OpenTelemetry eBPF #\n\nThe OpenTelemetry eBPF project develops components that collect and analyze\ntelemetry from the o"
  },
  {
    "path": "RELEASING.md",
    "chars": 2857,
    "preview": "# Making a public release\nPublic builds are those intended to be used by the general audience.\n\n## Release procedure (Re"
  },
  {
    "path": "VERSION",
    "chars": 8,
    "preview": "0.11.0\n\n"
  },
  {
    "path": "build-tools/.gitignore",
    "chars": 18,
    "preview": "/Debug/\n/Release/\n"
  },
  {
    "path": "build-tools/.templates/dependency/Dockerfile",
    "chars": 391,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# DEPENDENCY_NAME\n\nARG base_IMAGE_TAG\n\nFROM"
  },
  {
    "path": "build-tools/CMakeLists.txt",
    "chars": 5934,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ncmake_minimum_required (VERSION 3.5)\n\nproje"
  },
  {
    "path": "build-tools/add_dependency.sh",
    "chars": 1293,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nset -e\n\nif [ -z \"$2\" ]; then\n  "
  },
  {
    "path": "build-tools/aws_sdk/Dockerfile",
    "chars": 712,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# AWS SDK\n\nARG base_IMAGE_TAG\nARG CMAKE_BUI"
  },
  {
    "path": "build-tools/base/Dockerfile",
    "chars": 4192,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nARG BENV_BASE_IMAGE_DISTRO=debian\nARG BENV_"
  },
  {
    "path": "build-tools/benv/docker.d/cgroups",
    "chars": 109,
    "preview": "#!/bin/bash\n\ndocker_args+=(\n  --mount \"type=bind,source=/sys/fs/cgroup,destination=/sys/fs/cgroup,readonly\"\n)"
  },
  {
    "path": "build-tools/benv/docker.d/gdb",
    "chars": 89,
    "preview": "#!/bin/bash\n\ndocker_args+=(\n  --cap-add=SYS_PTRACE\n  --security-opt seccomp=unconfined\n)\n"
  },
  {
    "path": "build-tools/benv/docker.d/kernel-headers",
    "chars": 1046,
    "preview": "#!/bin/bash\n\ndocker_args+=(\n  --mount \"type=bind,source=/lib/modules/`uname --kernel-release`,destination=/lib/modules/`"
  },
  {
    "path": "build-tools/benv/docker.d/pid-host",
    "chars": 43,
    "preview": "#!/bin/bash\n\ndocker_args+=(\n  --pid=host\n)\n"
  },
  {
    "path": "build-tools/benv/docker.d/privileged",
    "chars": 45,
    "preview": "#!/bin/bash\n\ndocker_args+=(\n  --privileged\n)\n"
  },
  {
    "path": "build-tools/benv/docker.d/vimrc",
    "chars": 178,
    "preview": "#!/bin/bash\n\ndocker_args+=(\n  --mount \"type=bind,source=$HOME/.vim,destination=/root/.vim,readonly\"\n  --mount \"type=bind"
  },
  {
    "path": "build-tools/build.sh",
    "chars": 2059,
    "preview": "#!/bin/bash -e\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# Builds the build environme"
  },
  {
    "path": "build-tools/build_directory.sh",
    "chars": 699,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# This script gets the latest g"
  },
  {
    "path": "build-tools/check_missing.sh",
    "chars": 1005,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# For a docker image directory "
  },
  {
    "path": "build-tools/cpp_misc/Dockerfile",
    "chars": 2138,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# various c++ libraries:\n# - LZ4\n# - yaml-c"
  },
  {
    "path": "build-tools/cpp_misc/ccan/build_assert/_info",
    "chars": 1350,
    "preview": "#include <stdio.h>\n#include <string.h>\n#include \"config.h\"\n\n/**\n * build_assert - routines for build-time assertions\n *\n"
  },
  {
    "path": "build-tools/cpp_misc/ccan/build_assert/build_assert.h",
    "chars": 1228,
    "preview": "/* CC0 (Public domain) - see LICENSE file for details */\n#ifndef CCAN_BUILD_ASSERT_H\n#define CCAN_BUILD_ASSERT_H\n\n/**\n *"
  },
  {
    "path": "build-tools/cpp_misc/ccan/build_assert/test/compile_fail-expr.c",
    "chars": 156,
    "preview": "#include <ccan/build_assert/build_assert.h>\n\nint main(int argc, char *argv[])\n{\n#ifdef FAIL\n\treturn BUILD_ASSERT_OR_ZERO"
  },
  {
    "path": "build-tools/cpp_misc/ccan/build_assert/test/compile_fail.c",
    "chars": 135,
    "preview": "#include <ccan/build_assert/build_assert.h>\n\nint main(int argc, char *argv[])\n{\n#ifdef FAIL\n\tBUILD_ASSERT(1 == 0);\n#endi"
  },
  {
    "path": "build-tools/cpp_misc/ccan/build_assert/test/compile_ok.c",
    "chars": 116,
    "preview": "#include <ccan/build_assert/build_assert.h>\n\nint main(int argc, char *argv[])\n{\n\tBUILD_ASSERT(1 == 1);\n\treturn 0;\n}\n"
  },
  {
    "path": "build-tools/cpp_misc/ccan/build_assert/test/run-BUILD_ASSERT_OR_ZERO.c",
    "chars": 188,
    "preview": "#include <ccan/build_assert/build_assert.h>\n#include <ccan/tap/tap.h>\n\nint main(int argc, char *argv[])\n{\n\tplan_tests(1)"
  },
  {
    "path": "build-tools/cpp_misc/ccan/check_type/_info",
    "chars": 841,
    "preview": "#include <stdio.h>\n#include <string.h>\n#include \"config.h\"\n\n/**\n * check_type - routines for compile time type checking\n"
  },
  {
    "path": "build-tools/cpp_misc/ccan/check_type/check_type.h",
    "chars": 2376,
    "preview": "/* CC0 (Public domain) - see LICENSE file for details */\n#ifndef CCAN_CHECK_TYPE_H\n#define CCAN_CHECK_TYPE_H\n\n#define HA"
  },
  {
    "path": "build-tools/cpp_misc/ccan/check_type/test/compile_fail-check_type.c",
    "chars": 133,
    "preview": "#include <ccan/check_type/check_type.h>\n\nint main(int argc, char *argv[])\n{\n#ifdef FAIL\n\tcheck_type(argc, char);\n#endif\n"
  },
  {
    "path": "build-tools/cpp_misc/ccan/check_type/test/compile_fail-check_type_unsigned.c",
    "chars": 253,
    "preview": "#include <ccan/check_type/check_type.h>\n\nint main(int argc, char *argv[])\n{\n#ifdef FAIL\n#if HAVE_TYPEOF\n\tcheck_type(argc"
  },
  {
    "path": "build-tools/cpp_misc/ccan/check_type/test/compile_fail-check_types_match.c",
    "chars": 162,
    "preview": "#include <ccan/check_type/check_type.h>\n\nint main(int argc, char *argv[])\n{\n\tunsigned char x = argc;\n#ifdef FAIL\n\tcheck_"
  },
  {
    "path": "build-tools/cpp_misc/ccan/check_type/test/run.c",
    "chars": 562,
    "preview": "#include <ccan/check_type/check_type.h>\n#include <ccan/tap/tap.h>\n\nint main(int argc, char *argv[])\n{\n\tint x = 0, y = 0;"
  },
  {
    "path": "build-tools/cpp_misc/ccan/compiler/_info",
    "chars": 1533,
    "preview": "#include <string.h>\n#include <stdio.h>\n#include \"config.h\"\n\n/**\n * compiler - macros for common compiler extensions\n *\n "
  },
  {
    "path": "build-tools/cpp_misc/ccan/compiler/compiler.h",
    "chars": 5570,
    "preview": "/* CC0 (Public domain) - see LICENSE file for details */\n#ifndef CCAN_COMPILER_H\n#define CCAN_COMPILER_H\n\n#ifndef COLD\n#"
  },
  {
    "path": "build-tools/cpp_misc/ccan/compiler/test/compile_fail-printf.c",
    "chars": 361,
    "preview": "#include <ccan/compiler/compiler.h>\n\nstatic void PRINTF_FMT(2,3) my_printf(int x, const char *fmt, ...)\n{\n}\n\nint main(in"
  },
  {
    "path": "build-tools/cpp_misc/ccan/compiler/test/run-is_compile_constant.c",
    "chars": 317,
    "preview": "#include <ccan/compiler/compiler.h>\n#include <ccan/tap/tap.h>\n\nint main(int argc, char *argv[])\n{\n\tplan_tests(2);\n\n\tok1("
  },
  {
    "path": "build-tools/cpp_misc/ccan/container_of/_info",
    "chars": 1340,
    "preview": "#include <stdio.h>\n#include <string.h>\n#include \"config.h\"\n\n/**\n * container_of - routine for upcasting\n *\n * It is ofte"
  },
  {
    "path": "build-tools/cpp_misc/ccan/container_of/container_of.h",
    "chars": 3132,
    "preview": "/* CC0 (Public domain) - see LICENSE file for details */\n#ifndef CCAN_CONTAINER_OF_H\n#define CCAN_CONTAINER_OF_H\n#includ"
  },
  {
    "path": "build-tools/cpp_misc/ccan/container_of/test/compile_fail-bad-type.c",
    "chars": 361,
    "preview": "#include <ccan/container_of/container_of.h>\n#include <stdlib.h>\n\nstruct foo {\n\tint a;\n\tchar b;\n};\n\nint main(int argc, ch"
  },
  {
    "path": "build-tools/cpp_misc/ccan/container_of/test/compile_fail-types.c",
    "chars": 410,
    "preview": "#include <ccan/container_of/container_of.h>\n#include <stdlib.h>\n\nstruct foo {\n\tint a;\n\tchar b;\n};\n\nint main(int argc, ch"
  },
  {
    "path": "build-tools/cpp_misc/ccan/container_of/test/compile_fail-var-types.c",
    "chars": 494,
    "preview": "#include <ccan/container_of/container_of.h>\n#include <stdlib.h>\n\nstruct foo {\n\tint a;\n\tchar b;\n};\n\nint main(int argc, ch"
  },
  {
    "path": "build-tools/cpp_misc/ccan/container_of/test/run.c",
    "chars": 663,
    "preview": "#include <ccan/container_of/container_of.h>\n#include <ccan/tap/tap.h>\n\nstruct foo {\n\tint a;\n\tchar b;\n};\n\nint main(int ar"
  },
  {
    "path": "build-tools/cpp_misc/ccan/hash/_info",
    "chars": 855,
    "preview": "#include <string.h>\n#include <stdio.h>\n\n/**\n * hash - routines for hashing bytes\n *\n * When creating a hash table it's i"
  },
  {
    "path": "build-tools/cpp_misc/ccan/hash/hash.c",
    "chars": 30371,
    "preview": "/* CC0 (Public domain) - see LICENSE file for details */\n/*\n------------------------------------------------------------"
  },
  {
    "path": "build-tools/cpp_misc/ccan/hash/hash.h",
    "chars": 10200,
    "preview": "/* CC0 (Public domain) - see LICENSE file for details */\n#ifndef CCAN_HASH_H\n#define CCAN_HASH_H\n#include <stdint.h>\n#in"
  },
  {
    "path": "build-tools/cpp_misc/ccan/hash/test/api-hash_stable.c",
    "chars": 19025,
    "preview": "#include <ccan/hash/hash.h>\n#include <ccan/tap/tap.h>\n#include <stdbool.h>\n#include <string.h>\n\n#define ARRAY_WORDS 5\n\ni"
  },
  {
    "path": "build-tools/cpp_misc/ccan/hash/test/run.c",
    "chars": 3901,
    "preview": "#include <ccan/hash/hash.h>\n#include <ccan/tap/tap.h>\n#include <ccan/hash/hash.c>\n#include <stdbool.h>\n#include <string."
  },
  {
    "path": "build-tools/cpp_misc/ccan/licenses/BSD-MIT",
    "chars": 1023,
    "preview": "Permission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentati"
  },
  {
    "path": "build-tools/cpp_misc/ccan/licenses/CC0",
    "chars": 6383,
    "preview": "Statement of Purpose\n\nThe laws of most jurisdictions throughout the world automatically confer exclusive Copyright and R"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/_info",
    "chars": 1473,
    "preview": "#include <stdio.h>\n#include <string.h>\n#include \"config.h\"\n\n/**\n * list - double linked list routines\n *\n * The list hea"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/list.c",
    "chars": 1000,
    "preview": "/* Licensed under BSD-MIT - see LICENSE file for details */\n#include <stdio.h>\n#include <stdlib.h>\n#include \"list.h\"\n\nst"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/list.h",
    "chars": 17487,
    "preview": "/* Licensed under BSD-MIT - see LICENSE file for details */\n#ifndef CCAN_LIST_H\n#define CCAN_LIST_H\n#include <stdbool.h>"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/compile_ok-constant.c",
    "chars": 884,
    "preview": "#include <ccan/list/list.h>\n#include <ccan/tap/tap.h>\n#include <ccan/list/list.c>\n#include <stdbool.h>\n#include <stdio.h"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/helper.c",
    "chars": 1302,
    "preview": "#include <stdlib.h>\n#include <stdbool.h>\n#include <time.h>\n\n#include <ccan/list/list.h>\n#include \"helper.h\"\n\n#define ANS"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/helper.h",
    "chars": 249,
    "preview": "/* These are in a separate C file so we can test undefined structures. */\nstruct opaque;\ntypedef struct opaque opaque_t;"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run-check-corrupt.c",
    "chars": 2057,
    "preview": "#include <setjmp.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <string.h>\n#include <err.h>\n\n/* "
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run-list_del_from-assert.c",
    "chars": 705,
    "preview": "#define CCAN_LIST_DEBUG 1\n#include <ccan/list/list.h>\n#include <ccan/tap/tap.h>\n#include <ccan/list/list.c>\n#include <sy"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run-list_prev-list_next.c",
    "chars": 1765,
    "preview": "#include <ccan/list/list.h>\n#include <ccan/tap/tap.h>\n#include <ccan/list/list.c>\n#include \"helper.h\"\n\nstruct parent {\n\t"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run-prepend_list.c",
    "chars": 2814,
    "preview": "#include <ccan/list/list.h>\n#include <ccan/tap/tap.h>\n#include <ccan/list/list.c>\n#include <stdarg.h>\n\nstatic bool list_"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run-single-eval.c",
    "chars": 4713,
    "preview": "/* Make sure macros only evaluate their args once. */\n#include <ccan/list/list.h>\n#include <ccan/tap/tap.h>\n#include <cc"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run-with-debug.c",
    "chars": 116,
    "preview": "/* Just like run.c, but with all debug checks enabled. */\n#define CCAN_LIST_DEBUG 1\n#include <ccan/list/test/run.c>\n"
  },
  {
    "path": "build-tools/cpp_misc/ccan/list/test/run.c",
    "chars": 4963,
    "preview": "#include <ccan/list/list.h>\n#include <ccan/tap/tap.h>\n#include <ccan/list/list.c>\n#include \"helper.h\"\n\nstruct parent {\n\t"
  },
  {
    "path": "build-tools/final/Dockerfile",
    "chars": 5596,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nARG base_IMAGE_TAG\nARG libuv_IMAGE_TAG\nARG "
  },
  {
    "path": "build-tools/final/LICENSE.txt",
    "chars": 11358,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "build-tools/final/NOTICE.txt",
    "chars": 95251,
    "preview": "OpenTelemetry-eBPF Build Tools\n==============================\n\nhttps://github.com/open-telemetry/opentelemetry-ebpf-buil"
  },
  {
    "path": "build-tools/get_tag.sh",
    "chars": 499,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# This script gets a tag for th"
  },
  {
    "path": "build-tools/libbpf/Dockerfile",
    "chars": 668,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# compile our own libbpf\n\nARG base_IMAGE_TA"
  },
  {
    "path": "build-tools/libmaxminddb/Dockerfile",
    "chars": 538,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# libmaxminddb\n\nARG base_IMAGE_TAG\nFROM $ba"
  },
  {
    "path": "build-tools/libuv/Dockerfile",
    "chars": 570,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# libuv\n\nARG base_IMAGE_TAG\nFROM $base_IMAG"
  },
  {
    "path": "build-tools/nproc.sh",
    "chars": 321,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nif which nproc > /dev/null; the"
  },
  {
    "path": "channel/CMakeLists.txt",
    "chars": 1717,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nadd_library(\n  file_channel\n  STATIC\n    fi"
  },
  {
    "path": "channel/buffered_writer.cc",
    "chars": 2658,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/buffered_writer.h>\n#inc"
  },
  {
    "path": "channel/buffered_writer.h",
    "chars": 1801,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ib"
  },
  {
    "path": "channel/buffered_writer_test.cc",
    "chars": 1189,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/buffered_writer.h>\n\n#in"
  },
  {
    "path": "channel/callbacks.h",
    "chars": 964,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <platform/t"
  },
  {
    "path": "channel/channel.h",
    "chars": 934,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <platform/t"
  },
  {
    "path": "channel/component.h",
    "chars": 941,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <util/enum."
  },
  {
    "path": "channel/connection_caretaker.cc",
    "chars": 8409,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/connection_caretaker.h>"
  },
  {
    "path": "channel/connection_caretaker.h",
    "chars": 2683,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ca"
  },
  {
    "path": "channel/double_write_channel.cc",
    "chars": 831,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/double_write_channel.h>"
  },
  {
    "path": "channel/double_write_channel.h",
    "chars": 539,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ch"
  },
  {
    "path": "channel/file_channel.cc",
    "chars": 1082,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/file_channel.h>\n\n#inclu"
  },
  {
    "path": "channel/file_channel.h",
    "chars": 641,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ch"
  },
  {
    "path": "channel/ibuffered_writer.h",
    "chars": 1358,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <platform/p"
  },
  {
    "path": "channel/lz4_channel.cc",
    "chars": 1951,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include \"channel/lz4_channel.h\"\n#include"
  },
  {
    "path": "channel/lz4_channel.h",
    "chars": 1393,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ch"
  },
  {
    "path": "channel/mock_channel.h",
    "chars": 414,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#include <channel/channel.h>\n#incl"
  },
  {
    "path": "channel/network_channel.h",
    "chars": 744,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ca"
  },
  {
    "path": "channel/reconnecting_channel.cc",
    "chars": 6652,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/component.h>\n#include <"
  },
  {
    "path": "channel/reconnecting_channel.h",
    "chars": 3424,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <uv.h>\n\n#in"
  },
  {
    "path": "channel/tcp_channel.cc",
    "chars": 10598,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/tcp_channel.h>\n\n#includ"
  },
  {
    "path": "channel/tcp_channel.h",
    "chars": 3629,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ca"
  },
  {
    "path": "channel/test_channel.cc",
    "chars": 3737,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/test_channel.h>\n#includ"
  },
  {
    "path": "channel/test_channel.h",
    "chars": 2412,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ch"
  },
  {
    "path": "channel/tls_handler.cc",
    "chars": 1021,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/tls_handler.h>\n\n#includ"
  },
  {
    "path": "channel/tls_handler.h",
    "chars": 1250,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ne"
  },
  {
    "path": "channel/upstream_connection.cc",
    "chars": 1839,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <channel/upstream_connection.h>\n"
  },
  {
    "path": "channel/upstream_connection.h",
    "chars": 1479,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/bu"
  },
  {
    "path": "clang-format.sh",
    "chars": 885,
    "preview": "#!/bin/bash\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n\nCLANG_FORMAT=\"clang-format-19\""
  },
  {
    "path": "cmake/abseil.cmake",
    "chars": 122,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_package(absl REQUIRED"
  },
  {
    "path": "cmake/aws-sdk.cmake",
    "chars": 564,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_package(AWSSDK REQUIR"
  },
  {
    "path": "cmake/cargo-test.cmake",
    "chars": 402,
    "preview": "include_guard()\n\n# Adds a single target to run all Rust tests in the workspace.\n# Tests run from the source root, with a"
  },
  {
    "path": "cmake/cargo_build_rust.cmake",
    "chars": 4856,
    "preview": "cmake_minimum_required(VERSION 3.16)\n\nif(NOT DEFINED LINK_FILE)\n  message(FATAL_ERROR \"LINK_FILE not provided to cargo_b"
  },
  {
    "path": "cmake/ccache.cmake",
    "chars": 353,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n# use ccache if available."
  },
  {
    "path": "cmake/civetweb.cmake",
    "chars": 801,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nset(CIVETWEB_INCLUDE_DIR $"
  },
  {
    "path": "cmake/clang.cmake",
    "chars": 5939,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_package(CLANG REQUIRE"
  },
  {
    "path": "cmake/cpp-compiler.cmake",
    "chars": 1928,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n# resolves the command lin"
  },
  {
    "path": "cmake/curl.cmake",
    "chars": 269,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_package(CURL)\nif(NOT "
  },
  {
    "path": "cmake/curlpp.cmake",
    "chars": 590,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_path(CURLPP_INCLUDE_D"
  },
  {
    "path": "cmake/debug.cmake",
    "chars": 470,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfunction(strip_binary TARG"
  },
  {
    "path": "cmake/defaults.cmake",
    "chars": 4825,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n# Default build type is de"
  },
  {
    "path": "cmake/docker-utils.cmake",
    "chars": 5755,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\noption(RUN_DOCKER_COMMANDS"
  },
  {
    "path": "cmake/executable.cmake",
    "chars": 483,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n##########################"
  },
  {
    "path": "cmake/geoip.cmake",
    "chars": 792,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_path(LIBMAXMINDDB_INC"
  },
  {
    "path": "cmake/libbpf.cmake",
    "chars": 1416,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n# Find libbpf library and create target\n\n# "
  },
  {
    "path": "cmake/libelf.cmake",
    "chars": 404,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\npkg_check_modules(LIBELF R"
  },
  {
    "path": "cmake/llvm.cmake",
    "chars": 766,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_package(LLVM REQUIRED"
  },
  {
    "path": "cmake/lz4.cmake",
    "chars": 612,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_path(LZ4_INCLUDE_DIR "
  },
  {
    "path": "cmake/openssl.cmake",
    "chars": 125,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_package(OpenSSL REQUI"
  },
  {
    "path": "cmake/protobuf.cmake",
    "chars": 4761,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n\n\nfind_package(Protobuf RE"
  },
  {
    "path": "cmake/render.cmake",
    "chars": 10615,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n# Aggregate target to copy"
  },
  {
    "path": "cmake/rust_cxxbridge.cmake",
    "chars": 2431,
    "preview": "## Copyright The OpenTelemetry Authors\n## SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n# add_rust_cxxbridge(<ta"
  },
  {
    "path": "cmake/rust_main.cmake",
    "chars": 2669,
    "preview": "include_guard()\n\nfunction(add_rust_main)\n  cmake_parse_arguments(ARG \"\" \"TARGET;STRIPPED_TARGET;PACKAGE;BIN_NAME;PROJ_DI"
  },
  {
    "path": "cmake/sanitizer.cmake",
    "chars": 2367,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n######\n# ASAN\n######\n\nopti"
  },
  {
    "path": "cmake/shell.cmake",
    "chars": 1543,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\n# Runs linters on the give"
  },
  {
    "path": "cmake/spdlog.cmake",
    "chars": 250,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nadd_library(spdlog INTERFA"
  },
  {
    "path": "cmake/test.cmake",
    "chars": 4041,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nenable_testing()\n\nlink_dir"
  },
  {
    "path": "cmake/tool.cmake",
    "chars": 536,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nadd_custom_target(tools)\n\n"
  },
  {
    "path": "cmake/uv.cmake",
    "chars": 1257,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_path(LIBUV_INCLUDE_DI"
  },
  {
    "path": "cmake/xxd.cmake",
    "chars": 1142,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfunction (add_xxd FIL GENE"
  },
  {
    "path": "cmake/yamlcpp.cmake",
    "chars": 694,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\ninclude_guard()\n\nfind_path(YAMLCPP_INCLUDE_"
  },
  {
    "path": "collector/CMakeLists.txt",
    "chars": 985,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nadd_custom_target(collectors)\nadd_custom_ta"
  },
  {
    "path": "collector/Dockerfile.k8s-collector",
    "chars": 1075,
    "preview": "FROM docker.io/bitnami/minideb:trixie@sha256:0766a3b76750541ae2c5f3b806e5201e1b2ca1549a0a036a057726dc9e5dfa4d\n\nLABEL org"
  },
  {
    "path": "collector/agent_log.h",
    "chars": 2197,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <util/enum."
  },
  {
    "path": "collector/cloud/CMakeLists.txt",
    "chars": 1845,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nadd_library(\n  cloud_agentlib\n  STATIC\n    "
  },
  {
    "path": "collector/cloud/Dockerfile",
    "chars": 804,
    "preview": "# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\nFROM docker.io/bitnami/minideb:trixie@sha25"
  },
  {
    "path": "collector/cloud/README.md",
    "chars": 1232,
    "preview": "# Cloud Collector\n\nThe `cloud-collector` collects cloud information that cannot be otherwise collected by our kernel\ncol"
  },
  {
    "path": "collector/cloud/collector.cc",
    "chars": 1963,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <collector/cloud/collector.h>\n\n#"
  },
  {
    "path": "collector/cloud/collector.h",
    "chars": 1173,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <collector/"
  },
  {
    "path": "collector/cloud/entrypoint.cc",
    "chars": 3966,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <collector/cloud/collector.h>\n\n#"
  },
  {
    "path": "collector/cloud/entrypoint.sh",
    "chars": 1131,
    "preview": "#!/bin/bash -e\n# Copyright The OpenTelemetry Authors\n# SPDX-License-Identifier: Apache-2.0\n\n\n# shellcheck disable=SC1091"
  },
  {
    "path": "collector/cloud/enumerator.cc",
    "chars": 7134,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <collector/cloud/enumerator.h>\n\n"
  },
  {
    "path": "collector/cloud/enumerator.h",
    "chars": 1085,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <common/col"
  },
  {
    "path": "collector/cloud/ingest_connection.cc",
    "chars": 1883,
    "preview": "// Copyright The OpenTelemetry Authors\n// SPDX-License-Identifier: Apache-2.0\n\n#include <collector/cloud/ingest_connecti"
  },
  {
    "path": "collector/cloud/ingest_connection.h",
    "chars": 1431,
    "preview": "/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n#pragma once\n\n#include <channel/ca"
  }
]

// ... and 772 more files (download for full content)

About this extraction

This page contains the full source code of the open-telemetry/opentelemetry-network GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 972 files (4.4 MB), approximately 1.2M tokens, and a symbol index with 4233 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!