main 441428a1d939 cached
7088 files
72.2 MB
19.4M tokens
244929 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (77,384K chars total). Download the full file to get everything.
Repository: netobserv/netobserv-ebpf-agent
Branch: main
Commit: 441428a1d939
Files: 7088
Total size: 72.2 MB

Directory structure:
gitextract_wt0k_vfz/

├── .ci-operator.yaml
├── .coderabbit.yaml
├── .dockerignore
├── .github/
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   ├── release.yml
│   └── workflows/
│       ├── build_image_pr.yml
│       ├── pull_request.yml
│       ├── pull_request_e2e.yml
│       ├── push_image.yml
│       ├── push_image_pr.yml
│       ├── release.yml
│       └── rm-ok-to-test.yaml
├── .gitignore
├── .gitleaks.toml
├── .golangci.yml
├── .mk/
│   ├── bc.mk
│   └── shortcuts.mk
├── .snyk
├── .tekton/
│   ├── netobserv-ebpf-agent-ystream-pull-request.yaml
│   ├── netobserv-ebpf-agent-ystream-push.yaml
│   └── pipeline-ref.yaml
├── AGENTS.md
├── CONTRIBUTING.md
├── Containerfile.bytecode.multi.arch
├── DOWNSTREAM_OWNERS
├── DOWNSTREAM_OWNERS_ALIASES
├── Dockerfile
├── Dockerfile-args.downstream
├── Dockerfile.downstream
├── LICENSE
├── Makefile
├── OWNERS
├── README.downstream
├── README.md
├── SECURITY.md
├── bpf/
│   ├── .clang-format
│   ├── LICENSE
│   ├── configs.h
│   ├── dns_tracker.h
│   ├── flows.c
│   ├── flows_filter.h
│   ├── headers/
│   │   ├── bpf_builtins.h
│   │   ├── bpf_core_read.h
│   │   ├── bpf_endian.h
│   │   ├── bpf_helper_defs.h
│   │   ├── bpf_helpers.h
│   │   ├── bpf_tracing.h
│   │   ├── compiler.h
│   │   ├── utils.h
│   │   ├── vmlinux.h
│   │   ├── vmlinux_amd64.h
│   │   ├── vmlinux_arm64.h
│   │   ├── vmlinux_ppc64le.h
│   │   └── vmlinux_s390.h
│   ├── ipsec.h
│   ├── maps_definition.h
│   ├── network_events_monitoring.h
│   ├── openssl_tracker.h
│   ├── pca.h
│   ├── pkt_drops.h
│   ├── pkt_translation.h
│   ├── rtt_tracker.h
│   ├── tls_tracker.h
│   ├── types.h
│   └── utils.h
├── cmd/
│   └── netobserv-ebpf-agent.go
├── deployments/
│   ├── README.md
│   ├── flp-daemonset-cap.yml
│   ├── flp-daemonset.yml
│   ├── flp-service.yml
│   └── perms.yml
├── docs/
│   ├── architecture.md
│   ├── config.md
│   ├── ebpf_implementation.md
│   ├── flow_filtering.md
│   ├── measurements.pptx
│   ├── profiling.md
│   └── rtt_calculations.md
├── e2e/
│   ├── README.md
│   ├── basic/
│   │   ├── common.go
│   │   ├── flow_test.go
│   │   └── manifests/
│   │       └── pods.yml
│   ├── cluster/
│   │   ├── base/
│   │   │   ├── 00-kind.yml
│   │   │   ├── 01-permissions.yml
│   │   │   ├── 02-loki.yml
│   │   │   ├── 03-flp.yml
│   │   │   └── 04-agent.yml
│   │   ├── kind.go
│   │   ├── kind_test.go
│   │   └── tester/
│   │       ├── loki.go
│   │       └── pods.go
│   ├── ipfix/
│   │   ├── ipfix_test.go
│   │   └── manifests/
│   │       ├── 20-flp-transformer.yml
│   │       └── 30-agent.yml
│   └── kafka/
│       ├── kafka_test.go
│       └── manifests/
│           ├── 10-kafka-crd.yml
│           ├── 11-kafka-cluster.yml
│           ├── 12-kafka-topic.yml
│           ├── 20-flp-transformer.yml
│           └── 30-agent.yml
├── examples/
│   ├── direct-flp/
│   │   ├── README.md
│   │   ├── ipfix.json
│   │   └── simple-stdout.json
│   ├── filters/
│   │   ├── README.md
│   │   └── single-ip.json
│   ├── flowlogs-dump/
│   │   ├── README.md
│   │   └── server/
│   │       └── flowlogs-dump-collector.go
│   ├── ipfix-collector/
│   │   └── ipfix-dump.go
│   ├── packetcapture-dump/
│   │   ├── README.md
│   │   └── client/
│   │       └── packetcapture-client.go
│   ├── performance/
│   │   ├── Dockerfile_packet_counter
│   │   ├── README.md
│   │   ├── deployment.yml
│   │   ├── perftest-iperf.yml
│   │   ├── perftest-millionp.yml
│   │   └── server/
│   │       └── packet-counter-collector.go
│   ├── systemd/
│   │   ├── netobserv-ebpf-agent
│   │   └── netobserv-ebpf-agent.service
│   └── test-ssl-host.sh
├── go.mod
├── go.sum
├── pkg/
│   ├── agent/
│   │   ├── agent.go
│   │   ├── agent_test.go
│   │   ├── interfaces_listener.go
│   │   ├── ip.go
│   │   ├── ip_test.go
│   │   ├── packets_agent.go
│   │   ├── sasl.go
│   │   └── tls.go
│   ├── config/
│   │   └── config.go
│   ├── decode/
│   │   ├── decode_protobuf.go
│   │   ├── decode_protobuf_test.go
│   │   └── packets/
│   │       └── decode_protobuf_packets.go
│   ├── ebpf/
│   │   ├── bpf_arm64_bpfel.go
│   │   ├── bpf_arm64_bpfel.o
│   │   ├── bpf_powerpc_bpfel.go
│   │   ├── bpf_powerpc_bpfel.o
│   │   ├── bpf_s390_bpfeb.go
│   │   ├── bpf_s390_bpfeb.o
│   │   ├── bpf_x86_bpfel.go
│   │   ├── bpf_x86_bpfel.o
│   │   └── gen.go
│   ├── exporter/
│   │   ├── converters_test.go
│   │   ├── direct_flp.go
│   │   ├── direct_flp_test.go
│   │   ├── grpc_packets.go
│   │   ├── grpc_proto.go
│   │   ├── grpc_proto_test.go
│   │   ├── ipfix.go
│   │   ├── kafka_proto.go
│   │   └── kafka_proto_test.go
│   ├── flow/
│   │   ├── account.go
│   │   ├── account_test.go
│   │   ├── limiter.go
│   │   ├── limiter_test.go
│   │   ├── perfbuffer.go
│   │   ├── tracer_map.go
│   │   ├── tracer_perf.go
│   │   └── tracer_ringbuf.go
│   ├── grpc/
│   │   ├── flow/
│   │   │   ├── client.go
│   │   │   ├── grpc_test.go
│   │   │   └── server.go
│   │   └── packet/
│   │       ├── client.go
│   │       ├── grpc_test.go
│   │       └── server.go
│   ├── ifaces/
│   │   ├── filter.go
│   │   ├── filter_test.go
│   │   ├── informer.go
│   │   ├── poller.go
│   │   ├── poller_test.go
│   │   ├── registerer.go
│   │   ├── registerer_test.go
│   │   ├── watcher.go
│   │   └── watcher_test.go
│   ├── kernel/
│   │   ├── kernel_utils.go
│   │   └── kernel_utils_test.go
│   ├── maps/
│   │   ├── maps.go
│   │   └── maps_test.go
│   ├── metrics/
│   │   ├── metrics.go
│   │   └── metrics_test.go
│   ├── model/
│   │   ├── flow_content.go
│   │   ├── flow_content_test.go
│   │   ├── packet_record.go
│   │   ├── record.go
│   │   ├── record_test.go
│   │   └── tls_types.go
│   ├── pbflow/
│   │   ├── flow.pb.go
│   │   ├── flow_grpc.pb.go
│   │   └── proto.go
│   ├── pbpacket/
│   │   ├── packet.pb.go
│   │   └── packet_grpc.pb.go
│   ├── prometheus/
│   │   ├── prom_server.go
│   │   └── prom_server_test.go
│   ├── test/
│   │   ├── channels.go
│   │   ├── export_fake.go
│   │   ├── informer_fake.go
│   │   ├── tls.go
│   │   └── tracer_fake.go
│   ├── tracer/
│   │   ├── errors.go
│   │   ├── flow_filter.go
│   │   ├── flow_filter_test.go
│   │   ├── tracer.go
│   │   └── tracer_legacy.go
│   └── utils/
│       ├── networkevents/
│       │   ├── network_events.go
│       │   └── network_events_test.go
│       ├── packets/
│       │   └── packets.go
│       └── utils.go
├── proto/
│   ├── README.md
│   ├── flow.proto
│   └── packet.proto
├── renovate.json
├── scripts/
│   ├── README.md
│   ├── agent.yml
│   ├── collector.yml
│   ├── deploy-agent.sh
│   ├── generators.Dockerfile
│   ├── kind-cluster.sh
│   └── update-bpf-headers.sh
└── vendor/
    ├── github.com/
    │   ├── Knetic/
    │   │   └── govaluate/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── ARCHIVED.md
    │   │       ├── CONTRIBUTORS
    │   │       ├── EvaluableExpression.go
    │   │       ├── EvaluableExpression_sql.go
    │   │       ├── ExpressionToken.go
    │   │       ├── LICENSE
    │   │       ├── MANUAL.md
    │   │       ├── OperatorSymbol.go
    │   │       ├── README.md
    │   │       ├── TokenKind.go
    │   │       ├── evaluationStage.go
    │   │       ├── expressionFunctions.go
    │   │       ├── expressionOutputStream.go
    │   │       ├── lexerState.go
    │   │       ├── lexerStream.go
    │   │       ├── parameters.go
    │   │       ├── parsing.go
    │   │       ├── sanitizedParameters.go
    │   │       ├── stagePlanner.go
    │   │       ├── test.sh
    │   │       └── tokenStream.go
    │   ├── agoda-com/
    │   │   └── opentelemetry-logs-go/
    │   │       ├── .gitignore
    │   │       ├── CHANGELOG.md
    │   │       ├── CODEOWNERS
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── exporters/
    │   │       │   └── otlp/
    │   │       │       └── otlplogs/
    │   │       │           ├── clients.go
    │   │       │           ├── exporter.go
    │   │       │           ├── internal/
    │   │       │           │   ├── envconfig/
    │   │       │           │   │   └── envconfig.go
    │   │       │           │   ├── logstransform/
    │   │       │           │   │   ├── attribute.go
    │   │       │           │   │   └── logs.go
    │   │       │           │   ├── otlpconfig/
    │   │       │           │   │   ├── envconfig.go
    │   │       │           │   │   ├── options.go
    │   │       │           │   │   ├── optiontypes.go
    │   │       │           │   │   └── tls.go
    │   │       │           │   ├── partialsuccess.go
    │   │       │           │   └── retry/
    │   │       │           │       └── retry.go
    │   │       │           ├── options.go
    │   │       │           ├── otlplogsgrpc/
    │   │       │           │   ├── client.go
    │   │       │           │   └── options.go
    │   │       │           └── otlplogshttp/
    │   │       │               ├── client.go
    │   │       │               └── options.go
    │   │       ├── internal/
    │   │       │   └── global/
    │   │       │       ├── internal_logging.go
    │   │       │       ├── logs.go
    │   │       │       └── state.go
    │   │       ├── logs/
    │   │       │   ├── config.go
    │   │       │   ├── doc.go
    │   │       │   ├── logs.go
    │   │       │   └── noop.go
    │   │       ├── logs.go
    │   │       ├── sdk/
    │   │       │   ├── internal/
    │   │       │   │   └── env/
    │   │       │   │       └── env.go
    │   │       │   └── logs/
    │   │       │       ├── batch_log_record_processor.go
    │   │       │       ├── log_record_exporter.go
    │   │       │       ├── log_record_processor.go
    │   │       │       ├── logger.go
    │   │       │       ├── provider.go
    │   │       │       └── simple_log_record_processor.go
    │   │       └── semconv/
    │   │           └── attribute_group.go
    │   ├── benbjohnson/
    │   │   └── clock/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── clock.go
    │   │       └── context.go
    │   ├── beorn7/
    │   │   └── perks/
    │   │       ├── LICENSE
    │   │       └── quantile/
    │   │           ├── exampledata.txt
    │   │           └── stream.go
    │   ├── blang/
    │   │   └── semver/
    │   │       └── v4/
    │   │           ├── LICENSE
    │   │           ├── json.go
    │   │           ├── range.go
    │   │           ├── semver.go
    │   │           ├── sort.go
    │   │           └── sql.go
    │   ├── caarlos0/
    │   │   └── env/
    │   │       └── v11/
    │   │           ├── .editorconfig
    │   │           ├── .gitignore
    │   │           ├── .golangci.yml
    │   │           ├── .goreleaser.yml
    │   │           ├── .mailmap
    │   │           ├── LICENSE.md
    │   │           ├── Makefile
    │   │           ├── README.md
    │   │           ├── env.go
    │   │           ├── env_tomap.go
    │   │           ├── env_tomap_windows.go
    │   │           └── error.go
    │   ├── cenkalti/
    │   │   ├── backoff/
    │   │   │   ├── v4/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── backoff.go
    │   │   │   │   ├── context.go
    │   │   │   │   ├── exponential.go
    │   │   │   │   ├── retry.go
    │   │   │   │   ├── ticker.go
    │   │   │   │   ├── timer.go
    │   │   │   │   └── tries.go
    │   │   │   └── v5/
    │   │   │       ├── .gitignore
    │   │   │       ├── CHANGELOG.md
    │   │   │       ├── LICENSE
    │   │   │       ├── README.md
    │   │   │       ├── backoff.go
    │   │   │       ├── error.go
    │   │   │       ├── exponential.go
    │   │   │       ├── retry.go
    │   │   │       ├── ticker.go
    │   │   │       └── timer.go
    │   │   ├── hub/
    │   │   │   ├── .gitignore
    │   │   │   ├── .travis.yml
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   └── hub.go
    │   │   └── rpc2/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── client.go
    │   │       ├── codec.go
    │   │       ├── debug.go
    │   │       ├── jsonrpc/
    │   │       │   └── jsonrpc.go
    │   │       ├── server.go
    │   │       └── state.go
    │   ├── cespare/
    │   │   └── xxhash/
    │   │       └── v2/
    │   │           ├── LICENSE.txt
    │   │           ├── README.md
    │   │           ├── testall.sh
    │   │           ├── xxhash.go
    │   │           ├── xxhash_amd64.s
    │   │           ├── xxhash_arm64.s
    │   │           ├── xxhash_asm.go
    │   │           ├── xxhash_other.go
    │   │           ├── xxhash_safe.go
    │   │           └── xxhash_unsafe.go
    │   ├── cilium/
    │   │   └── ebpf/
    │   │       ├── .clang-format
    │   │       ├── .gitattributes
    │   │       ├── .gitignore
    │   │       ├── .golangci.yaml
    │   │       ├── .vimto.toml
    │   │       ├── CODEOWNERS
    │   │       ├── CODE_OF_CONDUCT.md
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── MAINTAINERS.md
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── asm/
    │   │       │   ├── alu.go
    │   │       │   ├── alu_string.go
    │   │       │   ├── doc.go
    │   │       │   ├── func.go
    │   │       │   ├── func_lin.go
    │   │       │   ├── func_string.go
    │   │       │   ├── func_win.go
    │   │       │   ├── instruction.go
    │   │       │   ├── jump.go
    │   │       │   ├── jump_string.go
    │   │       │   ├── load_store.go
    │   │       │   ├── load_store_string.go
    │   │       │   ├── metadata.go
    │   │       │   ├── opcode.go
    │   │       │   ├── opcode_string.go
    │   │       │   └── register.go
    │   │       ├── attachtype_string.go
    │   │       ├── btf/
    │   │       │   ├── btf.go
    │   │       │   ├── btf_types.go
    │   │       │   ├── btf_types_string.go
    │   │       │   ├── core.go
    │   │       │   ├── dedup.go
    │   │       │   ├── doc.go
    │   │       │   ├── ext_info.go
    │   │       │   ├── feature.go
    │   │       │   ├── format.go
    │   │       │   ├── handle.go
    │   │       │   ├── kernel.go
    │   │       │   ├── marshal.go
    │   │       │   ├── strings.go
    │   │       │   ├── traversal.go
    │   │       │   ├── types.go
    │   │       │   ├── unmarshal.go
    │   │       │   └── workarounds.go
    │   │       ├── collection.go
    │   │       ├── collection_other.go
    │   │       ├── collection_windows.go
    │   │       ├── cpu.go
    │   │       ├── cpu_other.go
    │   │       ├── cpu_windows.go
    │   │       ├── doc.go
    │   │       ├── elf_reader.go
    │   │       ├── elf_sections.go
    │   │       ├── features/
    │   │       │   ├── doc.go
    │   │       │   ├── link.go
    │   │       │   ├── map.go
    │   │       │   ├── misc.go
    │   │       │   ├── prog.go
    │   │       │   └── version.go
    │   │       ├── info.go
    │   │       ├── internal/
    │   │       │   ├── deque.go
    │   │       │   ├── efw/
    │   │       │   │   ├── enums.go
    │   │       │   │   ├── error_reporting.go
    │   │       │   │   ├── fd.go
    │   │       │   │   ├── map.go
    │   │       │   │   ├── module.go
    │   │       │   │   ├── native.go
    │   │       │   │   ├── object.go
    │   │       │   │   ├── proc.go
    │   │       │   │   ├── program.go
    │   │       │   │   ├── result.go
    │   │       │   │   ├── result_string_windows.go
    │   │       │   │   └── structs.go
    │   │       │   ├── elf.go
    │   │       │   ├── endian_be.go
    │   │       │   ├── endian_le.go
    │   │       │   ├── epoll/
    │   │       │   │   └── poller.go
    │   │       │   ├── errors.go
    │   │       │   ├── feature.go
    │   │       │   ├── io.go
    │   │       │   ├── kallsyms/
    │   │       │   │   ├── cache.go
    │   │       │   │   ├── kallsyms.go
    │   │       │   │   └── reader.go
    │   │       │   ├── kconfig/
    │   │       │   │   └── kconfig.go
    │   │       │   ├── linux/
    │   │       │   │   ├── auxv.go
    │   │       │   │   ├── cpu.go
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── kconfig.go
    │   │       │   │   ├── platform.go
    │   │       │   │   ├── statfs.go
    │   │       │   │   ├── vdso.go
    │   │       │   │   └── version.go
    │   │       │   ├── math.go
    │   │       │   ├── output.go
    │   │       │   ├── platform/
    │   │       │   │   ├── constants.go
    │   │       │   │   ├── platform.go
    │   │       │   │   ├── platform_linux.go
    │   │       │   │   ├── platform_other.go
    │   │       │   │   └── platform_windows.go
    │   │       │   ├── prog.go
    │   │       │   ├── sys/
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── fd.go
    │   │       │   │   ├── fd_other.go
    │   │       │   │   ├── fd_windows.go
    │   │       │   │   ├── pinning_other.go
    │   │       │   │   ├── pinning_windows.go
    │   │       │   │   ├── ptr.go
    │   │       │   │   ├── ptr_32_be.go
    │   │       │   │   ├── ptr_32_le.go
    │   │       │   │   ├── ptr_64.go
    │   │       │   │   ├── signals.go
    │   │       │   │   ├── syscall.go
    │   │       │   │   ├── syscall_other.go
    │   │       │   │   ├── syscall_windows.go
    │   │       │   │   └── types.go
    │   │       │   ├── sysenc/
    │   │       │   │   ├── buffer.go
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── layout.go
    │   │       │   │   └── marshal.go
    │   │       │   ├── testutils/
    │   │       │   │   └── testmain/
    │   │       │   │       ├── fd_trace.go
    │   │       │   │       ├── main.go
    │   │       │   │       └── windows.go
    │   │       │   ├── tracefs/
    │   │       │   │   ├── kprobe.go
    │   │       │   │   ├── probetype_string.go
    │   │       │   │   └── uprobe.go
    │   │       │   ├── unix/
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── errno_linux.go
    │   │       │   │   ├── errno_other.go
    │   │       │   │   ├── errno_string_windows.go
    │   │       │   │   ├── errno_windows.go
    │   │       │   │   ├── error.go
    │   │       │   │   ├── strings_other.go
    │   │       │   │   ├── strings_windows.go
    │   │       │   │   ├── types_linux.go
    │   │       │   │   └── types_other.go
    │   │       │   └── version.go
    │   │       ├── link/
    │   │       │   ├── anchor.go
    │   │       │   ├── cgroup.go
    │   │       │   ├── doc.go
    │   │       │   ├── iter.go
    │   │       │   ├── kprobe.go
    │   │       │   ├── kprobe_multi.go
    │   │       │   ├── link.go
    │   │       │   ├── link_other.go
    │   │       │   ├── link_windows.go
    │   │       │   ├── netfilter.go
    │   │       │   ├── netkit.go
    │   │       │   ├── netns.go
    │   │       │   ├── perf_event.go
    │   │       │   ├── program.go
    │   │       │   ├── query.go
    │   │       │   ├── raw_tracepoint.go
    │   │       │   ├── socket_filter.go
    │   │       │   ├── struct_ops.go
    │   │       │   ├── syscalls.go
    │   │       │   ├── tcx.go
    │   │       │   ├── tracepoint.go
    │   │       │   ├── tracing.go
    │   │       │   ├── uprobe.go
    │   │       │   ├── uprobe_multi.go
    │   │       │   └── xdp.go
    │   │       ├── linker.go
    │   │       ├── map.go
    │   │       ├── marshalers.go
    │   │       ├── memory.go
    │   │       ├── memory_unsafe.go
    │   │       ├── memory_unsafe_tag.go
    │   │       ├── netlify.toml
    │   │       ├── prog.go
    │   │       ├── ringbuf/
    │   │       │   ├── doc.go
    │   │       │   ├── reader.go
    │   │       │   ├── reader_other.go
    │   │       │   ├── reader_windows.go
    │   │       │   ├── ring.go
    │   │       │   ├── ring_other.go
    │   │       │   └── ring_windows.go
    │   │       ├── rlimit/
    │   │       │   ├── doc.go
    │   │       │   ├── rlimit_linux.go
    │   │       │   └── rlimit_other.go
    │   │       ├── struct_ops.go
    │   │       ├── syscalls.go
    │   │       ├── types.go
    │   │       ├── types_string.go
    │   │       ├── types_windows.go
    │   │       └── variable.go
    │   ├── containernetworking/
    │   │   ├── cni/
    │   │   │   ├── LICENSE
    │   │   │   ├── libcni/
    │   │   │   │   ├── api.go
    │   │   │   │   └── conf.go
    │   │   │   └── pkg/
    │   │   │       ├── invoke/
    │   │   │       │   ├── args.go
    │   │   │       │   ├── delegate.go
    │   │   │       │   ├── exec.go
    │   │   │       │   ├── find.go
    │   │   │       │   ├── os_unix.go
    │   │   │       │   ├── os_windows.go
    │   │   │       │   └── raw_exec.go
    │   │   │       ├── types/
    │   │   │       │   ├── 020/
    │   │   │       │   │   └── types.go
    │   │   │       │   ├── 040/
    │   │   │       │   │   └── types.go
    │   │   │       │   ├── 100/
    │   │   │       │   │   └── types.go
    │   │   │       │   ├── args.go
    │   │   │       │   ├── create/
    │   │   │       │   │   └── create.go
    │   │   │       │   ├── internal/
    │   │   │       │   │   ├── convert.go
    │   │   │       │   │   └── create.go
    │   │   │       │   └── types.go
    │   │   │       ├── utils/
    │   │   │       │   └── utils.go
    │   │   │       └── version/
    │   │   │           ├── conf.go
    │   │   │           ├── plugin.go
    │   │   │           ├── reconcile.go
    │   │   │           └── version.go
    │   │   └── plugins/
    │   │       ├── LICENSE
    │   │       └── pkg/
    │   │           ├── ip/
    │   │           │   ├── addr_linux.go
    │   │           │   ├── cidr.go
    │   │           │   ├── ip.go
    │   │           │   ├── ipforward_linux.go
    │   │           │   ├── ipmasq_linux.go
    │   │           │   ├── link_linux.go
    │   │           │   ├── route_linux.go
    │   │           │   └── utils_linux.go
    │   │           ├── ns/
    │   │           │   ├── README.md
    │   │           │   └── ns_linux.go
    │   │           └── utils/
    │   │               └── sysctl/
    │   │                   └── sysctl_linux.go
    │   ├── coreos/
    │   │   └── go-iptables/
    │   │       ├── LICENSE
    │   │       ├── NOTICE
    │   │       └── iptables/
    │   │           ├── iptables.go
    │   │           └── lock.go
    │   ├── cpuguy83/
    │   │   └── go-md2man/
    │   │       └── v2/
    │   │           ├── LICENSE.md
    │   │           └── md2man/
    │   │               ├── debug.go
    │   │               ├── md2man.go
    │   │               └── roff.go
    │   ├── davecgh/
    │   │   └── go-spew/
    │   │       ├── LICENSE
    │   │       └── spew/
    │   │           ├── bypass.go
    │   │           ├── bypasssafe.go
    │   │           ├── common.go
    │   │           ├── config.go
    │   │           ├── doc.go
    │   │           ├── dump.go
    │   │           ├── format.go
    │   │           └── spew.go
    │   ├── dennwc/
    │   │   └── varint/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── proto.go
    │   │       └── varint.go
    │   ├── dustin/
    │   │   └── go-humanize/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.markdown
    │   │       ├── big.go
    │   │       ├── bigbytes.go
    │   │       ├── bytes.go
    │   │       ├── comma.go
    │   │       ├── commaf.go
    │   │       ├── ftoa.go
    │   │       ├── humanize.go
    │   │       ├── number.go
    │   │       ├── ordinals.go
    │   │       ├── si.go
    │   │       └── times.go
    │   ├── emicklei/
    │   │   └── go-restful/
    │   │       └── v3/
    │   │           ├── .gitignore
    │   │           ├── .goconvey
    │   │           ├── .travis.yml
    │   │           ├── CHANGES.md
    │   │           ├── LICENSE
    │   │           ├── Makefile
    │   │           ├── README.md
    │   │           ├── SECURITY.md
    │   │           ├── Srcfile
    │   │           ├── bench_test.sh
    │   │           ├── compress.go
    │   │           ├── compressor_cache.go
    │   │           ├── compressor_pools.go
    │   │           ├── compressors.go
    │   │           ├── constants.go
    │   │           ├── container.go
    │   │           ├── cors_filter.go
    │   │           ├── coverage.sh
    │   │           ├── curly.go
    │   │           ├── curly_route.go
    │   │           ├── custom_verb.go
    │   │           ├── doc.go
    │   │           ├── entity_accessors.go
    │   │           ├── extensions.go
    │   │           ├── filter.go
    │   │           ├── filter_adapter.go
    │   │           ├── jsr311.go
    │   │           ├── log/
    │   │           │   └── log.go
    │   │           ├── logger.go
    │   │           ├── mime.go
    │   │           ├── options_filter.go
    │   │           ├── parameter.go
    │   │           ├── path_expression.go
    │   │           ├── path_processor.go
    │   │           ├── request.go
    │   │           ├── response.go
    │   │           ├── route.go
    │   │           ├── route_builder.go
    │   │           ├── route_reader.go
    │   │           ├── router.go
    │   │           ├── service_error.go
    │   │           ├── web_service.go
    │   │           └── web_service_container.go
    │   ├── evanphx/
    │   │   └── json-patch/
    │   │       └── v5/
    │   │           ├── LICENSE
    │   │           ├── errors.go
    │   │           ├── internal/
    │   │           │   └── json/
    │   │           │       ├── decode.go
    │   │           │       ├── encode.go
    │   │           │       ├── fold.go
    │   │           │       ├── fuzz.go
    │   │           │       ├── indent.go
    │   │           │       ├── scanner.go
    │   │           │       ├── stream.go
    │   │           │       ├── tables.go
    │   │           │       └── tags.go
    │   │           ├── merge.go
    │   │           └── patch.go
    │   ├── fsnotify/
    │   │   └── fsnotify/
    │   │       ├── .cirrus.yml
    │   │       ├── .gitignore
    │   │       ├── .mailmap
    │   │       ├── CHANGELOG.md
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── backend_fen.go
    │   │       ├── backend_inotify.go
    │   │       ├── backend_kqueue.go
    │   │       ├── backend_other.go
    │   │       ├── backend_windows.go
    │   │       ├── fsnotify.go
    │   │       ├── internal/
    │   │       │   ├── darwin.go
    │   │       │   ├── debug_darwin.go
    │   │       │   ├── debug_dragonfly.go
    │   │       │   ├── debug_freebsd.go
    │   │       │   ├── debug_kqueue.go
    │   │       │   ├── debug_linux.go
    │   │       │   ├── debug_netbsd.go
    │   │       │   ├── debug_openbsd.go
    │   │       │   ├── debug_solaris.go
    │   │       │   ├── debug_windows.go
    │   │       │   ├── freebsd.go
    │   │       │   ├── internal.go
    │   │       │   ├── unix.go
    │   │       │   ├── unix2.go
    │   │       │   └── windows.go
    │   │       ├── shared.go
    │   │       ├── staticcheck.conf
    │   │       ├── system_bsd.go
    │   │       └── system_darwin.go
    │   ├── fxamacker/
    │   │   └── cbor/
    │   │       └── v2/
    │   │           ├── .gitignore
    │   │           ├── .golangci.yml
    │   │           ├── CODE_OF_CONDUCT.md
    │   │           ├── CONTRIBUTING.md
    │   │           ├── LICENSE
    │   │           ├── README.md
    │   │           ├── SECURITY.md
    │   │           ├── bytestring.go
    │   │           ├── cache.go
    │   │           ├── common.go
    │   │           ├── decode.go
    │   │           ├── diagnose.go
    │   │           ├── doc.go
    │   │           ├── encode.go
    │   │           ├── encode_map.go
    │   │           ├── omitzero_go124.go
    │   │           ├── omitzero_pre_go124.go
    │   │           ├── simplevalue.go
    │   │           ├── stream.go
    │   │           ├── structfields.go
    │   │           ├── tag.go
    │   │           └── valid.go
    │   ├── gavv/
    │   │   └── monotime/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── monotime.go
    │   │       └── monotime.s
    │   ├── go-ini/
    │   │   └── ini/
    │   │       ├── .editorconfig
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── codecov.yml
    │   │       ├── data_source.go
    │   │       ├── deprecated.go
    │   │       ├── error.go
    │   │       ├── file.go
    │   │       ├── helper.go
    │   │       ├── ini.go
    │   │       ├── key.go
    │   │       ├── parser.go
    │   │       ├── section.go
    │   │       └── struct.go
    │   ├── go-kit/
    │   │   ├── kit/
    │   │   │   ├── LICENSE
    │   │   │   └── log/
    │   │   │       ├── README.md
    │   │   │       ├── doc.go
    │   │   │       ├── json_logger.go
    │   │   │       ├── level/
    │   │   │       │   ├── doc.go
    │   │   │       │   └── level.go
    │   │   │       ├── log.go
    │   │   │       ├── logfmt_logger.go
    │   │   │       ├── logrus/
    │   │   │       │   └── logrus_logger.go
    │   │   │       ├── nop_logger.go
    │   │   │       ├── stdlib.go
    │   │   │       ├── sync.go
    │   │   │       └── value.go
    │   │   └── log/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── doc.go
    │   │       ├── json_logger.go
    │   │       ├── level/
    │   │       │   ├── doc.go
    │   │       │   └── level.go
    │   │       ├── log.go
    │   │       ├── logfmt_logger.go
    │   │       ├── nop_logger.go
    │   │       ├── staticcheck.conf
    │   │       ├── stdlib.go
    │   │       ├── sync.go
    │   │       └── value.go
    │   ├── go-logfmt/
    │   │   └── logfmt/
    │   │       ├── .gitignore
    │   │       ├── CHANGELOG.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── decode.go
    │   │       ├── doc.go
    │   │       ├── encode.go
    │   │       └── jsonstring.go
    │   ├── go-logr/
    │   │   ├── logr/
    │   │   │   ├── .golangci.yaml
    │   │   │   ├── CHANGELOG.md
    │   │   │   ├── CONTRIBUTING.md
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── SECURITY.md
    │   │   │   ├── context.go
    │   │   │   ├── context_noslog.go
    │   │   │   ├── context_slog.go
    │   │   │   ├── discard.go
    │   │   │   ├── funcr/
    │   │   │   │   ├── funcr.go
    │   │   │   │   └── slogsink.go
    │   │   │   ├── logr.go
    │   │   │   ├── sloghandler.go
    │   │   │   ├── slogr.go
    │   │   │   └── slogsink.go
    │   │   └── stdr/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       └── stdr.go
    │   ├── go-openapi/
    │   │   ├── jsonpointer/
    │   │   │   ├── .editorconfig
    │   │   │   ├── .gitignore
    │   │   │   ├── .golangci.yml
    │   │   │   ├── CODE_OF_CONDUCT.md
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── errors.go
    │   │   │   └── pointer.go
    │   │   └── jsonreference/
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── CODE_OF_CONDUCT.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── internal/
    │   │       │   └── normalize_url.go
    │   │       └── reference.go
    │   ├── gogo/
    │   │   └── protobuf/
    │   │       ├── AUTHORS
    │   │       ├── CONTRIBUTORS
    │   │       ├── LICENSE
    │   │       ├── gogoproto/
    │   │       │   ├── Makefile
    │   │       │   ├── doc.go
    │   │       │   ├── gogo.pb.go
    │   │       │   ├── gogo.pb.golden
    │   │       │   ├── gogo.proto
    │   │       │   └── helper.go
    │   │       ├── proto/
    │   │       │   ├── Makefile
    │   │       │   ├── clone.go
    │   │       │   ├── custom_gogo.go
    │   │       │   ├── decode.go
    │   │       │   ├── deprecated.go
    │   │       │   ├── discard.go
    │   │       │   ├── duration.go
    │   │       │   ├── duration_gogo.go
    │   │       │   ├── encode.go
    │   │       │   ├── encode_gogo.go
    │   │       │   ├── equal.go
    │   │       │   ├── extensions.go
    │   │       │   ├── extensions_gogo.go
    │   │       │   ├── lib.go
    │   │       │   ├── lib_gogo.go
    │   │       │   ├── message_set.go
    │   │       │   ├── pointer_reflect.go
    │   │       │   ├── pointer_reflect_gogo.go
    │   │       │   ├── pointer_unsafe.go
    │   │       │   ├── pointer_unsafe_gogo.go
    │   │       │   ├── properties.go
    │   │       │   ├── properties_gogo.go
    │   │       │   ├── skip_gogo.go
    │   │       │   ├── table_marshal.go
    │   │       │   ├── table_marshal_gogo.go
    │   │       │   ├── table_merge.go
    │   │       │   ├── table_unmarshal.go
    │   │       │   ├── table_unmarshal_gogo.go
    │   │       │   ├── text.go
    │   │       │   ├── text_gogo.go
    │   │       │   ├── text_parser.go
    │   │       │   ├── timestamp.go
    │   │       │   ├── timestamp_gogo.go
    │   │       │   ├── wrappers.go
    │   │       │   └── wrappers_gogo.go
    │   │       ├── protoc-gen-gogo/
    │   │       │   └── descriptor/
    │   │       │       ├── Makefile
    │   │       │       ├── descriptor.go
    │   │       │       ├── descriptor.pb.go
    │   │       │       ├── descriptor_gostring.gen.go
    │   │       │       └── helper.go
    │   │       ├── sortkeys/
    │   │       │   └── sortkeys.go
    │   │       └── types/
    │   │           ├── any.go
    │   │           ├── any.pb.go
    │   │           ├── api.pb.go
    │   │           ├── doc.go
    │   │           ├── duration.go
    │   │           ├── duration.pb.go
    │   │           ├── duration_gogo.go
    │   │           ├── empty.pb.go
    │   │           ├── field_mask.pb.go
    │   │           ├── protosize.go
    │   │           ├── source_context.pb.go
    │   │           ├── struct.pb.go
    │   │           ├── timestamp.go
    │   │           ├── timestamp.pb.go
    │   │           ├── timestamp_gogo.go
    │   │           ├── type.pb.go
    │   │           ├── wrappers.pb.go
    │   │           └── wrappers_gogo.go
    │   ├── golang/
    │   │   ├── protobuf/
    │   │   │   ├── AUTHORS
    │   │   │   ├── CONTRIBUTORS
    │   │   │   ├── LICENSE
    │   │   │   └── proto/
    │   │   │       ├── buffer.go
    │   │   │       ├── defaults.go
    │   │   │       ├── deprecated.go
    │   │   │       ├── discard.go
    │   │   │       ├── extensions.go
    │   │   │       ├── properties.go
    │   │   │       ├── proto.go
    │   │   │       ├── registry.go
    │   │   │       ├── text_decode.go
    │   │   │       ├── text_encode.go
    │   │   │       ├── wire.go
    │   │   │       └── wrappers.go
    │   │   └── snappy/
    │   │       ├── .gitignore
    │   │       ├── AUTHORS
    │   │       ├── CONTRIBUTORS
    │   │       ├── LICENSE
    │   │       ├── README
    │   │       ├── decode.go
    │   │       ├── decode_amd64.s
    │   │       ├── decode_arm64.s
    │   │       ├── decode_asm.go
    │   │       ├── decode_other.go
    │   │       ├── encode.go
    │   │       ├── encode_amd64.s
    │   │       ├── encode_arm64.s
    │   │       ├── encode_asm.go
    │   │       ├── encode_other.go
    │   │       └── snappy.go
    │   ├── golang-jwt/
    │   │   └── jwt/
    │   │       └── v5/
    │   │           ├── .gitignore
    │   │           ├── LICENSE
    │   │           ├── MIGRATION_GUIDE.md
    │   │           ├── README.md
    │   │           ├── SECURITY.md
    │   │           ├── VERSION_HISTORY.md
    │   │           ├── claims.go
    │   │           ├── doc.go
    │   │           ├── ecdsa.go
    │   │           ├── ecdsa_utils.go
    │   │           ├── ed25519.go
    │   │           ├── ed25519_utils.go
    │   │           ├── errors.go
    │   │           ├── hmac.go
    │   │           ├── map_claims.go
    │   │           ├── none.go
    │   │           ├── parser.go
    │   │           ├── parser_option.go
    │   │           ├── registered_claims.go
    │   │           ├── rsa.go
    │   │           ├── rsa_pss.go
    │   │           ├── rsa_utils.go
    │   │           ├── signing_method.go
    │   │           ├── staticcheck.conf
    │   │           ├── token.go
    │   │           ├── token_option.go
    │   │           ├── types.go
    │   │           └── validator.go
    │   ├── google/
    │   │   ├── gnostic-models/
    │   │   │   ├── LICENSE
    │   │   │   ├── compiler/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── context.go
    │   │   │   │   ├── error.go
    │   │   │   │   ├── extensions.go
    │   │   │   │   ├── helpers.go
    │   │   │   │   ├── main.go
    │   │   │   │   └── reader.go
    │   │   │   ├── extensions/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── extension.pb.go
    │   │   │   │   ├── extension.proto
    │   │   │   │   └── extensions.go
    │   │   │   ├── jsonschema/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── base.go
    │   │   │   │   ├── display.go
    │   │   │   │   ├── models.go
    │   │   │   │   ├── operations.go
    │   │   │   │   ├── reader.go
    │   │   │   │   ├── schema.json
    │   │   │   │   └── writer.go
    │   │   │   ├── openapiv2/
    │   │   │   │   ├── OpenAPIv2.go
    │   │   │   │   ├── OpenAPIv2.pb.go
    │   │   │   │   ├── OpenAPIv2.proto
    │   │   │   │   ├── README.md
    │   │   │   │   ├── document.go
    │   │   │   │   └── openapi-2.0.json
    │   │   │   └── openapiv3/
    │   │   │       ├── OpenAPIv3.go
    │   │   │       ├── OpenAPIv3.pb.go
    │   │   │       ├── OpenAPIv3.proto
    │   │   │       ├── README.md
    │   │   │       ├── annotations.pb.go
    │   │   │       ├── annotations.proto
    │   │   │       └── document.go
    │   │   ├── go-cmp/
    │   │   │   ├── LICENSE
    │   │   │   └── cmp/
    │   │   │       ├── compare.go
    │   │   │       ├── export.go
    │   │   │       ├── internal/
    │   │   │       │   ├── diff/
    │   │   │       │   │   ├── debug_disable.go
    │   │   │       │   │   ├── debug_enable.go
    │   │   │       │   │   └── diff.go
    │   │   │       │   ├── flags/
    │   │   │       │   │   └── flags.go
    │   │   │       │   ├── function/
    │   │   │       │   │   └── func.go
    │   │   │       │   └── value/
    │   │   │       │       ├── name.go
    │   │   │       │       ├── pointer.go
    │   │   │       │       └── sort.go
    │   │   │       ├── options.go
    │   │   │       ├── path.go
    │   │   │       ├── report.go
    │   │   │       ├── report_compare.go
    │   │   │       ├── report_references.go
    │   │   │       ├── report_reflect.go
    │   │   │       ├── report_slices.go
    │   │   │       ├── report_text.go
    │   │   │       └── report_value.go
    │   │   └── uuid/
    │   │       ├── CHANGELOG.md
    │   │       ├── CONTRIBUTING.md
    │   │       ├── CONTRIBUTORS
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── dce.go
    │   │       ├── doc.go
    │   │       ├── hash.go
    │   │       ├── marshal.go
    │   │       ├── node.go
    │   │       ├── node_js.go
    │   │       ├── node_net.go
    │   │       ├── null.go
    │   │       ├── sql.go
    │   │       ├── time.go
    │   │       ├── util.go
    │   │       ├── uuid.go
    │   │       ├── version1.go
    │   │       ├── version4.go
    │   │       ├── version6.go
    │   │       └── version7.go
    │   ├── gopacket/
    │   │   └── gopacket/
    │   │       ├── .gitignore
    │   │       ├── AUTHORS
    │   │       ├── CONTRIBUTING.md
    │   │       ├── INDUSTRIAL_PROTOCOLS_PATCH.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── SECURITY.md
    │   │       ├── base.go
    │   │       ├── checksum.go
    │   │       ├── decode.go
    │   │       ├── doc.go
    │   │       ├── flows.go
    │   │       ├── gc
    │   │       ├── layerclass.go
    │   │       ├── layers/
    │   │       │   ├── .lint_blacklist
    │   │       │   ├── ague_var0.go
    │   │       │   ├── ague_var1.go
    │   │       │   ├── apsp.go
    │   │       │   ├── arp.go
    │   │       │   ├── asf.go
    │   │       │   ├── asf_presencepong.go
    │   │       │   ├── base.go
    │   │       │   ├── bfd.go
    │   │       │   ├── bitfield.go
    │   │       │   ├── cdp.go
    │   │       │   ├── cip.go
    │   │       │   ├── ctp.go
    │   │       │   ├── dhcpv4.go
    │   │       │   ├── dhcpv6.go
    │   │       │   ├── dhcpv6_options.go
    │   │       │   ├── dns.go
    │   │       │   ├── doc.go
    │   │       │   ├── dot11.go
    │   │       │   ├── dot1q.go
    │   │       │   ├── eap.go
    │   │       │   ├── eapol.go
    │   │       │   ├── endpoints.go
    │   │       │   ├── enip.go
    │   │       │   ├── enums.go
    │   │       │   ├── enums_generated.go
    │   │       │   ├── erspan2.go
    │   │       │   ├── etherip.go
    │   │       │   ├── ethernet.go
    │   │       │   ├── fddi.go
    │   │       │   ├── fuzz_layer.go
    │   │       │   ├── gen_linted.sh
    │   │       │   ├── geneve.go
    │   │       │   ├── gre.go
    │   │       │   ├── gtp.go
    │   │       │   ├── gtp2.go
    │   │       │   ├── iana_ports.go
    │   │       │   ├── icmp4.go
    │   │       │   ├── icmp6.go
    │   │       │   ├── icmp6msg.go
    │   │       │   ├── igmp.go
    │   │       │   ├── ip4.go
    │   │       │   ├── ip6.go
    │   │       │   ├── ipsec.go
    │   │       │   ├── layertypes.go
    │   │       │   ├── lcm.go
    │   │       │   ├── linux_sll.go
    │   │       │   ├── linux_sll2.go
    │   │       │   ├── llc.go
    │   │       │   ├── lldp.go
    │   │       │   ├── loopback.go
    │   │       │   ├── mdp.go
    │   │       │   ├── mldv1.go
    │   │       │   ├── mldv2.go
    │   │       │   ├── modbustcp.go
    │   │       │   ├── mpls.go
    │   │       │   ├── multipathtcp.go
    │   │       │   ├── ndp.go
    │   │       │   ├── ntp.go
    │   │       │   ├── ospf.go
    │   │       │   ├── pflog.go
    │   │       │   ├── ports.go
    │   │       │   ├── ppp.go
    │   │       │   ├── pppoe.go
    │   │       │   ├── prism.go
    │   │       │   ├── radiotap.go
    │   │       │   ├── radius.go
    │   │       │   ├── rmcp.go
    │   │       │   ├── rudp.go
    │   │       │   ├── sctp.go
    │   │       │   ├── sflow.go
    │   │       │   ├── sip.go
    │   │       │   ├── stp.go
    │   │       │   ├── tcp.go
    │   │       │   ├── tcpip.go
    │   │       │   ├── test_creator.py
    │   │       │   ├── tls.go
    │   │       │   ├── tls_alert.go
    │   │       │   ├── tls_appdata.go
    │   │       │   ├── tls_cipherspec.go
    │   │       │   ├── tls_handshake.go
    │   │       │   ├── udp.go
    │   │       │   ├── udplite.go
    │   │       │   ├── usb.go
    │   │       │   ├── vrrp.go
    │   │       │   └── vxlan.go
    │   │       ├── layers_decoder.go
    │   │       ├── layertype.go
    │   │       ├── packet.go
    │   │       ├── parser.go
    │   │       ├── runtests.sh
    │   │       ├── time.go
    │   │       └── writer.go
    │   ├── gorilla/
    │   │   └── websocket/
    │   │       ├── .gitignore
    │   │       ├── AUTHORS
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── client.go
    │   │       ├── compression.go
    │   │       ├── conn.go
    │   │       ├── doc.go
    │   │       ├── join.go
    │   │       ├── json.go
    │   │       ├── mask.go
    │   │       ├── mask_safe.go
    │   │       ├── prepared.go
    │   │       ├── proxy.go
    │   │       ├── server.go
    │   │       └── util.go
    │   ├── grafana/
    │   │   └── regexp/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── backtrack.go
    │   │       ├── exec.go
    │   │       ├── onepass.go
    │   │       ├── regexp.go
    │   │       └── syntax/
    │   │           ├── compile.go
    │   │           ├── doc.go
    │   │           ├── make_perl_groups.pl
    │   │           ├── op_string.go
    │   │           ├── parse.go
    │   │           ├── perl_groups.go
    │   │           ├── prog.go
    │   │           ├── regexp.go
    │   │           └── simplify.go
    │   ├── grpc-ecosystem/
    │   │   └── grpc-gateway/
    │   │       └── v2/
    │   │           ├── LICENSE
    │   │           ├── internal/
    │   │           │   └── httprule/
    │   │           │       ├── BUILD.bazel
    │   │           │       ├── compile.go
    │   │           │       ├── fuzz.go
    │   │           │       ├── parse.go
    │   │           │       └── types.go
    │   │           ├── runtime/
    │   │           │   ├── BUILD.bazel
    │   │           │   ├── context.go
    │   │           │   ├── convert.go
    │   │           │   ├── doc.go
    │   │           │   ├── errors.go
    │   │           │   ├── fieldmask.go
    │   │           │   ├── handler.go
    │   │           │   ├── marshal_httpbodyproto.go
    │   │           │   ├── marshal_json.go
    │   │           │   ├── marshal_jsonpb.go
    │   │           │   ├── marshal_proto.go
    │   │           │   ├── marshaler.go
    │   │           │   ├── marshaler_registry.go
    │   │           │   ├── mux.go
    │   │           │   ├── pattern.go
    │   │           │   ├── proto2_convert.go
    │   │           │   └── query.go
    │   │           └── utilities/
    │   │               ├── BUILD.bazel
    │   │               ├── doc.go
    │   │               ├── pattern.go
    │   │               ├── readerfactory.go
    │   │               ├── string_array_flag.go
    │   │               └── trie.go
    │   ├── ip2location/
    │   │   └── ip2location-go/
    │   │       └── v9/
    │   │           ├── .readthedocs.yaml
    │   │           ├── LICENSE.TXT
    │   │           ├── README.md
    │   │           ├── country.go
    │   │           ├── ip2location.go
    │   │           ├── ip2locationwebservice.go
    │   │           ├── iptools.go
    │   │           └── region.go
    │   ├── josharian/
    │   │   └── intern/
    │   │       ├── README.md
    │   │       ├── intern.go
    │   │       └── license.md
    │   ├── jpillora/
    │   │   └── backoff/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       └── backoff.go
    │   ├── klauspost/
    │   │   ├── compress/
    │   │   │   ├── .gitattributes
    │   │   │   ├── .gitignore
    │   │   │   ├── .goreleaser.yml
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── SECURITY.md
    │   │   │   ├── compressible.go
    │   │   │   ├── flate/
    │   │   │   │   ├── deflate.go
    │   │   │   │   ├── dict_decoder.go
    │   │   │   │   ├── fast_encoder.go
    │   │   │   │   ├── huffman_bit_writer.go
    │   │   │   │   ├── huffman_code.go
    │   │   │   │   ├── huffman_sortByFreq.go
    │   │   │   │   ├── huffman_sortByLiteral.go
    │   │   │   │   ├── inflate.go
    │   │   │   │   ├── inflate_gen.go
    │   │   │   │   ├── level1.go
    │   │   │   │   ├── level2.go
    │   │   │   │   ├── level3.go
    │   │   │   │   ├── level4.go
    │   │   │   │   ├── level5.go
    │   │   │   │   ├── level6.go
    │   │   │   │   ├── matchlen_generic.go
    │   │   │   │   ├── regmask_amd64.go
    │   │   │   │   ├── regmask_other.go
    │   │   │   │   ├── stateless.go
    │   │   │   │   └── token.go
    │   │   │   ├── fse/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── bitreader.go
    │   │   │   │   ├── bitwriter.go
    │   │   │   │   ├── bytereader.go
    │   │   │   │   ├── compress.go
    │   │   │   │   ├── decompress.go
    │   │   │   │   └── fse.go
    │   │   │   ├── gen.sh
    │   │   │   ├── gzip/
    │   │   │   │   ├── gunzip.go
    │   │   │   │   └── gzip.go
    │   │   │   ├── huff0/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── README.md
    │   │   │   │   ├── bitreader.go
    │   │   │   │   ├── bitwriter.go
    │   │   │   │   ├── compress.go
    │   │   │   │   ├── decompress.go
    │   │   │   │   ├── decompress_amd64.go
    │   │   │   │   ├── decompress_amd64.s
    │   │   │   │   ├── decompress_generic.go
    │   │   │   │   └── huff0.go
    │   │   │   ├── internal/
    │   │   │   │   ├── cpuinfo/
    │   │   │   │   │   ├── cpuinfo.go
    │   │   │   │   │   ├── cpuinfo_amd64.go
    │   │   │   │   │   └── cpuinfo_amd64.s
    │   │   │   │   ├── le/
    │   │   │   │   │   ├── le.go
    │   │   │   │   │   ├── unsafe_disabled.go
    │   │   │   │   │   └── unsafe_enabled.go
    │   │   │   │   ├── race/
    │   │   │   │   │   ├── norace.go
    │   │   │   │   │   └── race.go
    │   │   │   │   └── snapref/
    │   │   │   │       ├── LICENSE
    │   │   │   │       ├── decode.go
    │   │   │   │       ├── decode_other.go
    │   │   │   │       ├── encode.go
    │   │   │   │       ├── encode_other.go
    │   │   │   │       └── snappy.go
    │   │   │   ├── s2/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── decode.go
    │   │   │   │   ├── decode_amd64.s
    │   │   │   │   ├── decode_arm64.s
    │   │   │   │   ├── decode_asm.go
    │   │   │   │   ├── decode_other.go
    │   │   │   │   ├── dict.go
    │   │   │   │   ├── encode.go
    │   │   │   │   ├── encode_all.go
    │   │   │   │   ├── encode_amd64.go
    │   │   │   │   ├── encode_best.go
    │   │   │   │   ├── encode_better.go
    │   │   │   │   ├── encode_go.go
    │   │   │   │   ├── encodeblock_amd64.go
    │   │   │   │   ├── encodeblock_amd64.s
    │   │   │   │   ├── index.go
    │   │   │   │   ├── lz4convert.go
    │   │   │   │   ├── lz4sconvert.go
    │   │   │   │   ├── reader.go
    │   │   │   │   ├── s2.go
    │   │   │   │   └── writer.go
    │   │   │   ├── s2sx.mod
    │   │   │   ├── s2sx.sum
    │   │   │   ├── snappy/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── AUTHORS
    │   │   │   │   ├── CONTRIBUTORS
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── decode.go
    │   │   │   │   ├── encode.go
    │   │   │   │   └── snappy.go
    │   │   │   └── zstd/
    │   │   │       ├── README.md
    │   │   │       ├── bitreader.go
    │   │   │       ├── bitwriter.go
    │   │   │       ├── blockdec.go
    │   │   │       ├── blockenc.go
    │   │   │       ├── blocktype_string.go
    │   │   │       ├── bytebuf.go
    │   │   │       ├── bytereader.go
    │   │   │       ├── decodeheader.go
    │   │   │       ├── decoder.go
    │   │   │       ├── decoder_options.go
    │   │   │       ├── dict.go
    │   │   │       ├── enc_base.go
    │   │   │       ├── enc_best.go
    │   │   │       ├── enc_better.go
    │   │   │       ├── enc_dfast.go
    │   │   │       ├── enc_fast.go
    │   │   │       ├── encoder.go
    │   │   │       ├── encoder_options.go
    │   │   │       ├── framedec.go
    │   │   │       ├── frameenc.go
    │   │   │       ├── fse_decoder.go
    │   │   │       ├── fse_decoder_amd64.go
    │   │   │       ├── fse_decoder_amd64.s
    │   │   │       ├── fse_decoder_generic.go
    │   │   │       ├── fse_encoder.go
    │   │   │       ├── fse_predefined.go
    │   │   │       ├── hash.go
    │   │   │       ├── history.go
    │   │   │       ├── internal/
    │   │   │       │   └── xxhash/
    │   │   │       │       ├── LICENSE.txt
    │   │   │       │       ├── README.md
    │   │   │       │       ├── xxhash.go
    │   │   │       │       ├── xxhash_amd64.s
    │   │   │       │       ├── xxhash_arm64.s
    │   │   │       │       ├── xxhash_asm.go
    │   │   │       │       ├── xxhash_other.go
    │   │   │       │       └── xxhash_safe.go
    │   │   │       ├── matchlen_amd64.go
    │   │   │       ├── matchlen_amd64.s
    │   │   │       ├── matchlen_generic.go
    │   │   │       ├── seqdec.go
    │   │   │       ├── seqdec_amd64.go
    │   │   │       ├── seqdec_amd64.s
    │   │   │       ├── seqdec_generic.go
    │   │   │       ├── seqenc.go
    │   │   │       ├── simple_go124.go
    │   │   │       ├── snappy.go
    │   │   │       ├── zip.go
    │   │   │       └── zstd.go
    │   │   ├── cpuid/
    │   │   │   └── v2/
    │   │   │       ├── .gitignore
    │   │   │       ├── .goreleaser.yml
    │   │   │       ├── CONTRIBUTING.txt
    │   │   │       ├── LICENSE
    │   │   │       ├── README.md
    │   │   │       ├── cpuid.go
    │   │   │       ├── cpuid_386.s
    │   │   │       ├── cpuid_amd64.s
    │   │   │       ├── cpuid_arm64.s
    │   │   │       ├── detect_arm64.go
    │   │   │       ├── detect_ref.go
    │   │   │       ├── detect_x86.go
    │   │   │       ├── featureid_string.go
    │   │   │       ├── os_darwin_arm64.go
    │   │   │       ├── os_linux_arm64.go
    │   │   │       ├── os_other_arm64.go
    │   │   │       ├── os_safe_linux_arm64.go
    │   │   │       ├── os_unsafe_linux_arm64.go
    │   │   │       └── test-architectures.sh
    │   │   └── crc32/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── crc32.go
    │   │       ├── crc32_amd64.go
    │   │       ├── crc32_amd64.s
    │   │       ├── crc32_arm64.go
    │   │       ├── crc32_arm64.s
    │   │       ├── crc32_generic.go
    │   │       ├── crc32_loong64.go
    │   │       ├── crc32_loong64.s
    │   │       ├── crc32_otherarch.go
    │   │       ├── crc32_ppc64le.go
    │   │       ├── crc32_ppc64le.s
    │   │       ├── crc32_s390x.go
    │   │       ├── crc32_s390x.s
    │   │       ├── crc32_table_ppc64le.s
    │   │       └── gen.go
    │   ├── libp2p/
    │   │   └── go-reuseport/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── addr.go
    │   │       ├── codecov.yml
    │   │       ├── control_freebsd.go
    │   │       ├── control_plan9.go
    │   │       ├── control_unix.go
    │   │       ├── control_wasm.go
    │   │       ├── control_windows.go
    │   │       ├── interface.go
    │   │       └── version.json
    │   ├── mailru/
    │   │   └── easyjson/
    │   │       ├── LICENSE
    │   │       ├── buffer/
    │   │       │   └── pool.go
    │   │       ├── jlexer/
    │   │       │   ├── bytestostr.go
    │   │       │   ├── bytestostr_nounsafe.go
    │   │       │   ├── error.go
    │   │       │   └── lexer.go
    │   │       └── jwriter/
    │   │           └── writer.go
    │   ├── mariomac/
    │   │   └── guara/
    │   │       ├── LICENSE
    │   │       └── pkg/
    │   │           └── test/
    │   │               ├── eventually.go
    │   │               └── ports.go
    │   ├── mdlayher/
    │   │   └── ethernet/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE.md
    │   │       ├── README.md
    │   │       ├── ethernet.go
    │   │       ├── fuzz.go
    │   │       ├── string.go
    │   │       └── vlan.go
    │   ├── minio/
    │   │   ├── crc64nvme/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── crc64.go
    │   │   │   ├── crc64_amd64.go
    │   │   │   ├── crc64_amd64.s
    │   │   │   ├── crc64_arm64.go
    │   │   │   ├── crc64_arm64.s
    │   │   │   └── crc64_other.go
    │   │   └── md5-simd/
    │   │       ├── LICENSE
    │   │       ├── LICENSE.Golang
    │   │       ├── README.md
    │   │       ├── block16_amd64.s
    │   │       ├── block8_amd64.s
    │   │       ├── block_amd64.go
    │   │       ├── md5-digest_amd64.go
    │   │       ├── md5-server_amd64.go
    │   │       ├── md5-server_fallback.go
    │   │       ├── md5-util_amd64.go
    │   │       ├── md5.go
    │   │       ├── md5block_amd64.go
    │   │       └── md5block_amd64.s
    │   ├── mitchellh/
    │   │   └── mapstructure/
    │   │       ├── CHANGELOG.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── decode_hooks.go
    │   │       ├── error.go
    │   │       └── mapstructure.go
    │   ├── moby/
    │   │   └── spdystream/
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── MAINTAINERS
    │   │       ├── NOTICE
    │   │       ├── README.md
    │   │       ├── connection.go
    │   │       ├── handlers.go
    │   │       ├── priority.go
    │   │       ├── spdy/
    │   │       │   ├── LICENSE
    │   │       │   ├── PATENTS
    │   │       │   ├── dictionary.go
    │   │       │   ├── options.go
    │   │       │   ├── read.go
    │   │       │   ├── types.go
    │   │       │   └── write.go
    │   │       ├── stream.go
    │   │       └── utils.go
    │   ├── modern-go/
    │   │   └── concurrent/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── executor.go
    │   │       ├── go_above_19.go
    │   │       ├── go_below_19.go
    │   │       ├── log.go
    │   │       ├── test.sh
    │   │       └── unbounded_executor.go
    │   ├── munnerz/
    │   │   └── goautoneg/
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.txt
    │   │       └── autoneg.go
    │   ├── mwitkow/
    │   │   └── go-conntrack/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── dialer_reporter.go
    │   │       ├── dialer_wrapper.go
    │   │       ├── listener_reporter.go
    │   │       └── listener_wrapper.go
    │   ├── mxk/
    │   │   └── go-flowrate/
    │   │       ├── LICENSE
    │   │       └── flowrate/
    │   │           ├── flowrate.go
    │   │           ├── io.go
    │   │           └── util.go
    │   ├── netobserv/
    │   │   ├── flowlogs-pipeline/
    │   │   │   ├── LICENSE
    │   │   │   └── pkg/
    │   │   │       ├── api/
    │   │   │       │   ├── api.go
    │   │   │       │   ├── conntrack.go
    │   │   │       │   ├── decoder.go
    │   │   │       │   ├── encode_kafka.go
    │   │   │       │   ├── encode_otlp.go
    │   │   │       │   ├── encode_prom.go
    │   │   │       │   ├── encode_s3.go
    │   │   │       │   ├── extract_aggregate.go
    │   │   │       │   ├── extract_timebased.go
    │   │   │       │   ├── ingest_grpc.go
    │   │   │       │   ├── ingest_ipfix.go
    │   │   │       │   ├── ingest_kafka.go
    │   │   │       │   ├── ingest_stdin.go
    │   │   │       │   ├── ingest_synthetic.go
    │   │   │       │   ├── sasl.go
    │   │   │       │   ├── tls.go
    │   │   │       │   ├── transform_filter.go
    │   │   │       │   ├── transform_generic.go
    │   │   │       │   ├── transform_network.go
    │   │   │       │   ├── utils.go
    │   │   │       │   ├── write_grpc.go
    │   │   │       │   ├── write_ipfix.go
    │   │   │       │   ├── write_loki.go
    │   │   │       │   └── write_stdout.go
    │   │   │       ├── config/
    │   │   │       │   ├── config.go
    │   │   │       │   ├── generic_map.go
    │   │   │       │   ├── pipeline_builder.go
    │   │   │       │   └── stage_params.go
    │   │   │       ├── dsl/
    │   │   │       │   ├── eval.go
    │   │   │       │   ├── expr.y
    │   │   │       │   ├── expr.y.go
    │   │   │       │   └── lexer.go
    │   │   │       ├── kafka/
    │   │   │       │   ├── reader.go
    │   │   │       │   └── writer.go
    │   │   │       ├── operational/
    │   │   │       │   ├── health.go
    │   │   │       │   ├── metrics.go
    │   │   │       │   └── timer.go
    │   │   │       ├── pipeline/
    │   │   │       │   ├── decode/
    │   │   │       │   │   ├── decode.go
    │   │   │       │   │   └── decode_json.go
    │   │   │       │   ├── encode/
    │   │   │       │   │   ├── encode.go
    │   │   │       │   │   ├── encode_kafka.go
    │   │   │       │   │   ├── encode_prom.go
    │   │   │       │   │   ├── encode_s3.go
    │   │   │       │   │   ├── metrics/
    │   │   │       │   │   │   ├── filtering.go
    │   │   │       │   │   │   ├── flattening.go
    │   │   │       │   │   │   └── preprocess.go
    │   │   │       │   │   ├── metrics_common.go
    │   │   │       │   │   └── opentelemetry/
    │   │   │       │   │       ├── encode_otlplogs.go
    │   │   │       │   │       ├── encode_otlpmetrics.go
    │   │   │       │   │       ├── encode_otlptrace.go
    │   │   │       │   │       └── opentelemetry.go
    │   │   │       │   ├── extract/
    │   │   │       │   │   ├── aggregate/
    │   │   │       │   │   │   ├── aggregate.go
    │   │   │       │   │   │   └── aggregates.go
    │   │   │       │   │   ├── conntrack/
    │   │   │       │   │   │   ├── aggregator.go
    │   │   │       │   │   │   ├── conn.go
    │   │   │       │   │   │   ├── conntrack.go
    │   │   │       │   │   │   ├── hash.go
    │   │   │       │   │   │   ├── metrics.go
    │   │   │       │   │   │   ├── store.go
    │   │   │       │   │   │   └── tcpflags.go
    │   │   │       │   │   ├── extract.go
    │   │   │       │   │   ├── extract_aggregate.go
    │   │   │       │   │   ├── extract_timebased.go
    │   │   │       │   │   └── timebased/
    │   │   │       │   │       ├── filters.go
    │   │   │       │   │       ├── heap.go
    │   │   │       │   │       ├── tables.go
    │   │   │       │   │       └── timebased.go
    │   │   │       │   ├── ingest/
    │   │   │       │   │   ├── ingest.go
    │   │   │       │   │   ├── ingest_fake.go
    │   │   │       │   │   ├── ingest_file.go
    │   │   │       │   │   ├── ingest_grpc.go
    │   │   │       │   │   ├── ingest_inprocess.go
    │   │   │       │   │   ├── ingest_ipfix.go
    │   │   │       │   │   ├── ingest_kafka.go
    │   │   │       │   │   ├── ingest_stdin.go
    │   │   │       │   │   ├── ingest_synthetic.go
    │   │   │       │   │   └── metrics.go
    │   │   │       │   ├── inprocess.go
    │   │   │       │   ├── pipeline.go
    │   │   │       │   ├── pipeline_builder.go
    │   │   │       │   ├── pipeline_watcher.go
    │   │   │       │   ├── transform/
    │   │   │       │   │   ├── kubernetes/
    │   │   │       │   │   │   ├── cni/
    │   │   │       │   │   │   │   ├── cni.go
    │   │   │       │   │   │   │   ├── multus.go
    │   │   │       │   │   │   │   ├── ovn_kubernetes.go
    │   │   │       │   │   │   │   └── udn.go
    │   │   │       │   │   │   ├── datasource/
    │   │   │       │   │   │   │   └── datasource.go
    │   │   │       │   │   │   ├── enrich.go
    │   │   │       │   │   │   ├── informers/
    │   │   │       │   │   │   │   ├── config.go
    │   │   │       │   │   │   │   ├── informers-mock.go
    │   │   │       │   │   │   │   └── informers.go
    │   │   │       │   │   │   └── model/
    │   │   │       │   │   │       └── model.go
    │   │   │       │   │   ├── location/
    │   │   │       │   │   │   └── location.go
    │   │   │       │   │   ├── netdb/
    │   │   │       │   │   │   └── netdb.go
    │   │   │       │   │   ├── transform.go
    │   │   │       │   │   ├── transform_filter.go
    │   │   │       │   │   ├── transform_generic.go
    │   │   │       │   │   ├── transform_network.go
    │   │   │       │   │   └── transform_network_direction.go
    │   │   │       │   ├── utils/
    │   │   │       │   │   ├── batcher.go
    │   │   │       │   │   ├── connections.go
    │   │   │       │   │   ├── exit.go
    │   │   │       │   │   ├── fnv.go
    │   │   │       │   │   ├── multiorderedmap.go
    │   │   │       │   │   ├── params_parse.go
    │   │   │       │   │   ├── sasl.go
    │   │   │       │   │   └── timed_cache.go
    │   │   │       │   └── write/
    │   │   │       │       ├── grpc/
    │   │   │       │       │   ├── client.go
    │   │   │       │       │   ├── genericmap/
    │   │   │       │       │   │   ├── genericmap.pb.go
    │   │   │       │       │   │   └── genericmap_grpc.pb.go
    │   │   │       │       │   └── server.go
    │   │   │       │       ├── metrics.go
    │   │   │       │       ├── write.go
    │   │   │       │       ├── write_fake.go
    │   │   │       │       ├── write_grpc.go
    │   │   │       │       ├── write_ipfix.go
    │   │   │       │       ├── write_loki.go
    │   │   │       │       └── write_stdout.go
    │   │   │       ├── prometheus/
    │   │   │       │   └── prom_server.go
    │   │   │       ├── server/
    │   │   │       │   └── common.go
    │   │   │       └── utils/
    │   │   │           ├── convert.go
    │   │   │           ├── filters/
    │   │   │           │   └── filters.go
    │   │   │           ├── k8sutils/
    │   │   │           │   └── kubernetes.go
    │   │   │           └── tcp_flags.go
    │   │   ├── gopipes/
    │   │   │   ├── LICENSE
    │   │   │   └── pkg/
    │   │   │       └── node/
    │   │   │           ├── internal/
    │   │   │           │   └── connect/
    │   │   │           │       └── connectors.go
    │   │   │           ├── node.go
    │   │   │           └── options.go
    │   │   └── loki-client-go/
    │   │       ├── LICENSE
    │   │       ├── grpc/
    │   │       │   ├── batch.go
    │   │       │   ├── client.go
    │   │       │   └── config.go
    │   │       ├── loki/
    │   │       │   ├── batch.go
    │   │       │   ├── client.go
    │   │       │   └── config.go
    │   │       └── pkg/
    │   │           ├── backoff/
    │   │           │   └── backoff.go
    │   │           ├── helpers/
    │   │           │   ├── config.go
    │   │           │   ├── logerror.go
    │   │           │   └── math.go
    │   │           ├── labelutil/
    │   │           │   └── label.go
    │   │           ├── logproto/
    │   │           │   ├── extensions.go
    │   │           │   ├── logproto.pb.go
    │   │           │   ├── logproto.proto
    │   │           │   ├── timestamp.go
    │   │           │   └── types.go
    │   │           ├── metric/
    │   │           │   ├── counters.go
    │   │           │   ├── gauges.go
    │   │           │   ├── histograms.go
    │   │           │   └── metricvec.go
    │   │           ├── metrics/
    │   │           │   └── metrics.go
    │   │           └── urlutil/
    │   │               └── url.go
    │   ├── netsampler/
    │   │   └── goflow2/
    │   │       ├── LICENSE
    │   │       ├── decoders/
    │   │       │   ├── decoder.go
    │   │       │   ├── netflow/
    │   │       │   │   ├── ipfix.go
    │   │       │   │   ├── netflow.go
    │   │       │   │   ├── nfv9.go
    │   │       │   │   ├── packet.go
    │   │       │   │   └── templates/
    │   │       │   │       ├── memory/
    │   │       │   │       │   └── memory.go
    │   │       │   │       └── templates.go
    │   │       │   ├── netflowlegacy/
    │   │       │   │   ├── netflow.go
    │   │       │   │   └── packet.go
    │   │       │   ├── sflow/
    │   │       │   │   ├── datastructure.go
    │   │       │   │   ├── packet.go
    │   │       │   │   └── sflow.go
    │   │       │   └── utils/
    │   │       │       └── utils.go
    │   │       ├── format/
    │   │       │   ├── common/
    │   │       │   │   ├── hash.go
    │   │       │   │   ├── selector.go
    │   │       │   │   └── text.go
    │   │       │   ├── format.go
    │   │       │   └── protobuf/
    │   │       │       └── protobuf.go
    │   │       ├── pb/
    │   │       │   ├── flow.pb.go
    │   │       │   └── flow.proto
    │   │       ├── producer/
    │   │       │   ├── producer_nf.go
    │   │       │   ├── producer_nflegacy.go
    │   │       │   ├── producer_sf.go
    │   │       │   └── reflect.go
    │   │       ├── transport/
    │   │       │   └── transport.go
    │   │       └── utils/
    │   │           ├── metrics.go
    │   │           ├── netflow.go
    │   │           ├── nflegacy.go
    │   │           ├── sflow.go
    │   │           ├── stopper.go
    │   │           └── utils.go
    │   ├── ovn-org/
    │   │   ├── libovsdb/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   ├── cache/
    │   │   │   │   ├── cache.go
    │   │   │   │   ├── doc.go
    │   │   │   │   └── uuidset.go
    │   │   │   ├── client/
    │   │   │   │   ├── api.go
    │   │   │   │   ├── api_test_model.go
    │   │   │   │   ├── client.go
    │   │   │   │   ├── condition.go
    │   │   │   │   ├── config.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── metrics.go
    │   │   │   │   ├── monitor.go
    │   │   │   │   └── options.go
    │   │   │   ├── database/
    │   │   │   │   ├── database.go
    │   │   │   │   ├── doc.go
    │   │   │   │   └── references.go
    │   │   │   ├── mapper/
    │   │   │   │   ├── info.go
    │   │   │   │   └── mapper.go
    │   │   │   ├── model/
    │   │   │   │   ├── client.go
    │   │   │   │   ├── database.go
    │   │   │   │   └── model.go
    │   │   │   ├── ovsdb/
    │   │   │   │   ├── bindings.go
    │   │   │   │   ├── condition.go
    │   │   │   │   ├── error.go
    │   │   │   │   ├── map.go
    │   │   │   │   ├── monitor_select.go
    │   │   │   │   ├── mutation.go
    │   │   │   │   ├── named_uuid.go
    │   │   │   │   ├── notation.go
    │   │   │   │   ├── row.go
    │   │   │   │   ├── rpc.go
    │   │   │   │   ├── schema.go
    │   │   │   │   ├── serverdb/
    │   │   │   │   │   ├── .gitignore
    │   │   │   │   │   ├── database.go
    │   │   │   │   │   ├── gen.go
    │   │   │   │   │   └── model.go
    │   │   │   │   ├── set.go
    │   │   │   │   ├── update3.go
    │   │   │   │   ├── updates.go
    │   │   │   │   ├── updates2.go
    │   │   │   │   └── uuid.go
    │   │   │   └── updates/
    │   │   │       ├── difference.go
    │   │   │       ├── doc.go
    │   │   │       ├── merge.go
    │   │   │       ├── mutate.go
    │   │   │       ├── references.go
    │   │   │       └── updates.go
    │   │   └── ovn-kubernetes/
    │   │       └── go-controller/
    │   │           ├── LICENSE
    │   │           ├── observability-lib/
    │   │           │   ├── model/
    │   │           │   │   └── network_event.go
    │   │           │   ├── ovsdb/
    │   │           │   │   ├── .gitignore
    │   │           │   │   ├── bridge.go
    │   │           │   │   ├── flow_sample_collector_set.go
    │   │           │   │   ├── gen.go
    │   │           │   │   ├── interface.go
    │   │           │   │   └── observ_model.go
    │   │           │   └── sampledecoder/
    │   │           │       ├── db_client.go
    │   │           │       └── sample_decoder.go
    │   │           └── pkg/
    │   │               ├── cni/
    │   │               │   └── types/
    │   │               │       └── types.go
    │   │               ├── config/
    │   │               │   ├── cni.go
    │   │               │   ├── config.go
    │   │               │   └── utils.go
    │   │               ├── cryptorand/
    │   │               │   └── cryptorand.go
    │   │               ├── libovsdb/
    │   │               │   └── ops/
    │   │               │       ├── acl.go
    │   │               │       ├── address_set.go
    │   │               │       ├── chassis.go
    │   │               │       ├── copp.go
    │   │               │       ├── db_object_ids.go
    │   │               │       ├── db_object_types.go
    │   │               │       ├── dhcp.go
    │   │               │       ├── lbgroup.go
    │   │               │       ├── loadbalancer.go
    │   │               │       ├── mac_binding.go
    │   │               │       ├── meter.go
    │   │               │       ├── model.go
    │   │               │       ├── model_client.go
    │   │               │       ├── named_uuid.go
    │   │               │       ├── nb_global.go
    │   │               │       ├── portbinding.go
    │   │               │       ├── portgroup.go
    │   │               │       ├── qos.go
    │   │               │       ├── router.go
    │   │               │       ├── sample.go
    │   │               │       ├── sb_global.go
    │   │               │       ├── switch.go
    │   │               │       ├── template_var.go
    │   │               │       └── transact.go
    │   │               ├── nbdb/
    │   │               │   ├── .gitignore
    │   │               │   ├── acl.go
    │   │               │   ├── address_set.go
    │   │               │   ├── bfd.go
    │   │               │   ├── chassis_template_var.go
    │   │               │   ├── connection.go
    │   │               │   ├── copp.go
    │   │               │   ├── dhcp_options.go
    │   │               │   ├── dhcp_relay.go
    │   │               │   ├── dns.go
    │   │               │   ├── forwarding_group.go
    │   │               │   ├── gateway_chassis.go
    │   │               │   ├── gen.go
    │   │               │   ├── ha_chassis.go
    │   │               │   ├── ha_chassis_group.go
    │   │               │   ├── load_balancer.go
    │   │               │   ├── load_balancer_group.go
    │   │               │   ├── load_balancer_health_check.go
    │   │               │   ├── logical_router.go
    │   │               │   ├── logical_router_policy.go
    │   │               │   ├── logical_router_port.go
    │   │               │   ├── logical_router_static_route.go
    │   │               │   ├── logical_switch.go
    │   │               │   ├── logical_switch_port.go
    │   │               │   ├── meter.go
    │   │               │   ├── meter_band.go
    │   │               │   ├── mirror.go
    │   │               │   ├── model.go
    │   │               │   ├── nat.go
    │   │               │   ├── nb_global.go
    │   │               │   ├── port_group.go
    │   │               │   ├── qos.go
    │   │               │   ├── sample.go
    │   │               │   ├── sample_collector.go
    │   │               │   ├── sampling_app.go
    │   │               │   ├── ssl.go
    │   │               │   └── static_mac_binding.go
    │   │               ├── observability/
    │   │               │   └── observability.go
    │   │               ├── sbdb/
    │   │               │   ├── .gitignore
    │   │               │   ├── address_set.go
    │   │               │   ├── bfd.go
    │   │               │   ├── chassis.go
    │   │               │   ├── chassis_private.go
    │   │               │   ├── chassis_template_var.go
    │   │               │   ├── connection.go
    │   │               │   ├── controller_event.go
    │   │               │   ├── datapath_binding.go
    │   │               │   ├── dhcp_options.go
    │   │               │   ├── dhcpv6_options.go
    │   │               │   ├── dns.go
    │   │               │   ├── encap.go
    │   │               │   ├── fdb.go
    │   │               │   ├── gateway_chassis.go
    │   │               │   ├── gen.go
    │   │               │   ├── ha_chassis.go
    │   │               │   ├── ha_chassis_group.go
    │   │               │   ├── igmp_group.go
    │   │               │   ├── ip_multicast.go
    │   │               │   ├── load_balancer.go
    │   │               │   ├── logical_dp_group.go
    │   │               │   ├── logical_flow.go
    │   │               │   ├── mac_binding.go
    │   │               │   ├── meter.go
    │   │               │   ├── meter_band.go
    │   │               │   ├── mirror.go
    │   │               │   ├── model.go
    │   │               │   ├── multicast_group.go
    │   │               │   ├── port_binding.go
    │   │               │   ├── port_group.go
    │   │               │   ├── rbac_permission.go
    │   │               │   ├── rbac_role.go
    │   │               │   ├── sb_global.go
    │   │               │   ├── service_monitor.go
    │   │               │   ├── ssl.go
    │   │               │   └── static_mac_binding.go
    │   │               └── types/
    │   │                   ├── const.go
    │   │                   ├── errors.go
    │   │                   └── resource_status.go
    │   ├── paulbellamy/
    │   │   └── ratecounter/
    │   │       ├── .gitignore
    │   │       ├── CONTRIBUTORS.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── avgratecounter.go
    │   │       ├── circle.yml
    │   │       ├── counter.go
    │   │       ├── doc.go
    │   │       └── ratecounter.go
    │   ├── philhofer/
    │   │   └── fwd/
    │   │       ├── LICENSE.md
    │   │       ├── README.md
    │   │       ├── reader.go
    │   │       ├── writer.go
    │   │       ├── writer_appengine.go
    │   │       ├── writer_tinygo.go
    │   │       └── writer_unsafe.go
    │   ├── pierrec/
    │   │   └── lz4/
    │   │       └── v4/
    │   │           ├── .gitignore
    │   │           ├── LICENSE
    │   │           ├── README.md
    │   │           ├── compressing_reader.go
    │   │           ├── internal/
    │   │           │   ├── lz4block/
    │   │           │   │   ├── block.go
    │   │           │   │   ├── blocks.go
    │   │           │   │   ├── decode_amd64.s
    │   │           │   │   ├── decode_arm.s
    │   │           │   │   ├── decode_arm64.s
    │   │           │   │   ├── decode_asm.go
    │   │           │   │   └── decode_other.go
    │   │           │   ├── lz4errors/
    │   │           │   │   └── errors.go
    │   │           │   ├── lz4stream/
    │   │           │   │   ├── block.go
    │   │           │   │   ├── frame.go
    │   │           │   │   └── frame_gen.go
    │   │           │   └── xxh32/
    │   │           │       ├── xxh32zero.go
    │   │           │       ├── xxh32zero_arm.go
    │   │           │       ├── xxh32zero_arm.s
    │   │           │       └── xxh32zero_other.go
    │   │           ├── lz4.go
    │   │           ├── options.go
    │   │           ├── options_gen.go
    │   │           ├── reader.go
    │   │           ├── state.go
    │   │           ├── state_gen.go
    │   │           └── writer.go
    │   ├── pion/
    │   │   └── transport/
    │   │       └── v2/
    │   │           ├── AUTHORS.txt
    │   │           ├── LICENSE
    │   │           ├── connctx/
    │   │           │   ├── connctx.go
    │   │           │   └── pipe.go
    │   │           ├── deadline/
    │   │           │   ├── deadline.go
    │   │           │   ├── timer.go
    │   │           │   ├── timer_generic.go
    │   │           │   └── timer_js.go
    │   │           ├── packetio/
    │   │           │   ├── buffer.go
    │   │           │   ├── errors.go
    │   │           │   ├── hardlimit.go
    │   │           │   └── no_hardlimit.go
    │   │           ├── replaydetector/
    │   │           │   ├── fixedbig.go
    │   │           │   └── replaydetector.go
    │   │           └── udp/
    │   │               ├── batchconn.go
    │   │               └── conn.go
    │   ├── pkg/
    │   │   └── errors/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── appveyor.yml
    │   │       ├── errors.go
    │   │       ├── go113.go
    │   │       └── stack.go
    │   ├── pmezard/
    │   │   └── go-difflib/
    │   │       ├── LICENSE
    │   │       └── difflib/
    │   │           └── difflib.go
    │   ├── prometheus/
    │   │   ├── client_golang/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   ├── internal/
    │   │   │   │   └── github.com/
    │   │   │   │       └── golang/
    │   │   │   │           └── gddo/
    │   │   │   │               ├── LICENSE
    │   │   │   │               └── httputil/
    │   │   │   │                   ├── header/
    │   │   │   │                   │   └── header.go
    │   │   │   │                   └── negotiate.go
    │   │   │   └── prometheus/
    │   │   │       ├── .gitignore
    │   │   │       ├── README.md
    │   │   │       ├── build_info_collector.go
    │   │   │       ├── collector.go
    │   │   │       ├── collectorfunc.go
    │   │   │       ├── collectors/
    │   │   │       │   ├── collectors.go
    │   │   │       │   ├── dbstats_collector.go
    │   │   │       │   ├── expvar_collector.go
    │   │   │       │   ├── go_collector_go116.go
    │   │   │       │   ├── go_collector_latest.go
    │   │   │       │   └── process_collector.go
    │   │   │       ├── counter.go
    │   │   │       ├── desc.go
    │   │   │       ├── doc.go
    │   │   │       ├── expvar_collector.go
    │   │   │       ├── fnv.go
    │   │   │       ├── gauge.go
    │   │   │       ├── get_pid.go
    │   │   │       ├── get_pid_gopherjs.go
    │   │   │       ├── go_collector.go
    │   │   │       ├── go_collector_go116.go
    │   │   │       ├── go_collector_latest.go
    │   │   │       ├── histogram.go
    │   │   │       ├── internal/
    │   │   │       │   ├── almost_equal.go
    │   │   │       │   ├── difflib.go
    │   │   │       │   ├── go_collector_options.go
    │   │   │       │   ├── go_runtime_metrics.go
    │   │   │       │   └── metric.go
    │   │   │       ├── labels.go
    │   │   │       ├── metric.go
    │   │   │       ├── num_threads.go
    │   │   │       ├── num_threads_gopherjs.go
    │   │   │       ├── observer.go
    │   │   │       ├── process_collector.go
    │   │   │       ├── process_collector_darwin.go
    │   │   │       ├── process_collector_mem_cgo_darwin.c
    │   │   │       ├── process_collector_mem_cgo_darwin.go
    │   │   │       ├── process_collector_mem_nocgo_darwin.go
    │   │   │       ├── process_collector_not_supported.go
    │   │   │       ├── process_collector_procfsenabled.go
    │   │   │       ├── process_collector_windows.go
    │   │   │       ├── promhttp/
    │   │   │       │   ├── delegator.go
    │   │   │       │   ├── http.go
    │   │   │       │   ├── instrument_client.go
    │   │   │       │   ├── instrument_server.go
    │   │   │       │   ├── internal/
    │   │   │       │   │   └── compression.go
    │   │   │       │   └── option.go
    │   │   │       ├── registry.go
    │   │   │       ├── summary.go
    │   │   │       ├── timer.go
    │   │   │       ├── untyped.go
    │   │   │       ├── value.go
    │   │   │       ├── vec.go
    │   │   │       ├── vnext.go
    │   │   │       └── wrap.go
    │   │   ├── client_model/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   └── go/
    │   │   │       └── metrics.pb.go
    │   │   ├── common/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   ├── config/
    │   │   │   │   ├── config.go
    │   │   │   │   ├── headers.go
    │   │   │   │   ├── http_config.go
    │   │   │   │   └── oauth_assertion.go
    │   │   │   ├── expfmt/
    │   │   │   │   ├── decode.go
    │   │   │   │   ├── encode.go
    │   │   │   │   ├── expfmt.go
    │   │   │   │   ├── fuzz.go
    │   │   │   │   ├── openmetrics_create.go
    │   │   │   │   ├── text_create.go
    │   │   │   │   └── text_parse.go
    │   │   │   ├── model/
    │   │   │   │   ├── alert.go
    │   │   │   │   ├── fingerprinting.go
    │   │   │   │   ├── fnv.go
    │   │   │   │   ├── labels.go
    │   │   │   │   ├── labelset.go
    │   │   │   │   ├── labelset_string.go
    │   │   │   │   ├── metadata.go
    │   │   │   │   ├── metric.go
    │   │   │   │   ├── model.go
    │   │   │   │   ├── signature.go
    │   │   │   │   ├── silence.go
    │   │   │   │   ├── time.go
    │   │   │   │   ├── value.go
    │   │   │   │   ├── value_float.go
    │   │   │   │   ├── value_histogram.go
    │   │   │   │   └── value_type.go
    │   │   │   └── version/
    │   │   │       └── info.go
    │   │   ├── procfs/
    │   │   │   ├── .gitignore
    │   │   │   ├── .golangci.yml
    │   │   │   ├── CODE_OF_CONDUCT.md
    │   │   │   ├── CONTRIBUTING.md
    │   │   │   ├── LICENSE
    │   │   │   ├── MAINTAINERS.md
    │   │   │   ├── Makefile
    │   │   │   ├── Makefile.common
    │   │   │   ├── NOTICE
    │   │   │   ├── README.md
    │   │   │   ├── SECURITY.md
    │   │   │   ├── arp.go
    │   │   │   ├── buddyinfo.go
    │   │   │   ├── cmdline.go
    │   │   │   ├── cpuinfo.go
    │   │   │   ├── cpuinfo_armx.go
    │   │   │   ├── cpuinfo_loong64.go
    │   │   │   ├── cpuinfo_mipsx.go
    │   │   │   ├── cpuinfo_others.go
    │   │   │   ├── cpuinfo_ppcx.go
    │   │   │   ├── cpuinfo_riscvx.go
    │   │   │   ├── cpuinfo_s390x.go
    │   │   │   ├── cpuinfo_x86.go
    │   │   │   ├── crypto.go
    │   │   │   ├── doc.go
    │   │   │   ├── fs.go
    │   │   │   ├── fs_statfs_notype.go
    │   │   │   ├── fs_statfs_type.go
    │   │   │   ├── fscache.go
    │   │   │   ├── internal/
    │   │   │   │   ├── fs/
    │   │   │   │   │   └── fs.go
    │   │   │   │   └── util/
    │   │   │   │       ├── parse.go
    │   │   │   │       ├── readfile.go
    │   │   │   │       ├── sysreadfile.go
    │   │   │   │       ├── sysreadfile_compat.go
    │   │   │   │       └── valueparser.go
    │   │   │   ├── ipvs.go
    │   │   │   ├── kernel_random.go
    │   │   │   ├── loadavg.go
    │   │   │   ├── mdstat.go
    │   │   │   ├── meminfo.go
    │   │   │   ├── mountinfo.go
    │   │   │   ├── mountstats.go
    │   │   │   ├── net_conntrackstat.go
    │   │   │   ├── net_dev.go
    │   │   │   ├── net_dev_snmp6.go
    │   │   │   ├── net_ip_socket.go
    │   │   │   ├── net_protocols.go
    │   │   │   ├── net_route.go
    │   │   │   ├── net_sockstat.go
    │   │   │   ├── net_softnet.go
    │   │   │   ├── net_tcp.go
    │   │   │   ├── net_tls_stat.go
    │   │   │   ├── net_udp.go
    │   │   │   ├── net_unix.go
    │   │   │   ├── net_wireless.go
    │   │   │   ├── net_xfrm.go
    │   │   │   ├── netstat.go
    │   │   │   ├── proc.go
    │   │   │   ├── proc_cgroup.go
    │   │   │   ├── proc_cgroups.go
    │   │   │   ├── proc_environ.go
    │   │   │   ├── proc_fdinfo.go
    │   │   │   ├── proc_interrupts.go
    │   │   │   ├── proc_io.go
    │   │   │   ├── proc_limits.go
    │   │   │   ├── proc_maps.go
    │   │   │   ├── proc_netstat.go
    │   │   │   ├── proc_ns.go
    │   │   │   ├── proc_psi.go
    │   │   │   ├── proc_smaps.go
    │   │   │   ├── proc_snmp.go
    │   │   │   ├── proc_snmp6.go
    │   │   │   ├── proc_stat.go
    │   │   │   ├── proc_status.go
    │   │   │   ├── proc_sys.go
    │   │   │   ├── schedstat.go
    │   │   │   ├── slab.go
    │   │   │   ├── softirqs.go
    │   │   │   ├── stat.go
    │   │   │   ├── swaps.go
    │   │   │   ├── thread.go
    │   │   │   ├── ttar
    │   │   │   ├── vm.go
    │   │   │   └── zoneinfo.go
    │   │   └── prometheus/
    │   │       ├── LICENSE
    │   │       ├── NOTICE
    │   │       ├── model/
    │   │       │   ├── exemplar/
    │   │       │   │   └── exemplar.go
    │   │       │   ├── histogram/
    │   │       │   │   ├── float_histogram.go
    │   │       │   │   ├── generic.go
    │   │       │   │   ├── histogram.go
    │   │       │   │   └── test_utils.go
    │   │       │   ├── labels/
    │   │       │   │   ├── labels.go
    │   │       │   │   ├── labels_common.go
    │   │       │   │   ├── labels_dedupelabels.go
    │   │       │   │   ├── labels_stringlabels.go
    │   │       │   │   ├── matcher.go
    │   │       │   │   ├── regexp.go
    │   │       │   │   ├── sharding.go
    │   │       │   │   ├── sharding_dedupelabels.go
    │   │       │   │   ├── sharding_stringlabels.go
    │   │       │   │   └── test_utils.go
    │   │       │   ├── metadata/
    │   │       │   │   └── metadata.go
    │   │       │   ├── timestamp/
    │   │       │   │   └── timestamp.go
    │   │       │   └── value/
    │   │       │       └── value.go
    │   │       ├── promql/
    │   │       │   └── parser/
    │   │       │       ├── ast.go
    │   │       │       ├── functions.go
    │   │       │       ├── generated_parser.y
    │   │       │       ├── generated_parser.y.go
    │   │       │       ├── lex.go
    │   │       │       ├── parse.go
    │   │       │       ├── posrange/
    │   │       │       │   └── posrange.go
    │   │       │       ├── prettier.go
    │   │       │       ├── prettier_rules.md
    │   │       │       ├── printer.go
    │   │       │       └── value.go
    │   │       ├── storage/
    │   │       │   ├── buffer.go
    │   │       │   ├── errors.go
    │   │       │   ├── fanout.go
    │   │       │   ├── generic.go
    │   │       │   ├── interface.go
    │   │       │   ├── lazy.go
    │   │       │   ├── memoized_iterator.go
    │   │       │   ├── merge.go
    │   │       │   ├── noop.go
    │   │       │   ├── secondary.go
    │   │       │   └── series.go
    │   │       ├── tsdb/
    │   │       │   ├── chunkenc/
    │   │       │   │   ├── bstream.go
    │   │       │   │   ├── chunk.go
    │   │       │   │   ├── float_histogram.go
    │   │       │   │   ├── histogram.go
    │   │       │   │   ├── histogram_meta.go
    │   │       │   │   ├── varbit.go
    │   │       │   │   └── xor.go
    │   │       │   ├── chunks/
    │   │       │   │   ├── chunk_write_queue.go
    │   │       │   │   ├── chunks.go
    │   │       │   │   ├── head_chunks.go
    │   │       │   │   ├── head_chunks_other.go
    │   │       │   │   ├── head_chunks_windows.go
    │   │       │   │   ├── queue.go
    │   │       │   │   └── samples.go
    │   │       │   ├── errors/
    │   │       │   │   └── errors.go
    │   │       │   └── fileutil/
    │   │       │       ├── dir.go
    │   │       │       ├── dir_unix.go
    │   │       │       ├── dir_windows.go
    │   │       │       ├── fileutil.go
    │   │       │       ├── flock.go
    │   │       │       ├── flock_js.go
    │   │       │       ├── flock_plan9.go
    │   │       │       ├── flock_solaris.go
    │   │       │       ├── flock_unix.go
    │   │       │       ├── flock_windows.go
    │   │       │       ├── mmap.go
    │   │       │       ├── mmap_386.go
    │   │       │       ├── mmap_amd64.go
    │   │       │       ├── mmap_arm64.go
    │   │       │       ├── mmap_js.go
    │   │       │       ├── mmap_unix.go
    │   │       │       ├── mmap_windows.go
    │   │       │       ├── preallocate.go
    │   │       │       ├── preallocate_darwin.go
    │   │       │       ├── preallocate_linux.go
    │   │       │       ├── preallocate_other.go
    │   │       │       ├── sync.go
    │   │       │       ├── sync_darwin.go
    │   │       │       └── sync_linux.go
    │   │       └── util/
    │   │           ├── annotations/
    │   │           │   └── annotations.go
    │   │           └── strutil/
    │   │               ├── quote.go
    │   │               └── strconv.go
    │   ├── rs/
    │   │   └── xid/
    │   │       ├── .appveyor.yml
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── error.go
    │   │       ├── hostid_darwin.go
    │   │       ├── hostid_fallback.go
    │   │       ├── hostid_freebsd.go
    │   │       ├── hostid_linux.go
    │   │       ├── hostid_windows.go
    │   │       └── id.go
    │   ├── russross/
    │   │   └── blackfriday/
    │   │       └── v2/
    │   │           ├── .gitignore
    │   │           ├── .travis.yml
    │   │           ├── LICENSE.txt
    │   │           ├── README.md
    │   │           ├── block.go
    │   │           ├── doc.go
    │   │           ├── entities.go
    │   │           ├── esc.go
    │   │           ├── html.go
    │   │           ├── inline.go
    │   │           ├── markdown.go
    │   │           ├── node.go
    │   │           └── smartypants.go
    │   ├── safchain/
    │   │   └── ethtool/
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── .yamllint
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── ethtool.go
    │   │       ├── ethtool_cmd.go
    │   │       ├── ethtool_darwin.go
    │   │       ├── ethtool_linux.go
    │   │       └── ethtool_msglvl.go
    │   ├── spf13/
    │   │   └── pflag/
    │   │       ├── .editorconfig
    │   │       ├── .gitignore
    │   │       ├── .golangci.yaml
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── bool.go
    │   │       ├── bool_func.go
    │   │       ├── bool_slice.go
    │   │       ├── bytes.go
    │   │       ├── count.go
    │   │       ├── duration.go
    │   │       ├── duration_slice.go
    │   │       ├── errors.go
    │   │       ├── flag.go
    │   │       ├── float32.go
    │   │       ├── float32_slice.go
    │   │       ├── float64.go
    │   │       ├── float64_slice.go
    │   │       ├── func.go
    │   │       ├── golangflag.go
    │   │       ├── int.go
    │   │       ├── int16.go
    │   │       ├── int32.go
    │   │       ├── int32_slice.go
    │   │       ├── int64.go
    │   │       ├── int64_slice.go
    │   │       ├── int8.go
    │   │       ├── int_slice.go
    │   │       ├── ip.go
    │   │       ├── ip_slice.go
    │   │       ├── ipmask.go
    │   │       ├── ipnet.go
    │   │       ├── ipnet_slice.go
    │   │       ├── string.go
    │   │       ├── string_array.go
    │   │       ├── string_slice.go
    │   │       ├── string_to_int.go
    │   │       ├── string_to_int64.go
    │   │       ├── string_to_string.go
    │   │       ├── text.go
    │   │       ├── time.go
    │   │       ├── uint.go
    │   │       ├── uint16.go
    │   │       ├── uint32.go
    │   │       ├── uint64.go
    │   │       ├── uint8.go
    │   │       └── uint_slice.go
    │   ├── stretchr/
    │   │   ├── objx/
    │   │   │   ├── .codeclimate.yml
    │   │   │   ├── .gitignore
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── Taskfile.yml
    │   │   │   ├── accessors.go
    │   │   │   ├── conversions.go
    │   │   │   ├── doc.go
    │   │   │   ├── map.go
    │   │   │   ├── mutations.go
    │   │   │   ├── security.go
    │   │   │   ├── tests.go
    │   │   │   ├── type_specific.go
    │   │   │   ├── type_specific_codegen.go
    │   │   │   └── value.go
    │   │   └── testify/
    │   │       ├── LICENSE
    │   │       ├── assert/
    │   │       │   ├── assertion_compare.go
    │   │       │   ├── assertion_format.go
    │   │       │   ├── assertion_format.go.tmpl
    │   │       │   ├── assertion_forward.go
    │   │       │   ├── assertion_forward.go.tmpl
    │   │       │   ├── assertion_order.go
    │   │       │   ├── assertions.go
    │   │       │   ├── doc.go
    │   │       │   ├── errors.go
    │   │       │   ├── forward_assertions.go
    │   │       │   ├── http_assertions.go
    │   │       │   └── yaml/
    │   │       │       ├── yaml_custom.go
    │   │       │       ├── yaml_default.go
    │   │       │       └── yaml_fail.go
    │   │       ├── mock/
    │   │       │   ├── doc.go
    │   │       │   └── mock.go
    │   │       └── require/
    │   │           ├── doc.go
    │   │           ├── forward_requirements.go
    │   │           ├── require.go
    │   │           ├── require.go.tmpl
    │   │           ├── require_forward.go
    │   │           ├── require_forward.go.tmpl
    │   │           └── requirements.go
    │   ├── tinylib/
    │   │   └── msgp/
    │   │       ├── LICENSE
    │   │       └── msgp/
    │   │           ├── advise_linux.go
    │   │           ├── advise_other.go
    │   │           ├── autoshim.go
    │   │           ├── circular.go
    │   │           ├── defs.go
    │   │           ├── edit.go
    │   │           ├── elsize.go
    │   │           ├── elsize_default.go
    │   │           ├── elsize_tinygo.go
    │   │           ├── errors.go
    │   │           ├── errors_default.go
    │   │           ├── errors_tinygo.go
    │   │           ├── extension.go
    │   │           ├── file.go
    │   │           ├── file_port.go
    │   │           ├── integers.go
    │   │           ├── iter.go
    │   │           ├── json.go
    │   │           ├── json_bytes.go
    │   │           ├── number.go
    │   │           ├── purego.go
    │   │           ├── read.go
    │   │           ├── read_bytes.go
    │   │           ├── setof/
    │   │           │   ├── generated.go
    │   │           │   └── setof.go
    │   │           ├── size.go
    │   │           ├── unsafe.go
    │   │           ├── write.go
    │   │           └── write_bytes.go
    │   ├── vishvananda/
    │   │   ├── netlink/
    │   │   │   ├── .gitignore
    │   │   │   ├── CHANGELOG.md
    │   │   │   ├── LICENSE
    │   │   │   ├── Makefile
    │   │   │   ├── README.md
    │   │   │   ├── addr.go
    │   │   │   ├── addr_linux.go
    │   │   │   ├── bpf_linux.go
    │   │   │   ├── bridge_linux.go
    │   │   │   ├── chain.go
    │   │   │   ├── chain_linux.go
    │   │   │   ├── class.go
    │   │   │   ├── class_linux.go
    │   │   │   ├── conntrack_linux.go
    │   │   │   ├── conntrack_unspecified.go
    │   │   │   ├── devlink_linux.go
    │   │   │   ├── filter.go
    │   │   │   ├── filter_linux.go
    │   │   │   ├── fou.go
    │   │   │   ├── fou_linux.go
    │   │   │   ├── fou_unspecified.go
    │   │   │   ├── genetlink_linux.go
    │   │   │   ├── genetlink_unspecified.go
    │   │   │   ├── gtp_linux.go
    │   │   │   ├── handle_linux.go
    │   │   │   ├── handle_unspecified.go
    │   │   │   ├── inet_diag.go
    │   │   │   ├── ioctl_linux.go
    │   │   │   ├── ipset_linux.go
    │   │   │   ├── link.go
    │   │   │   ├── link_linux.go
    │   │   │   ├── link_tuntap_linux.go
    │   │   │   ├── neigh.go
    │   │   │   ├── neigh_linux.go
    │   │   │   ├── netlink.go
    │   │   │   ├── netlink_linux.go
    │   │   │   ├── netlink_unspecified.go
    │   │   │   ├── netns_linux.go
    │   │   │   ├── netns_unspecified.go
    │   │   │   ├── nl/
    │   │   │   │   ├── addr_linux.go
    │   │   │   │   ├── bridge_linux.go
    │   │   │   │   ├── conntrack_linux.go
    │   │   │   │   ├── devlink_linux.go
    │   │   │   │   ├── genetlink_linux.go
    │   │   │   │   ├── ip6tnl_linux.go
    │   │   │   │   ├── ipset_linux.go
    │   │   │   │   ├── link_linux.go
    │   │   │   │   ├── lwt_linux.go
    │   │   │   │   ├── mpls_linux.go
    │   │   │   │   ├── nl_linux.go
    │   │   │   │   ├── nl_unspecified.go
    │   │   │   │   ├── parse_attr_linux.go
    │   │   │   │   ├── rdma_link_linux.go
    │   │   │   │   ├── route_linux.go
    │   │   │   │   ├── seg6_linux.go
    │   │   │   │   ├── seg6local_linux.go
    │   │   │   │   ├── syscall.go
    │   │   │   │   ├── tc_linux.go
    │   │   │   │   ├── vdpa_linux.go
    │   │   │   │   ├── xfrm_linux.go
    │   │   │   │   ├── xfrm_monitor_linux.go
    │   │   │   │   ├── xfrm_policy_linux.go
    │   │   │   │   └── xfrm_state_linux.go
    │   │   │   ├── order.go
    │   │   │   ├── proc_event_linux.go
    │   │   │   ├── protinfo.go
    │   │   │   ├── protinfo_linux.go
    │   │   │   ├── qdisc.go
    │   │   │   ├── qdisc_linux.go
    │   │   │   ├── rdma_link_linux.go
    │   │   │   ├── route.go
    │   │   │   ├── route_linux.go
    │   │   │   ├── route_unspecified.go
    │   │   │   ├── rule.go
    │   │   │   ├── rule_linux.go
    │   │   │   ├── rule_nonlinux.go
    │   │   │   ├── socket.go
    │   │   │   ├── socket_linux.go
    │   │   │   ├── socket_xdp_linux.go
    │   │   │   ├── tcp.go
    │   │   │   ├── tcp_linux.go
    │   │   │   ├── unix_diag.go
    │   │   │   ├── vdpa_linux.go
    │   │   │   ├── virtio.go
    │   │   │   ├── xdp_diag.go
    │   │   │   ├── xdp_linux.go
    │   │   │   ├── xfrm_linux.go
    │   │   │   ├── xfrm_monitor_linux.go
    │   │   │   ├── xfrm_policy_linux.go
    │   │   │   ├── xfrm_state_linux.go
    │   │   │   └── xfrm_unspecified.go
    │   │   └── netns/
    │   │       ├── .golangci.yml
    │   │       ├── .yamllint.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── doc.go
    │   │       ├── netns_linux.go
    │   │       ├── netns_others.go
    │   │       ├── nshandle_linux.go
    │   │       └── nshandle_others.go
    │   ├── vmware/
    │   │   └── go-ipfix/
    │   │       ├── LICENSE
    │   │       ├── NOTICE
    │   │       └── pkg/
    │   │           ├── collector/
    │   │           │   ├── clock.go
    │   │           │   ├── process.go
    │   │           │   ├── session.go
    │   │           │   ├── tcp.go
    │   │           │   └── udp.go
    │   │           ├── entities/
    │   │           │   ├── ie.go
    │   │           │   ├── ie_value.go
    │   │           │   ├── message.go
    │   │           │   ├── record.go
    │   │           │   └── set.go
    │   │           ├── exporter/
    │   │           │   ├── buffered.go
    │   │           │   ├── msg.go
    │   │           │   └── process.go
    │   │           └── registry/
    │   │               ├── registry.go
    │   │               ├── registry_IANA.go
    │   │               ├── registry_antrea.csv
    │   │               └── registry_antrea.go
    │   ├── x448/
    │   │   └── float16/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       └── float16.go
    │   ├── xdg-go/
    │   │   ├── pbkdf2/
    │   │   │   ├── .gitignore
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   └── pbkdf2.go
    │   │   ├── scram/
    │   │   │   ├── .gitignore
    │   │   │   ├── CHANGELOG.md
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── client.go
    │   │   │   ├── client_conv.go
    │   │   │   ├── common.go
    │   │   │   ├── doc.go
    │   │   │   ├── parse.go
    │   │   │   ├── scram.go
    │   │   │   ├── server.go
    │   │   │   └── server_conv.go
    │   │   └── stringprep/
    │   │       ├── .gitignore
    │   │       ├── CHANGELOG.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── bidi.go
    │   │       ├── doc.go
    │   │       ├── error.go
    │   │       ├── map.go
    │   │       ├── profile.go
    │   │       ├── saslprep.go
    │   │       ├── set.go
    │   │       └── tables.go
    │   └── xrash/
    │       └── smetrics/
    │           ├── .travis.yml
    │           ├── LICENSE
    │           ├── README.md
    │           ├── doc.go
    │           ├── hamming.go
    │           ├── jaro-winkler.go
    │           ├── jaro.go
    │           ├── soundex.go
    │           ├── ukkonen.go
    │           └── wagner-fischer.go
    ├── go.opentelemetry.io/
    │   ├── auto/
    │   │   └── sdk/
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── VERSIONING.md
    │   │       ├── doc.go
    │   │       ├── internal/
    │   │       │   └── telemetry/
    │   │       │       ├── attr.go
    │   │       │       ├── doc.go
    │   │       │       ├── id.go
    │   │       │       ├── number.go
    │   │       │       ├── resource.go
    │   │       │       ├── scope.go
    │   │       │       ├── span.go
    │   │       │       ├── status.go
    │   │       │       ├── traces.go
    │   │       │       └── value.go
    │   │       ├── limit.go
    │   │       ├── span.go
    │   │       ├── tracer.go
    │   │       └── tracer_provider.go
    │   ├── otel/
    │   │   ├── .clomonitor.yml
    │   │   ├── .codespellignore
    │   │   ├── .codespellrc
    │   │   ├── .gitattributes
    │   │   ├── .gitignore
    │   │   ├── .golangci.yml
    │   │   ├── .lycheeignore
    │   │   ├── .markdownlint.yaml
    │   │   ├── CHANGELOG.md
    │   │   ├── CODEOWNERS
    │   │   ├── CONTRIBUTING.md
    │   │   ├── LICENSE
    │   │   ├── Makefile
    │   │   ├── README.md
    │   │   ├── RELEASING.md
    │   │   ├── SECURITY-INSIGHTS.yml
    │   │   ├── VERSIONING.md
    │   │   ├── attribute/
    │   │   │   ├── README.md
    │   │   │   ├── doc.go
    │   │   │   ├── encoder.go
    │   │   │   ├── filter.go
    │   │   │   ├── hash.go
    │   │   │   ├── internal/
    │   │   │   │   ├── attribute.go
    │   │   │   │   └── xxhash/
    │   │   │   │       └── xxhash.go
    │   │   │   ├── iterator.go
    │   │   │   ├── key.go
    │   │   │   ├── kv.go
    │   │   │   ├── rawhelpers.go
    │   │   │   ├── set.go
    │   │   │   ├── type_string.go
    │   │   │   └── value.go
    │   │   ├── baggage/
    │   │   │   ├── README.md
    │   │   │   ├── baggage.go
    │   │   │   ├── context.go
    │   │   │   └── doc.go
    │   │   ├── codes/
    │   │   │   ├── README.md
    │   │   │   ├── codes.go
    │   │   │   └── doc.go
    │   │   ├── dependencies.Dockerfile
    │   │   ├── doc.go
    │   │   ├── error_handler.go
    │   │   ├── exporters/
    │   │   │   └── otlp/
    │   │   │       ├── otlpmetric/
    │   │   │       │   ├── otlpmetricgrpc/
    │   │   │       │   │   ├── LICENSE
    │   │   │       │   │   ├── README.md
    │   │   │       │   │   ├── client.go
    │   │   │       │   │   ├── config.go
    │   │   │       │   │   ├── doc.go
    │   │   │       │   │   ├── exporter.go
    │   │   │       │   │   ├── internal/
    │   │   │       │   │   │   ├── envconfig/
    │   │   │       │   │   │   │   └── envconfig.go
    │   │   │       │   │   │   ├── gen.go
    │   │   │       │   │   │   ├── oconf/
    │   │   │       │   │   │   │   ├── envconfig.go
    │   │   │       │   │   │   │   ├── options.go
    │   │   │       │   │   │   │   ├── optiontypes.go
    │   │   │       │   │   │   │   └── tls.go
    │   │   │       │   │   │   ├── partialsuccess.go
    │   │   │       │   │   │   ├── retry/
    │   │   │       │   │   │   │   └── retry.go
    │   │   │       │   │   │   └── transform/
    │   │   │       │   │   │       ├── attribute.go
    │   │   │       │   │   │       ├── error.go
    │   │   │       │   │   │       └── metricdata.go
    │   │   │       │   │   └── version.go
    │   │   │       │   └── otlpmetrichttp/
    │   │   │       │       ├── LICENSE
    │   │   │       │       ├── README.md
    │   │   │       │       ├── client.go
    │   │   │       │       ├── config.go
    │   │   │       │       ├── doc.go
    │   │   │       │       ├── exporter.go
    │   │   │       │       ├── internal/
    │   │   │       │       │   ├── envconfig/
    │   │   │       │       │   │   └── envconfig.go
    │   │   │       │       │   ├── gen.go
    │   │   │       │       │   ├── oconf/
    │   │   │       │       │   │   ├── envconfig.go
    │   │   │       │       │   │   ├── options.go
    │   │   │       │       │   │   ├── optiontypes.go
    │   │   │       │       │   │   └── tls.go
    │   │   │       │       │   ├── partialsuccess.go
    │   │   │       │       │   ├── retry/
    │   │   │       │       │   │   └── retry.go
    │   │   │       │       │   └── transform/
    │   │   │       │       │       ├── attribute.go
    │   │   │       │       │       ├── error.go
    │   │   │       │       │       └── metricdata.go
    │   │   │       │       └── version.go
    │   │   │       └── otlptrace/
    │   │   │           ├── LICENSE
    │   │   │           ├── README.md
    │   │   │           ├── clients.go
    │   │   │           ├── doc.go
    │   │   │           ├── exporter.go
    │   │   │           ├── internal/
    │   │   │           │   └── tracetransform/
    │   │   │           │       ├── attribute.go
    │   │   │           │       ├── instrumentation.go
    │   │   │           │       ├── resource.go
    │   │   │           │       └── span.go
    │   │   │           ├── otlptracegrpc/
    │   │   │           │   ├── LICENSE
    │   │   │           │   ├── README.md
    │   │   │           │   ├── client.go
    │   │   │           │   ├── doc.go
    │   │   │           │   ├── exporter.go
    │   │   │           │   ├── internal/
    │   │   │           │   │   ├── counter/
    │   │   │           │   │   │   └── counter.go
    │   │   │           │   │   ├── envconfig/
    │   │   │           │   │   │   └── envconfig.go
    │   │   │           │   │   ├── gen.go
    │   │   │           │   │   ├── observ/
    │   │   │           │   │   │   ├── doc.go
    │   │   │           │   │   │   ├── instrumentation.go
    │   │   │           │   │   │   └── target.go
    │   │   │           │   │   ├── otlpconfig/
    │   │   │           │   │   │   ├── envconfig.go
    │   │   │           │   │   │   ├── options.go
    │   │   │           │   │   │   ├── optiontypes.go
    │   │   │           │   │   │   └── tls.go
    │   │   │           │   │   ├── partialsuccess.go
    │   │   │           │   │   ├── retry/
    │   │   │           │   │   │   └── retry.go
    │   │   │           │   │   ├── version.go
    │   │   │           │   │   └── x/
    │   │   │           │   │       ├── README.md
    │   │   │           │   │       ├── observ.go
    │   │   │           │   │       └── x.go
    │   │   │           │   └── options.go
    │   │   │           ├── otlptracehttp/
    │   │   │           │   ├── LICENSE
    │   │   │           │   ├── README.md
    │   │   │           │   ├── client.go
    │   │   │           │   ├── doc.go
    │   │   │           │   ├── exporter.go
    │   │   │           │   ├── internal/
    │   │   │           │   │   ├── counter/
    │   │   │           │   │   │   └── counter.go
    │   │   │           │   │   ├── envconfig/
    │   │   │           │   │   │   └── envconfig.go
    │   │   │           │   │   ├── gen.go
    │   │   │           │   │   ├── observ/
    │   │   │           │   │   │   └── instrumentation.go
    │   │   │           │   │   ├── otlpconfig/
    │   │   │           │   │   │   ├── envconfig.go
    │   │   │           │   │   │   ├── options.go
    │   │   │           │   │   │   ├── optiontypes.go
    │   │   │           │   │   │   └── tls.go
    │   │   │           │   │   ├── partialsuccess.go
    │   │   │           │   │   ├── retry/
    │   │   │           │   │   │   └── retry.go
    │   │   │           │   │   ├── version.go
    │   │   │           │   │   └── x/
    │   │   │           │   │       ├── observ.go
    │   │   │           │   │       └── x.go
    │   │   │           │   └── options.go
    │   │   │           └── version.go
    │   │   ├── handler.go
    │   │   ├── internal/
    │   │   │   ├── baggage/
    │   │   │   │   ├── baggage.go
    │   │   │   │   └── context.go
    │   │   │   ├── errorhandler/
    │   │   │   │   └── errorhandler.go
    │   │   │   └── global/
    │   │   │       ├── handler.go
    │   │   │       ├── instruments.go
    │   │   │       ├── internal_logging.go
    │   │   │       ├── meter.go
    │   │   │       ├── propagator.go
    │   │   │       ├── state.go
    │   │   │       └── trace.go
    │   │   ├── internal_logging.go
    │   │   ├── metric/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── asyncfloat64.go
    │   │   │   ├── asyncint64.go
    │   │   │   ├── config.go
    │   │   │   ├── doc.go
    │   │   │   ├── embedded/
    │   │   │   │   ├── README.md
    │   │   │   │   └── embedded.go
    │   │   │   ├── instrument.go
    │   │   │   ├── meter.go
    │   │   │   ├── noop/
    │   │   │   │   ├── README.md
    │   │   │   │   └── noop.go
    │   │   │   ├── syncfloat64.go
    │   │   │   └── syncint64.go
    │   │   ├── metric.go
    │   │   ├── propagation/
    │   │   │   ├── README.md
    │   │   │   ├── baggage.go
    │   │   │   ├── doc.go
    │   │   │   ├── propagation.go
    │   │   │   └── trace_context.go
    │   │   ├── propagation.go
    │   │   ├── renovate.json
    │   │   ├── requirements.txt
    │   │   ├── sdk/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── instrumentation/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── library.go
    │   │   │   │   └── scope.go
    │   │   │   ├── internal/
    │   │   │   │   └── x/
    │   │   │   │       ├── README.md
    │   │   │   │       ├── features.go
    │   │   │   │       └── x.go
    │   │   │   ├── metric/
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── aggregation.go
    │   │   │   │   ├── cache.go
    │   │   │   │   ├── config.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── env.go
    │   │   │   │   ├── exemplar/
    │   │   │   │   │   ├── README.md
    │   │   │   │   │   ├── doc.go
    │   │   │   │   │   ├── exemplar.go
    │   │   │   │   │   ├── filter.go
    │   │   │   │   │   ├── fixed_size_reservoir.go
    │   │   │   │   │   ├── histogram_reservoir.go
    │   │   │   │   │   ├── reservoir.go
    │   │   │   │   │   ├── storage.go
    │   │   │   │   │   └── value.go
    │   │   │   │   ├── exemplar.go
    │   │   │   │   ├── exporter.go
    │   │   │   │   ├── instrument.go
    │   │   │   │   ├── instrumentkind_string.go
    │   │   │   │   ├── internal/
    │   │   │   │   │   ├── aggregate/
    │   │   │   │   │   │   ├── aggregate.go
    │   │   │   │   │   │   ├── atomic.go
    │   │   │   │   │   │   ├── doc.go
    │   │   │   │   │   │   ├── drop.go
    │   │   │   │   │   │   ├── exemplar.go
    │   │   │   │   │   │   ├── exponential_histogram.go
    │   │   │   │   │   │   ├── filtered_reservoir.go
    │   │   │   │   │   │   ├── histogram.go
    │   │   │   │   │   │   ├── lastvalue.go
    │   │   │   │   │   │   ├── limit.go
    │   │   │   │   │   │   └── sum.go
    │   │   │   │   │   ├── observ/
    │   │   │   │   │   │   └── instrumentation.go
    │   │   │   │   │   ├── reservoir/
    │   │   │   │   │   │   ├── concurrent_safe.go
    │   │   │   │   │   │   └── doc.go
    │   │   │   │   │   └── reuse_slice.go
    │   │   │   │   ├── manual_reader.go
    │   │   │   │   ├── meter.go
    │   │   │   │   ├── metricdata/
    │   │   │   │   │   ├── README.md
    │   │   │   │   │   ├── data.go
    │   │   │   │   │   ├── temporality.go
    │   │   │   │   │   └── temporality_string.go
    │   │   │   │   ├── periodic_reader.go
    │   │   │   │   ├── pipeline.go
    │   │   │   │   ├── provider.go
    │   │   │   │   ├── reader.go
    │   │   │   │   ├── version.go
    │   │   │   │   └── view.go
    │   │   │   ├── resource/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── auto.go
    │   │   │   │   ├── builtin.go
    │   │   │   │   ├── config.go
    │   │   │   │   ├── container.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── env.go
    │   │   │   │   ├── host_id.go
    │   │   │   │   ├── host_id_bsd.go
    │   │   │   │   ├── host_id_darwin.go
    │   │   │   │   ├── host_id_exec.go
    │   │   │   │   ├── host_id_linux.go
    │   │   │   │   ├── host_id_readfile.go
    │   │   │   │   ├── host_id_unsupported.go
    │   │   │   │   ├── host_id_windows.go
    │   │   │   │   ├── os.go
    │   │   │   │   ├── os_release_darwin.go
    │   │   │   │   ├── os_release_unix.go
    │   │   │   │   ├── os_unix.go
    │   │   │   │   ├── os_unsupported.go
    │   │   │   │   ├── os_windows.go
    │   │   │   │   ├── process.go
    │   │   │   │   └── resource.go
    │   │   │   ├── trace/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── batch_span_processor.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── event.go
    │   │   │   │   ├── evictedqueue.go
    │   │   │   │   ├── id_generator.go
    │   │   │   │   ├── internal/
    │   │   │   │   │   ├── env/
    │   │   │   │   │   │   └── env.go
    │   │   │   │   │   └── observ/
    │   │   │   │   │       ├── batch_span_processor.go
    │   │   │   │   │       ├── doc.go
    │   │   │   │   │       ├── simple_span_processor.go
    │   │   │   │   │       └── tracer.go
    │   │   │   │   ├── link.go
    │   │   │   │   ├── provider.go
    │   │   │   │   ├── sampler_env.go
    │   │   │   │   ├── sampling.go
    │   │   │   │   ├── simple_span_processor.go
    │   │   │   │   ├── snapshot.go
    │   │   │   │   ├── span.go
    │   │   │   │   ├── span_exporter.go
    │   │   │   │   ├── span_limits.go
    │   │   │   │   ├── span_processor.go
    │   │   │   │   └── tracer.go
    │   │   │   └── version.go
    │   │   ├── semconv/
    │   │   │   ├── v1.21.0/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── attribute_group.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── event.go
    │   │   │   │   ├── exception.go
    │   │   │   │   ├── resource.go
    │   │   │   │   ├── schema.go
    │   │   │   │   └── trace.go
    │   │   │   ├── v1.37.0/
    │   │   │   │   ├── MIGRATION.md
    │   │   │   │   ├── README.md
    │   │   │   │   ├── attribute_group.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── error_type.go
    │   │   │   │   ├── exception.go
    │   │   │   │   └── schema.go
    │   │   │   └── v1.40.0/
    │   │   │       ├── MIGRATION.md
    │   │   │       ├── README.md
    │   │   │       ├── attribute_group.go
    │   │   │       ├── doc.go
    │   │   │       ├── error_type.go
    │   │   │       ├── exception.go
    │   │   │       ├── otelconv/
    │   │   │       │   └── metric.go
    │   │   │       └── schema.go
    │   │   ├── trace/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── auto.go
    │   │   │   ├── config.go
    │   │   │   ├── context.go
    │   │   │   ├── doc.go
    │   │   │   ├── embedded/
    │   │   │   │   ├── README.md
    │   │   │   │   └── embedded.go
    │   │   │   ├── hex.go
    │   │   │   ├── internal/
    │   │   │   │   └── telemetry/
    │   │   │   │       ├── attr.go
    │   │   │   │       ├── doc.go
    │   │   │   │       ├── id.go
    │   │   │   │       ├── number.go
    │   │   │   │       ├── resource.go
    │   │   │   │       ├── scope.go
    │   │   │   │       ├── span.go
    │   │   │   │       ├── status.go
    │   │   │   │       ├── traces.go
    │   │   │   │       └── value.go
    │   │   │   ├── nonrecording.go
    │   │   │   ├── noop/
    │   │   │   │   ├── README.md
    │   │   │   │   └── noop.go
    │   │   │   ├── noop.go
    │   │   │   ├── provider.go
    │   │   │   ├── span.go
    │   │   │   ├── trace.go
    │   │   │   ├── tracer.go
    │   │   │   └── tracestate.go
    │   │   ├── trace.go
    │   │   ├── verify_released_changelog.sh
    │   │   ├── version.go
    │   │   └── versions.yaml
    │   └── proto/
    │       └── otlp/
    │           ├── LICENSE
    │           ├── collector/
    │           │   ├── logs/
    │           │   │   └── v1/
    │           │   │       ├── logs_service.pb.go
    │           │   │       ├── logs_service.pb.gw.go
    │           │   │       └── logs_service_grpc.pb.go
    │           │   ├── metrics/
    │           │   │   └── v1/
    │           │   │       ├── metrics_service.pb.go
    │           │   │       ├── metrics_service.pb.gw.go
    │           │   │       └── metrics_service_grpc.pb.go
    │           │   └── trace/
    │           │       └── v1/
    │           │           ├── trace_service.pb.go
    │           │           ├── trace_service.pb.gw.go
    │           │           └── trace_service_grpc.pb.go
    │           ├── common/
    │           │   └── v1/
    │           │       └── common.pb.go
    │           ├── logs/
    │           │   └── v1/
    │           │       └── logs.pb.go
    │           ├── metrics/
    │           │   └── v1/
    │           │       └── metrics.pb.go
    │           ├── resource/
    │           │   └── v1/
    │           │       └── resource.pb.go
    │           └── trace/
    │               └── v1/
    │                   └── trace.pb.go
    ├── go.yaml.in/
    │   └── yaml/
    │       ├── v2/
    │       │   ├── .travis.yml
    │       │   ├── LICENSE
    │       │   ├── LICENSE.libyaml
    │       │   ├── NOTICE
    │       │   ├── README.md
    │       │   ├── apic.go
    │       │   ├── decode.go
    │       │   ├── emitterc.go
    │       │   ├── encode.go
    │       │   ├── parserc.go
    │       │   ├── readerc.go
    │       │   ├── resolve.go
    │       │   ├── scannerc.go
    │       │   ├── sorter.go
    │       │   ├── writerc.go
    │       │   ├── yaml.go
    │       │   ├── yamlh.go
    │       │   └── yamlprivateh.go
    │       └── v3/
    │           ├── LICENSE
    │           ├── NOTICE
    │           ├── README.md
    │           ├── apic.go
    │           ├── decode.go
    │           ├── emitterc.go
    │           ├── encode.go
    │           ├── parserc.go
    │           ├── readerc.go
    │           ├── resolve.go
    │           ├── scannerc.go
    │           ├── sorter.go
    │           ├── writerc.go
    │           ├── yaml.go
    │           ├── yamlh.go
    │           └── yamlprivateh.go
    ├── golang.org/
    │   └── x/
    │       ├── crypto/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── argon2/
    │       │   │   ├── argon2.go
    │       │   │   ├── blake2b.go
    │       │   │   ├── blamka_amd64.go
    │       │   │   ├── blamka_amd64.s
    │       │   │   ├── blamka_generic.go
    │       │   │   └── blamka_ref.go
    │       │   ├── blake2b/
    │       │   │   ├── blake2b.go
    │       │   │   ├── blake2bAVX2_amd64.go
    │       │   │   ├── blake2bAVX2_amd64.s
    │       │   │   ├── blake2b_amd64.s
    │       │   │   ├── blake2b_generic.go
    │       │   │   ├── blake2b_ref.go
    │       │   │   ├── blake2x.go
    │       │   │   ├── go125.go
    │       │   │   └── register.go
    │       │   ├── cryptobyte/
    │       │   │   ├── asn1/
    │       │   │   │   └── asn1.go
    │       │   │   ├── asn1.go
    │       │   │   ├── builder.go
    │       │   │   └── string.go
    │       │   └── curve25519/
    │       │       └── curve25519.go
    │       ├── net/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── bpf/
    │       │   │   ├── asm.go
    │       │   │   ├── constants.go
    │       │   │   ├── doc.go
    │       │   │   ├── instructions.go
    │       │   │   ├── setter.go
    │       │   │   ├── vm.go
    │       │   │   └── vm_instructions.go
    │       │   ├── context/
    │       │   │   └── context.go
    │       │   ├── html/
    │       │   │   ├── atom/
    │       │   │   │   ├── atom.go
    │       │   │   │   └── table.go
    │       │   │   ├── const.go
    │       │   │   ├── doc.go
    │       │   │   ├── doctype.go
    │       │   │   ├── entity.go
    │       │   │   ├── escape.go
    │       │   │   ├── foreign.go
    │       │   │   ├── iter.go
    │       │   │   ├── node.go
    │       │   │   ├── nodetype_string.go
    │       │   │   ├── parse.go
    │       │   │   ├── render.go
    │       │   │   └── token.go
    │       │   ├── http/
    │       │   │   ├── httpguts/
    │       │   │   │   ├── guts.go
    │       │   │   │   └── httplex.go
    │       │   │   └── httpproxy/
    │       │   │       └── proxy.go
    │       │   ├── http2/
    │       │   │   ├── .gitignore
    │       │   │   ├── ascii.go
    │       │   │   ├── ciphers.go
    │       │   │   ├── client_conn_pool.go
    │       │   │   ├── client_priority_go126.go
    │       │   │   ├── client_priority_go127.go
    │       │   │   ├── config.go
    │       │   │   ├── config_go125.go
    │       │   │   ├── config_go126.go
    │       │   │   ├── databuffer.go
    │       │   │   ├── errors.go
    │       │   │   ├── flow.go
    │       │   │   ├── frame.go
    │       │   │   ├── gotrack.go
    │       │   │   ├── hpack/
    │       │   │   │   ├── encode.go
    │       │   │   │   ├── hpack.go
    │       │   │   │   ├── huffman.go
    │       │   │   │   ├── static_table.go
    │       │   │   │   └── tables.go
    │       │   │   ├── http2.go
    │       │   │   ├── pipe.go
    │       │   │   ├── server.go
    │       │   │   ├── transport.go
    │       │   │   ├── unencrypted.go
    │       │   │   ├── write.go
    │       │   │   ├── writesched.go
    │       │   │   ├── writesched_priority_rfc7540.go
    │       │   │   ├── writesched_priority_rfc9218.go
    │       │   │   ├── writesched_random.go
    │       │   │   └── writesched_roundrobin.go
    │       │   ├── idna/
    │       │   │   ├── go118.go
    │       │   │   ├── idna10.0.0.go
    │       │   │   ├── idna9.0.0.go
    │       │   │   ├── pre_go118.go
    │       │   │   ├── punycode.go
    │       │   │   ├── tables10.0.0.go
    │       │   │   ├── tables11.0.0.go
    │       │   │   ├── tables12.0.0.go
    │       │   │   ├── tables13.0.0.go
    │       │   │   ├── tables15.0.0.go
    │       │   │   ├── tables9.0.0.go
    │       │   │   ├── trie.go
    │       │   │   ├── trie12.0.0.go
    │       │   │   ├── trie13.0.0.go
    │       │   │   └── trieval.go
    │       │   ├── internal/
    │       │   │   ├── httpcommon/
    │       │   │   │   ├── ascii.go
    │       │   │   │   ├── headermap.go
    │       │   │   │   └── request.go
    │       │   │   ├── httpsfv/
    │       │   │   │   └── httpsfv.go
    │       │   │   ├── iana/
    │       │   │   │   └── const.go
    │       │   │   ├── socket/
    │       │   │   │   ├── cmsghdr.go
    │       │   │   │   ├── cmsghdr_bsd.go
    │       │   │   │   ├── cmsghdr_linux_32bit.go
    │       │   │   │   ├── cmsghdr_linux_64bit.go
    │       │   │   │   ├── cmsghdr_solaris_64bit.go
    │       │   │   │   ├── cmsghdr_stub.go
    │       │   │   │   ├── cmsghdr_unix.go
    │       │   │   │   ├── cmsghdr_zos_s390x.go
    │       │   │   │   ├── complete_dontwait.go
    │       │   │   │   ├── complete_nodontwait.go
    │       │   │   │   ├── empty.s
    │       │   │   │   ├── error_unix.go
    │       │   │   │   ├── error_windows.go
    │       │   │   │   ├── iovec_32bit.go
    │       │   │   │   ├── iovec_64bit.go
    │       │   │   │   ├── iovec_solaris_64bit.go
    │       │   │   │   ├── iovec_stub.go
    │       │   │   │   ├── mmsghdr_stub.go
    │       │   │   │   ├── mmsghdr_unix.go
    │       │   │   │   ├── msghdr_bsd.go
    │       │   │   │   ├── msghdr_bsdvar.go
    │       │   │   │   ├── msghdr_linux.go
    │       │   │   │   ├── msghdr_linux_32bit.go
    │       │   │   │   ├── msghdr_linux_64bit.go
    │       │   │   │   ├── msghdr_openbsd.go
    │       │   │   │   ├── msghdr_solaris_64bit.go
    │       │   │   │   ├── msghdr_stub.go
    │       │   │   │   ├── msghdr_zos_s390x.go
    │       │   │   │   ├── norace.go
    │       │   │   │   ├── race.go
    │       │   │   │   ├── rawconn.go
    │       │   │   │   ├── rawconn_mmsg.go
    │       │   │   │   ├── rawconn_msg.go
    │       │   │   │   ├── rawconn_nommsg.go
    │       │   │   │   ├── rawconn_nomsg.go
    │       │   │   │   ├── socket.go
    │       │   │   │   ├── sys_bsd.go
    │       │   │   │   ├── sys_const_unix.go
    │       │   │   │   ├── sys_linux.go
    │       │   │   │   ├── sys_linux_386.go
    │       │   │   │   ├── sys_linux_386.s
    │       │   │   │   ├── sys_linux_amd64.go
    │       │   │   │   ├── sys_linux_arm.go
    │       │   │   │   ├── sys_linux_arm64.go
    │       │   │   │   ├── sys_linux_loong64.go
    │       │   │   │   ├── sys_linux_mips.go
    │       │   │   │   ├── sys_linux_mips64.go
    │       │   │   │   ├── sys_linux_mips64le.go
    │       │   │   │   ├── sys_linux_mipsle.go
    │       │   │   │   ├── sys_linux_ppc.go
    │       │   │   │   ├── sys_linux_ppc64.go
    │       │   │   │   ├── sys_linux_ppc64le.go
    │       │   │   │   ├── sys_linux_riscv64.go
    │       │   │   │   ├── sys_linux_s390x.go
    │       │   │   │   ├── sys_linux_s390x.s
    │       │   │   │   ├── sys_netbsd.go
    │       │   │   │   ├── sys_posix.go
    │       │   │   │   ├── sys_stub.go
    │       │   │   │   ├── sys_unix.go
    │       │   │   │   ├── sys_windows.go
    │       │   │   │   ├── sys_zos_s390x.go
    │       │   │   │   ├── sys_zos_s390x.s
    │       │   │   │   ├── zsys_aix_ppc64.go
    │       │   │   │   ├── zsys_darwin_amd64.go
    │       │   │   │   ├── zsys_darwin_arm64.go
    │       │   │   │   ├── zsys_dragonfly_amd64.go
    │       │   │   │   ├── zsys_freebsd_386.go
    │       │   │   │   ├── zsys_freebsd_amd64.go
    │       │   │   │   ├── zsys_freebsd_arm.go
    │       │   │   │   ├── zsys_freebsd_arm64.go
    │       │   │   │   ├── zsys_freebsd_riscv64.go
    │       │   │   │   ├── zsys_linux_386.go
    │       │   │   │   ├── zsys_linux_amd64.go
    │       │   │   │   ├── zsys_linux_arm.go
    │       │   │   │   ├── zsys_linux_arm64.go
    │       │   │   │   ├── zsys_linux_loong64.go
    │       │   │   │   ├── zsys_linux_mips.go
    │       │   │   │   ├── zsys_linux_mips64.go
    │       │   │   │   ├── zsys_linux_mips64le.go
    │       │   │   │   ├── zsys_linux_mipsle.go
    │       │   │   │   ├── zsys_linux_ppc.go
    │       │   │   │   ├── zsys_linux_ppc64.go
    │       │   │   │   ├── zsys_linux_ppc64le.go
    │       │   │   │   ├── zsys_linux_riscv64.go
    │       │   │   │   ├── zsys_linux_s390x.go
    │       │   │   │   ├── zsys_netbsd_386.go
    │       │   │   │   ├── zsys_netbsd_amd64.go
    │       │   │   │   ├── zsys_netbsd_arm.go
    │       │   │   │   ├── zsys_netbsd_arm64.go
    │       │   │   │   ├── zsys_openbsd_386.go
    │       │   │   │   ├── zsys_openbsd_amd64.go
    │       │   │   │   ├── zsys_openbsd_arm.go
    │       │   │   │   ├── zsys_openbsd_arm64.go
    │       │   │   │   ├── zsys_openbsd_mips64.go
    │       │   │   │   ├── zsys_openbsd_ppc64.go
    │       │   │   │   ├── zsys_openbsd_riscv64.go
    │       │   │   │   ├── zsys_solaris_amd64.go
    │       │   │   │   └── zsys_zos_s390x.go
    │       │   │   ├── socks/
    │       │   │   │   ├── client.go
    │       │   │   │   └── socks.go
    │       │   │   └── timeseries/
    │       │   │       └── timeseries.go
    │       │   ├── ipv4/
    │       │   │   ├── batch.go
    │       │   │   ├── control.go
    │       │   │   ├── control_bsd.go
    │       │   │   ├── control_pktinfo.go
    │       │   │   ├── control_stub.go
    │       │   │   ├── control_unix.go
    │       │   │   ├── control_windows.go
    │       │   │   ├── control_zos.go
    │       │   │   ├── dgramopt.go
    │       │   │   ├── doc.go
    │       │   │   ├── endpoint.go
    │       │   │   ├── genericopt.go
    │       │   │   ├── header.go
    │       │   │   ├── helper.go
    │       │   │   ├── iana.go
    │       │   │   ├── icmp.go
    │       │   │   ├── icmp_linux.go
    │       │   │   ├── icmp_stub.go
    │       │   │   ├── packet.go
    │       │   │   ├── payload.go
    │       │   │   ├── payload_cmsg.go
    │       │   │   ├── payload_nocmsg.go
    │       │   │   ├── sockopt.go
    │       │   │   ├── sockopt_posix.go
    │       │   │   ├── sockopt_stub.go
    │       │   │   ├── sys_aix.go
    │       │   │   ├── sys_asmreq.go
    │       │   │   ├── sys_asmreq_stub.go
    │       │   │   ├── sys_asmreqn.go
    │       │   │   ├── sys_asmreqn_stub.go
    │       │   │   ├── sys_bpf.go
    │       │   │   ├── sys_bpf_stub.go
    │       │   │   ├── sys_bsd.go
    │       │   │   ├── sys_darwin.go
    │       │   │   ├── sys_dragonfly.go
    │       │   │   ├── sys_freebsd.go
    │       │   │   ├── sys_linux.go
    │       │   │   ├── sys_solaris.go
    │       │   │   ├── sys_ssmreq.go
    │       │   │   ├── sys_ssmreq_stub.go
    │       │   │   ├── sys_stub.go
    │       │   │   ├── sys_windows.go
    │       │   │   ├── sys_zos.go
    │       │   │   ├── zsys_aix_ppc64.go
    │       │   │   ├── zsys_darwin.go
    │       │   │   ├── zsys_dragonfly.go
    │       │   │   ├── zsys_freebsd_386.go
    │       │   │   ├── zsys_freebsd_amd64.go
    │       │   │   ├── zsys_freebsd_arm.go
    │       │   │   ├── zsys_freebsd_arm64.go
    │       │   │   ├── zsys_freebsd_riscv64.go
    │       │   │   ├── zsys_linux_386.go
    │       │   │   ├── zsys_linux_amd64.go
    │       │   │   ├── zsys_linux_arm.go
    │       │   │   ├── zsys_linux_arm64.go
    │       │   │   ├── zsys_linux_loong64.go
    │       │   │   ├── zsys_linux_mips.go
    │       │   │   ├── zsys_linux_mips64.go
    │       │   │   ├── zsys_linux_mips64le.go
    │       │   │   ├── zsys_linux_mipsle.go
    │       │   │   ├── zsys_linux_ppc.go
    │       │   │   ├── zsys_linux_ppc64.go
    │       │   │   ├── zsys_linux_ppc64le.go
    │       │   │   ├── zsys_linux_riscv64.go
    │       │   │   ├── zsys_linux_s390x.go
    │       │   │   ├── zsys_netbsd.go
    │       │   │   ├── zsys_openbsd.go
    │       │   │   ├── zsys_solaris.go
    │       │   │   └── zsys_zos_s390x.go
    │       │   ├── ipv6/
    │       │   │   ├── batch.go
    │       │   │   ├── control.go
    │       │   │   ├── control_rfc2292_unix.go
    │       │   │   ├── control_rfc3542_unix.go
    │       │   │   ├── control_stub.go
    │       │   │   ├── control_unix.go
    │       │   │   ├── control_windows.go
    │       │   │   ├── dgramopt.go
    │       │   │   ├── doc.go
    │       │   │   ├── endpoint.go
    │       │   │   ├── genericopt.go
    │       │   │   ├── header.go
    │       │   │   ├── helper.go
    │       │   │   ├── iana.go
    │       │   │   ├── icmp.go
    │       │   │   ├── icmp_bsd.go
    │       │   │   ├── icmp_linux.go
    │       │   │   ├── icmp_solaris.go
    │       │   │   ├── icmp_stub.go
    │       │   │   ├── icmp_windows.go
    │       │   │   ├── icmp_zos.go
    │       │   │   ├── payload.go
    │       │   │   ├── payload_cmsg.go
    │       │   │   ├── payload_nocmsg.go
    │       │   │   ├── sockopt.go
    │       │   │   ├── sockopt_posix.go
    │       │   │   ├── sockopt_stub.go
    │       │   │   ├── sys_aix.go
    │       │   │   ├── sys_asmreq.go
    │       │   │   ├── sys_asmreq_stub.go
    │       │   │   ├── sys_bpf.go
    │       │   │   ├── sys_bpf_stub.go
    │       │   │   ├── sys_bsd.go
    │       │   │   ├── sys_darwin.go
    │       │   │   ├── sys_freebsd.go
    │       │   │   ├── sys_linux.go
    │       │   │   ├── sys_solaris.go
    │       │   │   ├── sys_ssmreq.go
    │       │   │   ├── sys_ssmreq_stub.go
    │       │   │   ├── sys_stub.go
    │       │   │   ├── sys_windows.go
    │       │   │   ├── sys_zos.go
    │       │   │   ├── zsys_aix_ppc64.go
    │       │   │   ├── zsys_darwin.go
    │       │   │   ├── zsys_dragonfly.go
    │       │   │   ├── zsys_freebsd_386.go
    │       │   │   ├── zsys_freebsd_amd64.go
    │       │   │   ├── zsys_freebsd_arm.go
    │       │   │   ├── zsys_freebsd_arm64.go
    │       │   │   ├── zsys_freebsd_riscv64.go
    │       │   │   ├── zsys_linux_386.go
    │       │   │   ├── zsys_linux_amd64.go
    │       │   │   ├── zsys_linux_arm.go
    │       │   │   ├── zsys_linux_arm64.go
    │       │   │   ├── zsys_linux_loong64.go
    │       │   │   ├── zsys_linux_mips.go
    │       │   │   ├── zsys_linux_mips64.go
    │       │   │   ├── zsys_linux_mips64le.go
    │       │   │   ├── zsys_linux_mipsle.go
    │       │   │   ├── zsys_linux_ppc.go
    │       │   │   ├── zsys_linux_ppc64.go
    │       │   │   ├── zsys_linux_ppc64le.go
    │       │   │   ├── zsys_linux_riscv64.go
    │       │   │   ├── zsys_linux_s390x.go
    │       │   │   ├── zsys_netbsd.go
    │       │   │   ├── zsys_openbsd.go
    │       │   │   ├── zsys_solaris.go
    │       │   │   └── zsys_zos_s390x.go
    │       │   ├── proxy/
    │       │   │   ├── dial.go
    │       │   │   ├── direct.go
    │       │   │   ├── per_host.go
    │       │   │   ├── proxy.go
    │       │   │   └── socks5.go
    │       │   ├── publicsuffix/
    │       │   │   ├── data/
    │       │   │   │   ├── children
    │       │   │   │   ├── nodes
    │       │   │   │   └── text
    │       │   │   ├── list.go
    │       │   │   └── table.go
    │       │   ├── trace/
    │       │   │   ├── events.go
    │       │   │   ├── histogram.go
    │       │   │   └── trace.go
    │       │   └── websocket/
    │       │       ├── client.go
    │       │       ├── dial.go
    │       │       ├── hybi.go
    │       │       ├── server.go
    │       │       └── websocket.go
    │       ├── oauth2/
    │       │   ├── .travis.yml
    │       │   ├── CONTRIBUTING.md
    │       │   ├── LICENSE
    │       │   ├── README.md
    │       │   ├── clientcredentials/
    │       │   │   └── clientcredentials.go
    │       │   ├── deviceauth.go
    │       │   ├── internal/
    │       │   │   ├── doc.go
    │       │   │   ├── oauth2.go
    │       │   │   ├── token.go
    │       │   │   └── transport.go
    │       │   ├── oauth2.go
    │       │   ├── pkce.go
    │       │   ├── token.go
    │       │   └── transport.go
    │       ├── sys/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── cpu/
    │       │   │   ├── asm_aix_ppc64.s
    │       │   │   ├── asm_darwin_arm64_gc.s
    │       │   │   ├── asm_darwin_x86_gc.s
    │       │   │   ├── byteorder.go
    │       │   │   ├── cpu.go
    │       │   │   ├── cpu_aix.go
    │       │   │   ├── cpu_arm.go
    │       │   │   ├── cpu_arm64.go
    │       │   │   ├── cpu_arm64.s
    │       │   │   ├── cpu_darwin_arm64.go
    │       │   │   ├── cpu_darwin_arm64_other.go
    │       │   │   ├── cpu_darwin_x86.go
    │       │   │   ├── cpu_gc_arm64.go
    │       │   │   ├── cpu_gc_s390x.go
    │       │   │   ├── cpu_gc_x86.go
    │       │   │   ├── cpu_gc_x86.s
    │       │   │   ├── cpu_gccgo_arm64.go
    │       │   │   ├── cpu_gccgo_s390x.go
    │       │   │   ├── cpu_gccgo_x86.c
    │       │   │   ├── cpu_gccgo_x86.go
    │       │   │   ├── cpu_linux.go
    │       │   │   ├── cpu_linux_arm.go
    │       │   │   ├── cpu_linux_arm64.go
    │       │   │   ├── cpu_linux_loong64.go
    │       │   │   ├── cpu_linux_mips64x.go
    │       │   │   ├── cpu_linux_noinit.go
    │       │   │   ├── cpu_linux_ppc64x.go
    │       │   │   ├── cpu_linux_riscv64.go
    │       │   │   ├── cpu_linux_s390x.go
    │       │   │   ├── cpu_loong64.go
    │       │   │   ├── cpu_loong64.s
    │       │   │   ├── cpu_mips64x.go
    │       │   │   ├── cpu_mipsx.go
    │       │   │   ├── cpu_netbsd_arm64.go
    │       │   │   ├── cpu_openbsd_arm64.go
    │       │   │   ├── cpu_openbsd_arm64.s
    │       │   │   ├── cpu_other_arm.go
    │       │   │   ├── cpu_other_arm64.go
    │       │   │   ├── cpu_other_mips64x.go
    │       │   │   ├── cpu_other_ppc64x.go
    │       │   │   ├── cpu_other_riscv64.go
    │       │   │   ├── cpu_other_x86.go
    │       │   │   ├── cpu_ppc64x.go
    │       │   │   ├── cpu_riscv64.go
    │       │   │   ├── cpu_s390x.go
    │       │   │   ├── cpu_s390x.s
    │       │   │   ├── cpu_wasm.go
    │       │   │   ├── cpu_x86.go
    │       │   │   ├── cpu_zos.go
    │       │   │   ├── cpu_zos_s390x.go
    │       │   │   ├── endian_big.go
    │       │   │   ├── endian_little.go
    │       │   │   ├── hwcap_linux.go
    │       │   │   ├── parse.go
    │       │   │   ├── proc_cpuinfo_linux.go
    │       │   │   ├── runtime_auxv.go
    │       │   │   ├── runtime_auxv_go121.go
    │       │   │   ├── syscall_aix_gccgo.go
    │       │   │   ├── syscall_aix_ppc64_gc.go
    │       │   │   ├── syscall_darwin_arm64_gc.go
    │       │   │   └── syscall_darwin_x86_gc.go
    │       │   ├── plan9/
    │       │   │   ├── asm.s
    │       │   │   ├── asm_plan9_386.s
    │       │   │   ├── asm_plan9_amd64.s
    │       │   │   ├── asm_plan9_arm.s
    │       │   │   ├── const_plan9.go
    │       │   │   ├── dir_plan9.go
    │       │   │   ├── env_plan9.go
    │       │   │   ├── errors_plan9.go
    │       │   │   ├── mkall.sh
    │       │   │   ├── mkerrors.sh
    │       │   │   ├── mksysnum_plan9.sh
    │       │   │   ├── pwd_plan9.go
    │       │   │   ├── race.go
    │       │   │   ├── race0.go
    │       │   │   ├── str.go
    │       │   │   ├── syscall.go
    │       │   │   ├── syscall_plan9.go
    │       │   │   ├── zsyscall_plan9_386.go
    │       │   │   ├── zsyscall_plan9_amd64.go
    │       │   │   ├── zsyscall_plan9_arm.go
    │       │   │   └── zsysnum_plan9.go
    │       │   ├── unix/
    │       │   │   ├── .gitignore
    │       │   │   ├── README.md
    │       │   │   ├── affinity_linux.go
    │       │   │   ├── aliases.go
    │       │   │   ├── asm_aix_ppc64.s
    │       │   │   ├── asm_bsd_386.s
    │       │   │   ├── asm_bsd_amd64.s
    │       │   │   ├── asm_bsd_arm.s
    │       │   │   ├── asm_bsd_arm64.s
    │       │   │   ├── asm_bsd_ppc64.s
    │       │   │   ├── asm_bsd_riscv64.s
    │       │   │   ├── asm_linux_386.s
    │       │   │   ├── asm_linux_amd64.s
    │       │   │   ├── asm_linux_arm.s
    │       │   │   ├── asm_linux_arm64.s
    │       │   │   ├── asm_linux_loong64.s
    │       │   │   ├── asm_linux_mips64x.s
    │       │   │   ├── asm_linux_mipsx.s
    │       │   │   ├── asm_linux_ppc64x.s
    │       │   │   ├── asm_linux_riscv64.s
    │       │   │   ├── asm_linux_s390x.s
    │       │   │   ├── asm_openbsd_mips64.s
    │       │   │   ├── asm_solaris_amd64.s
    │       │   │   ├── asm_zos_s390x.s
    │       │   │   ├── auxv.go
    │       │   │   ├── auxv_unsupported.go
    │       │   │   ├── bluetooth_linux.go
    │       │   │   ├── bpxsvc_zos.go
    │       │   │   ├── bpxsvc_zos.s
    │       │   │   ├── cap_freebsd.go
    │       │   │   ├── constants.go
    │       │   │   ├── dev_aix_ppc.go
    │       │   │   ├── dev_aix_ppc64.go
    │       │   │   ├── dev_darwin.go
    │       │   │   ├── dev_dragonfly.go
    │       │   │   ├── dev_freebsd.go
    │       │   │   ├── dev_linux.go
    │       │   │   ├── dev_netbsd.go
    │       │   │   ├── dev_openbsd.go
    │       │   │   ├── dev_zos.go
    │       │   │   ├── dirent.go
    │       │   │   ├── endian_big.go
    │       │   │   ├── endian_little.go
    │       │   │   ├── env_unix.go
    │       │   │   ├── fcntl.go
    │       │   │   ├── fcntl_darwin.go
    │       │   │   ├── fcntl_linux_32bit.go
    │       │   │   ├── fdset.go
    │       │   │   ├── gccgo.go
    │       │   │   ├── gccgo_c.c
    │       │   │   ├── gccgo_linux_amd64.go
    │       │   │   ├── ifreq_linux.go
    │       │   │   ├── ioctl_linux.go
    │       │   │   ├── ioctl_signed.go
    │       │   │   ├── ioctl_unsigned.go
    │       │   │   ├── ioctl_zos.go
    │       │   │   ├── mkall.sh
    │       │   │   ├── mkerrors.sh
    │       │   │   ├── mmap_nomremap.go
    │       │   │   ├── mremap.go
    │       │   │   ├── pagesize_unix.go
    │       │   │   ├── pledge_openbsd.go
    │       │   │   ├── ptrace_darwin.go
    │       │   │   ├── ptrace_ios.go
    │       │   │   ├── race.go
    │       │   │   ├── race0.go
    │       │   │   ├── readdirent_getdents.go
    │       │   │   ├── readdirent_getdirentries.go
    │       │   │   ├── sockcmsg_dragonfly.go
    │       │   │   ├── sockcmsg_linux.go
    │       │   │   ├── sockcmsg_unix.go
    │       │   │   ├── sockcmsg_unix_other.go
    │       │   │   ├── sockcmsg_zos.go
    │       │   │   ├── symaddr_zos_s390x.s
    │       │   │   ├── syscall.go
    │       │   │   ├── syscall_aix.go
    │       │   │   ├── syscall_aix_ppc.go
    │       │   │   ├── syscall_aix_ppc64.go
    │       │   │   ├── syscall_bsd.go
    │       │   │   ├── syscall_darwin.go
    │       │   │   ├── syscall_darwin_amd64.go
    │       │   │   ├── syscall_darwin_arm64.go
    │       │   │   ├── syscall_darwin_libSystem.go
    │       │   │   ├── syscall_dragonfly.go
    │       │   │   ├── syscall_dragonfly_amd64.go
    │       │   │   ├── syscall_freebsd.go
    │       │   │   ├── syscall_freebsd_386.go
    │       │   │   ├── syscall_freebsd_amd64.go
    │       │   │   ├── syscall_freebsd_arm.go
    │       │   │   ├── syscall_freebsd_arm64.go
    │       │   │   ├── syscall_freebsd_riscv64.go
    │       │   │   ├── syscall_hurd.go
    │       │   │   ├── syscall_hurd_386.go
    │       │   │   ├── syscall_illumos.go
    │       │   │   ├── syscall_linux.go
    │       │   │   ├── syscall_linux_386.go
    │       │   │   ├── syscall_linux_alarm.go
    │       │   │   ├── syscall_linux_amd64.go
    │       │   │   ├── syscall_linux_amd64_gc.go
    │       │   │   ├── syscall_linux_arm.go
    │       │   │   ├── syscall_linux_arm64.go
    │       │   │   ├── syscall_linux_gc.go
    │       │   │   ├── syscall_linux_gc_386.go
    │       │   │   ├── syscall_linux_gc_arm.go
    │       │   │   ├── syscall_linux_gccgo_386.go
    │       │   │   ├── syscall_linux_gccgo_arm.go
    │       │   │   ├── syscall_linux_loong64.go
    │       │   │   ├── syscall_linux_mips64x.go
    │       │   │   ├── syscall_linux_mipsx.go
    │       │   │   ├── syscall_linux_ppc.go
    │       │   │   ├── syscall_linux_ppc64x.go
    │       │   │   ├── syscall_linux_riscv64.go
    │       │   │   ├── syscall_linux_s390x.go
    │       │   │   ├── syscall_linux_sparc64.go
    │       │   │   ├── syscall_netbsd.go
    │       │   │   ├── syscall_netbsd_386.go
    │       │   │   ├── syscall_netbsd_amd64.go
    │       │   │   ├── syscall_netbsd_arm.go
    │       │   │   ├── syscall_netbsd_arm64.go
    │       │   │   ├── syscall_openbsd.go
    │       │   │   ├── syscall_openbsd_386.go
    │       │   │   ├── syscall_openbsd_amd64.go
    │       │   │   ├── syscall_openbsd_arm.go
    │       │   │   ├── syscall_openbsd_arm64.go
    │       │   │   ├── syscall_openbsd_libc.go
    │       │   │   ├── syscall_openbsd_mips64.go
    │       │   │   ├── syscall_openbsd_ppc64.go
    │       │   │   ├── syscall_openbsd_riscv64.go
    │       │   │   ├── syscall_solaris.go
    │       │   │   ├── syscall_solaris_amd64.go
    │       │   │   ├── syscall_unix.go
    │       │   │   ├── syscall_unix_gc.go
    │       │   │   ├── syscall_unix_gc_ppc64x.go
    │       │   │   ├── syscall_zos_s390x.go
    │       │   │   ├── sysvshm_linux.go
    │       │   │   ├── sysvshm_unix.go
    │       │   │   ├── sysvshm_unix_other.go
    │       │   │   ├── timestruct.go
    │       │   │   ├── unveil_openbsd.go
    │       │   │   ├── vgetrandom_linux.go
    │       │   │   ├── vgetrandom_unsupported.go
    │       │   │   ├── xattr_bsd.go
    │       │   │   ├── zerrors_aix_ppc.go
    │       │   │   ├── zerrors_aix_ppc64.go
    │       │   │   ├── zerrors_darwin_amd64.go
    │       │   │   ├── zerrors_darwin_arm64.go
    │       │   │   ├── zerrors_dragonfly_amd64.go
    │       │   │   ├── zerrors_freebsd_386.go
    │       │   │   ├── zerrors_freebsd_amd64.go
    │       │   │   ├── zerrors_freebsd_arm.go
    │       │   │   ├── zerrors_freebsd_arm64.go
    │       │   │   ├── zerrors_freebsd_riscv64.go
    │       │   │   ├── zerrors_linux.go
    │       │   │   ├── zerrors_linux_386.go
    │       │   │   ├── zerrors_linux_amd64.go
    │       │   │   ├── zerrors_linux_arm.go
    │       │   │   ├── zerrors_linux_arm64.go
    │       │   │   ├── zerrors_linux_loong64.go
    │       │   │   ├── zerrors_linux_mips.go
    │       │   │   ├── zerrors_linux_mips64.go
    │       │   │   ├── zerrors_linux_mips64le.go
    │       │   │   ├── zerrors_linux_mipsle.go
    │       │   │   ├── zerrors_linux_ppc.go
    │       │   │   ├── zerrors_linux_ppc64.go
    │       │   │   ├── zerrors_linux_ppc64le.go
    │       │   │   ├── zerrors_linux_riscv64.go
    │       │   │   ├── zerrors_linux_s390x.go
    │       │   │   ├── zerrors_linux_sparc64.go
    │       │   │   ├── zerrors_netbsd_386.go
    │       │   │   ├── zerrors_netbsd_amd64.go
    │       │   │   ├── zerrors_netbsd_arm.go
    │       │   │   ├── zerrors_netbsd_arm64.go
    │       │   │   ├── zerrors_openbsd_386.go
    │       │   │   ├── zerrors_openbsd_amd64.go
    │       │   │   ├── zerrors_openbsd_arm.go
    │       │   │   ├── zerrors_openbsd_arm64.go
    │       │   │   ├── zerrors_openbsd_mips64.go
    │       │   │   ├── zerrors_openbsd_ppc64.go
    │       │   │   ├── zerrors_openbsd_riscv64.go
    │       │   │   ├── zerrors_solaris_amd64.go
    │       │   │   ├── zerrors_zos_s390x.go
    │       │   │   ├── zptrace_armnn_linux.go
    │       │   │   ├── zptrace_linux_arm64.go
    │       │   │   ├── zptrace_mipsnn_linux.go
    │       │   │   ├── zptrace_mipsnnle_linux.go
    │       │   │   ├── zptrace_x86_linux.go
    │       │   │   ├── zsymaddr_zos_s390x.s
    │       │   │   ├── zsyscall_aix_ppc.go
    │       │   │   ├── zsyscall_aix_ppc64.go
    │       │   │   ├── zsyscall_aix_ppc64_gc.go
    │       │   │   ├── zsyscall_aix_ppc64_gccgo.go
    │       │   │   ├── zsyscall_darwin_amd64.go
    │       │   │   ├── zsyscall_darwin_amd64.s
    │       │   │   ├── zsyscall_darwin_arm64.go
    │       │   │   ├── zsyscall_darwin_arm64.s
    │       │   │   ├── zsyscall_dragonfly_amd64.go
    │       │   │   ├── zsyscall_freebsd_386.go
    │       │   │   ├── zsyscall_freebsd_amd64.go
    │       │   │   ├── zsyscall_freebsd_arm.go
    │       │   │   ├── zsyscall_freebsd_arm64.go
    │       │   │   ├── zsyscall_freebsd_riscv64.go
    │       │   │   ├── zsyscall_illumos_amd64.go
    │       │   │   ├── zsyscall_linux.go
    │       │   │   ├── zsyscall_linux_386.go
    │       │   │   ├── zsyscall_linux_amd64.go
    │       │   │   ├── zsyscall_linux_arm.go
    │       │   │   ├── zsyscall_linux_arm64.go
    │       │   │   ├── zsyscall_linux_loong64.go
    │       │   │   ├── zsyscall_linux_mips.go
    │       │   │   ├── zsyscall_linux_mips64.go
    │       │   │   ├── zsyscall_linux_mips64le.go
    │       │   │   ├── zsyscall_linux_mipsle.go
    │       │   │   ├── zsyscall_linux_ppc.go
    │       │   │   ├── zsyscall_linux_ppc64.go
    │       │   │   ├── zsyscall_linux_ppc64le.go
    │       │   │   ├── zsyscall_linux_riscv64.go
    │       │   │   ├── zsyscall_linux_s390x.go
    │       │   │   ├── zsyscall_linux_sparc64.go
    │       │   │   ├── zsyscall_netbsd_386.go
    │       │   │   ├── zsyscall_netbsd_amd64.go
    │       │   │   ├── zsyscall_netbsd_arm.go
    │       │   │   ├── zsyscall_netbsd_arm64.go
    │       │   │   ├── zsyscall_openbsd_386.go
    │       │   │   ├── zsyscall_openbsd_386.s
    │       │   │   ├── zsyscall_openbsd_amd64.go
    │       │   │   ├── zsyscall_openbsd_amd64.s
    │       │   │   ├── zsyscall_openbsd_arm.go
    │       │   │   ├── zsyscall_openbsd_arm.s
    │       │   │   ├── zsyscall_openbsd_arm64.go
    │       │   │   ├── zsyscall_openbsd_arm64.s
    │       │   │   ├── zsyscall_openbsd_mips64.go
    │       │   │   ├── zsyscall_openbsd_mips64.s
    │       │   │   ├── zsyscall_openbsd_ppc64.go
    │       │   │   ├── zsyscall_openbsd_ppc64.s
    │       │   │   ├── zsyscall_openbsd_riscv64.go
    │       │   │   ├── zsyscall_openbsd_riscv64.s
    │       │   │   ├── zsyscall_solaris_amd64.go
    │       │   │   ├── zsyscall_zos_s390x.go
    │       │   │   ├── zsysctl_openbsd_386.go
    │       │   │   ├── zsysctl_openbsd_amd64.go
    │       │   │   ├── zsysctl_openbsd_arm.go
    │       │   │   ├── zsysctl_openbsd_arm64.go
    │       │   │   ├── zsysctl_openbsd_mips64.go
    │       │   │   ├── zsysctl_openbsd_ppc64.go
    │       │   │   ├── zsysctl_openbsd_riscv64.go
    │       │   │   ├── zsysnum_darwin_amd64.go
    │       │   │   ├── zsysnum_darwin_arm64.go
    │       │   │   ├── zsysnum_dragonfly_amd64.go
    │       │   │   ├── zsysnum_freebsd_386.go
    │       │   │   ├── zsysnum_freebsd_amd64.go
    │       │   │   ├── zsysnum_freebsd_arm.go
    │       │   │   ├── zsysnum_freebsd_arm64.go
    │       │   │   ├── zsysnum_freebsd_riscv64.go
    │       │   │   ├── zsysnum_linux_386.go
    │       │   │   ├── zsysnum_linux_amd64.go
    │       │   │   ├── zsysnum_linux_arm.go
    │       │   │   ├── zsysnum_linux_arm64.go
    │       │   │   ├── zsysnum_linux_loong64.go
    │       │   │   ├── zsysnum_linux_mips.go
    │       │   │   ├── zsysnum_linux_mips64.go
    │       │   │   ├── zsysnum_linux_mips64le.go
    │       │   │   ├── zsysnum_linux_mipsle.go
    │       │   │   ├── zsysnum_linux_ppc.go
    │       │   │   ├── zsysnum_linux_ppc64.go
    │       │   │   ├── zsysnum_linux_ppc64le.go
    │       │   │   ├── zsysnum_linux_riscv64.go
    │       │   │   ├── zsysnum_linux_s390x.go
    │       │   │   ├── zsysnum_linux_sparc64.go
    │       │   │   ├── zsysnum_netbsd_386.go
    │       │   │   ├── zsysnum_netbsd_amd64.go
    │       │   │   ├── zsysnum_netbsd_arm.go
    │       │   │   ├── zsysnum_netbsd_arm64.go
    │       │   │   ├── zsysnum_openbsd_386.go
    │       │   │   ├── zsysnum_openbsd_amd64.go
    │       │   │   ├── zsysnum_openbsd_arm.go
    │       │   │   ├── zsysnum_openbsd_arm64.go
    │       │   │   ├── zsysnum_openbsd_mips64.go
    │       │   │   ├── zsysnum_openbsd_ppc64.go
    │       │   │   ├── zsysnum_openbsd_riscv64.go
    │       │   │   ├── zsysnum_zos_s390x.go
    │       │   │   ├── ztypes_aix_ppc.go
    │       │   │   ├── ztypes_aix_ppc64.go
    │       │   │   ├── ztypes_darwin_amd64.go
    │       │   │   ├── ztypes_darwin_arm64.go
    │       │   │   ├── ztypes_dragonfly_amd64.go
    │       │   │   ├── ztypes_freebsd_386.go
    │       │   │   ├── ztypes_freebsd_amd64.go
    │       │   │   ├── ztypes_freebsd_arm.go
    │       │   │   ├── ztypes_freebsd_arm64.go
    │       │   │   ├── ztypes_freebsd_riscv64.go
    │       │   │   ├── ztypes_linux.go
    │       │   │   ├── ztypes_linux_386.go
    │       │   │   ├── ztypes_linux_amd64.go
    │       │   │   ├── ztypes_linux_arm.go
    │       │   │   ├── ztypes_linux_arm64.go
    │       │   │   ├── ztypes_linux_loong64.go
    │       │   │   ├── ztypes_linux_mips.go
    │       │   │   ├── ztypes_linux_mips64.go
    │       │   │   ├── ztypes_linux_mips64le.go
    │       │   │   ├── ztypes_linux_mipsle.go
    │       │   │   ├── ztypes_linux_ppc.go
    │       │   │   ├── ztypes_linux_ppc64.go
    │       │   │   ├── ztypes_linux_ppc64le.go
    │       │   │   ├── ztypes_linux_riscv64.go
    │       │   │   ├── ztypes_linux_s390x.go
    │       │   │   ├── ztypes_linux_sparc64.go
    │       │   │   ├── ztypes_netbsd_386.go
    │       │   │   ├── ztypes_netbsd_amd64.go
    │       │   │   ├── ztypes_netbsd_arm.go
    │       │   │   ├── ztypes_netbsd_arm64.go
    │       │   │   ├── ztypes_openbsd_386.go
    │       │   │   ├── ztypes_openbsd_amd64.go
    │       │   │   ├── ztypes_openbsd_arm.go
    │       │   │   ├── ztypes_openbsd_arm64.go
    │       │   │   ├── ztypes_openbsd_mips64.go
    │       │   │   ├── ztypes_openbsd_ppc64.go
    │       │   │   ├── ztypes_openbsd_riscv64.go
    │       │   │   ├── ztypes_solaris_amd64.go
    │       │   │   └── ztypes_zos_s390x.go
    │       │   └── windows/
    │       │       ├── aliases.go
    │       │       ├── dll_windows.go
    │       │       ├── env_windows.go
    │       │       ├── eventlog.go
    │       │       ├── exec_windows.go
    │       │       ├── memory_windows.go
    │       │       ├── mkerrors.bash
    │       │       ├── mkknownfolderids.bash
    │       │       ├── mksyscall.go
    │       │       ├── race.go
    │       │       ├── race0.go
    │       │       ├── registry/
    │       │       │   ├── key.go
    │       │       │   ├── mksyscall.go
    │       │       │   ├── syscall.go
    │       │       │   ├── value.go
    │       │       │   └── zsyscall_windows.go
    │       │       ├── security_windows.go
    │       │       ├── service.go
    │       │       ├── setupapi_windows.go
    │       │       ├── str.go
    │       │       ├── syscall.go
    │       │       ├── syscall_windows.go
    │       │       ├── types_windows.go
    │       │       ├── types_windows_386.go
    │       │       ├── types_windows_amd64.go
    │       │       ├── types_windows_arm.go
    │       │       ├── types_windows_arm64.go
    │       │       ├── zerrors_windows.go
    │       │       ├── zknownfolderids_windows.go
    │       │       └── zsyscall_windows.go
    │       ├── term/
    │       │   ├── CONTRIBUTING.md
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── README.md
    │       │   ├── codereview.cfg
    │       │   ├── term.go
    │       │   ├── term_plan9.go
    │       │   ├── term_unix.go
    │       │   ├── term_unix_bsd.go
    │       │   ├── term_unix_other.go
    │       │   ├── term_unsupported.go
    │       │   ├── term_windows.go
    │       │   └── terminal.go
    │       ├── text/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── secure/
    │       │   │   └── bidirule/
    │       │   │       └── bidirule.go
    │       │   ├── transform/
    │       │   │   └── transform.go
    │       │   └── unicode/
    │       │       ├── bidi/
    │       │       │   ├── bidi.go
    │       │       │   ├── bracket.go
    │       │       │   ├── core.go
    │       │       │   ├── prop.go
    │       │       │   ├── tables15.0.0.go
    │       │       │   ├── tables17.0.0.go
    │       │       │   └── trieval.go
    │       │       └── norm/
    │       │           ├── composition.go
    │       │           ├── forminfo.go
    │       │           ├── input.go
    │       │           ├── iter.go
    │       │           ├── normalize.go
    │       │           ├── readwriter.go
    │       │           ├── tables15.0.0.go
    │       │           ├── tables17.0.0.go
    │       │           ├── transform.go
    │       │           └── trie.go
    │       └── time/
    │           ├── LICENSE
    │           ├── PATENTS
    │           └── rate/
    │               ├── rate.go
    │               └── sometimes.go
    ├── google.golang.org/
    │   ├── genproto/
    │   │   └── googleapis/
    │   │       ├── api/
    │   │       │   ├── LICENSE
    │   │       │   └── httpbody/
    │   │       │       └── httpbody.pb.go
    │   │       └── rpc/
    │   │           ├── LICENSE
    │   │           ├── errdetails/
    │   │           │   └── error_details.pb.go
    │   │           └── status/
    │   │               └── status.pb.go
    │   ├── grpc/
    │   │   ├── AUTHORS
    │   │   ├── CODE-OF-CONDUCT.md
    │   │   ├── CONTRIBUTING.md
    │   │   ├── GOVERNANCE.md
    │   │   ├── LICENSE
    │   │   ├── MAINTAINERS.md
    │   │   ├── Makefile
    │   │   ├── NOTICE.txt
    │   │   ├── README.md
    │   │   ├── SECURITY.md
    │   │   ├── attributes/
    │   │   │   └── attributes.go
    │   │   ├── backoff/
    │   │   │   └── backoff.go
    │   │   ├── backoff.go
    │   │   ├── balancer/
    │   │   │   ├── balancer.go
    │   │   │   ├── base/
    │   │   │   │   ├── balancer.go
    │   │   │   │   └── base.go
    │   │   │   ├── conn_state_evaluator.go
    │   │   │   ├── endpointsharding/
    │   │   │   │   └── endpointsharding.go
    │   │   │   ├── grpclb/
    │   │   │   │   └── state/
    │   │   │   │       └── state.go
    │   │   │   ├── pickfirst/
    │   │   │   │   ├── internal/
    │   │   │   │   │   └── internal.go
    │   │   │   │   └── pickfirst.go
    │   │   │   ├── roundrobin/
    │   │   │   │   └── roundrobin.go
    │   │   │   └── subconn.go
    │   │   ├── balancer_wrapper.go
    │   │   ├── binarylog/
    │   │   │   └── grpc_binarylog_v1/
    │   │   │       └── binarylog.pb.go
    │   │   ├── call.go
    │   │   ├── channelz/
    │   │   │   └── channelz.go
    │   │   ├── clientconn.go
    │   │   ├── codec.go
    │   │   ├── codes/
    │   │   │   ├── code_string.go
    │   │   │   └── codes.go
    │   │   ├── connectivity/
    │   │   │   └── connectivity.go
    │   │   ├── credentials/
    │   │   │   ├── credentials.go
    │   │   │   ├── insecure/
    │   │   │   │   └── insecure.go
    │   │   │   └── tls.go
    │   │   ├── dialoptions.go
    │   │   ├── doc.go
    │   │   ├── encoding/
    │   │   │   ├── encoding.go
    │   │   │   ├── encoding_v2.go
    │   │   │   ├── gzip/
    │   │   │   │   └── gzip.go
    │   │   │   ├── internal/
    │   │   │   │   └── internal.go
    │   │   │   └── proto/
    │   │   │       └── proto.go
    │   │   ├── experimental/
    │   │   │   └── stats/
    │   │   │       ├── metricregistry.go
    │   │   │       └── metrics.go
    │   │   ├── grpclog/
    │   │   │   ├── component.go
    │   │   │   ├── grpclog.go
    │   │   │   ├── internal/
    │   │   │   │   ├── grpclog.go
    │   │   │   │   ├── logger.go
    │   │   │   │   └── loggerv2.go
    │   │   │   ├── logger.go
    │   │   │   └── loggerv2.go
    │   │   ├── health/
    │   │   │   └── grpc_health_v1/
    │   │   │       ├── health.pb.go
    │   │   │       └── health_grpc.pb.go
    │   │   ├── interceptor.go
    │   │   ├── internal/
    │   │   │   ├── backoff/
    │   │   │   │   └── backoff.go
    │   │   │   ├── balancer/
    │   │   │   │   ├── gracefulswitch/
    │   │   │   │   │   ├── config.go
    │   │   │   │   │   └── gracefulswitch.go
    │   │   │   │   └── weight/
    │   │   │   │       └── weight.go
    │   │   │   ├── balancerload/
    │   │   │   │   └── load.go
    │   │   │   ├── binarylog/
    │   │   │   │   ├── binarylog.go
    │   │   │   │   ├── binarylog_testutil.go
    │   │   │   │   ├── env_config.go
    │   │   │   │   ├── method_logger.go
    │   │   │   │   └── sink.go
    │   │   │   ├── buffer/
    │   │   │   │   └── unbounded.go
    │   │   │   ├── channelz/
    │   │   │   │   ├── channel.go
    │   │   │   │   ├── channelmap.go
    │   │   │   │   ├── funcs.go
    │   │   │   │   ├── logging.go
    │   │   │   │   ├── server.go
    │   │   │   │   ├── socket.go
    │   │   │   │   ├── subchannel.go
    │   │   │   │   ├── syscall_linux.go
    │   │   │   │   ├── syscall_nonlinux.go
    │   │   │   │   └── trace.go
    │   │   │   ├── credentials/
    │   │   │   │   ├── credentials.go
    │   │   │   │   ├── spiffe.go
    │   │   │   │   ├── syscallconn.go
    │   │   │   │   └── util.go
    │   │   │   ├── envconfig/
    │   │   │   │   ├── envconfig.go
    │   │   │   │   ├── observability.go
    │   │   │   │   └── xds.go
    │   │   │   ├── experimental.go
    │   │   │   ├── grpclog/
    │   │   │   │   └── prefix_logger.go
    │   │   │   ├── grpcsync/
    │   │   │   │   ├── callback_serializer.go
    │   │   │   │   ├── event.go
    │   │   │   │   └── pubsub.go
    │   │   │   ├── grpcutil/
    │   │   │   │   ├── compressor.go
    │   │   │   │   ├── encode_duration.go
    │   │   │   │   ├── grpcutil.go
    │   │   │   │   ├── metadata.go
    │   │   │   │   ├── method.go
    │   │   │   │   └── regex.go
    │   │   │   ├── idle/
    │   │   │   │   └── idle.go
    │   │   │   ├── internal.go
    │   │   │   ├── mem/
    │   │   │   │   └── buffer_pool.go
    │   │   │   ├── metadata/
    │   │   │   │   └── metadata.go
    │   │   │   ├── pretty/
    │   │   │   │   └── pretty.go
    │   │   │   ├── proxyattributes/
    │   │   │   │   └── proxyattributes.go
    │   │   │   ├── resolver/
    │   │   │   │   ├── config_selector.go
    │   │   │   │   ├── delegatingresolver/
    │   │   │   │   │   └── delegatingresolver.go
    │   │   │   │   ├── dns/
    │   │   │   │   │   ├── dns_resolver.go
    │   │   │   │   │   └── internal/
    │   │   │   │   │       └── internal.go
    │   │   │   │   ├── passthrough/
    │   │   │   │   │   └── passthrough.go
    │   │   │   │   └── unix/
    │   │   │   │       └── unix.go
    │   │   │   ├── serviceconfig/
    │   │   │   │   ├── duration.go
    │   │   │   │   └── serviceconfig.go
    │   │   │   ├── stats/
    │   │   │   │   ├── labels.go
    │   │   │   │   ├── metrics_recorder_list.go
    │   │   │   │   └── stats.go
    │   │   │   ├── status/
    │   │   │   │   └── status.go
    │   │   │   ├── syscall/
    │   │   │   │   ├── syscall_linux.go
    │   │   │   │   └── syscall_nonlinux.go
    │   │   │   ├── tcp_keepalive_others.go
    │   │   │   ├── tcp_keepalive_unix.go
    │   │   │   ├── tcp_keepalive_windows.go
    │   │   │   └── transport/
    │   │   │       ├── bdp_estimator.go
    │   │   │       ├── client_stream.go
    │   │   │       ├── controlbuf.go
    │   │   │       ├── defaults.go
    │   │   │       ├── flowcontrol.go
    │   │   │       ├── handler_server.go
    │   │   │       ├── http2_client.go
    │   │   │       ├── http2_server.go
    │   │   │       ├── http_util.go
    │   │   │       ├── logging.go
    │   │   │       ├── networktype/
    │   │   │       │   └── networktype.go
    │   │   │       ├── proxy.go
    │   │   │       ├── readyreader/
    │   │   │       │   ├── raw_conn_linux.go
    │   │   │       │   ├── raw_conn_nonlinux.go
    │   │   │       │   └── ready_reader.go
    │   │   │       ├── server_stream.go
    │   │   │       └── transport.go
    │   │   ├── keepalive/
    │   │   │   └── keepalive.go
    │   │   ├── mem/
    │   │   │   ├── buffer_pool.go
    │   │   │   ├── buffer_slice.go
    │   │   │   └── buffers.go
    │   │   ├── metadata/
    │   │   │   └── metadata.go
    │   │   ├── peer/
    │   │   │   └── peer.go
    │   │   ├── picker_wrapper.go
    │   │   ├── preloader.go
    │   │   ├── reflection/
    │   │   │   ├── README.md
    │   │   │   ├── adapt.go
    │   │   │   ├── grpc_reflection_v1/
    │   │   │   │   ├── reflection.pb.go
    │   │   │   │   └── reflection_grpc.pb.go
    │   │   │   ├── grpc_reflection_v1alpha/
    │   │   │   │   ├── reflection.pb.go
    │   │   │   │   └── reflection_grpc.pb.go
    │   │   │   ├── internal/
    │   │   │   │   └── internal.go
    │   │   │   └── serverreflection.go
    │   │   ├── resolver/
    │   │   │   ├── dns/
    │   │   │   │   └── dns_resolver.go
    │   │   │   ├── map.go
    │   │   │   └── resolver.go
    │   │   ├── resolver_wrapper.go
    │   │   ├── rpc_util.go
    │   │   ├── server.go
    │   │   ├── service_config.go
    │   │   ├── serviceconfig/
    │   │   │   └── serviceconfig.go
    │   │   ├── stats/
    │   │   │   ├── handlers.go
    │   │   │   ├── metrics.go
    │   │   │   └── stats.go
    │   │   ├── status/
    │   │   │   └── status.go
    │   │   ├── stream.go
    │   │   ├── stream_interfaces.go
    │   │   ├── tap/
    │   │   │   └── tap.go
    │   │   ├── trace.go
    │   │   ├── trace_notrace.go
    │   │   ├── trace_withtrace.go
    │   │   └── version.go
    │   └── protobuf/
    │       ├── LICENSE
    │       ├── PATENTS
    │       ├── encoding/
    │       │   ├── protodelim/
    │       │   │   └── protodelim.go
    │       │   ├── protojson/
    │       │   │   ├── decode.go
    │       │   │   ├── doc.go
    │       │   │   ├── encode.go
    │       │   │   └── well_known_types.go
    │       │   ├── prototext/
    │       │   │   ├── decode.go
    │       │   │   ├── doc.go
    │       │   │   └── encode.go
    │       │   └── protowire/
    │       │       └── wire.go
    │       ├── internal/
    │       │   ├── descfmt/
    │       │   │   └── stringer.go
    │       │   ├── descopts/
    │       │   │   └── options.go
    │       │   ├── detrand/
    │       │   │   └── rand.go
    │       │   ├── editiondefaults/
    │       │   │   ├── defaults.go
    │       │   │   └── editions_defaults.binpb
    │       │   ├── editionssupport/
    │       │   │   └── editions.go
    │       │   ├── encoding/
    │       │   │   ├── defval/
    │       │   │   │   └── default.go
    │       │   │   ├── json/
    │       │   │   │   ├── decode.go
    │       │   │   │   ├── decode_number.go
    │       │   │   │   ├── decode_string.go
    │       │   │   │   ├── decode_token.go
    │       │   │   │   └── encode.go
    │       │   │   ├── messageset/
    │       │   │   │   └── messageset.go
    │       │   │   ├── tag/
    │       │   │   │   └── tag.go
    │       │   │   └── text/
    │       │   │       ├── decode.go
    │       │   │       ├── decode_number.go
    │       │   │       ├── decode_string.go
    │       │   │       ├── decode_token.go
    │       │   │       ├── doc.go
    │       │   │       └── encode.go
    │       │   ├── errors/
    │       │   │   └── errors.go
    │       │   ├── filedesc/
    │       │   │   ├── build.go
    │       │   │   ├── desc.go
    │       │   │   ├── desc_init.go
    │       │   │   ├── desc_lazy.go
    │       │   │   ├── desc_list.go
    │       │   │   ├── desc_list_gen.go
    │       │   │   ├── editions.go
    │       │   │   ├── placeholder.go
    │       │   │   └── presence.go
    │       │   ├── filetype/
    │       │   │   └── build.go
    │       │   ├── flags/
    │       │   │   ├── flags.go
    │       │   │   ├── proto_legacy_disable.go
    │       │   │   └── proto_legacy_enable.go
    │       │   ├── genid/
    │       │   │   ├── any_gen.go
    │       │   │   ├── api_gen.go
    │       │   │   ├── descriptor_gen.go
    │       │   │   ├── doc.go
    │       │   │   ├── duration_gen.go
    │       │   │   ├── empty_gen.go
    │       │   │   ├── field_mask_gen.go
    │       │   │   ├── go_features_gen.go
    │       │   │   ├── goname.go
    │       │   │   ├── map_entry.go
    │       │   │   ├── name.go
    │       │   │   ├── source_context_gen.go
    │       │   │   ├── struct_gen.go
    │       │   │   ├── timestamp_gen.go
    │       │   │   ├── type_gen.go
    │       │   │   ├── wrappers.go
    │       │   │   └── wrappers_gen.go
    │       │   ├── impl/
    │       │   │   ├── api_export.go
    │       │   │   ├── api_export_opaque.go
    │       │   │   ├── bitmap.go
    │       │   │   ├── bitmap_race.go
    │       │   │   ├── checkinit.go
    │       │   │   ├── codec_extension.go
    │       │   │   ├── codec_field.go
    │       │   │   ├── codec_field_opaque.go
    │       │   │   ├── codec_gen.go
    │       │   │   ├── codec_map.go
    │       │   │   ├── codec_message.go
    │       │   │   ├── codec_message_opaque.go
    │       │   │   ├── codec_messageset.go
    │       │   │   ├── codec_tables.go
    │       │   │   ├── codec_unsafe.go
    │       │   │   ├── convert.go
    │       │   │   ├── convert_list.go
    │       │   │   ├── convert_map.go
    │       │   │   ├── decode.go
    │       │   │   ├── encode.go
    │       │   │   ├── enum.go
    │       │   │   ├── equal.go
    │       │   │   ├── extension.go
    │       │   │   ├── lazy.go
    │       │   │   ├── legacy_enum.go
    │       │   │   ├── legacy_export.go
    │       │   │   ├── legacy_extension.go
    │       │   │   ├── legacy_file.go
    │       │   │   ├── legacy_message.go
    │       │   │   ├── merge.go
    │       │   │   ├── merge_gen.go
    │       │   │   ├── message.go
    │       │   │   ├── message_opaque.go
    │       │   │   ├── message_opaque_gen.go
    │       │   │   ├── message_reflect.go
    │       │   │   ├── message_reflect_field.go
    │       │   │   ├── message_reflect_field_gen.go
    │       │   │   ├── message_reflect_gen.go
    │       │   │   ├── pointer_unsafe.go
    │       │   │   ├── pointer_unsafe_opaque.go
    │       │   │   ├── presence.go
    │       │   │   └── validate.go
    │       │   ├── order/
    │       │   │   ├── order.go
    │       │   │   └── range.go
    │       │   ├── pragma/
    │       │   │   └── pragma.go
    │       │   ├── protolazy/
    │       │   │   ├── bufferreader.go
    │       │   │   ├── lazy.go
    │       │   │   └── pointer_unsafe.go
    │       │   ├── set/
    │       │   │   └── ints.go
    │       │   ├── strs/
    │       │   │   ├── strings.go
    │       │   │   └── strings_unsafe.go
    │       │   └── version/
    │       │       └── version.go
    │       ├── proto/
    │       │   ├── checkinit.go
    │       │   ├── decode.go
    │       │   ├── decode_gen.go
    │       │   ├── doc.go
    │       │   ├── encode.go
    │       │   ├── encode_gen.go
    │       │   ├── equal.go
    │       │   ├── extension.go
    │       │   ├── merge.go
    │       │   ├── messageset.go
    │       │   ├── proto.go
    │       │   ├── proto_methods.go
    │       │   ├── proto_reflect.go
    │       │   ├── reset.go
    │       │   ├── size.go
    │       │   ├── size_gen.go
    │       │   ├── wrapperopaque.go
    │       │   └── wrappers.go
    │       ├── protoadapt/
    │       │   └── convert.go
    │       ├── reflect/
    │       │   ├── protodesc/
    │       │   │   ├── desc.go
    │       │   │   ├── desc_init.go
    │       │   │   ├── desc_resolve.go
    │       │   │   ├── desc_validate.go
    │       │   │   ├── editions.go
    │       │   │   └── proto.go
    │       │   ├── protoreflect/
    │       │   │   ├── methods.go
    │       │   │   ├── proto.go
    │       │   │   ├── source.go
    │       │   │   ├── source_gen.go
    │       │   │   ├── type.go
    │       │   │   ├── value.go
    │       │   │   ├── value_equal.go
    │       │   │   ├── value_union.go
    │       │   │   └── value_unsafe.go
    │       │   └── protoregistry/
    │       │       └── registry.go
    │       ├── runtime/
    │       │   ├── protoiface/
    │       │   │   ├── legacy.go
    │       │   │   └── methods.go
    │       │   └── protoimpl/
    │       │       ├── impl.go
    │       │       └── version.go
    │       └── types/
    │           ├── descriptorpb/
    │           │   └── descriptor.pb.go
    │           ├── gofeaturespb/
    │           │   └── go_features.pb.go
    │           └── known/
    │               ├── anypb/
    │               │   └── any.pb.go
    │               ├── durationpb/
    │               │   └── duration.pb.go
    │               ├── fieldmaskpb/
    │               │   └── field_mask.pb.go
    │               ├── structpb/
    │               │   └── struct.pb.go
    │               ├── timestamppb/
    │               │   └── timestamp.pb.go
    │               └── wrapperspb/
    │                   └── wrappers.pb.go
    ├── gopkg.in/
    │   ├── evanphx/
    │   │   └── json-patch.v4/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── errors.go
    │   │       ├── merge.go
    │   │       └── patch.go
    │   ├── gcfg.v1/
    │   │   ├── LICENSE
    │   │   ├── README
    │   │   ├── doc.go
    │   │   ├── errors.go
    │   │   ├── read.go
    │   │   ├── scanner/
    │   │   │   ├── errors.go
    │   │   │   └── scanner.go
    │   │   ├── set.go
    │   │   ├── token/
    │   │   │   ├── position.go
    │   │   │   ├── serialize.go
    │   │   │   └── token.go
    │   │   └── types/
    │   │       ├── bool.go
    │   │       ├── doc.go
    │   │       ├── enum.go
    │   │       ├── int.go
    │   │       └── scan.go
    │   ├── inf.v0/
    │   │   ├── LICENSE
    │   │   ├── dec.go
    │   │   └── rounder.go
    │   ├── natefinch/
    │   │   └── lumberjack.v2/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── chown.go
    │   │       ├── chown_linux.go
    │   │       └── lumberjack.go
    │   ├── warnings.v0/
    │   │   ├── LICENSE
    │   │   ├── README
    │   │   └── warnings.go
    │   ├── yaml.v2/
    │   │   ├── .travis.yml
    │   │   ├── LICENSE
    │   │   ├── LICENSE.libyaml
    │   │   ├── NOTICE
    │   │   ├── README.md
    │   │   ├── apic.go
    │   │   ├── decode.go
    │   │   ├── emitterc.go
    │   │   ├── encode.go
    │   │   ├── parserc.go
    │   │   ├── readerc.go
    │   │   ├── resolve.go
    │   │   ├── scannerc.go
    │   │   ├── sorter.go
    │   │   ├── writerc.go
    │   │   ├── yaml.go
    │   │   ├── yamlh.go
    │   │   └── yamlprivateh.go
    │   └── yaml.v3/
    │       ├── LICENSE
    │       ├── NOTICE
    │       ├── README.md
    │       ├── apic.go
    │       ├── decode.go
    │       ├── emitterc.go
    │       ├── encode.go
    │       ├── parserc.go
    │       ├── readerc.go
    │       ├── resolve.go
    │       ├── scannerc.go
    │       ├── sorter.go
    │       ├── writerc.go
    │       ├── yaml.go
    │       ├── yamlh.go
    │       └── yamlprivateh.go
    ├── k8s.io/
    │   ├── api/
    │   │   ├── LICENSE
    │   │   ├── admissionregistration/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── apidiscovery/
    │   │   │   ├── v2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v2beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── apiserverinternal/
    │   │   │   └── v1alpha1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       └── zz_generated.model_name.go
    │   │   ├── apps/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta2/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── authentication/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── authorization/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── autoscaling/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v2beta1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v2beta2/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── batch/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── certificates/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── coordination/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── core/
    │   │   │   └── v1/
    │   │   │       ├── annotation_key_constants.go
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── lifecycle.go
    │   │   │       ├── objectreference.go
    │   │   │       ├── register.go
    │   │   │       ├── resource.go
    │   │   │       ├── taint.go
    │   │   │       ├── toleration.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── well_known_labels.go
    │   │   │       ├── well_known_taints.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── discovery/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── well_known_labels.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── well_known_labels.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── events/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── extensions/
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       ├── zz_generated.prerelease-lifecycle.go
    │   │   │       └── zz_generated.validations.go
    │   │   ├── flowcontrol/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta3/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── networking/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── well_known_annotations.go
    │   │   │   │   ├── well_known_labels.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── well_known_annotations.go
    │   │   │       ├── well_known_labels.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── node/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   └── zz_generated.model_name.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── policy/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── rbac/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   └── zz_generated.model_name.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── resource/
    │   │   │   ├── v1/
    │   │   │   │   ├── devicetaint.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha3/
    │   │   │   │   ├── devicetaint.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta1/
    │   │   │   │   ├── devicetaint.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types

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

================================================
FILE: .ci-operator.yaml
================================================
build_root_image:
  namespace: openshift
  name: release
  tag: rhel-9-release-golang-1.25-openshift-4.21


================================================
FILE: .coderabbit.yaml
================================================
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: en-US
tone_instructions: "Be concise and direct. No fluff."
early_access: false

reviews:
  profile: chill
  request_changes_workflow: false
  high_level_summary: true
  high_level_summary_placeholder: "@coderabbitai summary"
  poem: false
  sequence_diagrams: false
  review_status: true
  collapse_walkthrough: true
  changed_files_summary: true
  assess_linked_issues: true
  related_issues: true
  related_prs: true
  suggested_labels: false
  auto_apply_labels: false
  suggested_reviewers: false
  auto_assign_reviewers: false

  auto_review:
    enabled: true
    drafts: false
    ignore_title_keywords:
    - WIP

  path_filters:
    # generated deepcopy
    - "!**/zz_generated.deepcopy.go"
    - "!vendor/"
    # Generated eBPF bytecode and bindings
    - "!**/*_bpfel.go"
    - "!**/*_bpfeb.go"
    - "!**/*_bpfel.o"
    - "!**/*_bpfeb.o"
    # Architecture-specific vmlinux headers (kernel generated)
    - "!**/vmlinux*.h"
    # Generated protobuf code
    - "!**/*.pb.go"
    - "!**/*_grpc.pb.go"

  path_instructions:
    - path: "bpf/**/*.c"
      instructions: |
        When reviewing eBPF C code:
        - Verify proper bounds checking for array/map accesses
        - Check for BPF verifier compliance (no unbounded loops, stack size limits)
        - Ensure proper use of BPF helpers and kernel compatibility
        - Review map definitions for correct sizing and key/value types
        - Check for potential race conditions in map operations
        - Verify CO-RE (Compile Once - Run Everywhere) relocations are used correctly
    - path: "bpf/**/*.h"
      instructions: |
        When reviewing eBPF headers:
        - Ensure struct definitions match between kernel and userspace
        - Verify packed attributes and alignment for cross-boundary structs
        - Check endianness handling for network byte order conversions
    - path: "proto/**/*.proto"
      instructions: |
        When reviewing Protocol Buffer definitions:
        - Verify field numbers are never reused
        - Check for proper use of reserved fields
        - Ensure backward compatibility for API changes
        - Review message naming conventions

  tools:
    # already run in CI (code-style workflow)
    golangci-lint:
      enabled: false

    # useful for this project
    shellcheck:
      enabled: true
    yamllint:
      enabled: true
    hadolint:
      enabled: true
    gitleaks:
      enabled: true
    actionlint:
      enabled: true
    checkov:
      enabled: true
    markdownlint:
      enabled: true

    # C/eBPF code analysis
    cppcheck:
      enabled: true
    clang:
      enabled: true

    # Security scanning
    semgrep:
      enabled: true
    trufflehog:
      enabled: true

    # not relevant to this project
    ruff:
      enabled: false
    biome:
      enabled: false
    swiftlint:
      enabled: false
    phpstan:
      enabled: false
    phpmd:
      enabled: false
    phpcs:
      enabled: false
    eslint:
      enabled: false
    flake8:
      enabled: false
    rubocop:
      enabled: false
    detekt:
      enabled: false
    pmd:
      enabled: false
    clippy:
      enabled: false
    pylint:
      enabled: false
    oxc:
      enabled: false
    stylelint:
      enabled: false
    htmlhint:
      enabled: false
    prismaLint:
      enabled: false
    shopifyThemeCheck:
      enabled: false
    luacheck:
      enabled: false
    brakeman:
      enabled: false
    dotenvLint:
      enabled: false
    emberTemplateLint:
      enabled: false
    psscriptanalyzer:
      enabled: false

  finishing_touches:
    docstrings:
      enabled: true
    unit_tests:
      enabled: true

chat:
  auto_reply: true

knowledge_base:
  web_search:
    enabled: true
  learnings:
    scope: auto
  issues:
    scope: auto
  pull_requests:
    scope: auto
  linked_repositories:
  - repository: "netobserv/netobserv-operator"
    instructions: "Integrates with netobserv operator. The agent is deployed and managed by this operator. Consider operator configuration changes when reviewing agent API changes."
  - repository: "netobserv/flowlogs-pipeline"
    instructions: "Consumes flow data from this agent. Consider flowlogs-pipeline parsing logic when reviewing protobuf/gRPC API changes or flow structure modifications."


================================================
FILE: .dockerignore
================================================
# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file

# Build artifacts
**/bin/
*.o
*.tar
*.tgz

# Test files and directories
**/e2e/
**/*_test.go
cover*.out
test.out

# Documentation
**/docs/
CONTRIBUTING.md
*.md
!README.md

# Examples and deployments (not needed for build)
**/examples/
**/deployments/

# Scripts (not needed for build)
**/scripts/

# Build tools (not needed in image)
**/protoc/

# Test artifacts
capture.pcap
ebpf-agent.tar

# CI/CD and development files
**/.git/
.gitignore
.gitattributes
OWNERS
renovate.json
Containerfile.*

# IDE and editor files
**/.vscode/
**/.idea/
*.swp
*.swo
*~
.DS_Store

# Temporary files
*.tmp
*.log



================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
  - package-ecosystem: "gomod" # See documentation for possible values
    directory: "/" # Location of package manifests
    schedule:
      interval: "weekly"

    groups:
      k8s:
        applies-to: version-updates
        patterns:
          - "k8s.io/*"


================================================
FILE: .github/pull_request_template.md
================================================
## Description

<!-- Fill-in description here -->

## Dependencies

<!-- List here any related PRs with links, that need to be pulled also for testing -->
n/a

## Checklist

<!-- If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that. -->

* [ ] Does the changes in PR need specific configuration or environment set up for testing?
   * [ ]  if so please describe it in PR description.
* [ ] I have added thorough unit tests for the change.
* QE requirements (check 1 from the list):
  * [ ] Standard QE validation, with pre-merge tests unless stated otherwise.
  * [ ] Regression tests only (e.g. refactoring with no user-facing change).
  * [ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

_To run a perfscale test, comment with: `/test ebpf-node-density-heavy-25nodes`_


================================================
FILE: .github/release.yml
================================================
changelog:
  categories:
    - title: Breaking changes 🛠
      labels:
        - breaking-change
    - title: Non-breaking changes
      labels:
        - "*"
      exclude:
        labels:
          - dependencies
    - title: Dependencies
      labels:
        - dependencies


================================================
FILE: .github/workflows/build_image_pr.yml
================================================
name: Build PR image and upload artifact
on:
  pull_request:
    types: [labeled]

env:
  WF_REGISTRY: quay.io/netobserv
  WF_IMAGE: netobserv-ebpf-agent
  WF_BC_IMAGE: ebpf-bytecode

jobs:
  build-pr-image:
    if: ${{ github.event.label.name == 'ok-to-test' }}
    name: Build PR image and upload artifact
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install make
        run: sudo apt -y install make
      - name: get short sha
        run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
      - name: build and save bytecode image
        run: OCI_BUILD_OPTS="--label quay.expires-after=2w" BC_IMAGE=${{ env.WF_REGISTRY }}/${{ env.WF_BC_IMAGE }}:${{ env.short_sha }} CLEAN_BUILD=1 make tar-bc-image
      - name: build and save image
        run: OCI_BUILD_OPTS="--label quay.expires-after=2w" IMAGE=${{ env.WF_REGISTRY }}/${{ env.WF_IMAGE }}:${{ env.short_sha }} CLEAN_BUILD=1 make tar-image
      - name: save PR number
        run: |
          echo ${{ github.event.number }} > ./out/pr-id
          echo ${{ env.short_sha }} > ./out/short-sha
      - name: upload artifacts
        uses: actions/upload-artifact@v4
        with:
          name: pr
          path: out/


================================================
FILE: .github/workflows/pull_request.yml
================================================
name: Pull request checks

on:
  pull_request:
    branches: [ '*' ]

jobs:
  test:
    name: test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Go
      uses: actions/setup-go@v3
      with:
        go-version: '1.25'
    - name: Install make
      run: sudo apt -y install make
    - name: Run verification and tests
      # note: we run both test and test-race because some tests are excluded from -race builds
      run: make lint test test-race cov-exclude-generated
    - name: check clean generate
      run: make docker-generate && git add -A && git diff HEAD --exit-code
    - name: check clean vendors
      run: go mod vendor
    - name: Report coverage
      uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
      with:
        files: ./cover.out
        flags: unittests
        fail_ci_if_error: false
        verbose: true


================================================
FILE: .github/workflows/pull_request_e2e.yml
================================================
name: pull request - e2e tests

#todo: check caching dependencies: https://github.com/actions/cache
on:
  push:
    branches: [ 'main', 'release-*' ]
  pull_request:
    branches: [ 'main', 'release-*' ]

jobs:
  e2e-tests:
    name: e2e-tests
    runs-on: ubuntu-latest
    steps:
    - name: install make
      run: sudo apt-get install make
    - name: set up go 1.x
      uses: actions/setup-go@v3
      with:
        go-version: '1.22'
    - name: checkout
      uses: actions/checkout@v3
    - name: run end-to-end tests
      run: make tests-e2e
    - name: upload e2e test logs
      uses: actions/upload-artifact@v4
      if: always()
      with:
        name: e2e-logs
        path: e2e-logs

================================================
FILE: .github/workflows/push_image.yml
================================================
name: Build and push to quay.io
on:
  push:
    branches: [ main, release-*, workflow-test ]

env:
  WF_REGISTRY_USER: netobserv+github_ci
  WF_ORG: netobserv
  WF_MULTIARCH_TARGETS: amd64 arm64 ppc64le s390x
  WF_VERSION: ${{ github.ref_name }}

jobs:
  push-image:
    name: push image
    runs-on: ubuntu-latest
    steps:
      - name: install make
        run: sudo apt-get install make
      - name: set up go 1.x
        uses: actions/setup-go@v3
        with:
          go-version: '1.25'
      - name: checkout
        uses: actions/checkout@v3
      - name: docker login to quay.io
        uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
        with:
          username: ${{ env.WF_REGISTRY_USER }}
          password: ${{ secrets.QUAY_SECRET }}
          registry: quay.io
      - name: get short sha
        run: echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
      - name: build and push bytecode image
        run: |
          MULTIARCH_TARGETS="${{ env.WF_MULTIARCH_TARGETS }}" IMAGE_ORG=${{ env.WF_ORG }} VERSION=${{ env.WF_VERSION }} CLEAN_BUILD=1 make bc-images
          MULTIARCH_TARGETS="${{ env.WF_MULTIARCH_TARGETS }}" IMAGE_ORG=${{ env.WF_ORG }} VERSION=${{ env.short_sha }} CLEAN_BUILD=1 OCI_BUILD_OPTS="--label quay.expires-after=2w" make bc-images
      - name: build and push manifest with images
        run: |
          MULTIARCH_TARGETS="${{ env.WF_MULTIARCH_TARGETS }}" IMAGE_ORG=${{ env.WF_ORG }} VERSION=${{ env.WF_VERSION }} CLEAN_BUILD=1 make images
          MULTIARCH_TARGETS="${{ env.WF_MULTIARCH_TARGETS }}" IMAGE_ORG=${{ env.WF_ORG }} VERSION=${{ env.short_sha }} CLEAN_BUILD=1 OCI_BUILD_OPTS="--label quay.expires-after=2w" make images

  codecov:
    name: Codecov upload
    runs-on: ubuntu-latest
    steps:
    - name: install make
      run: sudo apt-get install make
    - name: set up go 1.x
      uses: actions/setup-go@v3
      with:
        go-version: '1.25'
    - name: checkout
      uses: actions/checkout@v3
    - name: Test
      run: make test coverage-report
    - name: Report coverage
      uses: codecov/codecov-action@b9fd7d16f6d7d1b5d2bec1a2887e65ceed900238 # v4.6.0
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
      with:
        files: ./cover.out
        flags: unittests
        fail_ci_if_error: true
        verbose: true


================================================
FILE: .github/workflows/push_image_pr.yml
================================================
name: Push PR image to quay.io
on:
  workflow_run:
    workflows: ["Build PR image and upload artifact"]
    types:
      - completed

env:
  WF_REGISTRY_USER: netobserv+github_ci

jobs:
  push-pr-image:
    if: >
      github.event.workflow_run.event == 'pull_request' &&
      github.event.workflow_run.conclusion == 'success'
    name: push PR image
    runs-on: ubuntu-latest
    steps:
      - name: download artifact
        uses: actions/download-artifact@v5
        with:
          name: pr
          run-id: ${{github.event.workflow_run.id }}
          github-token: ${{secrets.GITHUB_TOKEN}}
      - name: load images
        run: |
          docker load --input ./ebpf-agent.tar
          docker load --input ./ebpf-agent-bc.tar
      - name: docker login to quay.io
        uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
        with:
          username: ${{ env.WF_REGISTRY_USER }}
          password: ${{ secrets.QUAY_SECRET }}
          registry: quay.io
      - name: push images
        run: |
          DOCKER_BUILDKIT=1 docker push $(cat ./name)
          DOCKER_BUILDKIT=1 docker push $(cat ./bc-name)
      - uses: actions/github-script@v6
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            var fs = require('fs');
            var issueNumber = Number(fs.readFileSync('./pr-id'));
            var shortSha = String(fs.readFileSync('./short-sha')).trim();
            var mainImage = fs.readFileSync('./name');
            var bcImage = fs.readFileSync('./bc-name');
            github.rest.issues.createComment({
              issue_number: issueNumber,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `New images:
            \`\`\`bash
            ${mainImage}
            ${bcImage}
            \`\`\`

            They will expire in two weeks.

            To deploy this build, run from the operator repo, assuming the operator is running:
            \`\`\`bash
            USER=netobserv VERSION=${shortSha} make set-agent-image
            \`\`\`
            `
            })


================================================
FILE: .github/workflows/release.yml
================================================
name: release to quay.io
on:
  push:
    tags: [v*]

env:
  WF_REGISTRY_USER: netobserv+github_ci
  WF_ORG: netobserv
  WF_MULTIARCH_TARGETS: amd64 arm64 ppc64le s390x

jobs:
  push-image:
    name: push image
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v3
      - name: validate tag
        run: |
          tag=`git describe --exact-match --tags 2> /dev/null`
          if [[ $tag =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-crc[0-9]+|-community)$ ]]; then
              echo "$tag is a valid release tag"
              set -e
              echo "tag=$tag" >> $GITHUB_ENV
          else
              echo "$tag is NOT a valid release tag"
              exit 1
          fi
      - name: install make
        run: sudo apt-get install make
      - name: set up go 1.x
        uses: actions/setup-go@v3
        with:
          go-version: '1.25'
      - name: docker login to quay.io
        uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc # v2.2.0
        with:
          username: ${{ env.WF_REGISTRY_USER }}
          password: ${{ secrets.QUAY_SECRET }}
          registry: quay.io
      - name: build and push manifest with images
        run: MULTIARCH_TARGETS="${{ env.WF_MULTIARCH_TARGETS }}" IMAGE_ORG=${{ env.WF_ORG }} VERSION=${{ env.tag }} CLEAN_BUILD=1 make images
      - name: extract binaries
        run: MULTIARCH_TARGETS="${{ env.WF_MULTIARCH_TARGETS }}" IMAGE_ORG=${{ env.WF_ORG }} VERSION=${{ env.tag }} make extract-binaries
      - name: create draft release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ env.tag }}
          release_name: ${{ env.tag }}
          draft: true
          prerelease: false
      - name: upload binaries
        uses: actions/github-script@v2
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const fs = require('fs').promises;
            const upload_url = '${{ steps.create_release.outputs.upload_url }}';
            for (let file of await fs.readdir('./release-assets')) {
              console.log('uploading', file);
              await github.repos.uploadReleaseAsset({
                url: upload_url,
                name: file,
                data: await fs.readFile(`./release-assets/${file}`)
              }); 
            }


================================================
FILE: .github/workflows/rm-ok-to-test.yaml
================================================
name: Remove ok-to-test
on:
  pull_request_target:
    types: [synchronize,reopened]

jobs:
  rm-ok-to-test:
    if: contains(github.event.pull_request.labels.*.name, 'ok-to-test')
    runs-on: ubuntu-latest
    name: Remove ok-to-test
    steps:
      - uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0
        with:
          labels: ok-to-test
          fail_on_error: true


================================================
FILE: .gitignore
================================================
.idea/
.vscode/
*.out
bin/
e2e-logs
ebpf-agent.tar
*.pcap
protoc/
release-assets/



================================================
FILE: .gitleaks.toml
================================================
[allowlist]
  description = "Repo Allowlist"
  paths = [
    '''pkg/test/tls.go''',

    # Ignore the .gitleaks.toml
    '''\.gitleaks\.toml$''',
  ]
  regexes = [
    # '''custom-regexes-to-ignore-here''',
  ]


================================================
FILE: .golangci.yml
================================================
version: "2"
run:
  go: "1.23"
linters:
  enable:
    - copyloopvar
    - cyclop
    - errcheck
    - errname
    - errorlint
    - exhaustive
    - gocritic
    - govet
    - ineffassign
    - revive
    - staticcheck
    - unused
  settings:
    cyclop:
      max-complexity: 20
    gocritic:
      enabled-checks:
        - hugeParam
        - rangeExprCopy
        - rangeValCopy
        - indexAlloc
      settings:
        ifElseChain:
          minThreshold: 3
  exclusions:
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    paths:
      - third_party$
      - builtin$
      - examples$
    rules:
      - linters:
        - staticcheck
        text: "QF1003:"
      - linters:
        - staticcheck
        text: "QF1008:"
formatters:
  enable:
    - gofmt
  exclusions:
    generated: lax
    paths:
      - third_party$
      - builtin$
      - examples$


================================================
FILE: .mk/bc.mk
================================================
##@ bytecode images

BC_IMAGE_TAG_BASE ?= quay.io/${IMAGE_ORG}/ebpf-bytecode
BC_IMAGE ?= $(BC_IMAGE_TAG_BASE):$(VERSION)

# PROGRAMS is a list of <program name>:<program type> tuples
define PROGRAMS
{
	"tcx_ingress_flow_parse":"tcx",
	"tcx_egress_flow_parse":"tcx",
	"tc_ingress_flow_parse":"tc",
	"tc_egress_flow_parse":"tc",
	"tcx_ingress_pca_parse":"tcx",
	"tcx_egress_pca_parse":"tcx",
	"tc_ingress_pca_parse":"tc",
	"tc_egress_pca_parse":"tc",
	"tcp_rcv_fentry":"fentry",
	"tcp_rcv_kprobe":"kprobe",
	"kfree_skb":"tracepoint",
	"network_events_monitoring":"kprobe",
	"track_nat_manip_pkt":"kprobe",
	"xfrm_input_kprobe": "kprobe",
	"xfrm_input_kretprobe": "kretprobe",
	"xfrm_output_kprobe": "kprobe",
	"xfrm_output_kretprobe": "kretprobe",
	"probe_entry_SSL_write": "uprobe"
}
endef

# MAPS is a list of <map name>:<map type> tuples
define MAPS
{
	"direct_flows":"ringbuf",
	"aggregated_flows":"hash",
	"aggregated_flows_dns":"per_cpu_hash",
	"aggregated_flows_pkt_drop":"per_cpu_hash",
	"aggregated_flows_network_events":"per_cpu_hash",
	"aggregated_flows_xlat":"per_cpu_hash",
	"additional_flow_metrics":"per_cpu_hash",
	"packet_record":"ringbuf",
	"dns_flows":"hash",
	"global_counters":"per_cpu_array",
	"filter_map":"lpm_trie",
	"peer_filter_map":"lpm_trie",
	"ipsec_ingress_map":"hash",
	"ipsec_egress_map":"hash",
	"ssl_data_event_map":"ringbuf",
	"dns_name_map":"per_cpu_array"
}
endef

# build a single arch target provided as argument
define build_bc_target
	echo 'building bytecode image for arch $(1)'; \
	echo '${PROGRAMS}' | jq empty || { echo "Invalid JSON in PROGRAMS"; exit 1; }; \
	echo '${MAPS}' | jq empty || { echo "Invalid JSON in MAPS"; exit 1; }; \
	DOCKER_BUILDKIT=1 $(OCI_BIN) buildx build --platform linux/$(1) --load --build-arg PROGRAMS='${PROGRAMS}' --build-arg MAPS='${MAPS}' --build-arg BC_AMD64_EL=bpf_x86_bpfel.o --build-arg BC_ARM64_EL=bpf_arm64_bpfel.o --build-arg BC_S390X_EB=bpf_s390_bpfeb.o --build-arg BC_PPC64LE_EL=bpf_powerpc_bpfel.o --build-arg LDFLAGS="${LDFLAGS}" --build-arg TARGETARCH=$(1) ${OCI_BUILD_OPTS} ${EXTRA_BUILD_FLAGS} -t ${BC_IMAGE}-$(1) -f ./Containerfile.bytecode.multi.arch ./pkg/ebpf;
endef

# push a single arch target image
define push_bc_target
	echo 'pushing bytecode image ${BC_IMAGE}-$(1)'; \
	DOCKER_BUILDKIT=1 $(OCI_BIN) push ${BC_IMAGE}-$(1);
endef

# note: to build and push custom image tag use: IMAGE_ORG=myuser VERSION=dev s
.PHONY: bc-image-build
bc-image-build: ## Build MULTIARCH_TARGETS bytecode images
	trap 'exit' INT; \
	$(foreach target,$(MULTIARCH_TARGETS),$(call build_bc_target,$(target)))

.PHONY: bc-image-push
bc-image-push: ## Push MULTIARCH_TARGETS bytecode images
	trap 'exit' INT; \
	$(foreach target,$(MULTIARCH_TARGETS),$(call push_bc_target,$(target)))

.PHONY: bc-manifest-build
bc-manifest-build: ## Build MULTIARCH_TARGETS bytecode manifest
	echo 'building bytecode manifest $(BC_IMAGE)'
	DOCKER_BUILDKIT=1 $(OCI_BIN) rmi ${BC_IMAGE} -f
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest create ${BC_IMAGE} $(foreach target,$(MULTIARCH_TARGETS), --amend ${BC_IMAGE}-$(target));

.PHONY: bc-manifest-push
bc-manifest-push: ## Push MULTIARCH_TARGETS bytecode manifest
	@echo 'publish bytecode manifest $(BC_IMAGE)'
ifeq (${OCI_BIN}, docker)
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest push ${BC_IMAGE};
else
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest push ${BC_IMAGE} docker://${BC_IMAGE};
endif


================================================
FILE: .mk/shortcuts.mk
================================================
##@ shortcuts helpers

.PHONY: build
build: prereqs fmt lint test vendors compile ## Test and Build ebpf agent

.PHONY: build-image
build-image: image-build ## Build MULTIARCH_TARGETS images

.PHONY: push-image
push-image: image-push ## Push MULTIARCH_TARGETS images

.PHONY: build-manifest
build-manifest: manifest-build ## Build MULTIARCH_TARGETS manifest

.PHONY: push-manifest
push-manifest: manifest-push ## Push MULTIARCH_TARGETS manifest

.PHONY: images
images: image-build image-push manifest-build manifest-push ## Build and push MULTIARCH_TARGETS images and related manifest

.PHONY: bc-images
bc-images: bc-image-build bc-image-push bc-manifest-build bc-manifest-push ## Build and push MULTIARCH_TARGETS bytecode images and related manifest


================================================
FILE: .snyk
================================================
---
exclude:
  global:
    - vendor/**
    - requirements.txt


================================================
FILE: .tekton/netobserv-ebpf-agent-ystream-pull-request.yaml
================================================
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  annotations:
    build.appstudio.openshift.io/repo: https://github.com/netobserv/netobserv-ebpf-agent?rev={{revision}}
    build.appstudio.redhat.com/commit_sha: '{{revision}}'
    build.appstudio.redhat.com/pull_request_number: '{{pull_request_number}}'
    build.appstudio.redhat.com/target_branch: '{{target_branch}}'
    pipelinesascode.tekton.dev/max-keep-runs: "3"
    pipelinesascode.tekton.dev/on-cel-expression: |
      event == "pull_request" && target_branch == "main" && (
        ".tekton/***".pathChanged() ||
        "Dockerfile.downstream".pathChanged() ||
        "Dockerfile-args.downstream".pathChanged() ||
        ".dockerignore".pathChanged() ||
        "go.mod".pathChanged() ||
        "go.sum".pathChanged() ||
        "cmd/***".pathChanged() ||
        "pkg/***".pathChanged() ||
        "Makefile".pathChanged() ||
        "LICENSE".pathChanged()
      )
  creationTimestamp: null
  labels:
    appstudio.openshift.io/application: netobserv-ystream
    appstudio.openshift.io/component: netobserv-ebpf-agent-ystream
    pipelines.appstudio.openshift.io/type: build
  name: netobserv-ebpf-agent-ystream-on-pull-request
  namespace: ocp-network-observab-tenant
spec:
  params:
  - name: git-url
    value: '{{source_url}}'
  - name: revision
    value: '{{revision}}'
  - name: output-image
    value: quay.io/redhat-user-workloads/ocp-network-observab-tenant/netobserv-ebpf-agent-ystream:on-pr-{{revision}}
  - name: image-expires-after
    value: 5d
  - name: build-args-file
    value: Dockerfile-args.downstream
  - name: dockerfile
    value: Dockerfile.downstream
  - name: build-platforms
    value:
    - linux/x86_64
  pipelineRef:
    name: build-pipeline
  taskRunTemplate:
    serviceAccountName: build-pipeline-netobserv-ebpf-agent-ystream
status: {}


================================================
FILE: .tekton/netobserv-ebpf-agent-ystream-push.yaml
================================================
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  annotations:
    build.appstudio.openshift.io/build-nudge-files: hack/nudging/container_digest.sh
    build.appstudio.openshift.io/repo: https://github.com/netobserv/netobserv-ebpf-agent?rev={{revision}}
    build.appstudio.redhat.com/commit_sha: '{{revision}}'
    build.appstudio.redhat.com/target_branch: '{{target_branch}}'
    pipelinesascode.tekton.dev/max-keep-runs: "3"
    # switch comment in/out at branch cut / release
    pipelinesascode.tekton.dev/on-cel-expression: |
      event == "push" && target_branch == "main" && (
        ".tekton/***".pathChanged() ||
        "Dockerfile.downstream".pathChanged() ||
        "Dockerfile-args.downstream".pathChanged() ||
        ".dockerignore".pathChanged() ||
        "go.mod".pathChanged() ||
        "go.sum".pathChanged() ||
        "cmd/***".pathChanged() ||
        "pkg/***".pathChanged() ||
        "bpf/***".pathChanged() ||
        "Makefile".pathChanged() ||
        "LICENSE".pathChanged() ||
        "vendor/***".pathChanged()
      )
    # pipelinesascode.tekton.dev/on-cel-expression: "false"
  creationTimestamp: null
  labels:
    appstudio.openshift.io/application: netobserv-ystream
    appstudio.openshift.io/component: netobserv-ebpf-agent-ystream
    pipelines.appstudio.openshift.io/type: build
  name: netobserv-ebpf-agent-ystream-on-push
  namespace: ocp-network-observab-tenant
spec:
  params:
  - name: git-url
    value: '{{source_url}}'
  - name: revision
    value: '{{revision}}'
  - name: output-image
    value: quay.io/redhat-user-workloads/ocp-network-observab-tenant/netobserv-ebpf-agent-ystream:{{revision}}
  - name: build-args-file
    value: Dockerfile-args.downstream
  - name: dockerfile
    value: Dockerfile.downstream
  - name: snyk-args
    value: "--project-name=netobserv-ebpf-agent --report --org=824715e7-b597-4123-bdb7-ba8abc3d3b2f"
  pipelineRef:
    name: build-pipeline
  taskRunTemplate:
    serviceAccountName: build-pipeline-netobserv-ebpf-agent-ystream
status: {}


================================================
FILE: .tekton/pipeline-ref.yaml
================================================
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: build-pipeline
spec:
  finally:
  - name: show-sbom
    params:
    - name: IMAGE_URL
      value: $(tasks.build-image-index.results.IMAGE_URL)
    taskRef:
      params:
      - name: name
        value: show-sbom
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-show-sbom:0.1@sha256:a7346ed61237db4f82ff782e0c9e8b30536e0e67b907ad600341a6d192e80012
      - name: kind
        value: task
      resolver: bundles
  params:
  - description: Source Repository URL
    name: git-url
    type: string
  - default: ""
    description: Revision of the Source Repository
    name: revision
    type: string
  - description: Fully Qualified Output Image
    name: output-image
    type: string
  - default: .
    description: Path to the source code of an application's component from where to build image.
    name: path-context
    type: string
  - default: Dockerfile
    description: Path to the Dockerfile inside the context specified by parameter path-context
    name: dockerfile
    type: string
  - default: "false"
    description: Skip checks against built image
    name: skip-checks
    type: string
  - default: "true"
    description: Execute the build with network isolation
    name: hermetic
    type: string
  - default: "{\"type\":\"gomod\", \"path\":\".\"}"
    description: Build dependencies to be prefetched by Cachi2
    name: prefetch-input
    type: string
  - default: "false"
    description: Java build
    name: java
    type: string
  - default: ""
    description: Image tag expiration time, time values could be something like 1h, 2d, 3w for hours, days, and weeks, respectively.
    name: image-expires-after
  - default: "true"
    description: Build a source image.
    name: build-source-image
    type: string
  - default: []
    description: Array of --build-arg values ("arg=value" strings) for buildah
    name: build-args
    type: array
  - default: ""
    description: Path to a file with build arguments for buildah, see https://www.mankier.com/1/buildah-build#--build-arg-file
    name: build-args-file
    type: string
  - default: ["linux/x86_64", "linux/arm64", "linux/ppc64le", "linux/s390x"]
    description: List of platforms to build the container images on. The available set of values is determined by the configuration of the multi-platform-controller.
    name: build-platforms
    type: array
  - name: buildah-format
    default: docker
    type: string
    description: The format for the resulting image's mediaType. Valid values are oci or docker.
  - name: enable-cache-proxy
    default: 'false'
    description: Enable cache proxy configuration
    type: string
  - name: snyk-args
    default: ''
    description: Snyk arguments, e.g. for report upload
    type: string
  - name: enable-package-registry-proxy
    default: 'true'
    description: Use the package registry proxy when prefetching dependencies
    type: string
  - name: sast-target-dirs
    type: string
    default: .
    description: Target directories to scan with SAST tools. Multiple values should be separated with commas.
  results:
  - description: ""
    name: IMAGE_URL
    value: $(tasks.build-image-index.results.IMAGE_URL)
  - description: ""
    name: IMAGE_DIGEST
    value: $(tasks.build-image-index.results.IMAGE_DIGEST)
  - description: ""
    name: CHAINS-GIT_URL
    value: $(tasks.clone-repository.results.url)
  - description: ""
    name: CHAINS-GIT_COMMIT
    value: $(tasks.clone-repository.results.commit)
  tasks:
  - name: init
    params:
    - name: enable-cache-proxy
      value: $(params.enable-cache-proxy)
    taskRef:
      params:
      - name: name
        value: init
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-init:0.4@sha256:5a423246792ac501ea279229b42ee57da9927da441c04b5c9ff86817b0856b08
      - name: kind
        value: task
      resolver: bundles
  - name: clone-repository
    params:
    - name: url
      value: $(params.git-url)
    - name: revision
      value: $(params.revision)
    - name: ociStorage
      value: $(params.output-image).git
    - name: ociArtifactExpiresAfter
      value: $(params.image-expires-after)
    runAfter:
    - init
    taskRef:
      params:
      - name: name
        value: git-clone-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-git-clone-oci-ta:0.1@sha256:13d49df7dc9ae301627e45f95a236011422996152f1bea46cd60217b0f057407
      - name: kind
        value: task
      resolver: bundles
    workspaces:
    - name: basic-auth
      workspace: git-auth
  - name: prefetch-dependencies
    params:
    - name: input
      value: $(params.prefetch-input)
    - name: SOURCE_ARTIFACT
      value: $(tasks.clone-repository.results.SOURCE_ARTIFACT)
    - name: ociStorage
      value: $(params.output-image).prefetch
    - name: ociArtifactExpiresAfter
      value: $(params.image-expires-after)
    - name: enable-package-registry-proxy
      value: $(params.enable-package-registry-proxy)
    runAfter:
    - clone-repository
    taskRef:
      params:
      - name: name
        value: prefetch-dependencies-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-prefetch-dependencies-oci-ta:0.3@sha256:a2efbcdcecfa5293a622eb356a18f5c88e5714046b214fe8730b43b1a7dbb77d
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.prefetch-input)
      operator: notin
      values:
      - ""
    workspaces:
    - name: git-basic-auth
      workspace: git-auth
    - name: netrc
      workspace: netrc
  - name: build-container
    matrix:
      params:
      - name: PLATFORM
        value:
        - $(params.build-platforms)
    params:
    - name: IMAGE
      value: $(params.output-image)
    - name: DOCKERFILE
      value: $(params.dockerfile)
    - name: CONTEXT
      value: $(params.path-context)
    - name: HERMETIC
      value: $(params.hermetic)
    - name: PREFETCH_INPUT
      value: $(params.prefetch-input)
    - name: IMAGE_EXPIRES_AFTER
      value: $(params.image-expires-after)
    - name: COMMIT_SHA
      value: $(tasks.clone-repository.results.commit)
    - name: BUILD_ARGS
      value:
      - $(params.build-args[*])
      - "COMMIT=tasks.clone-repository.results.commit"
    - name: BUILD_ARGS_FILE
      value: $(params.build-args-file)
    - name: SOURCE_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT)
    - name: CACHI2_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT)
    - name: IMAGE_APPEND_PLATFORM
      value: "true"
    - name: BUILDAH_FORMAT
      value: $(params.buildah-format)
    - name: HTTP_PROXY
      value: $(tasks.init.results.http-proxy)
    - name: NO_PROXY
      value: $(tasks.init.results.no-proxy)
    runAfter:
    - prefetch-dependencies
    taskRef:
      params:
      - name: name
        value: buildah-remote-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-buildah-remote-oci-ta:0.9@sha256:f667d1146533b1d49829c08097e31faf27db24563da576434a707353de62099f
      - name: kind
        value: task
      resolver: bundles
  - name: build-image-index
    params:
    - name: IMAGE
      value: $(params.output-image)
    - name: ALWAYS_BUILD_INDEX
      value: "true"
    - name: IMAGES
      value:
      - $(tasks.build-container.results.IMAGE_REF[*])
    - name: BUILDAH_FORMAT
      value: $(params.buildah-format)
    runAfter:
    - build-container
    taskRef:
      params:
      - name: name
        value: build-image-index
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-build-image-index:0.3@sha256:550afde50349e22ec11191ea0db9a49395ab46fef4e8317d820b6e946677ebeb
      - name: kind
        value: task
      resolver: bundles
  - name: build-source-image
    params:
    - name: BINARY_IMAGE
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: SOURCE_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT)
    - name: CACHI2_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT)
    - name: BINARY_IMAGE_DIGEST
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: source-build-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-source-build-oci-ta:0.3@sha256:0917cfc7772e82cb8e74743c2104f43bcf2596aceafe87eec6fce69a8cac5f06
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.build-source-image)
      operator: in
      values:
      - "true"
  - name: deprecated-base-image-check
    params:
    - name: IMAGE_URL
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: IMAGE_DIGEST
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: deprecated-image-check
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-deprecated-image-check:0.5@sha256:e78d0d3baf3c8cfc1a5ad278196b74032d9568b143a87c7a79ab780fedfb296e
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - name: rpms-signature-scan
    params:
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: image-digest
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: rpms-signature-scan
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-rpms-signature-scan:0.2@sha256:cfdb76c67f27bc498132431f5a24fbc17dac1981d6f6e3da5cf5964ac5abdd20
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - matrix:
      params:
      - name: image-platform
        value:
        - $(params.build-platforms)
    name: clair-scan
    params:
    - name: image-digest
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: clair-scan
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-clair-scan:0.3@sha256:8fad4c2e2f470f82ee43d6b2ac72327b4d9c6e9cb514a678911c1c9359c29894
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - name: ecosystem-cert-preflight-checks
    params:
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: ecosystem-cert-preflight-checks
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-ecosystem-cert-preflight-checks:0.2@sha256:e2bcf1174a6dae9969b8f12e94babe2a5881bc77a509f10823b6a9eac6392850
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - name: sast-snyk-check
    params:
    - name: image-digest
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: SOURCE_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT)
    - name: CACHI2_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT)
    - name: ARGS
      value: $(params.snyk-args)
    - name: TARGET_DIRS
      value: $(params.sast-target-dirs)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: sast-snyk-check-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-sast-snyk-check-oci-ta:0.4@sha256:8f3ecbeaff579e41b8278f82d7fabac27845db17a8e687ea6c510c0c9aceabbb
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - name: sast-shell-check
    params:
    - name: image-digest
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: SOURCE_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT)
    - name: CACHI2_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT)
    - name: TARGET_DIRS
      value: $(params.sast-target-dirs)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: sast-shell-check-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-sast-shell-check-oci-ta:0.1@sha256:c4ef47e3b4e0508572d266fb745be7e374c29dc02580328cbe9f4d472a8aca57
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - name: sast-unicode-check
    params:
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: image-digest
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    - name: SOURCE_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT)
    - name: CACHI2_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.CACHI2_ARTIFACT)
    - name: TARGET_DIRS
      value: $(params.sast-target-dirs)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: sast-unicode-check-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-sast-unicode-check-oci-ta:0.4@sha256:90efa582de7770d55102b74014a765cd16a25a56f2cf644b56a788c70c4dc749
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
  - name: clamav-scan
    params:
    - name: image-digest
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    - name: image-url
      value: $(tasks.build-image-index.results.IMAGE_URL)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: clamav-scan
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-clamav-scan:0.3@sha256:567cb66bd2e1f4b58b9d4d756f3317fc62479e0b40aa0de66094b1f12d296cfc
      - name: kind
        value: task
      resolver: bundles
    when:
    - input: $(params.skip-checks)
      operator: in
      values:
      - "false"
    matrix:
      params:
      - name: image-arch
        value:
        - $(params.build-platforms)
  - name: apply-tags
    params:
    - name: IMAGE_URL
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: IMAGE_DIGEST
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: apply-tags
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-apply-tags:0.3@sha256:a291081de7fb27f832c6fc3c4b078acf7e6162ca4c085db38b118ca87e8b5b66
      - name: kind
        value: task
      resolver: bundles
  - name: push-dockerfile
    params:
    - name: IMAGE
      value: $(tasks.build-image-index.results.IMAGE_URL)
    - name: IMAGE_DIGEST
      value: $(tasks.build-image-index.results.IMAGE_DIGEST)
    - name: DOCKERFILE
      value: $(params.dockerfile)
    - name: CONTEXT
      value: $(params.path-context)
    - name: SOURCE_ARTIFACT
      value: $(tasks.prefetch-dependencies.results.SOURCE_ARTIFACT)
    runAfter:
    - build-image-index
    taskRef:
      params:
      - name: name
        value: push-dockerfile-oci-ta
      - name: bundle
        value: quay.io/konflux-ci/tekton-catalog/task-push-dockerfile-oci-ta:0.3@sha256:7855471abfe87de080b914f2f3ca27c59e64f6448a7c2435e51435b764494c71
      - name: kind
        value: task
      resolver: bundles
  workspaces:
  - name: git-auth
    optional: true
  - name: netrc
    optional: true


================================================
FILE: AGENTS.md
================================================
# AI Agents Best Practices for NetObserv eBPF Agent

Best practices for AI coding agents on NetObserv eBPF Agent.

> **Note**: Symlinked as [CLAUDE.md](CLAUDE.md) for Claude Code auto-loading.

## Project Context

**NetObserv eBPF Agent** - Network flow capture and aggregation using eBPF technology on Linux hosts (Kernel 5.8+)

**Components:**
- **eBPF C code** (`bpf/` directory): Runs in kernel space to capture packet data via TC/TCX hooks
- **Go userspace agent** (`pkg/` directory): Aggregates and exports network flows
- **Managed by**: [Network Observability Operator](https://github.com/netobserv/network-observability-operator)

**Key Directories:**
- `bpf/`: eBPF C code (flows.c, types.h, configs.h, feature-specific headers)
- `pkg/config/`: Configuration via environment variables
- `pkg/flow/`: Flow aggregation, accounting, and flow tracers (map/ringbuf readers)
- `pkg/tracer/`: eBPF program loader, TC/TCX hook attachment, flow filtering
- `pkg/exporter/`: GRPC, Kafka, direct-flp exporters
- `pkg/ebpf/`: Generated eBPF Go bindings (bpf_*_bpfel.go/o)
- `proto/`: Protocol buffer definitions
- `docs/`: Architecture, config reference, eBPF implementation details

## Critical Constraints

### 🚨 eBPF Compatibility (Kernel 5.8+)
eBPF verifier requirements:
- **Bounded loops only**: Verifier must prove loop termination
- **Stack limit**: 512 bytes maximum
- **No unbounded recursion**
- Changes to `bpf/*.c` or `bpf/*.h` require `make docker-generate` or `make generate`

### 🚨 Configuration via Environment Variables Only
- No config files from agent's perspective
- Source of truth: `pkg/config/config.go`
- All options documented in [docs/config.md](./docs/config.md)
- Agent does NOT access Kubernetes API directly

### 🚨 Licenses
- eBPF code (`bpf/`): GPL v2 (see `bpf/LICENSE`)
- Go code: Apache v2

## Effective Prompting

**Good Example:**
```text
Update bpf/flows.c to add packet drop reason tracking. Store drop reason in
additional_flow_metrics per-CPU map. Update pkg/tracer/tracer.go to read and
merge drop reasons. Add DROPS_TRACKING env var in pkg/config/config.go
(default: false). Run make docker-generate and add unit tests.
```

**Bad Example:**
```text
Add drop tracking to eBPF
```

**Key Principles:**
1. Specify exact file paths (`bpf/flows.c`, not "eBPF code")
2. Reference existing patterns (maps, config, exporters)
3. Mention regeneration steps (`make docker-generate` for eBPF changes)
4. Check dependencies before adding new packages

## Common Task Templates

### Add eBPF Feature
```text
Add PacketDrop tracking to monitor dropped packets:

1. eBPF Implementation:
   - Define data structure in bpf/types.h (e.g., pkt_drop_t with state, drop_cause)
   - Update bpf/flows.c to hook into kfree_skb tracepoint
   - Store drop metadata in flow_record_t or additional_flow_metrics per-CPU map
   - Access kernel debug filesystem (/sys/kernel/debug) for tracepoint data

2. Userspace Integration:
   - Update pkg/tracer/tracer.go to read drop data from eBPF maps
   - Update pkg/flow/ tracers (tracer_map.go, tracer_ringbuf.go) to handle drop events
   - Add drop fields to proto/flow.proto (PktDropBytes, PktDropPackets, PktDropLatestState, etc.)
   - Run make gen-protobuf to regenerate pkg/pbflow/

3. Build and Test:
   - Run make docker-generate to regenerate eBPF binaries
   - Test on actual kernel with privileged mode enabled (requires /sys/kernel/debug mount)
   - Document in docs/architecture.md if adding new map

Note: PacketDrop feature requires privileged mode for kernel debug filesystem access.
Other privileged-mode features: NetworkEvents, UDNMapping (debug fs), SR-IOV (secondary interfaces).
For features NOT requiring privileged mode (e.g., DNSTracking, FlowRTT), skip privileged testing.
```

### Add Configuration Parameter
```text
Add cache timeout configuration:
1. Update pkg/config/config.go:
   - Add field to Agent struct with env: tag
   - Set default value
2. Update docs/config.md with new parameter documentation
3. Use config in pkg/flow/ or pkg/tracer/ as needed
4. Add validation if required (e.g., positive duration)
5. Run make build
```

### Add Flow Field
```text
Add new flow field for packet metadata:
1. Update proto/flow.proto with new field
2. Run make prereqs (ensures protoc is installed)
3. Run make gen-protobuf to regenerate pkg/pbflow/
4. Update bpf/types.h with field in flow_record_t if captured in eBPF
5. Update bpf/flows.c to populate field
6. Run make docker-generate for eBPF changes
7. Update pkg/flow/ to handle new field in aggregation
8. Update pkg/exporter/ if export format changes
```

### Debug Packet Capture Issues
```text
Flows not captured for specific interface:
Check pkg/tracer/tracer.go:
- Verify TC/TCX hook attachment in AttachTCX() or Register()
- Check interface filtering logic in pkg/agent/interfaces_listener.go
- Review eBPF map access errors in bpf/flows.c
Suggest fixes with proper error handling patterns.
```

### Modify Flow Aggregation
```text
Change flow aggregation logic in pkg/flow/account.go:
- Review existing Accounter struct
- Check cache eviction policy (maxEntries, evictTimeout)
- Review flow accumulation logic
- Add unit tests for new aggregation rules
```

### Add Exporter Configuration
```text
Add request timeout to GRPC exporter:
1. Update pkg/config/config.go with timeout-related env vars
2. Update pkg/exporter/grpc_proto.go to use timeout config
3. Add timeout handling logic
4. Update docs/config.md
5. Add integration tests in e2e/
```

## Repository-Specific Context

### Export Modes
Export modes (check `EXPORT` env var):
- **GRPC**: Export to flowlogs-pipeline via gRPC (default)
- **Kafka**: Export to Kafka topics
- **direct-flp**: Embed flowlogs-pipeline in agent process (configured via `FLP_CONFIG`)
- **IPFIX collectors**: Export to flowlogs-pipeline (via GRPC/Kafka/direct-flp), then configure IPFIX export within flowlogs-pipeline

### Performance
- **Sampling**: `SAMPLING` env var (agent default: 0 = disabled, commonly deployed: 50 = 1:50 packets). Lower = more flows/resources
- **Caching**: `CACHE_MAX_FLOWS` (default: 5000), `CACHE_ACTIVE_TIMEOUT` (default: 5s)
- **Memory**: Watch for eBPF map sizes and userspace cache
- **Metrics**: Prometheus metrics exposed on `METRICS_SERVER_PORT` (default: 9090)

### eBPF Maps
- **aggregated_flows**: `BPF_MAP_TYPE_HASH` (global, not per-CPU) - main flow aggregation
- **additional_flow_metrics**: `BPF_MAP_TYPE_PERCPU_HASH` - RTT, IPsec metrics
- **aggregated_flows_dns**, **aggregated_flows_pkt_drop**, **aggregated_flows_network_events**, **aggregated_flows_xlat**: per-CPU maps for DNS, drops, network events, and address translation
- **dns_flows**: Global map for DNS request/response matching
- See [docs/ebpf_implementation.md](./docs/ebpf_implementation.md) for details on per-CPU vs regular maps

### Deployment Requirements

**Default mode (granular capabilities):**
Agent requires Linux capabilities:
- `BPF`: Use eBPF programs and maps
- `PERFMON`: Access perf monitoring
- `NET_ADMIN`: Attach/detach TC programs, TCX hooks

**Privileged mode (when required):**
Certain features require privileged mode for kernel debug filesystem access or secondary interface monitoring:
- **PacketDrop**: Packet drop flows logging (requires /sys/kernel/debug)
- **NetworkEvents**: Network policy correlation (requires /sys/kernel/debug)
- **UDNMapping**: User Defined Networks mapping (requires /sys/kernel/debug)
- **SR-IOV support**: Secondary interface monitoring

**Compatibility notes:**
- Some older Kubernetes distributions (Kind, K3s, Rancher Desktop) don't recognize `BPF` and `PERFMON` capabilities
- In these cases, privileged mode is required even for basic features
- See README.md for tested distribution compatibility matrix

**Deployment:** When using Network Observability Operator, configure via FlowCollector CR. For standalone deployment, see deployment examples in [deployments/](./deployments/).

### Flow Filtering
- Configured via `FLOW_FILTER_RULES` env var (JSON format)
- See [docs/flow_filtering.md](./docs/flow_filtering.md) for rule syntax and examples

## Code Review Checklist

```text
Review for:
1. eBPF verifier compliance (bounded loops, stack limit)
2. Kernel 5.8+ compatibility (no newer eBPF features)
3. Error handling (wrap with context)
4. Unit test coverage (go test)
5. Configuration in pkg/config/config.go AND docs/config.md
6. License headers (GPL v2 for bpf/, Apache v2 for Go)
7. Performance impact (eBPF overhead, memory usage)
8. Security (input validation, no buffer overflows in eBPF)
```

## Testing

### Unit Tests
```text
Generate tests for flow aggregation in pkg/flow/account.go:
- Cache eviction on max entries
- Cache eviction on timeout
- Flow accumulation
- Edge cases (nil, empty)
Use standard Go testing patterns.
```

### E2E Tests
```text
Test on Kind cluster:
1. make tests-e2e (installs prereqs, builds image, runs tests)
   - Builds localhost/ebpf-agent:test image
   - Runs e2e test suite with Kind cluster
2. Verify: packet capture, flow aggregation, export to flowlogs-pipeline
Note: tests-e2e target handles image build and Kind cluster setup automatically
```

## Quick Reference

**Essential Commands:**
```bash
make build                      # Run prereqs, fmt, lint, test, vendors, compile
make fmt                        # Format Go and C code
make lint                       # Lint Go and C code
make test                       # Run unit tests
make compile                    # Compile the agent binary
make docker-generate            # Regenerate eBPF binaries (after bpf/ changes)
make generate                   # Regenerate eBPF + protobuf (requires local tools)
make tests-e2e                  # E2E tests on Kind cluster
make image-build image-push     # Build and push image
```

**Key Files:**
- Config: [pkg/config/config.go](pkg/config/config.go)
- eBPF main: [bpf/flows.c](bpf/flows.c), [bpf/types.h](bpf/types.h), [bpf/maps_definition.h](bpf/maps_definition.h)
- Flow aggregation: [pkg/flow/account.go](pkg/flow/account.go)
- eBPF loader: [pkg/tracer/tracer.go](pkg/tracer/tracer.go)
- Flow tracers: [pkg/flow/tracer_map.go](pkg/flow/tracer_map.go), [pkg/flow/tracer_ringbuf.go](pkg/flow/tracer_ringbuf.go)
- Exporters: [pkg/exporter/](pkg/exporter/)
- Docs: [docs/architecture.md](docs/architecture.md), [docs/config.md](docs/config.md)

## AI Workflow Example

```text
1. Research: "Explain RTT tracking implementation in bpf/rtt_tracker.h"
2. Plan: "Add TCP retransmit tracking - suggest eBPF hook and data structure"
3. Implement: "Implement with proper map storage and userspace reading"
4. Review: "Review for eBPF verifier compliance and edge cases"
5. Regenerate: "Run make docker-generate to update binaries"
6. Test: "Provide e2e test scenarios for retransmit tracking"
```

## Contribution Checklist

Before commit:
1. AI code review
2. `make build`
3. `make docker-generate` (if eBPF code changed)
4. Update docs/config.md (if config changed)
5. Add unit tests for new Go logic
6. Run e2e tests for eBPF changes: `make tests-e2e`
7. Conventional commit messages

## Resources

- [README.md](README.md) - Build, configure, run, troubleshoot
- [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guidelines
- [docs/architecture.md](docs/architecture.md) - System architecture and data flow
- [docs/config.md](docs/config.md) - All environment variable options
- [docs/ebpf_implementation.md](docs/ebpf_implementation.md) - eBPF maps, per-CPU HashMap, flow collisions
- [docs/flow_filtering.md](docs/flow_filtering.md) - Flow filter rules configuration
- [docs/profiling.md](docs/profiling.md) - Performance profiling
- [docs/rtt_calculations.md](docs/rtt_calculations.md) - RTT tracking implementation
- [examples/direct-flp/README.md](examples/direct-flp/README.md) - Direct-flp usage examples
- [e2e/README.md](e2e/README.md) - End-to-end testing guide

**Remember**: AI agents need clear context. Always review generated code, test thoroughly on actual kernel environment, and follow project conventions.


================================================
FILE: CONTRIBUTING.md
================================================
## Contributing

Please refer to [NetObserv projects contribution guide](https://github.com/netobserv/documents/blob/main/CONTRIBUTING.md).


================================================
FILE: Containerfile.bytecode.multi.arch
================================================
## see https://go.dev/doc/install/source#environment for valid
## GOARCHes when GOOS=linux.
FROM scratch
ARG TARGETARCH
ARG TARGETOS

FROM scratch AS linuxamd64
ARG TARGETARCH
ARG TARGETOS
ARG BC_AMD64_EL
COPY $BC_AMD64_EL /

FROM scratch AS linuxarm64
ARG TARGETARCH
ARG TARGETOS
ARG BC_ARM64_EL
COPY $BC_ARM64_EL /

FROM scratch AS linuxppc64le
ARG TARGETARCH
ARG TARGETOS
ARG BC_PPC64LE_EL
COPY $BC_PPC64LE_EL /

FROM scratch AS linuxs390x
ARG TARGETARCH
ARG TARGETOS
ARG BC_S390X_EB
COPY $BC_S390X_EB /

ARG TARGETARCH
ARG TARGETOS

# Use the build argument to select the correct base image
FROM ${TARGETOS}${TARGETARCH}
ARG PROGRAMS
ARG MAPS
LABEL "io.ebpf.programs"=$PROGRAMS
LABEL "io.ebpf.maps"=$MAPS


================================================
FILE: DOWNSTREAM_OWNERS
================================================
approvers:
- netobserv-team-approvers
reviewers:
- netobserv-team-reviewers


================================================
FILE: DOWNSTREAM_OWNERS_ALIASES
================================================

aliases:
  # Contributors who can approve any PRs in the repo.
  netobserv-team-approvers:
  - jotak
  - jpinsonneau
  - OlivierCazade
  - stleerh
  - memodi
  - mffiedler
  # Contributors who can review and LGTM any PRs in the repo.
  netobserv-reviewers:
  - jotak
  - jpinsonneau
  - OlivierCazade
  - stleerh
  - memodi
  - Amoghrd
  - luisjira
  - oliver-smakal
  - kapjain-rh
  - leandroberetta
  - mffiedler


================================================
FILE: Dockerfile
================================================
ARG TARGETARCH

# Build the manager binary
FROM docker.io/library/golang:1.25 as builder

ARG TARGETARCH

ARG LDFLAGS

WORKDIR /opt/app-root

# Copy the go manifests and source
COPY bpf/ bpf/
COPY cmd/ cmd/
COPY pkg/ pkg/
COPY vendor/ vendor/
COPY go.mod go.mod
COPY go.sum go.sum

# Build
RUN CGO_ENABLED=0 GOARCH=$TARGETARCH go build -ldflags "$LDFLAGS" -mod vendor -a -o bin/netobserv-ebpf-agent cmd/netobserv-ebpf-agent.go

# Create final image from minimal + built binary
FROM --platform=linux/$TARGETARCH registry.access.redhat.com/ubi9/ubi-minimal:9.7-1778461551
WORKDIR /
COPY --from=builder /opt/app-root/bin/netobserv-ebpf-agent .
USER 65532:65532

ENTRYPOINT ["/netobserv-ebpf-agent"]


================================================
FILE: Dockerfile-args.downstream
================================================
BUILDVERSION=1.12.0
BUILDVERSION_Y=1.12


================================================
FILE: Dockerfile.downstream
================================================
ARG BUILDVERSION
ARG BUILDVERSION_Y

# Build the manager binary
FROM brew.registry.redhat.io/rh-osbs/openshift-golang-builder:v1.25 as builder
ARG BUILDVERSION

WORKDIR /opt/app-root

# Copy the go manifests and source
COPY bpf/ bpf/
COPY cmd/ cmd/
COPY pkg/ pkg/
COPY vendor/ vendor/
COPY go.mod go.mod
COPY go.sum go.sum

# Build
ENV GOEXPERIMENT strictfipsruntime
RUN go build -tags strictfipsruntime -ldflags "-X 'main.buildVersion=${BUILDVERSION}' -X 'main.buildDate=`date +%Y-%m-%d\ %H:%M`'" -mod vendor -a -o bin/netobserv-ebpf-agent cmd/netobserv-ebpf-agent.go

# Create final image from minimal + built binary
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.7-1778461551
ARG BUILDVERSION
ARG BUILDVERSION_Y

WORKDIR /
COPY --from=builder /opt/app-root/bin/netobserv-ebpf-agent .
COPY LICENSE /licenses/
COPY bpf/LICENSE /licenses/LICENSE-GPL
COPY README.downstream /licenses/README
USER 65532:65532

ENTRYPOINT ["/netobserv-ebpf-agent"]

LABEL distribution-scope="public"
LABEL url="https://catalog.redhat.com/en/search?searchType=containers"
LABEL vendor="Red Hat, Inc."
LABEL release=$BUILDVERSION
LABEL com.redhat.component="network-observability-ebpf-agent-container"
LABEL name="network-observability/network-observability-ebpf-agent-rhel9"
LABEL cpe="cpe:/a:redhat:network_observ_optr:$BUILDVERSION_Y::el9"
LABEL io.k8s.display-name="Network Observability eBPF Agent"
LABEL io.k8s.description="Network Observability eBPF Agent"
LABEL summary="Network Observability eBPF Agent"
LABEL maintainer="support@redhat.com"
LABEL io.openshift.tags="network-observability-ebpf-agent"
LABEL description="The Network Observability eBPF Agent allows collecting and aggregating all the ingress and egress flows on a Linux host."
LABEL version=$BUILDVERSION


================================================
FILE: LICENSE
================================================
                                 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: Makefile
================================================
# VERSION defines the project version for the bundle.
# Update this value when you upgrade the version of your project.
# To re-generate a bundle for another specific version without changing the standard setup, you can:
# - use the VERSION as arg of the bundle target (e.g make bundle VERSION=0.0.2)
# - use environment variables to overwrite this value (e.g export VERSION=0.0.2)
VERSION ?= main

# Go architecture and targets images to build
GOARCH ?= amd64
MULTIARCH_TARGETS ?= amd64

# In CI, to be replaced by `netobserv`
IMAGE_ORG ?= $(USER)

# Image registry such as quay or docker
IMAGE_REGISTRY ?= quay.io

# IMAGE_TAG_BASE defines the namespace and part of the image name for remote images.
IMAGE_TAG_BASE ?= $(IMAGE_REGISTRY)/$(IMAGE_ORG)/netobserv-ebpf-agent

# Image URL to use all building/pushing image targets
IMAGE ?= $(IMAGE_TAG_BASE):$(VERSION)

# Image building tool (docker / podman) - docker is preferred in CI
OCI_BIN_PATH := $(shell which docker 2>/dev/null || which podman)
OCI_BIN ?= $(shell basename ${OCI_BIN_PATH})
OCI_BUILD_OPTS ?=

ifeq ("$(OCI_BIN)","docker")
# https://stackoverflow.com/questions/75521775/buildx-docker-image-claims-to-be-a-manifest-list
EXTRA_BUILD_FLAGS ?= --provenance=false
endif

ifneq ($(CLEAN_BUILD),)
	BUILD_DATE := $(shell date +%Y-%m-%d\ %H:%M)
	BUILD_SHA := $(shell git rev-parse --short HEAD)
	LDFLAGS ?= -X 'main.buildVersion=${VERSION}-${BUILD_SHA}' -X 'main.buildDate=${BUILD_DATE}'
endif

LOCAL_GENERATOR_IMAGE ?= ebpf-generator:latest
CILIUM_EBPF_VERSION := v0.21.0
GOLANGCI_LINT_VERSION = v2.8.0
GO_VERSION = 1.25.3
PROTOC_VERSION = 3.19.4
PROTOC_GEN_GO_VERSION="v1.35.1"
PROTOC_GEN_GO_GRPC_VERSION="v1.5.1"
CLANG ?= clang
CFLAGS := -O2 -g -Wall -Werror $(CFLAGS)
GOOS ?= linux
PROTOC_ARTIFACTS := pkg/pbflow
# regular expressions for excluded file patterns
EXCLUDE_COVERAGE_FILES="(/cmd/)|(bpf_bpfe)|(/examples/)|(/pkg/pbflow/)"

.DEFAULT_GOAL := help

# build a single arch target provided as argument
define build_target
	echo 'building image for arch $(1)'; \
	DOCKER_BUILDKIT=1 $(OCI_BIN) buildx build --load --build-arg LDFLAGS="${LDFLAGS}" --build-arg TARGETARCH=$(1) ${OCI_BUILD_OPTS} ${EXTRA_BUILD_FLAGS} -t ${IMAGE}-$(1) -f Dockerfile .;
endef

# push a single arch target image
define push_target
	echo 'pushing image ${IMAGE}-$(1)'; \
	DOCKER_BUILDKIT=1 $(OCI_BIN) push ${IMAGE}-$(1);
endef

# manifest create a single arch target provided as argument
define manifest_add_target
	echo 'manifest add target $(1)'; \
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest add ${IMAGE} ${IMAGE}-$(1);
endef

# extract a single arch target binary
define extract_target
	echo 'extracting binary from ${IMAGE}-$(1)'; \
	$(OCI_BIN) create --name agent ${IMAGE}-$(1); \
	$(OCI_BIN) cp agent:/netobserv-ebpf-agent ./release-assets/netobserv-ebpf-agent-${VERSION}-linux-$(1); \
	$(OCI_BIN) rm -f agent;
endef

##@ General

# The help target prints out all targets with their descriptions organized
# beneath their categories. The categories are represented by '##@' and the
# target descriptions by '##'. The awk commands is responsible for reading the
# entire set of makefiles included in this invocation, looking for lines of the
# file as xyz: ## something, and then pretty-format the target and help. Then,
# if there's a line with ##@ something, that gets pretty-printed as a category.
# More info on the usage of ANSI control characters for terminal formatting:
# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters
# More info on the awk command:
# http://linuxcommand.org/lc3_adv_awk.php

.PHONY: help
help: ## Display this help.
	@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n  make \033[36m<target>\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf "  \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)

.PHONY: vendors
vendors: ## Check go vendors
	@echo "### Checking vendors"
	go mod tidy && go mod vendor

.PHONY: install-protoc
install-protoc: ## Install protoc
	curl -qL https://github.com/protocolbuffers/protobuf/releases/download/v$(PROTOC_VERSION)/protoc-$(PROTOC_VERSION)-linux-x86_64.zip -o protoc.zip
	unzip protoc.zip -d protoc && rm protoc.zip

.PHONY: prereqs
prereqs: ## Check if prerequisites are met, and install missing dependencies
	@echo "### Checking if prerequisites are met, and installing missing dependencies"
	test -f ./bin/golangci-lint-${GOLANGCI_LINT_VERSION} || ( \
		curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s ${GOLANGCI_LINT_VERSION} \
		&& mv ./bin/golangci-lint ./bin/golangci-lint-${GOLANGCI_LINT_VERSION})
	test -f $(shell go env GOPATH)/bin/bpf2go || go install github.com/cilium/ebpf/cmd/bpf2go@${CILIUM_EBPF_VERSION}
	test -f $(shell go env GOPATH)/bin/protoc-gen-go || go install google.golang.org/protobuf/cmd/protoc-gen-go@${PROTOC_GEN_GO_VERSION}
	test -f $(shell go env GOPATH)/bin/protoc-gen-go-grpc || go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@${PROTOC_GEN_GO_GRPC_VERSION}
	test -f $(shell go env GOPATH)/bin/kind || go install sigs.k8s.io/kind@latest
	test "$(shell PATH="$$(pwd)/protoc/bin:$$PATH" && protoc --version)" = "libprotoc $(PROTOC_VERSION)" || $(MAKE) install-protoc

##@ Develop

.PHONY: fmt
fmt: ## Run go fmt against code.
	@echo "### Formatting code"
	go fmt ./...
	find ./bpf -type f -not -path "./bpf/headers/*" -name "*.[ch]" | xargs clang-format -i --Werror

.PHONY: lint
lint: prereqs ## Lint the code
	@echo "### Linting golang code"
	./bin/golangci-lint-${GOLANGCI_LINT_VERSION} run --timeout 3m ./...
	@echo "### Linting bpf C code"
	find ./bpf -type f -not -path "./bpf/headers/*" -name "*.[ch]" | xargs clang-format --dry-run --Werror

.PHONY: gen-bpf
gen-bpf: export BPF_CLANG := $(CLANG)
gen-bpf: export BPF_CFLAGS := $(CFLAGS)
gen-bpf: prereqs ## Generate BPF (pkg/ebpf package)
	@echo "### Generating BPF Go bindings"
	go generate ./pkg/...

.PHONY: gen-protobuf
gen-protobuf: prereqs ## Generate protocol buffer (pkg/proto package)
	@echo "### Generating gRPC and Protocol Buffers code"
	PATH="$(shell pwd)/protoc/bin:$$PATH" protoc --go_out=pkg --go-grpc_out=pkg proto/flow.proto
	PATH="$(shell pwd)/protoc/bin:$$PATH" protoc --go_out=pkg --go-grpc_out=pkg proto/packet.proto

# As generated artifacts are part of the code repo (pkg/ebpf and pkg/proto packages), you don't have
# to run this target for each build. Only when you change the C code inside the bpf folder or the
# protobuf definitions in the proto folder.
# You might want to use the docker-generate target instead of this.
.PHONY: generate
generate: gen-bpf gen-protobuf

.PHONY: docker-generate
docker-generate: ## Create the container that generates the eBPF binaries
	@echo "### Creating the container that generates the eBPF binaries"
	$(OCI_BIN) buildx build . -f scripts/generators.Dockerfile -t $(LOCAL_GENERATOR_IMAGE) --platform=linux/amd64 --build-arg EXTENSION="x86_64" --build-arg PROTOCVERSION="$(PROTOC_VERSION)" --build-arg GOVERSION="$(GO_VERSION)" --load
	$(OCI_BIN) run --privileged --rm -v $(shell pwd):/src $(LOCAL_GENERATOR_IMAGE)

.PHONY: compile
compile: ## Compile ebpf agent project
	@echo "### Compiling project"
	GOARCH=${GOARCH} GOOS=$(GOOS) go build -mod vendor -o bin/netobserv-ebpf-agent cmd/netobserv-ebpf-agent.go

.PHONY: test
test: ## Test code using go test
	@echo "### Testing code"
	GOOS=$(GOOS) go test -mod vendor ./pkg/... ./cmd/... -coverpkg=./... -coverprofile cover.all.out

.PHONY: verify-maps
verify-maps: ## Verify map names consistency across all sources
	@echo "### Verifying map names consistency"
	go test -v ./pkg/maps

.PHONY: test-race
test-race: ## Test code using go test -race
	@echo "### Testing code for race conditions"
	GOOS=$(GOOS) go test -race -mod vendor ./pkg/... ./cmd/...

.PHONY: cov-exclude-generated
cov-exclude-generated:
	grep -vE "(/cmd/)|(bpf_bpfe)|(/examples/)|(/pkg/pbflow/)" cover.all.out > cover.out

.PHONY: coverage-report
coverage-report: cov-exclude-generated ## Generate coverage report
	@echo "### Generating coverage report"
	go tool cover --func=./cover.out

.PHONY: coverage-report-html
coverage-report-html: cov-exclude-generated ## Generate HTML coverage report
	@echo "### Generating HTML coverage report"
	go tool cover --html=./cover.out

.PHONY: tests-e2e
.ONESHELL:
tests-e2e: prereqs ## Run e2e tests
	go clean -testcache
	# making the local agent image available to kind in two ways, so it will work in different
	# environments: (1) as image tagged in the local repository (2) as image archive.
	rm -f ebpf-agent.tar || true
	$(OCI_BIN) build . --build-arg LDFLAGS="" --build-arg TARGETARCH=$(GOARCH) -t localhost/ebpf-agent:test
	$(OCI_BIN) save -o ebpf-agent.tar localhost/ebpf-agent:test
	GOOS=$(GOOS) go test -p 1 -timeout 30m -v -mod vendor -tags e2e ./e2e/...

.PHONY: create-and-deploy-kind-cluster
create-and-deploy-kind-cluster: prereqs ## Create a kind cluster and deploy the agent.
	scripts/kind-cluster.sh

.PHONY: destroy-kind-cluster
destroy-kind-cluster: ## Destroy the kind cluster.
	kubectl delete -f scripts/agent.yml
	kind delete cluster

##@ Images

# note: to build and push custom image tag use: IMAGE_ORG=myuser VERSION=dev s
.PHONY: image-build
image-build: ## Build MULTIARCH_TARGETS images
	trap 'exit' INT; \
	$(foreach target,$(MULTIARCH_TARGETS),$(call build_target,$(target)))

.PHONY: image-push
image-push: ## Push MULTIARCH_TARGETS images
	trap 'exit' INT; \
	$(foreach target,$(MULTIARCH_TARGETS),$(call push_target,$(target)))

.PHONY: manifest-build
manifest-build: ## Build MULTIARCH_TARGETS manifest
	echo 'building manifest $(IMAGE)'
	DOCKER_BUILDKIT=1 $(OCI_BIN) rmi ${IMAGE} -f
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest create ${IMAGE} $(foreach target,$(MULTIARCH_TARGETS), --amend ${IMAGE}-$(target));

.PHONY: manifest-push
manifest-push: ## Push MULTIARCH_TARGETS manifest
	@echo 'publish manifest $(IMAGE)'
ifeq (${OCI_BIN}, docker)
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest push ${IMAGE};
else
	DOCKER_BUILDKIT=1 $(OCI_BIN) manifest push ${IMAGE} docker://${IMAGE};
endif

.PHONY: extract-binaries
extract-binaries: ## Extract all MULTIARCH_TARGETS binaries
	trap 'exit' INT; \
	mkdir -p release-assets; \
	$(foreach target,$(MULTIARCH_TARGETS),$(call extract_target,$(target)))

.PHONY: tar-image
tar-image: MULTIARCH_TARGETS=amd64
tar-image: image-build ## Build single arch (amd64) and save as a tar
	$(OCI_BIN) tag $(IMAGE)-amd64 $(IMAGE)
	mkdir -p ./out
	$(OCI_BIN) save -o out/ebpf-agent.tar $(IMAGE)
	echo $(IMAGE) > ./out/name

.PHONY: tar-bc-image
tar-bc-image: MULTIARCH_TARGETS=amd64
tar-bc-image: bc-image-build ## Build single arch (amd64) bytecode and save as a tar
	$(OCI_BIN) tag $(BC_IMAGE)-amd64 $(BC_IMAGE)
	mkdir -p ./out
	$(OCI_BIN) save -o out/ebpf-agent-bc.tar $(BC_IMAGE)
	echo $(BC_IMAGE) > ./out/bc-name

include .mk/bc.mk
include .mk/shortcuts.mk


================================================
FILE: OWNERS
================================================
approvers:
- jotak
- jpinsonneau
- OlivierCazade
- msherif1234
- luisjira
- leandroberetta
options: {}
reviewers:
- jotak
- jpinsonneau
- OlivierCazade
- stleerh
- msherif1234


================================================
FILE: README.downstream
================================================
Network Observability eBPF Agent

Licenses

Two licenses are used for the source code in this repository:

- GPL v2 (file: LICENSE-GPL) covers only the eBPF code in `./bpf` source code directory.
- Apache v2 (file: LICENSE) covers everything else.


================================================
FILE: README.md
================================================
# Network Observability eBPF Agent

[![Go Report Card](https://goreportcard.com/badge/github.com/netobserv/netobserv-ebpf-agent)](https://goreportcard.com/report/github.com/netobserv/netobserv-ebpf-agent)

The Network Observability eBPF Agent allows collecting and aggregating all the ingress and
egress flows on a Linux host (required a Kernel 5.8+ with eBPF enabled).

* [How to build](#how-to-build)
* [How to configure](#how-to-configure)
* [How to run](#how-to-run)
* [Development receipts](#development-receipts)
* [Known issues](#known-issues)
* [Frequently-asked questions](#frequently-asked-questions)
* [Troubleshooting](#troubleshooting)

## How to build

To build the agent image and push it to your Docker / Quay repository, run:
```bash
# compile project
make build

# build the default image (quay.io/netobserv/netobserv-ebpf-agent:main):
make image-build

# push the default image (quay.io/netobserv/netobserv-ebpf-agent:main):
make image-push

# build and push on your own quay.io account (quay.io/myuser/netobserv-ebpf-agent:dev):
IMAGE_ORG=myuser VERSION=dev make images

# build and push on a different registry
IMAGE=dockerhub.io/myuser/plugin:tag make images
```

## How to configure

The eBPF Agent is configured by means of environment variables. Check the
[configuration documentation](./docs/config.md) for more details.

## How to run

The NetObserv eBPF Agent is designed to run as a DaemonSet in OpenShift/K8s. It is triggered and
configured by our [Network Observability Operator](https://github.com/netobserv/network-observability-operator).

Anyway you can run it directly as an executable from your command line:

```bash
export TARGET_HOST=...
export TARGET_PORT=...
sudo -E bin/netobserv-ebpf-agent
```

We don't recommend using the agent's IPFIX exporter mode as it is not actively maintained (if you're interested in maintaining it, let us know!). Note that flowlogs-pipeline can also generate IPFIX exports, so a valid way to get IPFIX data is to export to flowlogs-pipeline (via GRPC, Kafka or direct-flp) and then configure IPFIX within flowlogs-pipeline.

A simple way to try the agent is using the `direct-flp` export mode, printing directly to stdout:

Given the following file `flp-config.json`:

```json
{
	"pipeline":[
		{"name": "writer","follows": "preset-ingester"}
	],
	"parameters":[
		{"name": "writer","write": {"type": "stdout"}}
	]
}
```
Run:

```bash
export FLP_CONFIG=$(cat flp-config.json)
export EXPORT="direct-flp"
sudo -E bin/netobserv-ebpf-agent
```

For more information about configuring flowlogs-pipeline, please refer to [its documentation](https://github.com/netobserv/flowlogs-pipeline).

To deploy locally, use instructions from [flowlogs-dump (like tcpdump)](./examples/flowlogs-dump/README.md).    
To deploy it as a Pod, you can check the [deployment examples](./deployments).

The Agent needs to be executed either with:

1. The following [Linux capabilities](https://man7.org/linux/man-pages/man7/capabilities.7.html):
   - `BPF`: Needed to use eBPF programs and maps.
   - `PERFMON`: Needed to access perf monitoring and profiling features.
   - `NET_ADMIN`: Needed for TC programs to attach/detach to/from qdisc and for TCX hooks.

   If you [deploy it in Kubernetes or OpenShift](./deployments/flp-daemonset-cap.yml),
   the container running the Agent needs to define the following `securityContext`:
   ```yaml
   securityContext:
     runAsUser: 0
     capabilities:
       add:
         - BPF
         - PERFMON
         - NET_ADMIN
   ```
   (Please notice that the `runAsUser: 0` is still needed).
2. Or full administrative privileges. If you
   [deploy it in Kubernetes or OpenShift](./deployments/flp-daemonset.yml),
   the container running the Agent needs to define the following `securityContext`:
   ```yaml
   securityContext:
     privileged: true
     runAsUser: 0
   ```

While the first option is safer (principle of least privilege), it also has its drawbacks, notably that you can't monitor all secondary interfaces. Full privileged mode may also be needed if running on a Linux kernel that does not recognize some of the above capabilities (some older Kubernetes distributions might not recognize the `BPF` and `PERFMON` capabilities).

Here is a list of distributions where we tested both full privileges and capability approaches,
and whether they worked (✅) or did not (❌):

| Distribution                  | K8s Server version | Capabilities | Privileged |
|-------------------------------|--------------------|--------------|------------|
| Amazon EKS (Bottlerocket AMI) | 1.22.6             | ✅            | ✅          |
| K3s (Rancher Desktop)         | 1.23.5             | ❌            | ✅          |
| Kind                          | 1.23.5             | ❌            | ✅          |
| OpenShift                     | 1.23.3             | ✅            | ✅          |

## Running on KinD cluster

### How to run on kind cluster

Install KinD and the ebpf agent and export KUBECONFIG
```sh
make create-and-deploy-kind-cluster
export KUBECONFIG=$(pwd)/scripts/kubeconfig
```

### Deleting the kind cluster

In order to delete the kind cluster:
```sh
make destroy-kind-cluster
```

## Development receipts

### How to regenerate the eBPF Kernel binaries

The eBPF program is embedded into the `pkg/ebpf/bpf_*` generated files.
This step is generally not needed unless you change the C code in the `bpf` folder.

If you have Docker installed, you just need to run:

```bash
make docker-generate
```

If you can't install docker, you can install locally the following packages, then run `make generate`:

```bash
dnf install -y kernel-devel make llvm clang glibc-devel.i686
make generate
```

Regularly tested on Fedora.

### Running end-to-end tests

Refer to the specific documentation: [e2e readme](./e2e/README.md)

## Known issues

### Extrenal Traffic in Openshift (OVN-Kubernetes CNI)

For egress traffic, you can see the source Pod metadata. For ingress traffic (e.g. an HTTP response),
you see the destination **Host** metadata.

## Frequently-asked questions

### Where is the collector?

As part of our Network Observability solution, the eBPF Agent is designed to send the traced
flows to our [Flowlogs Pipeline](https://github.com/netobserv/flowlogs-pipeline) component.

In addition, we provide a simple GRPC+Protobuf library to allow implementing your own collector.
Check the [packet counter code](./examples/performance/server/packet-counter-collector.go)
for an example of a simple collector using our library.

## Troubleshooting

### Deployed as a Kubernetes Pod, the agent shows permission errors in the logs and can't start

In your [deployment file](./deployments/flp-daemonset-cap.yml), make sure that the container runs as
the root user (`runAsUser: 0`) and with the granted capabilities or privileges (see [how to run](#how-to-run) section).

### The Agent doesn't work in my Amazon EKS puzzle

Despite Amazon Linux 2 enables eBPF by default in EC2, the
[EKS images are shipped with disabled eBPF](https://github.com/awslabs/amazon-eks-ami/issues/728).

You'd need either:

1. Provide your own AMI configured to work with eBPF
2. Use other Linux distributions that are shipped with eBPF enabled by default. We have successfully
   tested the eBPF Agent in EKS with the [Bottlerocket](https://aws.amazon.com/es/bottlerocket/)
   Linux distribution, without requiring any extra configuration.

## Licenses

Two licenses are used for the source code in this repository:

- [GPL v2](./bpf/LICENSE) covers the eBPF code in `./bpf` directory.
- [Apache v2](./LICENSE) covers everything else.

## Discussions and contributions

Discussions related to NetObserv are welcome on [GitHub discussions](https://github.com/orgs/netobserv/discussions) as well as on the [#netobserv-project](http://cloud-native.slack.com/) channel from CNCF slack.

If you'd like to reach out because you've found a security issue, please do not share sensitive details publicly. Please follow the instructions described on the [Red Hat Customer Portal](https://access.redhat.com/security/team/contact/?extIdCarryOver=true&sc_cid=701f2000001Css5AAC).

Refer to the [NetObserv projects contribution guide](https://github.com/netobserv/documents/blob/main/CONTRIBUTING.md) for more details on contributions.


================================================
FILE: SECURITY.md
================================================
# Security Policy

## Supported Versions

All NetObserv components use a single rolling release distribution model. Only the latest version is supported and receives security updates.
A reported and fixed vulnerability will be included in the next minor or patch release.

## Reporting a Vulnerability

To report a vulnerability, please use the [Private Vulnerability Reporting Feature](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability)
on GitHub. The maintainers team will do its best to respond in a timely manner.
If a vulnerability is reported but considered low priority it may be converted into an issue and handled on the public issue tracker.
We may ask for you to collaborate with us on a temporary private fork of the repository.


================================================
FILE: bpf/.clang-format
================================================
{
  BasedOnStyle: LLVM,
  AllowShortFunctionsOnASingleLine: InlineOnly,
  ColumnLimit: 100,
  IndentWidth: 4,
  SortIncludes: false,
  ReflowComments: false,
  TabWidth: 4,
}


================================================
FILE: bpf/LICENSE
================================================
                    GNU GENERAL PUBLIC LICENSE
                       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

                    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

                            NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: bpf/configs.h
================================================

#ifndef __CONFIGS_H__
#define __CONFIGS_H__

// Constant definitions, to be overridden by the invoker
volatile const u32 sampling = 0;
volatile const u8 has_filter_sampling = 0;
volatile const u8 trace_messages = 0;
volatile const u8 enable_rtt = 0;
volatile const u8 enable_pca = 0;
volatile const u8 enable_dns_tracking = 0;
volatile const u8 enable_flows_filtering = 0;
volatile const u16 dns_port = 0;
volatile const u8 enable_network_events_monitoring = 0;
volatile const u8 network_events_monitoring_groupid = 0;
volatile const u8 enable_pkt_translation_tracking = 0;
volatile const u8 enable_ipsec = 0;
volatile const u8 enable_openssl_tracking = 0;
volatile const u8 enable_directflows_ringbuf = 0;
volatile const u8 enable_tls_usage_tracking = 0;
#endif //__CONFIGS_H__


================================================
FILE: bpf/dns_tracker.h
================================================
/*
    light weight DNS tracker.
*/

#ifndef __DNS_TRACKER_H__
#define __DNS_TRACKER_H__
#include "utils.h"

#define DNS_DEFAULT_PORT 53
#define DNS_QR_FLAG 0x8000
#define UDP_MAXMSG 512

// See https://www.rfc-editor.org/rfc/rfc1035 4.1.1. Header section format
struct dns_header {
    u16 id;
    u16 flags;
    u16 qdcount;
    u16 ancount;
    u16 nscount;
    u16 arcount;
};

static inline void fill_dns_id(flow_id *id, dns_flow_id *dns_flow, u16 dns_id, bool reverse) {
    dns_flow->id = dns_id;
    dns_flow->protocol = id->transport_protocol;
    if (reverse) {
        __builtin_memcpy(dns_flow->src_ip, id->dst_ip, IP_MAX_LEN);
        __builtin_memcpy(dns_flow->dst_ip, id->src_ip, IP_MAX_LEN);
        dns_flow->src_port = id->dst_port;
        dns_flow->dst_port = id->src_port;
    } else {
        __builtin_memcpy(dns_flow->src_ip, id->src_ip, IP_MAX_LEN);
        __builtin_memcpy(dns_flow->dst_ip, id->dst_ip, IP_MAX_LEN);
        dns_flow->src_port = id->src_port;
        dns_flow->dst_port = id->dst_port;
    }
}

static __always_inline u8 calc_dns_header_offset(pkt_info *pkt, void *data_end) {
    u8 len = 0;
    switch (pkt->id->transport_protocol) {
    case IPPROTO_TCP: {
        struct tcphdr *tcp = (struct tcphdr *)pkt->l4_hdr;
        if (!tcp || ((void *)tcp + sizeof(*tcp) > data_end)) {
            return 0;
        }
        len = tcp->doff * sizeof(u32) + 2; // DNS over TCP has 2 bytes of length at the beginning
        break;
    }
    case IPPROTO_UDP: {
        struct udphdr *udp = (struct udphdr *)pkt->l4_hdr;
        if (!udp || ((void *)udp + sizeof(*udp) > data_end)) {
            return 0;
        }
        len = bpf_ntohs(udp->len);
        // make sure udp payload doesn't exceed max msg size
        if (len - sizeof(struct udphdr) > UDP_MAXMSG) {
            return 0;
        }
        // set the length to udp hdr size as it will be used to locate dns header
        len = sizeof(struct udphdr);
        break;
    }
    }
    return len;
}

static __always_inline int track_dns_packet(struct __sk_buff *skb, pkt_info *pkt) {
    void *data_end = (void *)(long)skb->data_end;
    int ret = 0;
    if (pkt->id->dst_port == dns_port || pkt->id->src_port == dns_port ||
        pkt->id->dst_port == DNS_DEFAULT_PORT || pkt->id->src_port == DNS_DEFAULT_PORT) {
        dns_flow_id dns_req;
        __builtin_memset(&dns_req, 0, sizeof(dns_req));

        u8 len = calc_dns_header_offset(pkt, data_end);
        if (!len) {
            return EINVAL;
        }

        struct dns_header dns;
        u32 dns_offset = (long)pkt->l4_hdr - (long)skb->data + len;

        if ((ret = bpf_skb_load_bytes(skb, dns_offset, &dns, sizeof(dns))) < 0) {
            return -ret;
        }

        u16 dns_id = bpf_ntohs(dns.id);
        u16 flags = bpf_ntohs(dns.flags);
        u64 ts = bpf_ktime_get_ns();

        if ((flags & DNS_QR_FLAG) == 0) { /* dns query */
            fill_dns_id(pkt->id, &dns_req, dns_id, false);
            ret = bpf_map_update_elem(&dns_flows, &dns_req, &ts, BPF_NOEXIST);
            if (ret != 0) {
                if (trace_messages && ret != -EEXIST) {
                    bpf_printk("error creating new dns entry %d\n", ret);
                }
            }
        } else { /* dns response */
            fill_dns_id(pkt->id, &dns_req, dns_id, true);
            u64 *value = bpf_map_lookup_elem(&dns_flows, &dns_req);
            if (value != NULL) {
                pkt->dns_latency = ts - *value;
                bpf_map_delete_elem(&dns_flows, &dns_req);
            } else {
                ret = ENOENT;
            }
            pkt->dns_id = dns_id;
            pkt->dns_flags = flags;

            // Copy raw QNAME bytes (label-encoded) and let userspace decode to dotted form
            // Use per-CPU map to avoid stack limit
            u32 key = 0;
            dns_name_buffer *dns_buf = bpf_map_lookup_elem(&dns_name_map, &key);
            if (dns_buf) {
                u32 qname_off = dns_offset + sizeof(struct dns_header);
                // Best-effort fixed-size copy; safe for verifier (constant size)
                (void)bpf_skb_load_bytes(skb, qname_off, dns_buf->name, DNS_NAME_MAX_LEN - 1);
                // Ensure null-termination
                dns_buf->name[DNS_NAME_MAX_LEN - 1] = '\0';
                pkt->dns_name = dns_buf->name;
            }
        } // end of dns response
    }
    return ret;
}

#endif // __DNS_TRACKER_H__


================================================
FILE: bpf/flows.c
================================================
/*
    Flows v2.
    Flow monitor: A Flow-metric generator using TC.

    This program can be hooked on to TC ingress/egress hook to monitor packets
    to/from an interface.

    Logic:
        1) Store flow information in a hash map.
        2) Periodically evict the entry from map from userspace.
        3) When the map is full/busy, we send the new flow entry to userspace via ringbuffer,
            until an entry is available.
*/
#include <vmlinux.h>
#include <bpf_helpers.h>
#include "configs.h"
#include "utils.h"

/*
 * Defines a packet drops statistics tracker,
 * which attaches at kfree_skb hook. Is optional.
 */
#include "pkt_drops.h"

/*
 * Defines a dns tracker,
 * which attaches at net_dev_queue hook. Is optional.
 */
#include "dns_tracker.h"

/*
 * Defines the TLS tracker,
 */
#include "tls_tracker.h"

/*
 * Defines an rtt tracker,
 * which runs inside flow_monitor. Is optional.
 */
#include "rtt_tracker.h"

/*
 * Defines a Packet Capture Agent (PCA) tracker,
 * It is enabled by setting env var ENABLE_PCA= true. Is Optional
 */
#include "pca.h"

/* Do flow filtering. Is optional. */
#include "flows_filter.h"
/*
 * Defines an Network events monitoring tracker,
 * which runs inside flow_monitor. Is optional.
 */
#include "network_events_monitoring.h"
/*
 * Defines packets translation tracker
 */
#include "pkt_translation.h"

/*
 * Defines ipsec tracker
 */
#include "ipsec.h"

/*
 * Defines ssl tracker
 */
#include "openssl_tracker.h"

// return 0 on success, 1 if capacity reached
static __always_inline int add_observed_intf(flow_metrics *value, pkt_info *pkt, u32 if_index,
                                             u8 direction) {
    if (value->nb_observed_intf >= MAX_OBSERVED_INTERFACES) {
        return 1;
    }
    for (u8 i = 0; i < value->nb_observed_intf; i++) {
        if (value->observed_intf[i] == if_index) {
            if (value->observed_direction[i] != direction &&
                value->observed_direction[i] != OBSERVED_DIRECTION_BOTH) {
                // Same interface seen on a different direction => mark as both directions
                value->observed_direction[i] = OBSERVED_DIRECTION_BOTH;
            }
            // Interface already seen -> skip
            return 0;
        }
    }
    value->observed_intf[value->nb_observed_intf] = if_index;
    value->observed_direction[value->nb_observed_intf] = direction;
    value->nb_observed_intf++;
    return 0;
}

static __always_inline void update_existing_flow(flow_metrics *aggregate_flow, pkt_info *pkt,
                                                 u64 len, u32 sampling, u32 if_index, u8 direction,
                                                 tls_info *tls) {
    // Count only packets seen from the same interface as previously to avoid duplicate counts
    int maxReached = 0;
    bpf_spin_lock(&aggregate_flow->lock);
    if (aggregate_flow->if_index_first_seen == if_index) {
        aggregate_flow->packets += 1;
        aggregate_flow->bytes += len;
        aggregate_flow->end_mono_time_ts = pkt->current_ts;
        aggregate_flow->flags |= pkt->flags;
        aggregate_flow->dscp = pkt->dscp;
        aggregate_flow->sampling = sampling;
        if (tls->hello_version > 0 && aggregate_flow->ssl_version != tls->hello_version) {
            if (aggregate_flow->ssl_version == 0) {
                aggregate_flow->ssl_version = tls->hello_version;
            } else {
                // Inconsistency: different client/server hello received with different versions
                aggregate_flow->misc_flags |= MISC_FLAGS_SSL_MISMATCH;
            }
        }
        if (tls->cipher_suite > 0 && tls->type == TLSTRACKER_BF_SERVER_HELLO) {
            aggregate_flow->tls_cipher_suite = tls->cipher_suite;
        }
        if (tls->key_share > 0 && tls->type == TLSTRACKER_BF_SERVER_HELLO) {
            aggregate_flow->tls_key_share = tls->key_share;
        }
        aggregate_flow->tls_types |= tls->type;
    } else if (if_index != 0) {
        // Only add info that we've seen this interface (we can also update end time & flags)
        aggregate_flow->end_mono_time_ts = pkt->current_ts;
        aggregate_flow->flags |= pkt->flags;
        maxReached = add_observed_intf(aggregate_flow, pkt, if_index, direction);
    }
    bpf_spin_unlock(&aggregate_flow->lock);
    if (maxReached > 0) {
        BPF_PRINTK("observed interface missed (array capacity reached); ifindex=%d, eth_type=%d, "
                   "proto=%d, sport=%d, dport=%d\n",
                   if_index, aggregate_flow->eth_protocol, pkt->id->transport_protocol,
                   pkt->id->src_port, pkt->id->dst_port);
        if (pkt->id->transport_protocol != 0) {
            // Only raise counter on non-zero proto; zero proto traffic is very likely to have its interface max count reached
            increase_counter(OBSERVED_INTF_MISSED);
        }
    }
}

static inline void update_dns(dns_metrics *dns_metrics, pkt_info *pkt, int dns_errno) {
    if (pkt->dns_id != 0) {
        dns_metrics->end_mono_time_ts = pkt->current_ts;
        dns_metrics->id = pkt->dns_id;
        dns_metrics->flags = pkt->dns_flags;
        dns_metrics->latency = pkt->dns_latency;
        if (pkt->dns_name != NULL) {
            __builtin_memcpy(dns_metrics->name, pkt->dns_name, DNS_NAME_MAX_LEN);
        }
    }
    if (dns_errno != 0) {
        dns_metrics->errno = dns_errno;
    }
}

static inline int flow_monitor(struct __sk_buff *skb, u8 direction) {
    u32 flow_sampling = 0;
    if (!has_filter_sampling) {
        // When no filter sampling is defined, run the sampling check at the earliest for better performances
        // If sampling is defined, will only parse 1 out of "sampling" flows
        if (sampling > 1 && (bpf_get_prandom_u32() % sampling) != 0) {
            do_sampling = 0;
            return TC_ACT_OK;
        }
        flow_sampling = sampling;
        do_sampling = 1;
    }

    u16 eth_protocol = 0;
    pkt_info pkt;
    __builtin_memset(&pkt, 0, sizeof(pkt));

    flow_id id;
    __builtin_memset(&id, 0, sizeof(id));

    pkt.current_ts = bpf_ktime_get_ns(); // Record the current time first.
    pkt.id = &id;

    void *data_end = (void *)(long)skb->data_end;
    void *data = (void *)(long)skb->data;
    struct ethhdr *eth = (struct ethhdr *)data;
    u64 len = skb->len;

    if (fill_ethhdr(eth, data_end, &pkt, &eth_protocol) == DISCARD) {
        return TC_ACT_OK;
    }

    // check if this packet need to be filtered if filtering feature is enabled
    bool skip =
        check_and_do_flow_filtering(&id, pkt.flags, 0, eth_protocol, &flow_sampling, direction);
    if (has_filter_sampling) {
        if (flow_sampling == 0) {
            flow_sampling = sampling;
        }
        // If sampling is defined, will only parse 1 out of "sampling" flows
        if (flow_sampling > 1 && (bpf_get_prandom_u32() % flow_sampling) != 0) {
            do_sampling = 0;
            return TC_ACT_OK;
        }
        do_sampling = 1;
    }
    if (skip) {
        return TC_ACT_OK;
    }

    int dns_errno = 0;
    if (enable_dns_tracking) {
        dns_errno = track_dns_packet(skb, &pkt);
    }

    tls_info tls;
    __builtin_memset(&tls, 0, sizeof(tls));
    track_tls(skb, pkt.id->transport_protocol, pkt.l4_hdr, pkt.flags, &tls);
    flow_metrics *aggregate_flow = (flow_metrics *)bpf_map_lookup_elem(&aggregated_flows, &id);
    if (aggregate_flow != NULL) {
        update_existing_flow(aggregate_flow, &pkt, len, flow_sampling, skb->ifindex, direction,
                             &tls);
    } else {
        // Key does not exist in the map, and will need to create a new entry.
        flow_metrics new_flow;
        __builtin_memset(&new_flow, 0, sizeof(new_flow));
        new_flow.if_index_first_seen = skb->ifindex;
        new_flow.direction_first_seen = direction;
        new_flow.packets = 1;
        new_flow.bytes = len;
        new_flow.eth_protocol = eth_protocol;
        new_flow.start_mono_time_ts = pkt.current_ts;
        new_flow.end_mono_time_ts = pkt.current_ts;
        new_flow.flags = pkt.flags;
        new_flow.dscp = pkt.dscp;
        new_flow.sampling = flow_sampling;
        __builtin_memcpy(new_flow.dst_mac, eth->h_dest, ETH_ALEN);
        __builtin_memcpy(new_flow.src_mac, eth->h_source, ETH_ALEN);
        new_flow.ssl_version = tls.hello_version;
        new_flow.tls_cipher_suite = tls.cipher_suite;
        new_flow.tls_key_share = tls.key_share;
        new_flow.tls_types = tls.type;

        long ret = bpf_map_update_elem(&aggregated_flows, &id, &new_flow, BPF_NOEXIST);
        if (ret != 0) {
            if (ret == -EEXIST) {
                flow_metrics *aggregate_flow =
                    (flow_metrics *)bpf_map_lookup_elem(&aggregated_flows, &id);
                if (aggregate_flow != NULL) {
                    update_existing_flow(aggregate_flow, &pkt, len, flow_sampling, skb->ifindex,
                                         direction, &tls);
                } else {
                    if (trace_messages) {
                        bpf_printk("failed to update an exising flow\n");
                    }
                    // Update global counter for hashmap update errors
                    increase_counter(HASHMAP_FAIL_UPDATE_FLOW);
                }
            } else if (enable_directflows_ringbuf > 0) {
                // usually error -16 (-EBUSY) or -7 (E2BIG) is printed here.
                // In this case, we send the single-packet flow via ringbuffer as in the worst case we can have
                // a repeated INTERSECTION of flows (different flows aggregating different packets),
                // which can be re-aggregated at userpace.
                // other possible values https://chromium.googlesource.com/chromiumos/docs/+/master/constants/errnos.md
                new_flow.errno = -ret;
                flow_record *record =
                    (flow_record *)bpf_ringbuf_reserve(&direct_flows, sizeof(flow_record), 0);
                if (!record) {
                    if (trace_messages) {
                        bpf_printk("couldn't reserve space in the ringbuf. Dropping flow");
                    }
                    return TC_ACT_OK;
                }
                record->id = id;
                record->metrics = new_flow;
                bpf_ringbuf_submit(record, 0);
            } else {
                if (trace_messages) {
                    bpf_printk("error adding flow %d\n", ret);
                }
                // Update global counter for hashmap create errors
                increase_counter(HASHMAP_FAIL_CREATE_FLOW);
            }
        }
    }

    // Update additional metrics (per-CPU map)
    if (pkt.dns_id != 0 || dns_errno != 0) {
        dns_metrics *extra_metrics = (dns_metrics *)bpf_map_lookup_elem(&aggregated_flows_dns, &id);
        if (extra_metrics != NULL) {
            update_dns(extra_metrics, &pkt, dns_errno);
        } else {
            dns_metrics new_metrics;
            __builtin_memset(&new_metrics, 0, sizeof(new_metrics));
            new_metrics.start_mono_time_ts = pkt.current_ts;
            new_metrics.end_mono_time_ts = pkt.current_ts;
            new_metrics.eth_protocol = eth_protocol;
            new_metrics.id = pkt.dns_id;
            new_metrics.flags = pkt.dns_flags;
            new_metrics.latency = pkt.dns_latency;
            if (pkt.dns_name != NULL) {
                __builtin_memcpy(new_metrics.name, pkt.dns_name, DNS_NAME_MAX_LEN);
            }
            new_metrics.errno = dns_errno;
            long ret = bpf_map_update_elem(&aggregated_flows_dns, &id, &new_metrics, BPF_NOEXIST);
            if (ret != 0) {
                if (trace_messages && ret != -EEXIST) {
                    bpf_printk("error adding DNS %d\n", ret);
                }
                if (ret == -EEXIST) {
                    // Concurrent write from another CPU; retry
                    dns_metrics *extra_metrics =
                        (dns_metrics *)bpf_map_lookup_elem(&aggregated_flows_dns, &id);
                    if (extra_metrics != NULL) {
                        update_dns(extra_metrics, &pkt, dns_errno);
                    } else {
                        if (trace_messages) {
                            bpf_printk("failed to update DNS\n");
                        }
                        increase_counter(HASHMAP_FAIL_UPDATE_DNS);
                    }
                } else {
                    increase_counter(HASHMAP_FAIL_UPDATE_DNS);
                }
            }
        }
    }

    return TC_ACT_OK;
}

SEC("classifier/tc_ingress")
int tc_ingress_flow_parse(struct __sk_buff *skb) {
    return flow_monitor(skb, INGRESS);
}

SEC("classifier/tc_egress")
int tc_egress_flow_parse(struct __sk_buff *skb) {
    return flow_monitor(skb, EGRESS);
}

SEC("classifier/tcx_ingress")
int tcx_ingress_flow_parse(struct __sk_buff *skb) {
    flow_monitor(skb, INGRESS);
    // return TCX_NEXT to allow existing with other TCX hooks
    return TCX_NEXT;
}

SEC("classifier/tcx_egress")
int tcx_egress_flow_parse(struct __sk_buff *skb) {
    flow_monitor(skb, EGRESS);
    // return TCX_NEXT to allow existing with other TCX hooks
    return TCX_NEXT;
}

char _license[] SEC("license") = "GPL";


================================================
FILE: bpf/flows_filter.h
================================================
/*
    rule based filter to filter out packets not of interest to users.
*/

#ifndef __FLOWS_FILTER_H__
#define __FLOWS_FILTER_H__

#include "utils.h"

#define BPF_PRINTK(fmt, args...)                                                                   \
    if (trace_messages)                                                                            \
    bpf_printk(fmt, ##args)

static __always_inline int flow_filter_setup_lookup_key(flow_id *id, struct filter_key_t *key,
                                                        u8 *len, u8 *offset, bool use_src_ip,
                                                        u16 eth_protocol) {

    if (eth_protocol == ETH_P_IP) {
        *len = sizeof(u32);
        *offset = sizeof(ip4in6);
        if (use_src_ip) {
            __builtin_memcpy(key->ip_data, id->src_ip + *offset, *len);
        } else {
            __builtin_memcpy(key->ip_data, id->dst_ip + *offset, *len);
        }
        key->prefix_len = 32;
    } else if (eth_protocol == ETH_P_IPV6) {
        *len = IP_MAX_LEN;
        *offset = 0;
        if (use_src_ip) {
            __builtin_memcpy(key->ip_data, id->src_ip + *offset, *len);
        } else {
            __builtin_memcpy(key->ip_data, id->dst_ip + *offset, *len);
        }
        key->prefix_len = 128;
    } else {
        return -1;
    }
    return 0;
}

static __always_inline int do_flow_filter_lookup(flow_id *id, struct filter_key_t *key,
                                                 filter_action *action, u8 len, u8 offset,
                                                 u16 flags, u32 drop_reason, u32 *sampling,
                                                 u8 direction, bool use_src_ip, u16 eth_protocol) {
    int result = 0;

    struct filter_value_t *rule = (struct filter_value_t *)bpf_map_lookup_elem(&filter_map, key);

    if (rule) {
        BPF_PRINTK("rule found drop_reason %d flags %d do_peerCIDR_lookup %d\n", drop_reason, flags,
                   rule->do_peerCIDR_lookup);
        result++;
        if (rule->action != MAX_FILTER_ACTIONS) {
            BPF_PRINTK("action matched: %d\n", rule->action);
            *action = rule->action;
            result++;
        }

        if (rule->do_peerCIDR_lookup) {
            struct filter_key_t peerKey;
            __builtin_memset(&peerKey, 0, sizeof(peerKey));
            // PeerCIDR lookup will will target the opposite IP compared to original CIDR lookup
            // In other words if cidr is using srcIP then peerCIDR will be the dstIP
            if (flow_filter_setup_lookup_key(id, &peerKey, &len, &offset, use_src_ip,
                                             eth_protocol) < 0) {
                BPF_PRINTK("peerCIDR failed to setup lookup key\n");
                result = 0;
                goto end;
            }

            u8 *peer_result = (u8 *)bpf_map_lookup_elem(&peer_filter_map, &peerKey);
            if (peer_result) {
                BPF_PRINTK("peerCIDR matched\n");
                result++;
            } else {
                BPF_PRINTK("peerCIDR couldn't find a matching key\n");
                result = 0;
                goto end;
            }
        }

        if (rule->sample && sampling != NULL) {
            BPF_PRINTK("sampling action is set to %d\n", rule->sample);
            *sampling = rule->sample;
            result++;
        }
        // match specific rule protocol or use wildcard protocol
        if (rule->protocol == id->transport_protocol || rule->protocol == 0) {
            switch (id->transport_protocol) {
            case IPPROTO_TCP:
            case IPPROTO_UDP:
            case IPPROTO_SCTP:
                // dstPort matching
                if ((rule->dstPortStart != 0 && rule->dstPortEnd == 0) || rule->dstPort1 != 0 ||
                    rule->dstPort2 != 0) {
                    if (rule->dstPortStart == id->dst_port || rule->dstPort1 == id->dst_port ||
                        rule->dstPort2 == id->dst_port) {
                        BPF_PRINTK("dstPort matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                } else if (rule->dstPortStart != 0 && rule->dstPortEnd != 0) {
                    if (rule->dstPortStart <= id->dst_port && id->dst_port <= rule->dstPortEnd) {
                        BPF_PRINTK("dstPortStart and dstPortEnd matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                }
                // srcPort matching
                if ((rule->srcPortStart != 0 && rule->srcPortEnd == 0) || rule->srcPort1 != 0 ||
                    rule->srcPort2 != 0) {
                    if (rule->srcPortStart == id->src_port || rule->srcPort1 == id->src_port ||
                        rule->srcPort2 == id->src_port) {
                        BPF_PRINTK("srcPort matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                } else if (rule->srcPortStart != 0 && rule->srcPortEnd != 0) {
                    if (rule->srcPortStart <= id->src_port && id->src_port <= rule->srcPortEnd) {
                        BPF_PRINTK("srcPortStart and srcPortEnd matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                }
                // Generic port matching check for either src or dst port
                if ((rule->portStart != 0 && rule->portEnd == 0) || rule->port1 != 0 ||
                    rule->port2 != 0) {
                    if (rule->portStart == id->src_port || rule->portStart == id->dst_port ||
                        rule->port1 == id->src_port || rule->port1 == id->dst_port ||
                        rule->port2 == id->src_port || rule->port2 == id->dst_port) {
                        BPF_PRINTK("port matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                } else if (rule->portStart != 0 && rule->portEnd != 0) {
                    if ((rule->portStart <= id->src_port && id->src_port <= rule->portEnd) ||
                        (rule->portStart <= id->dst_port && id->dst_port <= rule->portEnd)) {
                        BPF_PRINTK("portStart and portEnd matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                }
                // for TCP only check TCP flags if its set
                if (id->transport_protocol == IPPROTO_TCP) {
                    if (rule->tcpFlags != 0) {
                        if (rule->tcpFlags == flags) {
                            BPF_PRINTK("tcpFlags matched\n");
                            result++;
                        } else {
                            result = 0;
                            goto end;
                        }
                    }
                }
                break;
            case IPPROTO_ICMP:
            case IPPROTO_ICMPV6:
                if (rule->icmpType != 0) {
                    if (rule->icmpType == id->icmp_type) {
                        BPF_PRINTK("icmpType matched\n");
                        result++;
                    } else {
                        result = 0;
                        goto end;
                    }
                    if (rule->icmpCode != 0) {
                        if (rule->icmpCode == id->icmp_code) {
                            BPF_PRINTK("icmpCode matched\n");
                            result++;
                        } else {
                            result = 0;
                            goto end;
                        }
                    }
                }
                break;
            }
        } else {
            result = 0;
            goto end;
        }

        if (rule->direction != MAX_DIRECTION) {
            if (rule->direction == direction) {
                BPF_PRINTK("direction matched\n");
                result++;
            } else {
                result = 0;
                goto end;
            }
        }

        if (rule->filter_drops) {
            if (drop_reason != 0) {
                BPF_PRINTK("drop filter matched\n");
                result++;
            } else {
                result = 0;
                goto end;
            }
        }
    }
end:
    BPF_PRINTK("result: %d action %d\n", result, *action);
    return result;
}

/*
 * check if the flow match filter rule and return >= 1 if the flow is to be dropped
 */
static __always_inline int is_flow_filtered(flow_id *id, filter_action *action, u16 flags,
                                            u32 drop_reason, u16 eth_protocol, u32 *sampling,
                                            u8 direction) {
    struct filter_key_t key;
    u8 len, offset;
    int result = 0;

    __builtin_memset(&key, 0, sizeof(key));
    *action = MAX_FILTER_ACTIONS;

    // Lets do first CIDR match using srcIP.
    result = flow_filter_setup_lookup_key(id, &key, &len, &offset, true, eth_protocol);
    if (result < 0) {
        return result;
    }

    result = do_flow_filter_lookup(id, &key, action, len, offset, flags, drop_reason, sampling,
                                   direction, false, eth_protocol);
    // we have a match so return
    if (result > 0) {
        return result;
    }

    // if we can't find a match then Lets do second CIDR match using dstIP.
    result = flow_filter_setup_lookup_key(id, &key, &len, &offset, false, eth_protocol);
    if (result < 0) {
        return result;
    }

    return do_flow_filter_lookup(id, &key, action, len, offset, flags, drop_reason, sampling,
                                 direction, true, eth_protocol);
}

#endif //__FLOWS_FILTER_H__


================================================
FILE: bpf/headers/bpf_builtins.h
================================================
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/* Copyright Authors of Cilium */

#ifndef __BPF_BUILTINS__
#define __BPF_BUILTINS__

#include "compiler.h"

/* Memory iterators used below. */
#define __it_bwd(x, op) (x -= sizeof(__u##op))
#define __it_fwd(x, op) (x += sizeof(__u##op))

/* Memory operators used below. */
#define __it_set(a, op) (*(__u##op *)__it_bwd(a, op)) = 0
#define __it_xor(a, b, r, op) r |= (*(__u##op *)__it_bwd(a, op)) ^ (*(__u##op *)__it_bwd(b, op))
#define __it_mob(a, b, op) (*(__u##op *)__it_bwd(a, op)) = (*(__u##op *)__it_bwd(b, op))
#define __it_mof(a, b, op)				\
	do {						\
		*(__u##op *)a = *(__u##op *)b;		\
		__it_fwd(a, op); __it_fwd(b, op);	\
	} while (0)

static __always_inline __maybe_unused void
__bpf_memset_builtin(void *d, __u8 c, __u64 len)
{
	/* Everything non-zero or non-const (currently unsupported) as c
	 * gets handled here.
	 */
	__builtin_memset(d, c, len);
}

static __always_inline void __bpf_memzero(void *d, __u64 len)
{
#if __clang_major__ >= 10
	if (!__builtin_constant_p(len))
		__throw_build_bug();

	d += len;

    if (len > 1 && len % 2 == 1) {
        __it_set(d, 8);
    	len -= 1;
    }

    switch (len) {
    case 512:          __it_set(d, 64);
    case 504: jmp_504: __it_set(d, 64);
    case 496: jmp_496: __it_set(d, 64);
    case 488: jmp_488: __it_set(d, 64);
    case 480: jmp_480: __it_set(d, 64);
    case 472: jmp_472: __it_set(d, 64);
    case 464: jmp_464: __it_set(d, 64);
    case 456: jmp_456: __it_set(d, 64);
    case 448: jmp_448: __it_set(d, 64);
    case 440: jmp_440: __it_set(d, 64);
    case 432: jmp_432: __it_set(d, 64);
    case 424: jmp_424: __it_set(d, 64);
    case 416: jmp_416: __it_set(d, 64);
    case 408: jmp_408: __it_set(d, 64);
    case 400: jmp_400: __it_set(d, 64);
    case 392: jmp_392: __it_set(d, 64);
    case 384: jmp_384: __it_set(d, 64);
    case 376: jmp_376: __it_set(d, 64);
    case 368: jmp_368: __it_set(d, 64);
    case 360: jmp_360: __it_set(d, 64);
    case 352: jmp_352: __it_set(d, 64);
    case 344: jmp_344: __it_set(d, 64);
    case 336: jmp_336: __it_set(d, 64);
    case 328: jmp_328: __it_set(d, 64);
    case 320: jmp_320: __it_set(d, 64);
    case 312: jmp_312: __it_set(d, 64);
    case 304: jmp_304: __it_set(d, 64);
    case 296: jmp_296: __it_set(d, 64);
    case 288: jmp_288: __it_set(d, 64);
    case 280: jmp_280: __it_set(d, 64);
    case 272: jmp_272: __it_set(d, 64);
    case 264: jmp_264: __it_set(d, 64);
    case 256: jmp_256: __it_set(d, 64);
    case 248: jmp_248: __it_set(d, 64);
    case 240: jmp_240: __it_set(d, 64);
    case 232: jmp_232: __it_set(d, 64);
    case 224: jmp_224: __it_set(d, 64);
    case 216: jmp_216: __it_set(d, 64);
    case 208: jmp_208: __it_set(d, 64);
    case 200: jmp_200: __it_set(d, 64);
    case 192: jmp_192: __it_set(d, 64);
    case 184: jmp_184: __it_set(d, 64);
    case 176: jmp_176: __it_set(d, 64);
    case 168: jmp_168: __it_set(d, 64);
    case 160: jmp_160: __it_set(d, 64);
    case 152: jmp_152: __it_set(d, 64);
    case 144: jmp_144: __it_set(d, 64);
    case 136: jmp_136: __it_set(d, 64);
    case 128: jmp_128: __it_set(d, 64);
    case 120: jmp_120: __it_set(d, 64);
    case 112: jmp_112: __it_set(d, 64);
    case 104: jmp_104: __it_set(d, 64);
    case 96: jmp_96: __it_set(d, 64);
    case 88: jmp_88: __it_set(d, 64);
    case 80: jmp_80: __it_set(d, 64);
    case 72: jmp_72: __it_set(d, 64);
    case 64: jmp_64: __it_set(d, 64);
    case 56: jmp_56: __it_set(d, 64);
    case 48: jmp_48: __it_set(d, 64);
    case 40: jmp_40: __it_set(d, 64);
    case 32: jmp_32: __it_set(d, 64);
    case 24: jmp_24: __it_set(d, 64);
    case 16: jmp_16: __it_set(d, 64);
    case 8: jmp_8: __it_set(d, 64); break;
    
    case 510: __it_set(d, 16); __it_set(d, 32); goto jmp_504;
    case 502: __it_set(d, 16); __it_set(d, 32); goto jmp_496;
    case 494: __it_set(d, 16); __it_set(d, 32); goto jmp_488;
    case 486: __it_set(d, 16); __it_set(d, 32); goto jmp_480;
    case 478: __it_set(d, 16); __it_set(d, 32); goto jmp_472;
    case 470: __it_set(d, 16); __it_set(d, 32); goto jmp_464;
    case 462: __it_set(d, 16); __it_set(d, 32); goto jmp_456;
    case 454: __it_set(d, 16); __it_set(d, 32); goto jmp_448;
    case 446: __it_set(d, 16); __it_set(d, 32); goto jmp_440;
    case 438: __it_set(d, 16); __it_set(d, 32); goto jmp_432;
    case 430: __it_set(d, 16); __it_set(d, 32); goto jmp_424;
    case 422: __it_set(d, 16); __it_set(d, 32); goto jmp_416;
    case 414: __it_set(d, 16); __it_set(d, 32); goto jmp_408;
    case 406: __it_set(d, 16); __it_set(d, 32); goto jmp_400;
    case 398: __it_set(d, 16); __it_set(d, 32); goto jmp_392;
    case 390: __it_set(d, 16); __it_set(d, 32); goto jmp_384;
    case 382: __it_set(d, 16); __it_set(d, 32); goto jmp_376;
    case 374: __it_set(d, 16); __it_set(d, 32); goto jmp_368;
    case 366: __it_set(d, 16); __it_set(d, 32); goto jmp_360;
    case 358: __it_set(d, 16); __it_set(d, 32); goto jmp_352;
    case 350: __it_set(d, 16); __it_set(d, 32); goto jmp_344;
    case 342: __it_set(d, 16); __it_set(d, 32); goto jmp_336;
    case 334: __it_set(d, 16); __it_set(d, 32); goto jmp_328;
    case 326: __it_set(d, 16); __it_set(d, 32); goto jmp_320;
    case 318: __it_set(d, 16); __it_set(d, 32); goto jmp_312;
    case 310: __it_set(d, 16); __it_set(d, 32); goto jmp_304;
    case 302: __it_set(d, 16); __it_set(d, 32); goto jmp_296;
    case 294: __it_set(d, 16); __it_set(d, 32); goto jmp_288;
    case 286: __it_set(d, 16); __it_set(d, 32); goto jmp_280;
    case 278: __it_set(d, 16); __it_set(d, 32); goto jmp_272;
    case 270: __it_set(d, 16); __it_set(d, 32); goto jmp_264;
    case 262: __it_set(d, 16); __it_set(d, 32); goto jmp_256;
    case 254: __it_set(d, 16); __it_set(d, 32); goto jmp_248;
    case 246: __it_set(d, 16); __it_set(d, 32); goto jmp_240;
    case 238: __it_set(d, 16); __it_set(d, 32); goto jmp_232;
    case 230: __it_set(d, 16); __it_set(d, 32); goto jmp_224;
    case 222: __it_set(d, 16); __it_set(d, 32); goto jmp_216;
    case 214: __it_set(d, 16); __it_set(d, 32); goto jmp_208;
    case 206: __it_set(d, 16); __it_set(d, 32); goto jmp_200;
    case 198: __it_set(d, 16); __it_set(d, 32); goto jmp_192;
    case 190: __it_set(d, 16); __it_set(d, 32); goto jmp_184;
    case 182: __it_set(d, 16); __it_set(d, 32); goto jmp_176;
    case 174: __it_set(d, 16); __it_set(d, 32); goto jmp_168;
    case 166: __it_set(d, 16); __it_set(d, 32); goto jmp_160;
    case 158: __it_set(d, 16); __it_set(d, 32); goto jmp_152;
    case 150: __it_set(d, 16); __it_set(d, 32); goto jmp_144;
    case 142: __it_set(d, 16); __it_set(d, 32); goto jmp_136;
    case 134: __it_set(d, 16); __it_set(d, 32); goto jmp_128;
    case 126: __it_set(d, 16); __it_set(d, 32); goto jmp_120;
    case 118: __it_set(d, 16); __it_set(d, 32); goto jmp_112;
    case 110: __it_set(d, 16); __it_set(d, 32); goto jmp_104;
    case 102: __it_set(d, 16); __it_set(d, 32); goto jmp_96;
    case 94: __it_set(d, 16); __it_set(d, 32); goto jmp_88;
    case 86: __it_set(d, 16); __it_set(d, 32); goto jmp_80;
    case 78: __it_set(d, 16); __it_set(d, 32); goto jmp_72;
    case 70: __it_set(d, 16); __it_set(d, 32); goto jmp_64;
    case 62: __it_set(d, 16); __it_set(d, 32); goto jmp_56;
    case 54: __it_set(d, 16); __it_set(d, 32); goto jmp_48;
    case 46: __it_set(d, 16); __it_set(d, 32); goto jmp_40;
    case 38: __it_set(d, 16); __it_set(d, 32); goto jmp_32;
    case 30: __it_set(d, 16); __it_set(d, 32); goto jmp_24;
    case 22: __it_set(d, 16); __it_set(d, 32); goto jmp_16;
    case 14: __it_set(d, 16); __it_set(d, 32); goto jmp_8;
    case 6: __it_set(d, 16); __it_set(d, 32); break;
    
    case 508: __it_set(d, 32); goto jmp_504;
    case 500: __it_set(d, 32); goto jmp_496;
    case 492: __it_set(d, 32); goto jmp_488;
    case 484: __it_set(d, 32); goto jmp_480;
    case 476: __it_set(d, 32); goto jmp_472;
    case 468: __it_set(d, 32); goto jmp_464;
    case 460: __it_set(d, 32); goto jmp_456;
    case 452: __it_set(d, 32); goto jmp_448;
    case 444: __it_set(d, 32); goto jmp_440;
    case 436: __it_set(d, 32); goto jmp_432;
    case 428: __it_set(d, 32); goto jmp_424;
    case 420: __it_set(d, 32); goto jmp_416;
    case 412: __it_set(d, 32); goto jmp_408;
    case 404: __it_set(d, 32); goto jmp_400;
    case 396: __it_set(d, 32); goto jmp_392;
    case 388: __it_set(d, 32); goto jmp_384;
    case 380: __it_set(d, 32); goto jmp_376;
    case 372: __it_set(d, 32); goto jmp_368;
    case 364: __it_set(d, 32); goto jmp_360;
    case 356: __it_set(d, 32); goto jmp_352;
    case 348: __it_set(d, 32); goto jmp_344;
    case 340: __it_set(d, 32); goto jmp_336;
    case 332: __it_set(d, 32); goto jmp_328;
    case 324: __it_set(d, 32); goto jmp_320;
    case 316: __it_set(d, 32); goto jmp_312;
    case 308: __it_set(d, 32); goto jmp_304;
    case 300: __it_set(d, 32); goto jmp_296;
    case 292: __it_set(d, 32); goto jmp_288;
    case 284: __it_set(d, 32); goto jmp_280;
    case 276: __it_set(d, 32); goto jmp_272;
    case 268: __it_set(d, 32); goto jmp_264;
    case 260: __it_set(d, 32); goto jmp_256;
    case 252: __it_set(d, 32); goto jmp_248;
    case 244: __it_set(d, 32); goto jmp_240;
    case 236: __it_set(d, 32); goto jmp_232;
    case 228: __it_set(d, 32); goto jmp_224;
    case 220: __it_set(d, 32); goto jmp_216;
    case 212: __it_set(d, 32); goto jmp_208;
    case 204: __it_set(d, 32); goto jmp_200;
    case 196: __it_set(d, 32); goto jmp_192;
    case 188: __it_set(d, 32); goto jmp_184;
    case 180: __it_set(d, 32); goto jmp_176;
    case 172: __it_set(d, 32); goto jmp_168;
    case 164: __it_set(d, 32); goto jmp_160;
    case 156: __it_set(d, 32); goto jmp_152;
    case 148: __it_set(d, 32); goto jmp_144;
    case 140: __it_set(d, 32); goto jmp_136;
    case 132: __it_set(d, 32); goto jmp_128;
    case 124: __it_set(d, 32); goto jmp_120;
    case 116: __it_set(d, 32); goto jmp_112;
    case 108: __it_set(d, 32); goto jmp_104;
    case 100: __it_set(d, 32); goto jmp_96;
    case 92: __it_set(d, 32); goto jmp_88;
    case 84: __it_set(d, 32); goto jmp_80;
    case 76: __it_set(d, 32); goto jmp_72;
    case 68: __it_set(d, 32); goto jmp_64;
    case 60: __it_set(d, 32); goto jmp_56;
    case 52: __it_set(d, 32); goto jmp_48;
    case 44: __it_set(d, 32); goto jmp_40;
    case 36: __it_set(d, 32); goto jmp_32;
    case 28: __it_set(d, 32); goto jmp_24;
    case 20: __it_set(d, 32); goto jmp_16;
    case 12: __it_set(d, 32); goto jmp_8;
    case 4: __it_set(d, 32); break;
    
    case 506: __it_set(d, 16); goto jmp_504;
    case 498: __it_set(d, 16); goto jmp_496;
    case 490: __it_set(d, 16); goto jmp_488;
    case 482: __it_set(d, 16); goto jmp_480;
    case 474: __it_set(d, 16); goto jmp_472;
    case 466: __it_set(d, 16); goto jmp_464;
    case 458: __it_set(d, 16); goto jmp_456;
    case 450: __it_set(d, 16); goto jmp_448;
    case 442: __it_set(d, 16); goto jmp_440;
    case 434: __it_set(d, 16); goto jmp_432;
    case 426: __it_set(d, 16); goto jmp_424;
    case 418: __it_set(d, 16); goto jmp_416;
    case 410: __it_set(d, 16); goto jmp_408;
    case 402: __it_set(d, 16); goto jmp_400;
    case 394: __it_set(d, 16); goto jmp_392;
    case 386: __it_set(d, 16); goto jmp_384;
    case 378: __it_set(d, 16); goto jmp_376;
    case 370: __it_set(d, 16); goto jmp_368;
    case 362: __it_set(d, 16); goto jmp_360;
    case 354: __it_set(d, 16); goto jmp_352;
    case 346: __it_set(d, 16); goto jmp_344;
    case 338: __it_set(d, 16); goto jmp_336;
    case 330: __it_set(d, 16); goto jmp_328;
    case 322: __it_set(d, 16); goto jmp_320;
    case 314: __it_set(d, 16); goto jmp_312;
    case 306: __it_set(d, 16); goto jmp_304;
    case 298: __it_set(d, 16); goto jmp_296;
    case 290: __it_set(d, 16); goto jmp_288;
    case 282: __it_set(d, 16); goto jmp_280;
    case 274: __it_set(d, 16); goto jmp_272;
    case 266: __it_set(d, 16); goto jmp_264;
    case 258: __it_set(d, 16); goto jmp_256;
    case 250: __it_set(d, 16); goto jmp_248;
    case 242: __it_set(d, 16); goto jmp_240;
    case 234: __it_set(d, 16); goto jmp_232;
    case 226: __it_set(d, 16); goto jmp_224;
    case 218: __it_set(d, 16); goto jmp_216;
    case 210: __it_set(d, 16); goto jmp_208;
    case 202: __it_set(d, 16); goto jmp_200;
    case 194: __it_set(d, 16); goto jmp_192;
    case 186: __it_set(d, 16); goto jmp_184;
    case 178: __it_set(d, 16); goto jmp_176;
    case 170: __it_set(d, 16); goto jmp_168;
    case 162: __it_set(d, 16); goto jmp_160;
    case 154: __it_set(d, 16); goto jmp_152;
    case 146: __it_set(d, 16); goto jmp_144;
    case 138: __it_set(d, 16); goto jmp_136;
    case 130: __it_set(d, 16); goto jmp_128;
    case 122: __it_set(d, 16); goto jmp_120;
    case 114: __it_set(d, 16); goto jmp_112;
    case 106: __it_set(d, 16); goto jmp_104;
    case 98: __it_set(d, 16); goto jmp_96;
    case 90: __it_set(d, 16); goto jmp_88;
    case 82: __it_set(d, 16); goto jmp_80;
    case 74: __it_set(d, 16); goto jmp_72;
    case 66: __it_set(d, 16); goto jmp_64;
    case 58: __it_set(d, 16); goto jmp_56;
    case 50: __it_set(d, 16); goto jmp_48;
    case 42: __it_set(d, 16); goto jmp_40;
    case 34: __it_set(d, 16); goto jmp_32;
    case 26: __it_set(d, 16); goto jmp_24;
    case 18: __it_set(d, 16); goto jmp_16;
    case 10: __it_set(d, 16); goto jmp_8;
    case 2: __it_set(d, 16); break;
    
    case 1: __it_set(d, 8); break;

   	default:
		/* __builtin_memset() is crappy slow since it cannot
		 * make any assumptions about alignment & underlying
		 * efficient unaligned access on the target we're
		 * running.
		 */
		__throw_build_bug();
	}
#else
	__bpf_memset_builtin(d, 0, len);
#endif
}

static __always_inline __maybe_unused void*
__bpf_no_builtin_memset(void *d __maybe_unused, __u8 c __maybe_unused,
			__u64 len __maybe_unused)
{
	__throw_build_bug();
}

/* Redirect any direct use in our code to throw an error. */
#define __builtin_memset	__bpf_no_builtin_memset

static __always_inline __maybe_unused __nobuiltin("memset") void bpf_memset(void *d, int c,
							 __u64 len)
{
	if (__builtin_constant_p(len) && __builtin_constant_p(c) && c == 0)
		__bpf_memzero(d, len);
	else
		__bpf_memset_builtin(d, (__u8)c, len);
}

static __always_inline __maybe_unused void
__bpf_memcpy_builtin(void *d, const void *s, __u64 len)
{
	/* Explicit opt-in for __builtin_memcpy(). */
	__builtin_memcpy(d, s, len);
}

static __always_inline void __bpf_memcpy(void *d, const void *s, __u64 len)
{
#if __clang_major__ >= 10
	if (!__builtin_constant_p(len))
		__throw_build_bug();

	d += len;
	s += len;

	if (len > 1 && len % 2 == 1) {
		__it_mob(d, s, 8);
		len -= 1;
	}

	switch (len) {
    case 512:          __it_mob(d, s, 64);
    case 504: jmp_504: __it_mob(d, s, 64);
    case 496: jmp_496: __it_mob(d, s, 64);
    case 488: jmp_488: __it_mob(d, s, 64);
    case 480: jmp_480: __it_mob(d, s, 64);
    case 472: jmp_472: __it_mob(d, s, 64);
    case 464: jmp_464: __it_mob(d, s, 64);
    case 456: jmp_456: __it_mob(d, s, 64);
    case 448: jmp_448: __it_mob(d, s, 64);
    case 440: jmp_440: __it_mob(d, s, 64);
    case 432: jmp_432: __it_mob(d, s, 64);
    case 424: jmp_424: __it_mob(d, s, 64);
    case 416: jmp_416: __it_mob(d, s, 64);
    case 408: jmp_408: __it_mob(d, s, 64);
    case 400: jmp_400: __it_mob(d, s, 64);
    case 392: jmp_392: __it_mob(d, s, 64);
    case 384: jmp_384: __it_mob(d, s, 64);
    case 376: jmp_376: __it_mob(d, s, 64);
    case 368: jmp_368: __it_mob(d, s, 64);
    case 360: jmp_360: __it_mob(d, s, 64);
    case 352: jmp_352: __it_mob(d, s, 64);
    case 344: jmp_344: __it_mob(d, s, 64);
    case 336: jmp_336: __it_mob(d, s, 64);
    case 328: jmp_328: __it_mob(d, s, 64);
    case 320: jmp_320: __it_mob(d, s, 64);
    case 312: jmp_312: __it_mob(d, s, 64);
    case 304: jmp_304: __it_mob(d, s, 64);
    case 296: jmp_296: __it_mob(d, s, 64);
    case 288: jmp_288: __it_mob(d, s, 64);
    case 280: jmp_280: __it_mob(d, s, 64);
    case 272: jmp_272: __it_mob(d, s, 64);
    case 264: jmp_264: __it_mob(d, s, 64);
    case 256: jmp_256: __it_mob(d, s, 64);
    case 248: jmp_248: __it_mob(d, s, 64);
    case 240: jmp_240: __it_mob(d, s, 64);
    case 232: jmp_232: __it_mob(d, s, 64);
    case 224: jmp_224: __it_mob(d, s, 64);
    case 216: jmp_216: __it_mob(d, s, 64);
    case 208: jmp_208: __it_mob(d, s, 64);
    case 200: jmp_200: __it_mob(d, s, 64);
    case 192: jmp_192: __it_mob(d, s, 64);
    case 184: jmp_184: __it_mob(d, s, 64);
    case 176: jmp_176: __it_mob(d, s, 64);
    case 168: jmp_168: __it_mob(d, s, 64);
    case 160: jmp_160: __it_mob(d, s, 64);
    case 152: jmp_152: __it_mob(d, s, 64);
    case 144: jmp_144: __it_mob(d, s, 64);
    case 136: jmp_136: __it_mob(d, s, 64);
    case 128: jmp_128: __it_mob(d, s, 64);
    case 120: jmp_120: __it_mob(d, s, 64);
    case 112: jmp_112: __it_mob(d, s, 64);
    case 104: jmp_104: __it_mob(d, s, 64);
    case 96: jmp_96: __it_mob(d, s, 64);
    case 88: jmp_88: __it_mob(d, s, 64);
    case 80: jmp_80: __it_mob(d, s, 64);
    case 72: jmp_72: __it_mob(d, s, 64);
    case 64: jmp_64: __it_mob(d, s, 64);
    case 56: jmp_56: __it_mob(d, s, 64);
    case 48: jmp_48: __it_mob(d, s, 64);
    case 40: jmp_40: __it_mob(d, s, 64);
    case 32: jmp_32: __it_mob(d, s, 64);
    case 24: jmp_24: __it_mob(d, s, 64);
    case 16: jmp_16: __it_mob(d, s, 64);
    case 8: jmp_8: __it_mob(d, s, 64); break;
    
    case 510: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_504;
    case 502: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_496;
    case 494: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_488;
    case 486: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_480;
    case 478: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_472;
    case 470: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_464;
    case 462: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_456;
    case 454: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_448;
    case 446: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_440;
    case 438: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_432;
    case 430: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_424;
    case 422: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_416;
    case 414: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_408;
    case 406: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_400;
    case 398: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_392;
    case 390: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_384;
    case 382: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_376;
    case 374: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_368;
    case 366: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_360;
    case 358: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_352;
    case 350: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_344;
    case 342: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_336;
    case 334: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_328;
    case 326: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_320;
    case 318: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_312;
    case 310: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_304;
    case 302: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_296;
    case 294: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_288;
    case 286: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_280;
    case 278: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_272;
    case 270: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_264;
    case 262: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_256;
    case 254: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_248;
    case 246: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_240;
    case 238: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_232;
    case 230: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_224;
    case 222: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_216;
    case 214: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_208;
    case 206: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_200;
    case 198: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_192;
    case 190: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_184;
    case 182: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_176;
    case 174: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_168;
    case 166: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_160;
    case 158: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_152;
    case 150: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_144;
    case 142: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_136;
    case 134: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_128;
    case 126: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_120;
    case 118: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_112;
    case 110: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_104;
    case 102: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_96;
    case 94: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_88;
    case 86: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_80;
    case 78: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_72;
    case 70: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_64;
    case 62: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_56;
    case 54: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_48;
    case 46: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_40;
    case 38: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_32;
    case 30: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_24;
    case 22: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_16;
    case 14: __it_mob(d, s, 16); __it_mob(d, s, 32); goto jmp_8;
    case 6: __it_mob(d, s, 16); __it_mob(d, s, 32); break;
    
    case 508: __it_mob(d, s, 32); goto jmp_504;
    case 500: __it_mob(d, s, 32); goto jmp_496;
    case 492: __it_mob(d, s, 32); goto jmp_488;
    case 484: __it_mob(d, s, 32); goto jmp_480;
    case 476: __it_mob(d, s, 32); goto jmp_472;
    case 468: __it_mob(d, s, 32); goto jmp_464;
    case 460: __it_mob(d, s, 32); goto jmp_456;
    case 452: __it_mob(d, s, 32); goto jmp_448;
    case 444: __it_mob(d, s, 32); goto jmp_440;
    case 436: __it_mob(d, s, 32); goto jmp_432;
    case 428: __it_mob(d, s, 32); goto jmp_424;
    case 420: __it_mob(d, s, 32); goto jmp_416;
    case 412: __it_mob(d, s, 32); goto jmp_408;
    case 404: __it_mob(d, s, 32); goto jmp_400;
    case 396: __it_mob(d, s, 32); goto jmp_392;
    case 388: __it_mob(d, s, 32); goto jmp_384;
    case 380: __it_mob(d, s, 32); goto jmp_376;
    case 372: __it_mob(d, s, 32); goto jmp_368;
    case 364: __it_mob(d, s, 32); goto jmp_360;
    case 356: __it_mob(d, s, 32); goto jmp_352;
    case 348: __it_mob(d, s, 32); goto jmp_344;
    case 340: __it_mob(d, s, 32); goto jmp_336;
    case 332: __it_mob(d, s, 32); goto jmp_328;
    case 324: __it_mob(d, s, 32); goto jmp_320;
    case 316: __it_mob(d, s, 32); goto jmp_312;
    case 308: __it_mob(d, s, 32); goto jmp_304;
    case 300: __it_mob(d, s, 32); goto jmp_296;
    case 292: __it_mob(d, s, 32); goto jmp_288;
    case 284: __it_mob(d, s, 32); goto jmp_280;
    case 276: __it_mob(d, s, 32); goto jmp_272;
    case 268: __it_mob(d, s, 32); goto jmp_264;
    case 260: __it_mob(d, s, 32); goto jmp_256;
    case 252: __it_mob(d, s, 32); goto jmp_248;
    case 244: __it_mob(d, s, 32); goto jmp_240;
    case 236: __it_mob(d, s, 32); goto jmp_232;
    case 228: __it_mob(d, s, 32); goto jmp_224;
    case 220: __it_mob(d, s, 32); goto jmp_216;
    case 212: __it_mob(d, s, 32); goto jmp_208;
    case 204: __it_mob(d, s, 32); goto jmp_200;
    case 196: __it_mob(d, s, 32); goto jmp_192;
    case 188: __it_mob(d, s, 32); goto jmp_184;
    case 180: __it_mob(d, s, 32); goto jmp_176;
    case 172: __it_mob(d, s, 32); goto jmp_168;
    case 164: __it_mob(d, s, 32); goto jmp_160;
    case 156: __it_mob(d, s, 32); goto jmp_152;
    case 148: __it_mob(d, s, 32); goto jmp_144;
    case 140: __it_mob(d, s, 32); goto jmp_136;
    case 132: __it_mob(d, s, 32); goto jmp_128;
    case 124: __it_mob(d, s, 32); goto jmp_120;
    case 116: __it_mob(d, s, 32); goto jmp_112;
    case 108: __it_mob(d, s, 32); goto jmp_104;
    case 100: __it_mob(d, s, 32); goto jmp_96;
    case 92: __it_mob(d, s, 32); goto jmp_88;
    case 84: __it_mob(d, s, 32); goto jmp_80;
    case 76: __it_mob(d, s, 32); goto jmp_72;
    case 68: __it_mob(d, s, 32); goto jmp_64;
    case 60: __it_mob(d, s, 32); goto jmp_56;
    case 52: __it_mob(d, s, 32); goto jmp_48;
    case 44: __it_mob(d, s, 32); goto jmp_40;
    case 36: __it_mob(d, s, 32); goto jmp_32;
    case 28: __it_mob(d, s, 32); goto jmp_24;
    case 20: __it_mob(d, s, 32); goto jmp_16;
    case 12: __it_mob(d, s, 32); goto jmp_8;
    case 4: __it_mob(d, s, 32); break;
    
    case 506: __it_mob(d, s, 16); goto jmp_504;
    case 498: __it_mob(d, s, 16); goto jmp_496;
    case 490: __it_mob(d, s, 16); goto jmp_488;
    case 482: __it_mob(d, s, 16); goto jmp_480;
    case 474: __it_mob(d, s, 16); goto jmp_472;
    case 466: __it_mob(d, s, 16); goto jmp_464;
    case 458: __it_mob(d, s, 16); goto jmp_456;
    case 450: __it_mob(d, s, 16); goto jmp_448;
    case 442: __it_mob(d, s, 16); goto jmp_440;
    case 434: __it_mob(d, s, 16); goto jmp_432;
    case 426: __it_mob(d, s, 16); goto jmp_424;
    case 418: __it_mob(d, s, 16); goto jmp_416;
    case 410: __it_mob(d, s, 16); goto jmp_408;
    case 402: __it_mob(d, s, 16); goto jmp_400;
    case 394: __it_mob(d, s, 16); goto jmp_392;
    case 386: __it_mob(d, s, 16); goto jmp_384;
    case 378: __it_mob(d, s, 16); goto jmp_376;
    case 370: __it_mob(d, s, 16); goto jmp_368;
    case 362: __it_mob(d, s, 16); goto jmp_360;
    case 354: __it_mob(d, s, 16); goto jmp_352;
    case 346: __it_mob(d, s, 16); goto jmp_344;
    case 338: __it_mob(d, s, 16); goto jmp_336;
    case 330: __it_mob(d, s, 16); goto jmp_328;
    case 322: __it_mob(d, s, 16); goto jmp_320;
    case 314: __it_mob(d, s, 16); goto jmp_312;
    case 306: __it_mob(d, s, 16); goto jmp_304;
    case 298: __it_mob(d, s, 16); goto jmp_296;
    case 290: __it_mob(d, s, 16); goto jmp_288;
    case 282: __it_mob(d, s, 16); goto jmp_280;
    case 274: __it_mob(d, s, 16); goto jmp_272;
    case 266: __it_mob(d, s, 16); goto jmp_264;
    case 258: __it_mob(d, s, 16); goto jmp_256;
    case 250: __it_mob(d, s, 16); goto jmp_248;
    case 242: __it_mob(d, s, 16); goto jmp_240;
    case 234: __it_mob(d, s, 16); goto jmp_232;
    case 226: __it_mob(d, s, 16); goto jmp_224;
    case 218: __it_mob(d, s, 16); goto jmp_216;
    case 210: __it_mob(d, s, 16); goto jmp_208;
    case 202: __it_mob(d, s, 16); goto jmp_200;
    case 194: __it_mob(d, s, 16); goto jmp_192;
    case 186: __it_mob(d, s, 16); goto jmp_184;
    case 178: __it_mob(d, s, 16); goto jmp_176;
    case 170: __it_mob(d, s, 16); goto jmp_168;
    case 162: __it_mob(d, s, 16); goto jmp_160;
    case 154: __it_mob(d, s, 16); goto jmp_152;
    case 146: __it_mob(d, s, 16); goto jmp_144;
    case 138: __it_mob(d, s, 16); goto jmp_136;
    case 130: __it_mob(d, s, 16); goto jmp_128;
    case 122: __it_mob(d, s, 16); goto jmp_120;
    case 114: __it_mob(d, s, 16); goto jmp_112;
    case 106: __it_mob(d, s, 16); goto jmp_104;
    case 98: __it_mob(d, s, 16); goto jmp_96;
    case 90: __it_mob(d, s, 16); goto jmp_88;
    case 82: __it_mob(d, s, 16); goto jmp_80;
    case 74: __it_mob(d, s, 16); goto jmp_72;
    case 66: __it_mob(d, s, 16); goto jmp_64;
    case 58: __it_mob(d, s, 16); goto jmp_56;
    case 50: __it_mob(d, s, 16); goto jmp_48;
    case 42: __it_mob(d, s, 16); goto jmp_40;
    case 34: __it_mob(d, s, 16); goto jmp_32;
    case 26: __it_mob(d, s, 16); goto jmp_24;
    case 18: __it_mob(d, s, 16); goto jmp_16;
    case 10: __it_mob(d, s, 16); goto jmp_8;
    case 2: __it_mob(d, s, 16); break;
    
    case 1: __it_mob(d, s, 8); break;

	default:
		/* __builtin_memcpy() is crappy slow since it cannot
		 * make any assumptions about alignment & underlying
		 * efficient unaligned access on the target we're
		 * running.
		 */
		__throw_build_bug();
	}
#else
	__bpf_memcpy_builtin(d, s, len);
#endif
}

static __always_inline __maybe_unused void*
__bpf_no_builtin_memcpy(void *d __maybe_unused, const void *s __maybe_unused,
			__u64 len __maybe_unused)
{
	__throw_build_bug();
}

/* Redirect any direct use in our code to throw an error. */
#define __builtin_memcpy	__bpf_no_builtin_memcpy

static __always_inline __maybe_unused __nobuiltin("memcpy") void bpf_memcpy(void *d, const void *s,
							 __u64 len)
{
	return __bpf_memcpy(d, s, len);
}

static __always_inline __maybe_unused __u64
__bpf_memcmp_builtin(const void *x, const void *y, __u64 len)
{
	/* Explicit opt-in for __builtin_memcmp(). We use the bcmp builtin
	 * here for two reasons: i) we only need to know equal or non-equal
	 * similar as in __bpf_memcmp(), and ii) if __bpf_memcmp() ends up
	 * selecting __bpf_memcmp_builtin(), clang generats a memcmp loop.
	 * That is, (*) -> __bpf_memcmp() -> __bpf_memcmp_builtin() ->
	 * __builtin_memcmp() -> memcmp() -> (*), meaning it will end up
	 * selecting our memcmp() from here. Remapping to __builtin_bcmp()
	 * breaks this loop and resolves both needs at once.
	 */
	return __builtin_bcmp(x, y, len);
}

static __always_inline __u64 __bpf_memcmp(const void *x, const void *y,
					  __u64 len)
{
#if __clang_major__ >= 10
	__u64 r = 0;

	if (!__builtin_constant_p(len))
		__throw_build_bug();

	x += len;
	y += len;

	if (len > 1 && len % 2 == 1) {
		__it_xor(x, y, r, 8);
		len -= 1;
	}

	switch (len) {
    case 512:          __it_xor(x, y, r, 64);
    case 504: jmp_504: __it_xor(x, y, r, 64);
    case 496: jmp_496: __it_xor(x, y, r, 64);
    case 488: jmp_488: __it_xor(x, y, r, 64);
    case 480: jmp_480: __it_xor(x, y, r, 64);
    case 472: jmp_472: __it_xor(x, y, r, 64);
    case 464: jmp_464: __it_xor(x, y, r, 64);
    case 456: jmp_456: __it_xor(x, y, r, 64);
    case 448: jmp_448: __it_xor(x, y, r, 64);
    case 440: jmp_440: __it_xor(x, y, r, 64);
    case 432: jmp_432: __it_xor(x, y, r, 64);
    case 424: jmp_424: __it_xor(x, y, r, 64);
    case 416: jmp_416: __it_xor(x, y, r, 64);
    case 408: jmp_408: __it_xor(x, y, r, 64);
    case 400: jmp_400: __it_xor(x, y, r, 64);
    case 392: jmp_392: __it_xor(x, y, r, 64);
    case 384: jmp_384: __it_xor(x, y, r, 64);
    case 376: jmp_376: __it_xor(x, y, r, 64);
    case 368: jmp_368: __it_xor(x, y, r, 64);
    case 360: jmp_360: __it_xor(x, y, r, 64);
    case 352: jmp_352: __it_xor(x, y, r, 64);
    case 344: jmp_344: __it_xor(x, y, r, 64);
    case 336: jmp_336: __it_xor(x, y, r, 64);
    case 328: jmp_328: __it_xor(x, y, r, 64);
    case 320: jmp_320: __it_xor(x, y, r, 64);
    case 312: jmp_312: __it_xor(x, y, r, 64);
    case 304: jmp_304: __it_xor(x, y, r, 64);
    case 296: jmp_296: __it_xor(x, y, r, 64);
    case 288: jmp_288: __it_xor(x, y, r, 64);
    case 280: jmp_280: __it_xor(x, y, r, 64);
    case 272: jmp_272: __it_xor(x, y, r, 64);
    case 264: jmp_264: __it_xor(x, y, r, 64);
    case 256: jmp_256: __it_xor(x, y, r, 64);
    case 248: jmp_248: __it_xor(x, y, r, 64);
    case 240: jmp_240: __it_xor(x, y, r, 64);
    case 232: jmp_232: __it_xor(x, y, r, 64);
    case 224: jmp_224: __it_xor(x, y, r, 64);
    case 216: jmp_216: __it_xor(x, y, r, 64);
    case 208: jmp_208: __it_xor(x, y, r, 64);
    case 200: jmp_200: __it_xor(x, y, r, 64);
    case 192: jmp_192: __it_xor(x, y, r, 64);
    case 184: jmp_184: __it_xor(x, y, r, 64);
    case 176: jmp_176: __it_xor(x, y, r, 64);
    case 168: jmp_168: __it_xor(x, y, r, 64);
    case 160: jmp_160: __it_xor(x, y, r, 64);
    case 152: jmp_152: __it_xor(x, y, r, 64);
    case 144: jmp_144: __it_xor(x, y, r, 64);
    case 136: jmp_136: __it_xor(x, y, r, 64);
    case 128: jmp_128: __it_xor(x, y, r, 64);
    case 120: jmp_120: __it_xor(x, y, r, 64);
    case 112: jmp_112: __it_xor(x, y, r, 64);
    case 104: jmp_104: __it_xor(x, y, r, 64);
    case 96: jmp_96: __it_xor(x, y, r, 64);
    case 88: jmp_88: __it_xor(x, y, r, 64);
    case 80: jmp_80: __it_xor(x, y, r, 64);
    case 72: jmp_72: __it_xor(x, y, r, 64);
    case 64: jmp_64: __it_xor(x, y, r, 64);
    case 56: jmp_56: __it_xor(x, y, r, 64);
    case 48: jmp_48: __it_xor(x, y, r, 64);
    case 40: jmp_40: __it_xor(x, y, r, 64);
    case 32: jmp_32: __it_xor(x, y, r, 64);
    case 24: jmp_24: __it_xor(x, y, r, 64);
    case 16: jmp_16: __it_xor(x, y, r, 64);
    case 8: jmp_8: __it_xor(x, y, r, 64); break;
    
    case 510: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_504;
    case 502: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_496;
    case 494: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_488;
    case 486: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_480;
    case 478: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_472;
    case 470: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_464;
    case 462: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_456;
    case 454: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_448;
    case 446: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_440;
    case 438: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_432;
    case 430: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_424;
    case 422: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_416;
    case 414: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_408;
    case 406: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_400;
    case 398: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_392;
    case 390: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_384;
    case 382: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_376;
    case 374: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_368;
    case 366: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_360;
    case 358: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_352;
    case 350: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_344;
    case 342: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_336;
    case 334: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_328;
    case 326: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_320;
    case 318: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_312;
    case 310: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_304;
    case 302: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_296;
    case 294: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_288;
    case 286: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_280;
    case 278: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_272;
    case 270: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_264;
    case 262: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_256;
    case 254: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_248;
    case 246: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_240;
    case 238: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_232;
    case 230: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_224;
    case 222: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_216;
    case 214: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_208;
    case 206: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_200;
    case 198: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_192;
    case 190: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_184;
    case 182: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_176;
    case 174: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_168;
    case 166: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_160;
    case 158: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_152;
    case 150: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_144;
    case 142: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_136;
    case 134: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_128;
    case 126: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_120;
    case 118: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_112;
    case 110: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_104;
    case 102: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_96;
    case 94: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_88;
    case 86: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_80;
    case 78: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_72;
    case 70: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_64;
    case 62: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_56;
    case 54: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_48;
    case 46: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_40;
    case 38: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_32;
    case 30: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_24;
    case 22: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_16;
    case 14: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); goto jmp_8;
    case 6: __it_xor(x, y, r, 16); __it_xor(x, y, r, 32); break;
    
    case 508: __it_xor(x, y, r, 32); goto jmp_504;
    case 500: __it_xor(x, y, r, 32); goto jmp_496;
    case 492: __it_xor(x, y, r, 32); goto jmp_488;
    case 484: __it_xor(x, y, r, 32); goto jmp_480;
    case 476: __it_xor(x, y, r, 32); goto jmp_472;
    case 468: __it_xor(x, y, r, 32); goto jmp_464;
    case 460: __it_xor(x, y, r, 32); goto jmp_456;
    case 452: __it_xor(x, y, r, 32); goto jmp_448;
    case 444: __it_xor(x, y, r, 32); goto jmp_440;
    case 436: __it_xor(x, y, r, 32); goto jmp_432;
    case 428: __it_xor(x, y, r, 32); goto jmp_424;
    case 420: __it_xor(x, y, r, 32); goto jmp_416;
    case 412: __it_xor(x, y, r, 32); goto jmp_408;
    case 404: __it_xor(x, y, r, 32); goto jmp_400;
    case 396: __it_xor(x, y, r, 32); goto jmp_392;
    case 388: __it_xor(x, y, r, 32); goto jmp_384;
    case 380: __it_xor(x, y, r, 32); goto jmp_376;
    case 372: __it_xor(x, y, r, 32); goto jmp_368;
    case 364: __it_xor(x, y, r, 32); goto jmp_360;
    case 356: __it_xor(x, y, r, 32); goto jmp_352;
    case 348: __it_xor(x, y, r, 32); goto jmp_344;
    case 340: __it_xor(x, y, r, 32); goto jmp_336;
    case 332: __it_xor(x, y, r, 32); goto jmp_328;
    case 324: __it_xor(x, y, r, 32); goto jmp_320;
    case 316: __it_xor(x, y, r, 32); goto jmp_312;
    case 308: __it_xor(x, y, r, 32); goto jmp_304;
    case 300: __it_xor(x, y, r, 32); goto jmp_296;
    case 292: __it_xor(x, y, r, 32); goto jmp_288;
    case 284: __it_xor(x, y, r, 32); goto jmp_280;
    case 276: __it_xor(x, y, r, 32); goto jmp_272;
    case 268: __it_xor(x, y, r, 32); goto jmp_264;
    case 260: __it_xor(x, y, r, 32); goto jmp_256;
    case 252: __it_xor(x, y, r, 32); goto jmp_248;
    case 244: __it_xor(x, y, r, 32); goto jmp_240;
    case 236: __it_xor(x, y, r, 32); goto jmp_232;
    case 228: __it_xor(x, y, r, 32); goto jmp_224;
    case 220: __it_xor(x, y, r, 32); goto jmp_216;
    case 212: __it_xor(x, y, r, 32); goto jmp_208;
    case 204: __it_xor(x, y, r, 32); goto jmp_200;
    case 196: __it_xor(x, y, r, 32); goto jmp_192;
    case 188: __it_xor(x, y, r, 32); goto jmp_184;
    case 180: __it_xor(x, y, r, 32); goto jmp_176;
    case 172: __it_xor(x, y, r, 32); goto jmp_168;
    case 164: __it_xor(x, y, r, 32); goto jmp_160;
    case 156: __it_xor(x, y, r, 32); goto jmp_152;
    case 148: __it_xor(x, y, r, 32); goto jmp_144;
    case 140: __it_xor(x, y, r, 32); goto jmp_136;
    case 132: __it_xor(x, y, r, 32); goto jmp_128;
    case 124: __it_xor(x, y, r, 32); goto jmp_120;
    case 116: __it_xor(x, y, r, 32); goto jmp_112;
    case 108: __it_xor(x, y, r, 32); goto jmp_104;
    case 100: __it_xor(x, y, r, 32); goto jmp_96;
    case 92: __it_xor(x, y, r, 32); goto jmp_88;
    case 84: __it_xor(x, y, r, 32); goto jmp_80;
    case 76: __it_xor(x, y, r, 32); goto jmp_72;
    case 68: __it_xor(x, y, r, 32); goto jmp_64;
    case 60: __it_xor(x, y, r, 32); goto jmp_56;
    case 52: __it_xor(x, y, r, 32); goto jmp_48;
    case 44: __it_xor(x, y, r, 32); goto jmp_40;
    case 36: __it_xor(x, y, r, 32); goto jmp_32;
    case 28: __it_xor(x, y, r, 32); goto jmp_24;
    case 20: __it_xor(x, y, r, 32); goto jmp_16;
    case 12: __it_xor(x, y, r, 32); goto jmp_8;
    case 4: __it_xor(x, y, r, 32); break;
    
    case 506: __it_xor(x, y, r, 16); goto jmp_504;
    case 498: __it_xor(x, y, r, 16); goto jmp_496;
    case 490: __it_xor(x, y, r, 16); goto jmp_488;
    case 482: __it_xor(x, y, r, 16); goto jmp_480;
    case 474: __it_xor(x, y, r, 16); goto jmp_472;
    case 466: __it_xor(x, y, r, 16); goto jmp_464;
    case 458: __it_xor(x, y, r, 16); goto jmp_456;
    case 450: __it_xor(x, y, r, 16); goto jmp_448;
    case 442: __it_xor(x, y, r, 16); goto jmp_440;
    case 434: __it_xor(x, y, r, 16); goto jmp_432;
    case 426: __it_xor(x, y, r, 16); goto jmp_424;
    case 418: __it_xor(x, y, r, 16); goto jmp_416;
    case 410: __it_xor(x, y, r, 16); goto jmp_408;
    case 402: __it_xor(x, y, r, 16); goto jmp_400;
    case 394: __it_xor(x, y, r, 16); goto jmp_392;
    case 386: __it_xor(x, y, r, 16); goto jmp_384;
    case 378: __it_xor(x, y, r, 16); goto jmp_376;
    case 370: __it_xor(x, y, r, 16); goto jmp_368;
    case 362: __it_xor(x, y, r, 16); goto jmp_360;
    case 354: __it_xor(x, y, r, 16); goto jmp_352;
    case 346: __it_xor(x, y, r, 16); goto jmp_344;
    case 338: __it_xor(x, y, r, 16); goto jmp_336;
    case 330: __it_xor(x, y, r, 16); goto jmp_328;
    case 322: __it_xor(x, y, r, 16); goto jmp_320;
    case 314: __it_xor(x, y, r, 16); goto jmp_312;
    case 306: __it_xor(x, y, r, 16); goto jmp_304;
    case 298: __it_xor(x, y, r, 16); goto jmp_296;
    case 290: __it_xor(x, y, r, 16); goto jmp_288;
    case 282: __it_xor(x, y, r, 16); goto jmp_280;
    case 274: __it_xor(x, y, r, 16); goto jmp_272;
    case 266: __it_xor(x, y, r, 16); goto jmp_264;
    case 258: __it_xor(x, y, r, 16); goto jmp_256;
    case 250: __it_xor(x, y, r, 16); goto jmp_248;
    case 242: __it_xor(x, y, r, 16); goto jmp_240;
    case 234: __it_xor(x, y, r, 16); goto jmp_232;
    case 226: __it_xor(x, y, r, 16); goto jmp_224;
    case 218: __it_xor(x, y, r, 16); goto jmp_216;
    case 210: __it_xor(x, y, r, 16); goto jmp_208;
    case 202: __it_xor(x, y, r, 16); goto jmp_200;
    case 194: __it_xor(x, y, r, 16); goto jmp_192;
    case 186: __it_xor(x, y, r, 16); goto jmp_184;
    case 178: __it_xor(x, y, r, 16); goto jmp_176;
    case 170: __it_xor(x, y, r, 16); goto jmp_168;
    case 162: __it_xor(x, y, r, 16); goto jmp_160;
    case 154: __it_xor(x, y, r, 16); goto jmp_152;
    case 146: __it_xor(x, y, r, 16); goto jmp_144;
    case 138: __it_xor(x, y, r, 16); goto jmp_136;
    case 130: __it_xor(x, y, r, 16); goto jmp_128;
    case 122: __it_xor(x, y, r, 16); goto jmp_120;
    case 114: __it_xor(x, y, r, 16); goto jmp_112;
    case 106: __it_xor(x, y, r, 16); goto jmp_104;
    case 98: __it_xor(x, y, r, 16); goto jmp_96;
    case 90: __it_xor(x, y, r, 16); goto jmp_88;
    case 82: __it_xor(x, y, r, 16); goto jmp_80;
    case 74: __it_xor(x, y, r, 16); goto jmp_72;
    case 66: __it_xor(x, y, r, 16); goto jmp_64;
    case 58: __it_xor(x, y, r, 16); goto jmp_56;
    case 50: __it_xor(x, y, r, 16); goto jmp_48;
    case 42: __it_xor(x, y, r, 16); goto jmp_40;
    case 34: __it_xor(x, y, r, 16); goto jmp_32;
    case 26: __it_xor(x, y, r, 16); goto jmp_24;
    case 18: __it_xor(x, y, r, 16); goto jmp_16;
    case 10: __it_xor(x, y, r, 16); goto jmp_8;
    case 2: __it_xor(x, y, r, 16); break;
    
    case 1: __it_xor(x, y, r, 8); break;

	default:
		__throw_build_bug();
	}

	return r;
#else
	return __bpf_memcmp_builtin(x, y, len);
#endif
}

static __always_inline __maybe_unused __u64
__bpf_no_builtin_memcmp(const void *x __maybe_unused,
			const void *y __maybe_unused, __u64 len __maybe_unused)
{
	__throw_build_bug();
	return 0;
}

/* Redirect any direct use in our code to throw an error. */
#define __builtin_memcmp	__bpf_no_builtin_memcmp

/* Modified for our needs in that we only return either zero (x and y
 * are equal) or non-zero (x and y are non-equal).
 */
static __always_inline __maybe_unused __nobuiltin("memcmp") __u64 bpf_memcmp(const void *x,
							  const void *y,
							  __u64 len)
{
	return __bpf_memcmp(x, y, len);
}

static __always_inline __maybe_unused void
__bpf_memmove_builtin(void *d, const void *s, __u64 len)
{
	/* Explicit opt-in for __builtin_memmove(). */
	__builtin_memmove(d, s, len);
}

static __always_inline void __bpf_memmove_bwd(void *d, const void *s, __u64 len)
{
	/* Our internal memcpy implementation walks backwards by default. */
	__bpf_memcpy(d, s, len);
}

static __always_inline void __bpf_memmove_fwd(void *d, const void *s, __u64 len)
{
#if __clang_major__ >= 10
	if (!__builtin_constant_p(len))
		__throw_build_bug();

	switch (len) {
    case 512:          __it_mof(d, s, 64);
    case 504: jmp_504: __it_mof(d, s, 64);
    case 496: jmp_496: __it_mof(d, s, 64);
    case 488: jmp_488: __it_mof(d, s, 64);
    case 480: jmp_480: __it_mof(d, s, 64);
    case 472: jmp_472: __it_mof(d, s, 64);
    case 464: jmp_464: __it_mof(d, s, 64);
    case 456: jmp_456: __it_mof(d, s, 64);
    case 448: jmp_448: __it_mof(d, s, 64);
    case 440: jmp_440: __it_mof(d, s, 64);
    case 432: jmp_432: __it_mof(d, s, 64);
    case 424: jmp_424: __it_mof(d, s, 64);
    case 416: jmp_416: __it_mof(d, s, 64);
    case 408: jmp_408: __it_mof(d, s, 64);
    case 400: jmp_400: __it_mof(d, s, 64);
    case 392: jmp_392: __it_mof(d, s, 64);
    case 384: jmp_384: __it_mof(d, s, 64);
    case 376: jmp_376: __it_mof(d, s, 64);
    case 368: jmp_368: __it_mof(d, s, 64);
    case 360: jmp_360: __it_mof(d, s, 64);
    case 352: jmp_352: __it_mof(d, s, 64);
    case 344: jmp_344: __it_mof(d, s, 64);
    case 336: jmp_336: __it_mof(d, s, 64);
    case 328: jmp_328: __it_mof(d, s, 64);
    case 320: jmp_320: __it_mof(d, s, 64);
    case 312: jmp_312: __it_mof(d, s, 64);
    case 304: jmp_304: __it_mof(d, s, 64);
    case 296: jmp_296: __it_mof(d, s, 64);
    case 288: jmp_288: __it_mof(d, s, 64);
    case 280: jmp_280: __it_mof(d, s, 64);
    case 272: jmp_272: __it_mof(d, s, 64);
    case 264: jmp_264: __it_mof(d, s, 64);
    case 256: jmp_256: __it_mof(d, s, 64);
    case 248: jmp_248: __it_mof(d, s, 64);
    case 240: jmp_240: __it_mof(d, s, 64);
    case 232: jmp_232: __it_mof(d, s, 64);
    case 224: jmp_224: __it_mof(d, s, 64);
    case 216: jmp_216: __it_mof(d, s, 64);
    case 208: jmp_208: __it_mof(d, s, 64);
    case 200: jmp_200: __it_mof(d, s, 64);
    case 192: jmp_192: __it_mof(d, s, 64);
    case 184: jmp_184: __it_mof(d, s, 64);
    case 176: jmp_176: __it_mof(d, s, 64);
    case 168: jmp_168: __it_mof(d, s, 64);
    case 160: jmp_160: __it_mof(d, s, 64);
    case 152: jmp_152: __it_mof(d, s, 64);
    case 144: jmp_144: __it_mof(d, s, 64);
    case 136: jmp_136: __it_mof(d, s, 64);
    case 128: jmp_128: __it_mof(d, s, 64);
    case 120: jmp_120: __it_mof(d, s, 64);
    case 112: jmp_112: __it_mof(d, s, 64);
    case 104: jmp_104: __it_mof(d, s, 64);
    case 96: jmp_96: __it_mof(d, s, 64);
    case 88: jmp_88: __it_mof(d, s, 64);
    case 80: jmp_80: __it_mof(d, s, 64);
    case 72: jmp_72: __it_mof(d, s, 64);
    case 64: jmp_64: __it_mof(d, s, 64);
    case 56: jmp_56: __it_mof(d, s, 64);
    case 48: jmp_48: __it_mof(d, s, 64);
    case 40: jmp_40: __it_mof(d, s, 64);
    case 32: jmp_32: __it_mof(d, s, 64);
    case 24: jmp_24: __it_mof(d, s, 64);
    case 16: jmp_16: __it_mof(d, s, 64);
    case 8: jmp_8: __it_mof(d, s, 64); break;
    
    case 510: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_504;
    case 502: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_496;
    case 494: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_488;
    case 486: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_480;
    case 478: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_472;
    case 470: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_464;
    case 462: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_456;
    case 454: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_448;
    case 446: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_440;
    case 438: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_432;
    case 430: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_424;
    case 422: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_416;
    case 414: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_408;
    case 406: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_400;
    case 398: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_392;
    case 390: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_384;
    case 382: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_376;
    case 374: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_368;
    case 366: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_360;
    case 358: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_352;
    case 350: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_344;
    case 342: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_336;
    case 334: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_328;
    case 326: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_320;
    case 318: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_312;
    case 310: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_304;
    case 302: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_296;
    case 294: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_288;
    case 286: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_280;
    case 278: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_272;
    case 270: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_264;
    case 262: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_256;
    case 254: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_248;
    case 246: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_240;
    case 238: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_232;
    case 230: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_224;
    case 222: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_216;
    case 214: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_208;
    case 206: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_200;
    case 198: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_192;
    case 190: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_184;
    case 182: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_176;
    case 174: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_168;
    case 166: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_160;
    case 158: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_152;
    case 150: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_144;
    case 142: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_136;
    case 134: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_128;
    case 126: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_120;
    case 118: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_112;
    case 110: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_104;
    case 102: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_96;
    case 94: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_88;
    case 86: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_80;
    case 78: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_72;
    case 70: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_64;
    case 62: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_56;
    case 54: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_48;
    case 46: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_40;
    case 38: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_32;
    case 30: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_24;
    case 22: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_16;
    case 14: __it_mof(d, s, 16); __it_mof(d, s, 32); goto jmp_8;
    case 6: __it_mof(d, s, 16); __it_mof(d, s, 32); break;
    
    case 508: __it_mof(d, s, 32); goto jmp_504;
    case 500: __it_mof(d, s, 32); goto jmp_496;
    case 492: __it_mof(d, s, 32); goto jmp_488;
    case 484: __it_mof(d, s, 32); goto jmp_480;
    case 476: __it_mof(d, s, 32); goto jmp_472;
    case 468: __it_mof(d, s, 32); goto jmp_464;
    case 460: __it_mof(d, s, 32); goto jmp_456;
    case 452: __it_mof(d, s, 32); goto jmp_448;
    case 444: __it_mof(d, s, 32); goto jmp_440;
    case 436: __it_mof(d, s, 32); goto jmp_432;
    case 428: __it_mof(d, s, 32); goto jmp_424;
    case 420: __it_mof(d, s, 32); goto jmp_416;
    case 412: __it_mof(d, s, 32); goto jmp_408;
    case 404: __it_mof(d, s, 32); goto jmp_400;
    case 396: __it_mof(d, s, 32); goto jmp_392;
    case 388: __it_mof(d, s, 32); goto jmp_384;
    case 380: __it_mof(d, s, 32); goto jmp_376;
    case 372: __it_mof(d, s, 32); goto jmp_368;
    case 364: __it_mof(d, s, 32); goto jmp_360;
    case 356: __it_mof(d, s, 32); goto jmp_352;
    case 348: __it_mof(d, s, 32); goto jmp_344;
    case 340: __it_mof(d, s, 32); goto jmp_336;
    case 332: __it_mof(d, s, 32); goto jmp_328;
    case 324: __it_mof(d, s, 32); goto jmp_320;
    case 316: __it_mof(d, s, 32); goto jmp_312;
    case 308: __it_mof(d, s, 32); goto jmp_304;
    case 300: __it_mof(d, s, 32); goto jmp_296;
    case 292: __it_mof(d, s, 32); goto jmp_288;
    case 284: __it_mof(d, s, 32); goto jmp_280;
    case 276: __it_mof(d, s, 32); goto jmp_272;
    case 268: __it_mof(d, s, 32); goto jmp_264;
    case 260: __it_mof(d, s, 32); goto jmp_256;
    case 252: __it_mof(d, s, 32); goto jmp_248;
    case 244: __it_mof(d, s, 32); goto jmp_240;
    case 236: __it_mof(d, s, 32); goto jmp_232;
    case 228: __it_mof(d, s, 32); goto jmp_224;
    case 220: __it_mof(d, s, 32); goto jmp_216;
    case 212: __it_mof(d, s, 32); goto jmp_208;
    case 204: __it_mof(d, s, 32); goto jmp_200;
    case 196: __it_mof(d, s, 32); goto jmp_192;
    case 188: __it_mof(d, s, 32); goto jmp_184;
    case 180: __it_mof(d, s, 32); goto jmp_176;
    case 172: __it_mof(d, s, 32); goto jmp_168;
    case 164: __it_mof(d, s, 32); goto jmp_160;
    case 156: __it_mof(d, s, 32); goto jmp_152;
    case 148: __it_mof(d, s, 32); goto jmp_144;
    case 140: __it_mof(d, s, 32); goto jmp_136;
    case 132: __it_mof(d, s, 32); goto jmp_128;
    case 124: __it_mof(d, s, 32); goto jmp_120;
    case 116: __it_mof(d, s, 32); goto jmp_112;
    case 108: __it_mof(d, s, 32); goto jmp_104;
    case 100: __it_mof(d, s, 32); goto jmp_96;
    case 92: __it_mof(d, s, 32); goto jmp_88;
    case 84: __it_mof(d, s, 32); goto jmp_80;
    case 76: __it_mof(d, s, 32); goto jmp_72;
    case 68: __it_mof(d, s, 32); goto jmp_64;
    case 60: __it_mof(d, s, 32); goto jmp_56;
    case 52: __it_mof(d, s, 32); goto jmp_48;
    case 44: __it_mof(d, s, 32); goto jmp_40;
    case 36: __it_mof(d, s, 32); goto jmp_32;
    case 28: __it_mof(d, s, 32); goto jmp_24;
    case 20: __it_mof(d, s, 32); goto jmp_16;
    case 12: __it_mof(d, s, 32); goto jmp_8;
    case 4: __it_mof(d, s, 32); break;
    
    case 506: __it_mof(d, s, 16); goto jmp_504;
    case 498: __it_mof(d, s, 16); goto jmp_496;
    case 490: __it_mof(d, s, 16); goto jmp_488;
    case 482: __it_mof(d, s, 16); goto jmp_480;
    case 474: __it_mof(d, s, 16); goto jmp_472;
    case 466: __it_mof(d, s, 16); goto jmp_464;
    case 458: __it_mof(d, s, 16); goto jmp_456;
    case 450: __it_mof(d, s, 16); goto jmp_448;
    case 442: __it_mof(d, s, 16); goto jmp_440;
    case 434: __it_mof(d, s, 16); goto jmp_432;
    case 426: __it_mof(d, s, 16); goto jmp_424;
    case 418: __it_mof(d, s, 16); goto jmp_416;
    case 410: __it_mof(d, s, 16); goto jmp_408;
    case 402: __it_mof(d, s, 16); goto jmp_400;
    case 394: __it_mof(d, s, 16); goto jmp_392;
    case 386: __it_mof(d, s, 16); goto jmp_384;
    case 378: __it_mof(d, s, 16); goto jmp_376;
    case 370: __it_mof(d, s, 16); goto jmp_368;
    case 362: __it_mof(d, s, 16); goto jmp_360;
    case 354: __it_mof(d, s, 16); goto jmp_352;
    case 346: __it_mof(d, s, 16); goto jmp_344;
    case 338: __it_mof(d, s, 16); goto jmp_336;
    case 330: __it_mof(d, s, 16); goto jmp_328;
    case 322: __it_mof(d, s, 16); goto jmp_320;
    case 314: __it_mof(d, s, 16); goto jmp_312;
    case 306: __it_mof(d, s, 16); goto jmp_304;
    case 298: __it_mof(d, s, 16); goto jmp_296;
    case 290: __it_mof(d, s, 16); goto jmp_288;
    case 282: __it_mof(d, s, 16); goto jmp_280;
    case 274: __it_mof(d, s, 16); goto jmp_272;
    case 266: __it_mof(d, s, 16); goto jmp_264;
    case 258: __it_mof(d, s, 16); goto jmp_256;
    case 250: __it_mof(d, s, 16); goto jmp_248;
    case 242: __it_mof(d, s, 16); goto jmp_240;
    case 234: __it_mof(d, s, 16); goto jmp_232;
    case 226: __it_mof(d, s, 16); goto jmp_224;
    case 218: __it_mof(d, s, 16); goto jmp_216;
    case 210: __it_mof(d, s, 16); goto jmp_208;
    case 202: __it_mof(d, s, 16); goto jmp_200;
    case 194: __it_mof(d, s, 16); goto jmp_192;
    case 186: __it_mof(d, s, 16); goto jmp_184;
    case 178: __it_mof(d, s, 16); goto jmp_176;
    case 170: __it_mof(d, s, 16); goto jmp_168;
    case 162: __it_mof(d, s, 16); goto jmp_160;
    case 154: __it_mof(d, s, 16); goto jmp_152;
    case 146: __it_mof(d, s, 16); got
Download .txt
Showing preview only (437K chars total). Download the full file or copy to clipboard to get everything.
gitextract_wt0k_vfz/

├── .ci-operator.yaml
├── .coderabbit.yaml
├── .dockerignore
├── .github/
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   ├── release.yml
│   └── workflows/
│       ├── build_image_pr.yml
│       ├── pull_request.yml
│       ├── pull_request_e2e.yml
│       ├── push_image.yml
│       ├── push_image_pr.yml
│       ├── release.yml
│       └── rm-ok-to-test.yaml
├── .gitignore
├── .gitleaks.toml
├── .golangci.yml
├── .mk/
│   ├── bc.mk
│   └── shortcuts.mk
├── .snyk
├── .tekton/
│   ├── netobserv-ebpf-agent-ystream-pull-request.yaml
│   ├── netobserv-ebpf-agent-ystream-push.yaml
│   └── pipeline-ref.yaml
├── AGENTS.md
├── CONTRIBUTING.md
├── Containerfile.bytecode.multi.arch
├── DOWNSTREAM_OWNERS
├── DOWNSTREAM_OWNERS_ALIASES
├── Dockerfile
├── Dockerfile-args.downstream
├── Dockerfile.downstream
├── LICENSE
├── Makefile
├── OWNERS
├── README.downstream
├── README.md
├── SECURITY.md
├── bpf/
│   ├── .clang-format
│   ├── LICENSE
│   ├── configs.h
│   ├── dns_tracker.h
│   ├── flows.c
│   ├── flows_filter.h
│   ├── headers/
│   │   ├── bpf_builtins.h
│   │   ├── bpf_core_read.h
│   │   ├── bpf_endian.h
│   │   ├── bpf_helper_defs.h
│   │   ├── bpf_helpers.h
│   │   ├── bpf_tracing.h
│   │   ├── compiler.h
│   │   ├── utils.h
│   │   ├── vmlinux.h
│   │   ├── vmlinux_amd64.h
│   │   ├── vmlinux_arm64.h
│   │   ├── vmlinux_ppc64le.h
│   │   └── vmlinux_s390.h
│   ├── ipsec.h
│   ├── maps_definition.h
│   ├── network_events_monitoring.h
│   ├── openssl_tracker.h
│   ├── pca.h
│   ├── pkt_drops.h
│   ├── pkt_translation.h
│   ├── rtt_tracker.h
│   ├── tls_tracker.h
│   ├── types.h
│   └── utils.h
├── cmd/
│   └── netobserv-ebpf-agent.go
├── deployments/
│   ├── README.md
│   ├── flp-daemonset-cap.yml
│   ├── flp-daemonset.yml
│   ├── flp-service.yml
│   └── perms.yml
├── docs/
│   ├── architecture.md
│   ├── config.md
│   ├── ebpf_implementation.md
│   ├── flow_filtering.md
│   ├── measurements.pptx
│   ├── profiling.md
│   └── rtt_calculations.md
├── e2e/
│   ├── README.md
│   ├── basic/
│   │   ├── common.go
│   │   ├── flow_test.go
│   │   └── manifests/
│   │       └── pods.yml
│   ├── cluster/
│   │   ├── base/
│   │   │   ├── 00-kind.yml
│   │   │   ├── 01-permissions.yml
│   │   │   ├── 02-loki.yml
│   │   │   ├── 03-flp.yml
│   │   │   └── 04-agent.yml
│   │   ├── kind.go
│   │   ├── kind_test.go
│   │   └── tester/
│   │       ├── loki.go
│   │       └── pods.go
│   ├── ipfix/
│   │   ├── ipfix_test.go
│   │   └── manifests/
│   │       ├── 20-flp-transformer.yml
│   │       └── 30-agent.yml
│   └── kafka/
│       ├── kafka_test.go
│       └── manifests/
│           ├── 10-kafka-crd.yml
│           ├── 11-kafka-cluster.yml
│           ├── 12-kafka-topic.yml
│           ├── 20-flp-transformer.yml
│           └── 30-agent.yml
├── examples/
│   ├── direct-flp/
│   │   ├── README.md
│   │   ├── ipfix.json
│   │   └── simple-stdout.json
│   ├── filters/
│   │   ├── README.md
│   │   └── single-ip.json
│   ├── flowlogs-dump/
│   │   ├── README.md
│   │   └── server/
│   │       └── flowlogs-dump-collector.go
│   ├── ipfix-collector/
│   │   └── ipfix-dump.go
│   ├── packetcapture-dump/
│   │   ├── README.md
│   │   └── client/
│   │       └── packetcapture-client.go
│   ├── performance/
│   │   ├── Dockerfile_packet_counter
│   │   ├── README.md
│   │   ├── deployment.yml
│   │   ├── perftest-iperf.yml
│   │   ├── perftest-millionp.yml
│   │   └── server/
│   │       └── packet-counter-collector.go
│   ├── systemd/
│   │   ├── netobserv-ebpf-agent
│   │   └── netobserv-ebpf-agent.service
│   └── test-ssl-host.sh
├── go.mod
├── go.sum
├── pkg/
│   ├── agent/
│   │   ├── agent.go
│   │   ├── agent_test.go
│   │   ├── interfaces_listener.go
│   │   ├── ip.go
│   │   ├── ip_test.go
│   │   ├── packets_agent.go
│   │   ├── sasl.go
│   │   └── tls.go
│   ├── config/
│   │   └── config.go
│   ├── decode/
│   │   ├── decode_protobuf.go
│   │   ├── decode_protobuf_test.go
│   │   └── packets/
│   │       └── decode_protobuf_packets.go
│   ├── ebpf/
│   │   ├── bpf_arm64_bpfel.go
│   │   ├── bpf_arm64_bpfel.o
│   │   ├── bpf_powerpc_bpfel.go
│   │   ├── bpf_powerpc_bpfel.o
│   │   ├── bpf_s390_bpfeb.go
│   │   ├── bpf_s390_bpfeb.o
│   │   ├── bpf_x86_bpfel.go
│   │   ├── bpf_x86_bpfel.o
│   │   └── gen.go
│   ├── exporter/
│   │   ├── converters_test.go
│   │   ├── direct_flp.go
│   │   ├── direct_flp_test.go
│   │   ├── grpc_packets.go
│   │   ├── grpc_proto.go
│   │   ├── grpc_proto_test.go
│   │   ├── ipfix.go
│   │   ├── kafka_proto.go
│   │   └── kafka_proto_test.go
│   ├── flow/
│   │   ├── account.go
│   │   ├── account_test.go
│   │   ├── limiter.go
│   │   ├── limiter_test.go
│   │   ├── perfbuffer.go
│   │   ├── tracer_map.go
│   │   ├── tracer_perf.go
│   │   └── tracer_ringbuf.go
│   ├── grpc/
│   │   ├── flow/
│   │   │   ├── client.go
│   │   │   ├── grpc_test.go
│   │   │   └── server.go
│   │   └── packet/
│   │       ├── client.go
│   │       ├── grpc_test.go
│   │       └── server.go
│   ├── ifaces/
│   │   ├── filter.go
│   │   ├── filter_test.go
│   │   ├── informer.go
│   │   ├── poller.go
│   │   ├── poller_test.go
│   │   ├── registerer.go
│   │   ├── registerer_test.go
│   │   ├── watcher.go
│   │   └── watcher_test.go
│   ├── kernel/
│   │   ├── kernel_utils.go
│   │   └── kernel_utils_test.go
│   ├── maps/
│   │   ├── maps.go
│   │   └── maps_test.go
│   ├── metrics/
│   │   ├── metrics.go
│   │   └── metrics_test.go
│   ├── model/
│   │   ├── flow_content.go
│   │   ├── flow_content_test.go
│   │   ├── packet_record.go
│   │   ├── record.go
│   │   ├── record_test.go
│   │   └── tls_types.go
│   ├── pbflow/
│   │   ├── flow.pb.go
│   │   ├── flow_grpc.pb.go
│   │   └── proto.go
│   ├── pbpacket/
│   │   ├── packet.pb.go
│   │   └── packet_grpc.pb.go
│   ├── prometheus/
│   │   ├── prom_server.go
│   │   └── prom_server_test.go
│   ├── test/
│   │   ├── channels.go
│   │   ├── export_fake.go
│   │   ├── informer_fake.go
│   │   ├── tls.go
│   │   └── tracer_fake.go
│   ├── tracer/
│   │   ├── errors.go
│   │   ├── flow_filter.go
│   │   ├── flow_filter_test.go
│   │   ├── tracer.go
│   │   └── tracer_legacy.go
│   └── utils/
│       ├── networkevents/
│       │   ├── network_events.go
│       │   └── network_events_test.go
│       ├── packets/
│       │   └── packets.go
│       └── utils.go
├── proto/
│   ├── README.md
│   ├── flow.proto
│   └── packet.proto
├── renovate.json
├── scripts/
│   ├── README.md
│   ├── agent.yml
│   ├── collector.yml
│   ├── deploy-agent.sh
│   ├── generators.Dockerfile
│   ├── kind-cluster.sh
│   └── update-bpf-headers.sh
└── vendor/
    ├── github.com/
    │   ├── Knetic/
    │   │   └── govaluate/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── ARCHIVED.md
    │   │       ├── CONTRIBUTORS
    │   │       ├── EvaluableExpression.go
    │   │       ├── EvaluableExpression_sql.go
    │   │       ├── ExpressionToken.go
    │   │       ├── LICENSE
    │   │       ├── MANUAL.md
    │   │       ├── OperatorSymbol.go
    │   │       ├── README.md
    │   │       ├── TokenKind.go
    │   │       ├── evaluationStage.go
    │   │       ├── expressionFunctions.go
    │   │       ├── expressionOutputStream.go
    │   │       ├── lexerState.go
    │   │       ├── lexerStream.go
    │   │       ├── parameters.go
    │   │       ├── parsing.go
    │   │       ├── sanitizedParameters.go
    │   │       ├── stagePlanner.go
    │   │       ├── test.sh
    │   │       └── tokenStream.go
    │   ├── agoda-com/
    │   │   └── opentelemetry-logs-go/
    │   │       ├── .gitignore
    │   │       ├── CHANGELOG.md
    │   │       ├── CODEOWNERS
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── exporters/
    │   │       │   └── otlp/
    │   │       │       └── otlplogs/
    │   │       │           ├── clients.go
    │   │       │           ├── exporter.go
    │   │       │           ├── internal/
    │   │       │           │   ├── envconfig/
    │   │       │           │   │   └── envconfig.go
    │   │       │           │   ├── logstransform/
    │   │       │           │   │   ├── attribute.go
    │   │       │           │   │   └── logs.go
    │   │       │           │   ├── otlpconfig/
    │   │       │           │   │   ├── envconfig.go
    │   │       │           │   │   ├── options.go
    │   │       │           │   │   ├── optiontypes.go
    │   │       │           │   │   └── tls.go
    │   │       │           │   ├── partialsuccess.go
    │   │       │           │   └── retry/
    │   │       │           │       └── retry.go
    │   │       │           ├── options.go
    │   │       │           ├── otlplogsgrpc/
    │   │       │           │   ├── client.go
    │   │       │           │   └── options.go
    │   │       │           └── otlplogshttp/
    │   │       │               ├── client.go
    │   │       │               └── options.go
    │   │       ├── internal/
    │   │       │   └── global/
    │   │       │       ├── internal_logging.go
    │   │       │       ├── logs.go
    │   │       │       └── state.go
    │   │       ├── logs/
    │   │       │   ├── config.go
    │   │       │   ├── doc.go
    │   │       │   ├── logs.go
    │   │       │   └── noop.go
    │   │       ├── logs.go
    │   │       ├── sdk/
    │   │       │   ├── internal/
    │   │       │   │   └── env/
    │   │       │   │       └── env.go
    │   │       │   └── logs/
    │   │       │       ├── batch_log_record_processor.go
    │   │       │       ├── log_record_exporter.go
    │   │       │       ├── log_record_processor.go
    │   │       │       ├── logger.go
    │   │       │       ├── provider.go
    │   │       │       └── simple_log_record_processor.go
    │   │       └── semconv/
    │   │           └── attribute_group.go
    │   ├── benbjohnson/
    │   │   └── clock/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── clock.go
    │   │       └── context.go
    │   ├── beorn7/
    │   │   └── perks/
    │   │       ├── LICENSE
    │   │       └── quantile/
    │   │           ├── exampledata.txt
    │   │           └── stream.go
    │   ├── blang/
    │   │   └── semver/
    │   │       └── v4/
    │   │           ├── LICENSE
    │   │           ├── json.go
    │   │           ├── range.go
    │   │           ├── semver.go
    │   │           ├── sort.go
    │   │           └── sql.go
    │   ├── caarlos0/
    │   │   └── env/
    │   │       └── v11/
    │   │           ├── .editorconfig
    │   │           ├── .gitignore
    │   │           ├── .golangci.yml
    │   │           ├── .goreleaser.yml
    │   │           ├── .mailmap
    │   │           ├── LICENSE.md
    │   │           ├── Makefile
    │   │           ├── README.md
    │   │           ├── env.go
    │   │           ├── env_tomap.go
    │   │           ├── env_tomap_windows.go
    │   │           └── error.go
    │   ├── cenkalti/
    │   │   ├── backoff/
    │   │   │   ├── v4/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── backoff.go
    │   │   │   │   ├── context.go
    │   │   │   │   ├── exponential.go
    │   │   │   │   ├── retry.go
    │   │   │   │   ├── ticker.go
    │   │   │   │   ├── timer.go
    │   │   │   │   └── tries.go
    │   │   │   └── v5/
    │   │   │       ├── .gitignore
    │   │   │       ├── CHANGELOG.md
    │   │   │       ├── LICENSE
    │   │   │       ├── README.md
    │   │   │       ├── backoff.go
    │   │   │       ├── error.go
    │   │   │       ├── exponential.go
    │   │   │       ├── retry.go
    │   │   │       ├── ticker.go
    │   │   │       └── timer.go
    │   │   ├── hub/
    │   │   │   ├── .gitignore
    │   │   │   ├── .travis.yml
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   └── hub.go
    │   │   └── rpc2/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── client.go
    │   │       ├── codec.go
    │   │       ├── debug.go
    │   │       ├── jsonrpc/
    │   │       │   └── jsonrpc.go
    │   │       ├── server.go
    │   │       └── state.go
    │   ├── cespare/
    │   │   └── xxhash/
    │   │       └── v2/
    │   │           ├── LICENSE.txt
    │   │           ├── README.md
    │   │           ├── testall.sh
    │   │           ├── xxhash.go
    │   │           ├── xxhash_amd64.s
    │   │           ├── xxhash_arm64.s
    │   │           ├── xxhash_asm.go
    │   │           ├── xxhash_other.go
    │   │           ├── xxhash_safe.go
    │   │           └── xxhash_unsafe.go
    │   ├── cilium/
    │   │   └── ebpf/
    │   │       ├── .clang-format
    │   │       ├── .gitattributes
    │   │       ├── .gitignore
    │   │       ├── .golangci.yaml
    │   │       ├── .vimto.toml
    │   │       ├── CODEOWNERS
    │   │       ├── CODE_OF_CONDUCT.md
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── MAINTAINERS.md
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── asm/
    │   │       │   ├── alu.go
    │   │       │   ├── alu_string.go
    │   │       │   ├── doc.go
    │   │       │   ├── func.go
    │   │       │   ├── func_lin.go
    │   │       │   ├── func_string.go
    │   │       │   ├── func_win.go
    │   │       │   ├── instruction.go
    │   │       │   ├── jump.go
    │   │       │   ├── jump_string.go
    │   │       │   ├── load_store.go
    │   │       │   ├── load_store_string.go
    │   │       │   ├── metadata.go
    │   │       │   ├── opcode.go
    │   │       │   ├── opcode_string.go
    │   │       │   └── register.go
    │   │       ├── attachtype_string.go
    │   │       ├── btf/
    │   │       │   ├── btf.go
    │   │       │   ├── btf_types.go
    │   │       │   ├── btf_types_string.go
    │   │       │   ├── core.go
    │   │       │   ├── dedup.go
    │   │       │   ├── doc.go
    │   │       │   ├── ext_info.go
    │   │       │   ├── feature.go
    │   │       │   ├── format.go
    │   │       │   ├── handle.go
    │   │       │   ├── kernel.go
    │   │       │   ├── marshal.go
    │   │       │   ├── strings.go
    │   │       │   ├── traversal.go
    │   │       │   ├── types.go
    │   │       │   ├── unmarshal.go
    │   │       │   └── workarounds.go
    │   │       ├── collection.go
    │   │       ├── collection_other.go
    │   │       ├── collection_windows.go
    │   │       ├── cpu.go
    │   │       ├── cpu_other.go
    │   │       ├── cpu_windows.go
    │   │       ├── doc.go
    │   │       ├── elf_reader.go
    │   │       ├── elf_sections.go
    │   │       ├── features/
    │   │       │   ├── doc.go
    │   │       │   ├── link.go
    │   │       │   ├── map.go
    │   │       │   ├── misc.go
    │   │       │   ├── prog.go
    │   │       │   └── version.go
    │   │       ├── info.go
    │   │       ├── internal/
    │   │       │   ├── deque.go
    │   │       │   ├── efw/
    │   │       │   │   ├── enums.go
    │   │       │   │   ├── error_reporting.go
    │   │       │   │   ├── fd.go
    │   │       │   │   ├── map.go
    │   │       │   │   ├── module.go
    │   │       │   │   ├── native.go
    │   │       │   │   ├── object.go
    │   │       │   │   ├── proc.go
    │   │       │   │   ├── program.go
    │   │       │   │   ├── result.go
    │   │       │   │   ├── result_string_windows.go
    │   │       │   │   └── structs.go
    │   │       │   ├── elf.go
    │   │       │   ├── endian_be.go
    │   │       │   ├── endian_le.go
    │   │       │   ├── epoll/
    │   │       │   │   └── poller.go
    │   │       │   ├── errors.go
    │   │       │   ├── feature.go
    │   │       │   ├── io.go
    │   │       │   ├── kallsyms/
    │   │       │   │   ├── cache.go
    │   │       │   │   ├── kallsyms.go
    │   │       │   │   └── reader.go
    │   │       │   ├── kconfig/
    │   │       │   │   └── kconfig.go
    │   │       │   ├── linux/
    │   │       │   │   ├── auxv.go
    │   │       │   │   ├── cpu.go
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── kconfig.go
    │   │       │   │   ├── platform.go
    │   │       │   │   ├── statfs.go
    │   │       │   │   ├── vdso.go
    │   │       │   │   └── version.go
    │   │       │   ├── math.go
    │   │       │   ├── output.go
    │   │       │   ├── platform/
    │   │       │   │   ├── constants.go
    │   │       │   │   ├── platform.go
    │   │       │   │   ├── platform_linux.go
    │   │       │   │   ├── platform_other.go
    │   │       │   │   └── platform_windows.go
    │   │       │   ├── prog.go
    │   │       │   ├── sys/
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── fd.go
    │   │       │   │   ├── fd_other.go
    │   │       │   │   ├── fd_windows.go
    │   │       │   │   ├── pinning_other.go
    │   │       │   │   ├── pinning_windows.go
    │   │       │   │   ├── ptr.go
    │   │       │   │   ├── ptr_32_be.go
    │   │       │   │   ├── ptr_32_le.go
    │   │       │   │   ├── ptr_64.go
    │   │       │   │   ├── signals.go
    │   │       │   │   ├── syscall.go
    │   │       │   │   ├── syscall_other.go
    │   │       │   │   ├── syscall_windows.go
    │   │       │   │   └── types.go
    │   │       │   ├── sysenc/
    │   │       │   │   ├── buffer.go
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── layout.go
    │   │       │   │   └── marshal.go
    │   │       │   ├── testutils/
    │   │       │   │   └── testmain/
    │   │       │   │       ├── fd_trace.go
    │   │       │   │       ├── main.go
    │   │       │   │       └── windows.go
    │   │       │   ├── tracefs/
    │   │       │   │   ├── kprobe.go
    │   │       │   │   ├── probetype_string.go
    │   │       │   │   └── uprobe.go
    │   │       │   ├── unix/
    │   │       │   │   ├── doc.go
    │   │       │   │   ├── errno_linux.go
    │   │       │   │   ├── errno_other.go
    │   │       │   │   ├── errno_string_windows.go
    │   │       │   │   ├── errno_windows.go
    │   │       │   │   ├── error.go
    │   │       │   │   ├── strings_other.go
    │   │       │   │   ├── strings_windows.go
    │   │       │   │   ├── types_linux.go
    │   │       │   │   └── types_other.go
    │   │       │   └── version.go
    │   │       ├── link/
    │   │       │   ├── anchor.go
    │   │       │   ├── cgroup.go
    │   │       │   ├── doc.go
    │   │       │   ├── iter.go
    │   │       │   ├── kprobe.go
    │   │       │   ├── kprobe_multi.go
    │   │       │   ├── link.go
    │   │       │   ├── link_other.go
    │   │       │   ├── link_windows.go
    │   │       │   ├── netfilter.go
    │   │       │   ├── netkit.go
    │   │       │   ├── netns.go
    │   │       │   ├── perf_event.go
    │   │       │   ├── program.go
    │   │       │   ├── query.go
    │   │       │   ├── raw_tracepoint.go
    │   │       │   ├── socket_filter.go
    │   │       │   ├── struct_ops.go
    │   │       │   ├── syscalls.go
    │   │       │   ├── tcx.go
    │   │       │   ├── tracepoint.go
    │   │       │   ├── tracing.go
    │   │       │   ├── uprobe.go
    │   │       │   ├── uprobe_multi.go
    │   │       │   └── xdp.go
    │   │       ├── linker.go
    │   │       ├── map.go
    │   │       ├── marshalers.go
    │   │       ├── memory.go
    │   │       ├── memory_unsafe.go
    │   │       ├── memory_unsafe_tag.go
    │   │       ├── netlify.toml
    │   │       ├── prog.go
    │   │       ├── ringbuf/
    │   │       │   ├── doc.go
    │   │       │   ├── reader.go
    │   │       │   ├── reader_other.go
    │   │       │   ├── reader_windows.go
    │   │       │   ├── ring.go
    │   │       │   ├── ring_other.go
    │   │       │   └── ring_windows.go
    │   │       ├── rlimit/
    │   │       │   ├── doc.go
    │   │       │   ├── rlimit_linux.go
    │   │       │   └── rlimit_other.go
    │   │       ├── struct_ops.go
    │   │       ├── syscalls.go
    │   │       ├── types.go
    │   │       ├── types_string.go
    │   │       ├── types_windows.go
    │   │       └── variable.go
    │   ├── containernetworking/
    │   │   ├── cni/
    │   │   │   ├── LICENSE
    │   │   │   ├── libcni/
    │   │   │   │   ├── api.go
    │   │   │   │   └── conf.go
    │   │   │   └── pkg/
    │   │   │       ├── invoke/
    │   │   │       │   ├── args.go
    │   │   │       │   ├── delegate.go
    │   │   │       │   ├── exec.go
    │   │   │       │   ├── find.go
    │   │   │       │   ├── os_unix.go
    │   │   │       │   ├── os_windows.go
    │   │   │       │   └── raw_exec.go
    │   │   │       ├── types/
    │   │   │       │   ├── 020/
    │   │   │       │   │   └── types.go
    │   │   │       │   ├── 040/
    │   │   │       │   │   └── types.go
    │   │   │       │   ├── 100/
    │   │   │       │   │   └── types.go
    │   │   │       │   ├── args.go
    │   │   │       │   ├── create/
    │   │   │       │   │   └── create.go
    │   │   │       │   ├── internal/
    │   │   │       │   │   ├── convert.go
    │   │   │       │   │   └── create.go
    │   │   │       │   └── types.go
    │   │   │       ├── utils/
    │   │   │       │   └── utils.go
    │   │   │       └── version/
    │   │   │           ├── conf.go
    │   │   │           ├── plugin.go
    │   │   │           ├── reconcile.go
    │   │   │           └── version.go
    │   │   └── plugins/
    │   │       ├── LICENSE
    │   │       └── pkg/
    │   │           ├── ip/
    │   │           │   ├── addr_linux.go
    │   │           │   ├── cidr.go
    │   │           │   ├── ip.go
    │   │           │   ├── ipforward_linux.go
    │   │           │   ├── ipmasq_linux.go
    │   │           │   ├── link_linux.go
    │   │           │   ├── route_linux.go
    │   │           │   └── utils_linux.go
    │   │           ├── ns/
    │   │           │   ├── README.md
    │   │           │   └── ns_linux.go
    │   │           └── utils/
    │   │               └── sysctl/
    │   │                   └── sysctl_linux.go
    │   ├── coreos/
    │   │   └── go-iptables/
    │   │       ├── LICENSE
    │   │       ├── NOTICE
    │   │       └── iptables/
    │   │           ├── iptables.go
    │   │           └── lock.go
    │   ├── cpuguy83/
    │   │   └── go-md2man/
    │   │       └── v2/
    │   │           ├── LICENSE.md
    │   │           └── md2man/
    │   │               ├── debug.go
    │   │               ├── md2man.go
    │   │               └── roff.go
    │   ├── davecgh/
    │   │   └── go-spew/
    │   │       ├── LICENSE
    │   │       └── spew/
    │   │           ├── bypass.go
    │   │           ├── bypasssafe.go
    │   │           ├── common.go
    │   │           ├── config.go
    │   │           ├── doc.go
    │   │           ├── dump.go
    │   │           ├── format.go
    │   │           └── spew.go
    │   ├── dennwc/
    │   │   └── varint/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── proto.go
    │   │       └── varint.go
    │   ├── dustin/
    │   │   └── go-humanize/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.markdown
    │   │       ├── big.go
    │   │       ├── bigbytes.go
    │   │       ├── bytes.go
    │   │       ├── comma.go
    │   │       ├── commaf.go
    │   │       ├── ftoa.go
    │   │       ├── humanize.go
    │   │       ├── number.go
    │   │       ├── ordinals.go
    │   │       ├── si.go
    │   │       └── times.go
    │   ├── emicklei/
    │   │   └── go-restful/
    │   │       └── v3/
    │   │           ├── .gitignore
    │   │           ├── .goconvey
    │   │           ├── .travis.yml
    │   │           ├── CHANGES.md
    │   │           ├── LICENSE
    │   │           ├── Makefile
    │   │           ├── README.md
    │   │           ├── SECURITY.md
    │   │           ├── Srcfile
    │   │           ├── bench_test.sh
    │   │           ├── compress.go
    │   │           ├── compressor_cache.go
    │   │           ├── compressor_pools.go
    │   │           ├── compressors.go
    │   │           ├── constants.go
    │   │           ├── container.go
    │   │           ├── cors_filter.go
    │   │           ├── coverage.sh
    │   │           ├── curly.go
    │   │           ├── curly_route.go
    │   │           ├── custom_verb.go
    │   │           ├── doc.go
    │   │           ├── entity_accessors.go
    │   │           ├── extensions.go
    │   │           ├── filter.go
    │   │           ├── filter_adapter.go
    │   │           ├── jsr311.go
    │   │           ├── log/
    │   │           │   └── log.go
    │   │           ├── logger.go
    │   │           ├── mime.go
    │   │           ├── options_filter.go
    │   │           ├── parameter.go
    │   │           ├── path_expression.go
    │   │           ├── path_processor.go
    │   │           ├── request.go
    │   │           ├── response.go
    │   │           ├── route.go
    │   │           ├── route_builder.go
    │   │           ├── route_reader.go
    │   │           ├── router.go
    │   │           ├── service_error.go
    │   │           ├── web_service.go
    │   │           └── web_service_container.go
    │   ├── evanphx/
    │   │   └── json-patch/
    │   │       └── v5/
    │   │           ├── LICENSE
    │   │           ├── errors.go
    │   │           ├── internal/
    │   │           │   └── json/
    │   │           │       ├── decode.go
    │   │           │       ├── encode.go
    │   │           │       ├── fold.go
    │   │           │       ├── fuzz.go
    │   │           │       ├── indent.go
    │   │           │       ├── scanner.go
    │   │           │       ├── stream.go
    │   │           │       ├── tables.go
    │   │           │       └── tags.go
    │   │           ├── merge.go
    │   │           └── patch.go
    │   ├── fsnotify/
    │   │   └── fsnotify/
    │   │       ├── .cirrus.yml
    │   │       ├── .gitignore
    │   │       ├── .mailmap
    │   │       ├── CHANGELOG.md
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── backend_fen.go
    │   │       ├── backend_inotify.go
    │   │       ├── backend_kqueue.go
    │   │       ├── backend_other.go
    │   │       ├── backend_windows.go
    │   │       ├── fsnotify.go
    │   │       ├── internal/
    │   │       │   ├── darwin.go
    │   │       │   ├── debug_darwin.go
    │   │       │   ├── debug_dragonfly.go
    │   │       │   ├── debug_freebsd.go
    │   │       │   ├── debug_kqueue.go
    │   │       │   ├── debug_linux.go
    │   │       │   ├── debug_netbsd.go
    │   │       │   ├── debug_openbsd.go
    │   │       │   ├── debug_solaris.go
    │   │       │   ├── debug_windows.go
    │   │       │   ├── freebsd.go
    │   │       │   ├── internal.go
    │   │       │   ├── unix.go
    │   │       │   ├── unix2.go
    │   │       │   └── windows.go
    │   │       ├── shared.go
    │   │       ├── staticcheck.conf
    │   │       ├── system_bsd.go
    │   │       └── system_darwin.go
    │   ├── fxamacker/
    │   │   └── cbor/
    │   │       └── v2/
    │   │           ├── .gitignore
    │   │           ├── .golangci.yml
    │   │           ├── CODE_OF_CONDUCT.md
    │   │           ├── CONTRIBUTING.md
    │   │           ├── LICENSE
    │   │           ├── README.md
    │   │           ├── SECURITY.md
    │   │           ├── bytestring.go
    │   │           ├── cache.go
    │   │           ├── common.go
    │   │           ├── decode.go
    │   │           ├── diagnose.go
    │   │           ├── doc.go
    │   │           ├── encode.go
    │   │           ├── encode_map.go
    │   │           ├── omitzero_go124.go
    │   │           ├── omitzero_pre_go124.go
    │   │           ├── simplevalue.go
    │   │           ├── stream.go
    │   │           ├── structfields.go
    │   │           ├── tag.go
    │   │           └── valid.go
    │   ├── gavv/
    │   │   └── monotime/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── monotime.go
    │   │       └── monotime.s
    │   ├── go-ini/
    │   │   └── ini/
    │   │       ├── .editorconfig
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── codecov.yml
    │   │       ├── data_source.go
    │   │       ├── deprecated.go
    │   │       ├── error.go
    │   │       ├── file.go
    │   │       ├── helper.go
    │   │       ├── ini.go
    │   │       ├── key.go
    │   │       ├── parser.go
    │   │       ├── section.go
    │   │       └── struct.go
    │   ├── go-kit/
    │   │   ├── kit/
    │   │   │   ├── LICENSE
    │   │   │   └── log/
    │   │   │       ├── README.md
    │   │   │       ├── doc.go
    │   │   │       ├── json_logger.go
    │   │   │       ├── level/
    │   │   │       │   ├── doc.go
    │   │   │       │   └── level.go
    │   │   │       ├── log.go
    │   │   │       ├── logfmt_logger.go
    │   │   │       ├── logrus/
    │   │   │       │   └── logrus_logger.go
    │   │   │       ├── nop_logger.go
    │   │   │       ├── stdlib.go
    │   │   │       ├── sync.go
    │   │   │       └── value.go
    │   │   └── log/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── doc.go
    │   │       ├── json_logger.go
    │   │       ├── level/
    │   │       │   ├── doc.go
    │   │       │   └── level.go
    │   │       ├── log.go
    │   │       ├── logfmt_logger.go
    │   │       ├── nop_logger.go
    │   │       ├── staticcheck.conf
    │   │       ├── stdlib.go
    │   │       ├── sync.go
    │   │       └── value.go
    │   ├── go-logfmt/
    │   │   └── logfmt/
    │   │       ├── .gitignore
    │   │       ├── CHANGELOG.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── decode.go
    │   │       ├── doc.go
    │   │       ├── encode.go
    │   │       └── jsonstring.go
    │   ├── go-logr/
    │   │   ├── logr/
    │   │   │   ├── .golangci.yaml
    │   │   │   ├── CHANGELOG.md
    │   │   │   ├── CONTRIBUTING.md
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── SECURITY.md
    │   │   │   ├── context.go
    │   │   │   ├── context_noslog.go
    │   │   │   ├── context_slog.go
    │   │   │   ├── discard.go
    │   │   │   ├── funcr/
    │   │   │   │   ├── funcr.go
    │   │   │   │   └── slogsink.go
    │   │   │   ├── logr.go
    │   │   │   ├── sloghandler.go
    │   │   │   ├── slogr.go
    │   │   │   └── slogsink.go
    │   │   └── stdr/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       └── stdr.go
    │   ├── go-openapi/
    │   │   ├── jsonpointer/
    │   │   │   ├── .editorconfig
    │   │   │   ├── .gitignore
    │   │   │   ├── .golangci.yml
    │   │   │   ├── CODE_OF_CONDUCT.md
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── errors.go
    │   │   │   └── pointer.go
    │   │   └── jsonreference/
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── CODE_OF_CONDUCT.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── internal/
    │   │       │   └── normalize_url.go
    │   │       └── reference.go
    │   ├── gogo/
    │   │   └── protobuf/
    │   │       ├── AUTHORS
    │   │       ├── CONTRIBUTORS
    │   │       ├── LICENSE
    │   │       ├── gogoproto/
    │   │       │   ├── Makefile
    │   │       │   ├── doc.go
    │   │       │   ├── gogo.pb.go
    │   │       │   ├── gogo.pb.golden
    │   │       │   ├── gogo.proto
    │   │       │   └── helper.go
    │   │       ├── proto/
    │   │       │   ├── Makefile
    │   │       │   ├── clone.go
    │   │       │   ├── custom_gogo.go
    │   │       │   ├── decode.go
    │   │       │   ├── deprecated.go
    │   │       │   ├── discard.go
    │   │       │   ├── duration.go
    │   │       │   ├── duration_gogo.go
    │   │       │   ├── encode.go
    │   │       │   ├── encode_gogo.go
    │   │       │   ├── equal.go
    │   │       │   ├── extensions.go
    │   │       │   ├── extensions_gogo.go
    │   │       │   ├── lib.go
    │   │       │   ├── lib_gogo.go
    │   │       │   ├── message_set.go
    │   │       │   ├── pointer_reflect.go
    │   │       │   ├── pointer_reflect_gogo.go
    │   │       │   ├── pointer_unsafe.go
    │   │       │   ├── pointer_unsafe_gogo.go
    │   │       │   ├── properties.go
    │   │       │   ├── properties_gogo.go
    │   │       │   ├── skip_gogo.go
    │   │       │   ├── table_marshal.go
    │   │       │   ├── table_marshal_gogo.go
    │   │       │   ├── table_merge.go
    │   │       │   ├── table_unmarshal.go
    │   │       │   ├── table_unmarshal_gogo.go
    │   │       │   ├── text.go
    │   │       │   ├── text_gogo.go
    │   │       │   ├── text_parser.go
    │   │       │   ├── timestamp.go
    │   │       │   ├── timestamp_gogo.go
    │   │       │   ├── wrappers.go
    │   │       │   └── wrappers_gogo.go
    │   │       ├── protoc-gen-gogo/
    │   │       │   └── descriptor/
    │   │       │       ├── Makefile
    │   │       │       ├── descriptor.go
    │   │       │       ├── descriptor.pb.go
    │   │       │       ├── descriptor_gostring.gen.go
    │   │       │       └── helper.go
    │   │       ├── sortkeys/
    │   │       │   └── sortkeys.go
    │   │       └── types/
    │   │           ├── any.go
    │   │           ├── any.pb.go
    │   │           ├── api.pb.go
    │   │           ├── doc.go
    │   │           ├── duration.go
    │   │           ├── duration.pb.go
    │   │           ├── duration_gogo.go
    │   │           ├── empty.pb.go
    │   │           ├── field_mask.pb.go
    │   │           ├── protosize.go
    │   │           ├── source_context.pb.go
    │   │           ├── struct.pb.go
    │   │           ├── timestamp.go
    │   │           ├── timestamp.pb.go
    │   │           ├── timestamp_gogo.go
    │   │           ├── type.pb.go
    │   │           ├── wrappers.pb.go
    │   │           └── wrappers_gogo.go
    │   ├── golang/
    │   │   ├── protobuf/
    │   │   │   ├── AUTHORS
    │   │   │   ├── CONTRIBUTORS
    │   │   │   ├── LICENSE
    │   │   │   └── proto/
    │   │   │       ├── buffer.go
    │   │   │       ├── defaults.go
    │   │   │       ├── deprecated.go
    │   │   │       ├── discard.go
    │   │   │       ├── extensions.go
    │   │   │       ├── properties.go
    │   │   │       ├── proto.go
    │   │   │       ├── registry.go
    │   │   │       ├── text_decode.go
    │   │   │       ├── text_encode.go
    │   │   │       ├── wire.go
    │   │   │       └── wrappers.go
    │   │   └── snappy/
    │   │       ├── .gitignore
    │   │       ├── AUTHORS
    │   │       ├── CONTRIBUTORS
    │   │       ├── LICENSE
    │   │       ├── README
    │   │       ├── decode.go
    │   │       ├── decode_amd64.s
    │   │       ├── decode_arm64.s
    │   │       ├── decode_asm.go
    │   │       ├── decode_other.go
    │   │       ├── encode.go
    │   │       ├── encode_amd64.s
    │   │       ├── encode_arm64.s
    │   │       ├── encode_asm.go
    │   │       ├── encode_other.go
    │   │       └── snappy.go
    │   ├── golang-jwt/
    │   │   └── jwt/
    │   │       └── v5/
    │   │           ├── .gitignore
    │   │           ├── LICENSE
    │   │           ├── MIGRATION_GUIDE.md
    │   │           ├── README.md
    │   │           ├── SECURITY.md
    │   │           ├── VERSION_HISTORY.md
    │   │           ├── claims.go
    │   │           ├── doc.go
    │   │           ├── ecdsa.go
    │   │           ├── ecdsa_utils.go
    │   │           ├── ed25519.go
    │   │           ├── ed25519_utils.go
    │   │           ├── errors.go
    │   │           ├── hmac.go
    │   │           ├── map_claims.go
    │   │           ├── none.go
    │   │           ├── parser.go
    │   │           ├── parser_option.go
    │   │           ├── registered_claims.go
    │   │           ├── rsa.go
    │   │           ├── rsa_pss.go
    │   │           ├── rsa_utils.go
    │   │           ├── signing_method.go
    │   │           ├── staticcheck.conf
    │   │           ├── token.go
    │   │           ├── token_option.go
    │   │           ├── types.go
    │   │           └── validator.go
    │   ├── google/
    │   │   ├── gnostic-models/
    │   │   │   ├── LICENSE
    │   │   │   ├── compiler/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── context.go
    │   │   │   │   ├── error.go
    │   │   │   │   ├── extensions.go
    │   │   │   │   ├── helpers.go
    │   │   │   │   ├── main.go
    │   │   │   │   └── reader.go
    │   │   │   ├── extensions/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── extension.pb.go
    │   │   │   │   ├── extension.proto
    │   │   │   │   └── extensions.go
    │   │   │   ├── jsonschema/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── base.go
    │   │   │   │   ├── display.go
    │   │   │   │   ├── models.go
    │   │   │   │   ├── operations.go
    │   │   │   │   ├── reader.go
    │   │   │   │   ├── schema.json
    │   │   │   │   └── writer.go
    │   │   │   ├── openapiv2/
    │   │   │   │   ├── OpenAPIv2.go
    │   │   │   │   ├── OpenAPIv2.pb.go
    │   │   │   │   ├── OpenAPIv2.proto
    │   │   │   │   ├── README.md
    │   │   │   │   ├── document.go
    │   │   │   │   └── openapi-2.0.json
    │   │   │   └── openapiv3/
    │   │   │       ├── OpenAPIv3.go
    │   │   │       ├── OpenAPIv3.pb.go
    │   │   │       ├── OpenAPIv3.proto
    │   │   │       ├── README.md
    │   │   │       ├── annotations.pb.go
    │   │   │       ├── annotations.proto
    │   │   │       └── document.go
    │   │   ├── go-cmp/
    │   │   │   ├── LICENSE
    │   │   │   └── cmp/
    │   │   │       ├── compare.go
    │   │   │       ├── export.go
    │   │   │       ├── internal/
    │   │   │       │   ├── diff/
    │   │   │       │   │   ├── debug_disable.go
    │   │   │       │   │   ├── debug_enable.go
    │   │   │       │   │   └── diff.go
    │   │   │       │   ├── flags/
    │   │   │       │   │   └── flags.go
    │   │   │       │   ├── function/
    │   │   │       │   │   └── func.go
    │   │   │       │   └── value/
    │   │   │       │       ├── name.go
    │   │   │       │       ├── pointer.go
    │   │   │       │       └── sort.go
    │   │   │       ├── options.go
    │   │   │       ├── path.go
    │   │   │       ├── report.go
    │   │   │       ├── report_compare.go
    │   │   │       ├── report_references.go
    │   │   │       ├── report_reflect.go
    │   │   │       ├── report_slices.go
    │   │   │       ├── report_text.go
    │   │   │       └── report_value.go
    │   │   └── uuid/
    │   │       ├── CHANGELOG.md
    │   │       ├── CONTRIBUTING.md
    │   │       ├── CONTRIBUTORS
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── dce.go
    │   │       ├── doc.go
    │   │       ├── hash.go
    │   │       ├── marshal.go
    │   │       ├── node.go
    │   │       ├── node_js.go
    │   │       ├── node_net.go
    │   │       ├── null.go
    │   │       ├── sql.go
    │   │       ├── time.go
    │   │       ├── util.go
    │   │       ├── uuid.go
    │   │       ├── version1.go
    │   │       ├── version4.go
    │   │       ├── version6.go
    │   │       └── version7.go
    │   ├── gopacket/
    │   │   └── gopacket/
    │   │       ├── .gitignore
    │   │       ├── AUTHORS
    │   │       ├── CONTRIBUTING.md
    │   │       ├── INDUSTRIAL_PROTOCOLS_PATCH.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── SECURITY.md
    │   │       ├── base.go
    │   │       ├── checksum.go
    │   │       ├── decode.go
    │   │       ├── doc.go
    │   │       ├── flows.go
    │   │       ├── gc
    │   │       ├── layerclass.go
    │   │       ├── layers/
    │   │       │   ├── .lint_blacklist
    │   │       │   ├── ague_var0.go
    │   │       │   ├── ague_var1.go
    │   │       │   ├── apsp.go
    │   │       │   ├── arp.go
    │   │       │   ├── asf.go
    │   │       │   ├── asf_presencepong.go
    │   │       │   ├── base.go
    │   │       │   ├── bfd.go
    │   │       │   ├── bitfield.go
    │   │       │   ├── cdp.go
    │   │       │   ├── cip.go
    │   │       │   ├── ctp.go
    │   │       │   ├── dhcpv4.go
    │   │       │   ├── dhcpv6.go
    │   │       │   ├── dhcpv6_options.go
    │   │       │   ├── dns.go
    │   │       │   ├── doc.go
    │   │       │   ├── dot11.go
    │   │       │   ├── dot1q.go
    │   │       │   ├── eap.go
    │   │       │   ├── eapol.go
    │   │       │   ├── endpoints.go
    │   │       │   ├── enip.go
    │   │       │   ├── enums.go
    │   │       │   ├── enums_generated.go
    │   │       │   ├── erspan2.go
    │   │       │   ├── etherip.go
    │   │       │   ├── ethernet.go
    │   │       │   ├── fddi.go
    │   │       │   ├── fuzz_layer.go
    │   │       │   ├── gen_linted.sh
    │   │       │   ├── geneve.go
    │   │       │   ├── gre.go
    │   │       │   ├── gtp.go
    │   │       │   ├── gtp2.go
    │   │       │   ├── iana_ports.go
    │   │       │   ├── icmp4.go
    │   │       │   ├── icmp6.go
    │   │       │   ├── icmp6msg.go
    │   │       │   ├── igmp.go
    │   │       │   ├── ip4.go
    │   │       │   ├── ip6.go
    │   │       │   ├── ipsec.go
    │   │       │   ├── layertypes.go
    │   │       │   ├── lcm.go
    │   │       │   ├── linux_sll.go
    │   │       │   ├── linux_sll2.go
    │   │       │   ├── llc.go
    │   │       │   ├── lldp.go
    │   │       │   ├── loopback.go
    │   │       │   ├── mdp.go
    │   │       │   ├── mldv1.go
    │   │       │   ├── mldv2.go
    │   │       │   ├── modbustcp.go
    │   │       │   ├── mpls.go
    │   │       │   ├── multipathtcp.go
    │   │       │   ├── ndp.go
    │   │       │   ├── ntp.go
    │   │       │   ├── ospf.go
    │   │       │   ├── pflog.go
    │   │       │   ├── ports.go
    │   │       │   ├── ppp.go
    │   │       │   ├── pppoe.go
    │   │       │   ├── prism.go
    │   │       │   ├── radiotap.go
    │   │       │   ├── radius.go
    │   │       │   ├── rmcp.go
    │   │       │   ├── rudp.go
    │   │       │   ├── sctp.go
    │   │       │   ├── sflow.go
    │   │       │   ├── sip.go
    │   │       │   ├── stp.go
    │   │       │   ├── tcp.go
    │   │       │   ├── tcpip.go
    │   │       │   ├── test_creator.py
    │   │       │   ├── tls.go
    │   │       │   ├── tls_alert.go
    │   │       │   ├── tls_appdata.go
    │   │       │   ├── tls_cipherspec.go
    │   │       │   ├── tls_handshake.go
    │   │       │   ├── udp.go
    │   │       │   ├── udplite.go
    │   │       │   ├── usb.go
    │   │       │   ├── vrrp.go
    │   │       │   └── vxlan.go
    │   │       ├── layers_decoder.go
    │   │       ├── layertype.go
    │   │       ├── packet.go
    │   │       ├── parser.go
    │   │       ├── runtests.sh
    │   │       ├── time.go
    │   │       └── writer.go
    │   ├── gorilla/
    │   │   └── websocket/
    │   │       ├── .gitignore
    │   │       ├── AUTHORS
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── client.go
    │   │       ├── compression.go
    │   │       ├── conn.go
    │   │       ├── doc.go
    │   │       ├── join.go
    │   │       ├── json.go
    │   │       ├── mask.go
    │   │       ├── mask_safe.go
    │   │       ├── prepared.go
    │   │       ├── proxy.go
    │   │       ├── server.go
    │   │       └── util.go
    │   ├── grafana/
    │   │   └── regexp/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── backtrack.go
    │   │       ├── exec.go
    │   │       ├── onepass.go
    │   │       ├── regexp.go
    │   │       └── syntax/
    │   │           ├── compile.go
    │   │           ├── doc.go
    │   │           ├── make_perl_groups.pl
    │   │           ├── op_string.go
    │   │           ├── parse.go
    │   │           ├── perl_groups.go
    │   │           ├── prog.go
    │   │           ├── regexp.go
    │   │           └── simplify.go
    │   ├── grpc-ecosystem/
    │   │   └── grpc-gateway/
    │   │       └── v2/
    │   │           ├── LICENSE
    │   │           ├── internal/
    │   │           │   └── httprule/
    │   │           │       ├── BUILD.bazel
    │   │           │       ├── compile.go
    │   │           │       ├── fuzz.go
    │   │           │       ├── parse.go
    │   │           │       └── types.go
    │   │           ├── runtime/
    │   │           │   ├── BUILD.bazel
    │   │           │   ├── context.go
    │   │           │   ├── convert.go
    │   │           │   ├── doc.go
    │   │           │   ├── errors.go
    │   │           │   ├── fieldmask.go
    │   │           │   ├── handler.go
    │   │           │   ├── marshal_httpbodyproto.go
    │   │           │   ├── marshal_json.go
    │   │           │   ├── marshal_jsonpb.go
    │   │           │   ├── marshal_proto.go
    │   │           │   ├── marshaler.go
    │   │           │   ├── marshaler_registry.go
    │   │           │   ├── mux.go
    │   │           │   ├── pattern.go
    │   │           │   ├── proto2_convert.go
    │   │           │   └── query.go
    │   │           └── utilities/
    │   │               ├── BUILD.bazel
    │   │               ├── doc.go
    │   │               ├── pattern.go
    │   │               ├── readerfactory.go
    │   │               ├── string_array_flag.go
    │   │               └── trie.go
    │   ├── ip2location/
    │   │   └── ip2location-go/
    │   │       └── v9/
    │   │           ├── .readthedocs.yaml
    │   │           ├── LICENSE.TXT
    │   │           ├── README.md
    │   │           ├── country.go
    │   │           ├── ip2location.go
    │   │           ├── ip2locationwebservice.go
    │   │           ├── iptools.go
    │   │           └── region.go
    │   ├── josharian/
    │   │   └── intern/
    │   │       ├── README.md
    │   │       ├── intern.go
    │   │       └── license.md
    │   ├── jpillora/
    │   │   └── backoff/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       └── backoff.go
    │   ├── klauspost/
    │   │   ├── compress/
    │   │   │   ├── .gitattributes
    │   │   │   ├── .gitignore
    │   │   │   ├── .goreleaser.yml
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── SECURITY.md
    │   │   │   ├── compressible.go
    │   │   │   ├── flate/
    │   │   │   │   ├── deflate.go
    │   │   │   │   ├── dict_decoder.go
    │   │   │   │   ├── fast_encoder.go
    │   │   │   │   ├── huffman_bit_writer.go
    │   │   │   │   ├── huffman_code.go
    │   │   │   │   ├── huffman_sortByFreq.go
    │   │   │   │   ├── huffman_sortByLiteral.go
    │   │   │   │   ├── inflate.go
    │   │   │   │   ├── inflate_gen.go
    │   │   │   │   ├── level1.go
    │   │   │   │   ├── level2.go
    │   │   │   │   ├── level3.go
    │   │   │   │   ├── level4.go
    │   │   │   │   ├── level5.go
    │   │   │   │   ├── level6.go
    │   │   │   │   ├── matchlen_generic.go
    │   │   │   │   ├── regmask_amd64.go
    │   │   │   │   ├── regmask_other.go
    │   │   │   │   ├── stateless.go
    │   │   │   │   └── token.go
    │   │   │   ├── fse/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── bitreader.go
    │   │   │   │   ├── bitwriter.go
    │   │   │   │   ├── bytereader.go
    │   │   │   │   ├── compress.go
    │   │   │   │   ├── decompress.go
    │   │   │   │   └── fse.go
    │   │   │   ├── gen.sh
    │   │   │   ├── gzip/
    │   │   │   │   ├── gunzip.go
    │   │   │   │   └── gzip.go
    │   │   │   ├── huff0/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── README.md
    │   │   │   │   ├── bitreader.go
    │   │   │   │   ├── bitwriter.go
    │   │   │   │   ├── compress.go
    │   │   │   │   ├── decompress.go
    │   │   │   │   ├── decompress_amd64.go
    │   │   │   │   ├── decompress_amd64.s
    │   │   │   │   ├── decompress_generic.go
    │   │   │   │   └── huff0.go
    │   │   │   ├── internal/
    │   │   │   │   ├── cpuinfo/
    │   │   │   │   │   ├── cpuinfo.go
    │   │   │   │   │   ├── cpuinfo_amd64.go
    │   │   │   │   │   └── cpuinfo_amd64.s
    │   │   │   │   ├── le/
    │   │   │   │   │   ├── le.go
    │   │   │   │   │   ├── unsafe_disabled.go
    │   │   │   │   │   └── unsafe_enabled.go
    │   │   │   │   ├── race/
    │   │   │   │   │   ├── norace.go
    │   │   │   │   │   └── race.go
    │   │   │   │   └── snapref/
    │   │   │   │       ├── LICENSE
    │   │   │   │       ├── decode.go
    │   │   │   │       ├── decode_other.go
    │   │   │   │       ├── encode.go
    │   │   │   │       ├── encode_other.go
    │   │   │   │       └── snappy.go
    │   │   │   ├── s2/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── decode.go
    │   │   │   │   ├── decode_amd64.s
    │   │   │   │   ├── decode_arm64.s
    │   │   │   │   ├── decode_asm.go
    │   │   │   │   ├── decode_other.go
    │   │   │   │   ├── dict.go
    │   │   │   │   ├── encode.go
    │   │   │   │   ├── encode_all.go
    │   │   │   │   ├── encode_amd64.go
    │   │   │   │   ├── encode_best.go
    │   │   │   │   ├── encode_better.go
    │   │   │   │   ├── encode_go.go
    │   │   │   │   ├── encodeblock_amd64.go
    │   │   │   │   ├── encodeblock_amd64.s
    │   │   │   │   ├── index.go
    │   │   │   │   ├── lz4convert.go
    │   │   │   │   ├── lz4sconvert.go
    │   │   │   │   ├── reader.go
    │   │   │   │   ├── s2.go
    │   │   │   │   └── writer.go
    │   │   │   ├── s2sx.mod
    │   │   │   ├── s2sx.sum
    │   │   │   ├── snappy/
    │   │   │   │   ├── .gitignore
    │   │   │   │   ├── AUTHORS
    │   │   │   │   ├── CONTRIBUTORS
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── decode.go
    │   │   │   │   ├── encode.go
    │   │   │   │   └── snappy.go
    │   │   │   └── zstd/
    │   │   │       ├── README.md
    │   │   │       ├── bitreader.go
    │   │   │       ├── bitwriter.go
    │   │   │       ├── blockdec.go
    │   │   │       ├── blockenc.go
    │   │   │       ├── blocktype_string.go
    │   │   │       ├── bytebuf.go
    │   │   │       ├── bytereader.go
    │   │   │       ├── decodeheader.go
    │   │   │       ├── decoder.go
    │   │   │       ├── decoder_options.go
    │   │   │       ├── dict.go
    │   │   │       ├── enc_base.go
    │   │   │       ├── enc_best.go
    │   │   │       ├── enc_better.go
    │   │   │       ├── enc_dfast.go
    │   │   │       ├── enc_fast.go
    │   │   │       ├── encoder.go
    │   │   │       ├── encoder_options.go
    │   │   │       ├── framedec.go
    │   │   │       ├── frameenc.go
    │   │   │       ├── fse_decoder.go
    │   │   │       ├── fse_decoder_amd64.go
    │   │   │       ├── fse_decoder_amd64.s
    │   │   │       ├── fse_decoder_generic.go
    │   │   │       ├── fse_encoder.go
    │   │   │       ├── fse_predefined.go
    │   │   │       ├── hash.go
    │   │   │       ├── history.go
    │   │   │       ├── internal/
    │   │   │       │   └── xxhash/
    │   │   │       │       ├── LICENSE.txt
    │   │   │       │       ├── README.md
    │   │   │       │       ├── xxhash.go
    │   │   │       │       ├── xxhash_amd64.s
    │   │   │       │       ├── xxhash_arm64.s
    │   │   │       │       ├── xxhash_asm.go
    │   │   │       │       ├── xxhash_other.go
    │   │   │       │       └── xxhash_safe.go
    │   │   │       ├── matchlen_amd64.go
    │   │   │       ├── matchlen_amd64.s
    │   │   │       ├── matchlen_generic.go
    │   │   │       ├── seqdec.go
    │   │   │       ├── seqdec_amd64.go
    │   │   │       ├── seqdec_amd64.s
    │   │   │       ├── seqdec_generic.go
    │   │   │       ├── seqenc.go
    │   │   │       ├── simple_go124.go
    │   │   │       ├── snappy.go
    │   │   │       ├── zip.go
    │   │   │       └── zstd.go
    │   │   ├── cpuid/
    │   │   │   └── v2/
    │   │   │       ├── .gitignore
    │   │   │       ├── .goreleaser.yml
    │   │   │       ├── CONTRIBUTING.txt
    │   │   │       ├── LICENSE
    │   │   │       ├── README.md
    │   │   │       ├── cpuid.go
    │   │   │       ├── cpuid_386.s
    │   │   │       ├── cpuid_amd64.s
    │   │   │       ├── cpuid_arm64.s
    │   │   │       ├── detect_arm64.go
    │   │   │       ├── detect_ref.go
    │   │   │       ├── detect_x86.go
    │   │   │       ├── featureid_string.go
    │   │   │       ├── os_darwin_arm64.go
    │   │   │       ├── os_linux_arm64.go
    │   │   │       ├── os_other_arm64.go
    │   │   │       ├── os_safe_linux_arm64.go
    │   │   │       ├── os_unsafe_linux_arm64.go
    │   │   │       └── test-architectures.sh
    │   │   └── crc32/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── crc32.go
    │   │       ├── crc32_amd64.go
    │   │       ├── crc32_amd64.s
    │   │       ├── crc32_arm64.go
    │   │       ├── crc32_arm64.s
    │   │       ├── crc32_generic.go
    │   │       ├── crc32_loong64.go
    │   │       ├── crc32_loong64.s
    │   │       ├── crc32_otherarch.go
    │   │       ├── crc32_ppc64le.go
    │   │       ├── crc32_ppc64le.s
    │   │       ├── crc32_s390x.go
    │   │       ├── crc32_s390x.s
    │   │       ├── crc32_table_ppc64le.s
    │   │       └── gen.go
    │   ├── libp2p/
    │   │   └── go-reuseport/
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── addr.go
    │   │       ├── codecov.yml
    │   │       ├── control_freebsd.go
    │   │       ├── control_plan9.go
    │   │       ├── control_unix.go
    │   │       ├── control_wasm.go
    │   │       ├── control_windows.go
    │   │       ├── interface.go
    │   │       └── version.json
    │   ├── mailru/
    │   │   └── easyjson/
    │   │       ├── LICENSE
    │   │       ├── buffer/
    │   │       │   └── pool.go
    │   │       ├── jlexer/
    │   │       │   ├── bytestostr.go
    │   │       │   ├── bytestostr_nounsafe.go
    │   │       │   ├── error.go
    │   │       │   └── lexer.go
    │   │       └── jwriter/
    │   │           └── writer.go
    │   ├── mariomac/
    │   │   └── guara/
    │   │       ├── LICENSE
    │   │       └── pkg/
    │   │           └── test/
    │   │               ├── eventually.go
    │   │               └── ports.go
    │   ├── mdlayher/
    │   │   └── ethernet/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE.md
    │   │       ├── README.md
    │   │       ├── ethernet.go
    │   │       ├── fuzz.go
    │   │       ├── string.go
    │   │       └── vlan.go
    │   ├── minio/
    │   │   ├── crc64nvme/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── crc64.go
    │   │   │   ├── crc64_amd64.go
    │   │   │   ├── crc64_amd64.s
    │   │   │   ├── crc64_arm64.go
    │   │   │   ├── crc64_arm64.s
    │   │   │   └── crc64_other.go
    │   │   └── md5-simd/
    │   │       ├── LICENSE
    │   │       ├── LICENSE.Golang
    │   │       ├── README.md
    │   │       ├── block16_amd64.s
    │   │       ├── block8_amd64.s
    │   │       ├── block_amd64.go
    │   │       ├── md5-digest_amd64.go
    │   │       ├── md5-server_amd64.go
    │   │       ├── md5-server_fallback.go
    │   │       ├── md5-util_amd64.go
    │   │       ├── md5.go
    │   │       ├── md5block_amd64.go
    │   │       └── md5block_amd64.s
    │   ├── mitchellh/
    │   │   └── mapstructure/
    │   │       ├── CHANGELOG.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── decode_hooks.go
    │   │       ├── error.go
    │   │       └── mapstructure.go
    │   ├── moby/
    │   │   └── spdystream/
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── MAINTAINERS
    │   │       ├── NOTICE
    │   │       ├── README.md
    │   │       ├── connection.go
    │   │       ├── handlers.go
    │   │       ├── priority.go
    │   │       ├── spdy/
    │   │       │   ├── LICENSE
    │   │       │   ├── PATENTS
    │   │       │   ├── dictionary.go
    │   │       │   ├── options.go
    │   │       │   ├── read.go
    │   │       │   ├── types.go
    │   │       │   └── write.go
    │   │       ├── stream.go
    │   │       └── utils.go
    │   ├── modern-go/
    │   │   └── concurrent/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── executor.go
    │   │       ├── go_above_19.go
    │   │       ├── go_below_19.go
    │   │       ├── log.go
    │   │       ├── test.sh
    │   │       └── unbounded_executor.go
    │   ├── munnerz/
    │   │   └── goautoneg/
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.txt
    │   │       └── autoneg.go
    │   ├── mwitkow/
    │   │   └── go-conntrack/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── dialer_reporter.go
    │   │       ├── dialer_wrapper.go
    │   │       ├── listener_reporter.go
    │   │       └── listener_wrapper.go
    │   ├── mxk/
    │   │   └── go-flowrate/
    │   │       ├── LICENSE
    │   │       └── flowrate/
    │   │           ├── flowrate.go
    │   │           ├── io.go
    │   │           └── util.go
    │   ├── netobserv/
    │   │   ├── flowlogs-pipeline/
    │   │   │   ├── LICENSE
    │   │   │   └── pkg/
    │   │   │       ├── api/
    │   │   │       │   ├── api.go
    │   │   │       │   ├── conntrack.go
    │   │   │       │   ├── decoder.go
    │   │   │       │   ├── encode_kafka.go
    │   │   │       │   ├── encode_otlp.go
    │   │   │       │   ├── encode_prom.go
    │   │   │       │   ├── encode_s3.go
    │   │   │       │   ├── extract_aggregate.go
    │   │   │       │   ├── extract_timebased.go
    │   │   │       │   ├── ingest_grpc.go
    │   │   │       │   ├── ingest_ipfix.go
    │   │   │       │   ├── ingest_kafka.go
    │   │   │       │   ├── ingest_stdin.go
    │   │   │       │   ├── ingest_synthetic.go
    │   │   │       │   ├── sasl.go
    │   │   │       │   ├── tls.go
    │   │   │       │   ├── transform_filter.go
    │   │   │       │   ├── transform_generic.go
    │   │   │       │   ├── transform_network.go
    │   │   │       │   ├── utils.go
    │   │   │       │   ├── write_grpc.go
    │   │   │       │   ├── write_ipfix.go
    │   │   │       │   ├── write_loki.go
    │   │   │       │   └── write_stdout.go
    │   │   │       ├── config/
    │   │   │       │   ├── config.go
    │   │   │       │   ├── generic_map.go
    │   │   │       │   ├── pipeline_builder.go
    │   │   │       │   └── stage_params.go
    │   │   │       ├── dsl/
    │   │   │       │   ├── eval.go
    │   │   │       │   ├── expr.y
    │   │   │       │   ├── expr.y.go
    │   │   │       │   └── lexer.go
    │   │   │       ├── kafka/
    │   │   │       │   ├── reader.go
    │   │   │       │   └── writer.go
    │   │   │       ├── operational/
    │   │   │       │   ├── health.go
    │   │   │       │   ├── metrics.go
    │   │   │       │   └── timer.go
    │   │   │       ├── pipeline/
    │   │   │       │   ├── decode/
    │   │   │       │   │   ├── decode.go
    │   │   │       │   │   └── decode_json.go
    │   │   │       │   ├── encode/
    │   │   │       │   │   ├── encode.go
    │   │   │       │   │   ├── encode_kafka.go
    │   │   │       │   │   ├── encode_prom.go
    │   │   │       │   │   ├── encode_s3.go
    │   │   │       │   │   ├── metrics/
    │   │   │       │   │   │   ├── filtering.go
    │   │   │       │   │   │   ├── flattening.go
    │   │   │       │   │   │   └── preprocess.go
    │   │   │       │   │   ├── metrics_common.go
    │   │   │       │   │   └── opentelemetry/
    │   │   │       │   │       ├── encode_otlplogs.go
    │   │   │       │   │       ├── encode_otlpmetrics.go
    │   │   │       │   │       ├── encode_otlptrace.go
    │   │   │       │   │       └── opentelemetry.go
    │   │   │       │   ├── extract/
    │   │   │       │   │   ├── aggregate/
    │   │   │       │   │   │   ├── aggregate.go
    │   │   │       │   │   │   └── aggregates.go
    │   │   │       │   │   ├── conntrack/
    │   │   │       │   │   │   ├── aggregator.go
    │   │   │       │   │   │   ├── conn.go
    │   │   │       │   │   │   ├── conntrack.go
    │   │   │       │   │   │   ├── hash.go
    │   │   │       │   │   │   ├── metrics.go
    │   │   │       │   │   │   ├── store.go
    │   │   │       │   │   │   └── tcpflags.go
    │   │   │       │   │   ├── extract.go
    │   │   │       │   │   ├── extract_aggregate.go
    │   │   │       │   │   ├── extract_timebased.go
    │   │   │       │   │   └── timebased/
    │   │   │       │   │       ├── filters.go
    │   │   │       │   │       ├── heap.go
    │   │   │       │   │       ├── tables.go
    │   │   │       │   │       └── timebased.go
    │   │   │       │   ├── ingest/
    │   │   │       │   │   ├── ingest.go
    │   │   │       │   │   ├── ingest_fake.go
    │   │   │       │   │   ├── ingest_file.go
    │   │   │       │   │   ├── ingest_grpc.go
    │   │   │       │   │   ├── ingest_inprocess.go
    │   │   │       │   │   ├── ingest_ipfix.go
    │   │   │       │   │   ├── ingest_kafka.go
    │   │   │       │   │   ├── ingest_stdin.go
    │   │   │       │   │   ├── ingest_synthetic.go
    │   │   │       │   │   └── metrics.go
    │   │   │       │   ├── inprocess.go
    │   │   │       │   ├── pipeline.go
    │   │   │       │   ├── pipeline_builder.go
    │   │   │       │   ├── pipeline_watcher.go
    │   │   │       │   ├── transform/
    │   │   │       │   │   ├── kubernetes/
    │   │   │       │   │   │   ├── cni/
    │   │   │       │   │   │   │   ├── cni.go
    │   │   │       │   │   │   │   ├── multus.go
    │   │   │       │   │   │   │   ├── ovn_kubernetes.go
    │   │   │       │   │   │   │   └── udn.go
    │   │   │       │   │   │   ├── datasource/
    │   │   │       │   │   │   │   └── datasource.go
    │   │   │       │   │   │   ├── enrich.go
    │   │   │       │   │   │   ├── informers/
    │   │   │       │   │   │   │   ├── config.go
    │   │   │       │   │   │   │   ├── informers-mock.go
    │   │   │       │   │   │   │   └── informers.go
    │   │   │       │   │   │   └── model/
    │   │   │       │   │   │       └── model.go
    │   │   │       │   │   ├── location/
    │   │   │       │   │   │   └── location.go
    │   │   │       │   │   ├── netdb/
    │   │   │       │   │   │   └── netdb.go
    │   │   │       │   │   ├── transform.go
    │   │   │       │   │   ├── transform_filter.go
    │   │   │       │   │   ├── transform_generic.go
    │   │   │       │   │   ├── transform_network.go
    │   │   │       │   │   └── transform_network_direction.go
    │   │   │       │   ├── utils/
    │   │   │       │   │   ├── batcher.go
    │   │   │       │   │   ├── connections.go
    │   │   │       │   │   ├── exit.go
    │   │   │       │   │   ├── fnv.go
    │   │   │       │   │   ├── multiorderedmap.go
    │   │   │       │   │   ├── params_parse.go
    │   │   │       │   │   ├── sasl.go
    │   │   │       │   │   └── timed_cache.go
    │   │   │       │   └── write/
    │   │   │       │       ├── grpc/
    │   │   │       │       │   ├── client.go
    │   │   │       │       │   ├── genericmap/
    │   │   │       │       │   │   ├── genericmap.pb.go
    │   │   │       │       │   │   └── genericmap_grpc.pb.go
    │   │   │       │       │   └── server.go
    │   │   │       │       ├── metrics.go
    │   │   │       │       ├── write.go
    │   │   │       │       ├── write_fake.go
    │   │   │       │       ├── write_grpc.go
    │   │   │       │       ├── write_ipfix.go
    │   │   │       │       ├── write_loki.go
    │   │   │       │       └── write_stdout.go
    │   │   │       ├── prometheus/
    │   │   │       │   └── prom_server.go
    │   │   │       ├── server/
    │   │   │       │   └── common.go
    │   │   │       └── utils/
    │   │   │           ├── convert.go
    │   │   │           ├── filters/
    │   │   │           │   └── filters.go
    │   │   │           ├── k8sutils/
    │   │   │           │   └── kubernetes.go
    │   │   │           └── tcp_flags.go
    │   │   ├── gopipes/
    │   │   │   ├── LICENSE
    │   │   │   └── pkg/
    │   │   │       └── node/
    │   │   │           ├── internal/
    │   │   │           │   └── connect/
    │   │   │           │       └── connectors.go
    │   │   │           ├── node.go
    │   │   │           └── options.go
    │   │   └── loki-client-go/
    │   │       ├── LICENSE
    │   │       ├── grpc/
    │   │       │   ├── batch.go
    │   │       │   ├── client.go
    │   │       │   └── config.go
    │   │       ├── loki/
    │   │       │   ├── batch.go
    │   │       │   ├── client.go
    │   │       │   └── config.go
    │   │       └── pkg/
    │   │           ├── backoff/
    │   │           │   └── backoff.go
    │   │           ├── helpers/
    │   │           │   ├── config.go
    │   │           │   ├── logerror.go
    │   │           │   └── math.go
    │   │           ├── labelutil/
    │   │           │   └── label.go
    │   │           ├── logproto/
    │   │           │   ├── extensions.go
    │   │           │   ├── logproto.pb.go
    │   │           │   ├── logproto.proto
    │   │           │   ├── timestamp.go
    │   │           │   └── types.go
    │   │           ├── metric/
    │   │           │   ├── counters.go
    │   │           │   ├── gauges.go
    │   │           │   ├── histograms.go
    │   │           │   └── metricvec.go
    │   │           ├── metrics/
    │   │           │   └── metrics.go
    │   │           └── urlutil/
    │   │               └── url.go
    │   ├── netsampler/
    │   │   └── goflow2/
    │   │       ├── LICENSE
    │   │       ├── decoders/
    │   │       │   ├── decoder.go
    │   │       │   ├── netflow/
    │   │       │   │   ├── ipfix.go
    │   │       │   │   ├── netflow.go
    │   │       │   │   ├── nfv9.go
    │   │       │   │   ├── packet.go
    │   │       │   │   └── templates/
    │   │       │   │       ├── memory/
    │   │       │   │       │   └── memory.go
    │   │       │   │       └── templates.go
    │   │       │   ├── netflowlegacy/
    │   │       │   │   ├── netflow.go
    │   │       │   │   └── packet.go
    │   │       │   ├── sflow/
    │   │       │   │   ├── datastructure.go
    │   │       │   │   ├── packet.go
    │   │       │   │   └── sflow.go
    │   │       │   └── utils/
    │   │       │       └── utils.go
    │   │       ├── format/
    │   │       │   ├── common/
    │   │       │   │   ├── hash.go
    │   │       │   │   ├── selector.go
    │   │       │   │   └── text.go
    │   │       │   ├── format.go
    │   │       │   └── protobuf/
    │   │       │       └── protobuf.go
    │   │       ├── pb/
    │   │       │   ├── flow.pb.go
    │   │       │   └── flow.proto
    │   │       ├── producer/
    │   │       │   ├── producer_nf.go
    │   │       │   ├── producer_nflegacy.go
    │   │       │   ├── producer_sf.go
    │   │       │   └── reflect.go
    │   │       ├── transport/
    │   │       │   └── transport.go
    │   │       └── utils/
    │   │           ├── metrics.go
    │   │           ├── netflow.go
    │   │           ├── nflegacy.go
    │   │           ├── sflow.go
    │   │           ├── stopper.go
    │   │           └── utils.go
    │   ├── ovn-org/
    │   │   ├── libovsdb/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   ├── cache/
    │   │   │   │   ├── cache.go
    │   │   │   │   ├── doc.go
    │   │   │   │   └── uuidset.go
    │   │   │   ├── client/
    │   │   │   │   ├── api.go
    │   │   │   │   ├── api_test_model.go
    │   │   │   │   ├── client.go
    │   │   │   │   ├── condition.go
    │   │   │   │   ├── config.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── metrics.go
    │   │   │   │   ├── monitor.go
    │   │   │   │   └── options.go
    │   │   │   ├── database/
    │   │   │   │   ├── database.go
    │   │   │   │   ├── doc.go
    │   │   │   │   └── references.go
    │   │   │   ├── mapper/
    │   │   │   │   ├── info.go
    │   │   │   │   └── mapper.go
    │   │   │   ├── model/
    │   │   │   │   ├── client.go
    │   │   │   │   ├── database.go
    │   │   │   │   └── model.go
    │   │   │   ├── ovsdb/
    │   │   │   │   ├── bindings.go
    │   │   │   │   ├── condition.go
    │   │   │   │   ├── error.go
    │   │   │   │   ├── map.go
    │   │   │   │   ├── monitor_select.go
    │   │   │   │   ├── mutation.go
    │   │   │   │   ├── named_uuid.go
    │   │   │   │   ├── notation.go
    │   │   │   │   ├── row.go
    │   │   │   │   ├── rpc.go
    │   │   │   │   ├── schema.go
    │   │   │   │   ├── serverdb/
    │   │   │   │   │   ├── .gitignore
    │   │   │   │   │   ├── database.go
    │   │   │   │   │   ├── gen.go
    │   │   │   │   │   └── model.go
    │   │   │   │   ├── set.go
    │   │   │   │   ├── update3.go
    │   │   │   │   ├── updates.go
    │   │   │   │   ├── updates2.go
    │   │   │   │   └── uuid.go
    │   │   │   └── updates/
    │   │   │       ├── difference.go
    │   │   │       ├── doc.go
    │   │   │       ├── merge.go
    │   │   │       ├── mutate.go
    │   │   │       ├── references.go
    │   │   │       └── updates.go
    │   │   └── ovn-kubernetes/
    │   │       └── go-controller/
    │   │           ├── LICENSE
    │   │           ├── observability-lib/
    │   │           │   ├── model/
    │   │           │   │   └── network_event.go
    │   │           │   ├── ovsdb/
    │   │           │   │   ├── .gitignore
    │   │           │   │   ├── bridge.go
    │   │           │   │   ├── flow_sample_collector_set.go
    │   │           │   │   ├── gen.go
    │   │           │   │   ├── interface.go
    │   │           │   │   └── observ_model.go
    │   │           │   └── sampledecoder/
    │   │           │       ├── db_client.go
    │   │           │       └── sample_decoder.go
    │   │           └── pkg/
    │   │               ├── cni/
    │   │               │   └── types/
    │   │               │       └── types.go
    │   │               ├── config/
    │   │               │   ├── cni.go
    │   │               │   ├── config.go
    │   │               │   └── utils.go
    │   │               ├── cryptorand/
    │   │               │   └── cryptorand.go
    │   │               ├── libovsdb/
    │   │               │   └── ops/
    │   │               │       ├── acl.go
    │   │               │       ├── address_set.go
    │   │               │       ├── chassis.go
    │   │               │       ├── copp.go
    │   │               │       ├── db_object_ids.go
    │   │               │       ├── db_object_types.go
    │   │               │       ├── dhcp.go
    │   │               │       ├── lbgroup.go
    │   │               │       ├── loadbalancer.go
    │   │               │       ├── mac_binding.go
    │   │               │       ├── meter.go
    │   │               │       ├── model.go
    │   │               │       ├── model_client.go
    │   │               │       ├── named_uuid.go
    │   │               │       ├── nb_global.go
    │   │               │       ├── portbinding.go
    │   │               │       ├── portgroup.go
    │   │               │       ├── qos.go
    │   │               │       ├── router.go
    │   │               │       ├── sample.go
    │   │               │       ├── sb_global.go
    │   │               │       ├── switch.go
    │   │               │       ├── template_var.go
    │   │               │       └── transact.go
    │   │               ├── nbdb/
    │   │               │   ├── .gitignore
    │   │               │   ├── acl.go
    │   │               │   ├── address_set.go
    │   │               │   ├── bfd.go
    │   │               │   ├── chassis_template_var.go
    │   │               │   ├── connection.go
    │   │               │   ├── copp.go
    │   │               │   ├── dhcp_options.go
    │   │               │   ├── dhcp_relay.go
    │   │               │   ├── dns.go
    │   │               │   ├── forwarding_group.go
    │   │               │   ├── gateway_chassis.go
    │   │               │   ├── gen.go
    │   │               │   ├── ha_chassis.go
    │   │               │   ├── ha_chassis_group.go
    │   │               │   ├── load_balancer.go
    │   │               │   ├── load_balancer_group.go
    │   │               │   ├── load_balancer_health_check.go
    │   │               │   ├── logical_router.go
    │   │               │   ├── logical_router_policy.go
    │   │               │   ├── logical_router_port.go
    │   │               │   ├── logical_router_static_route.go
    │   │               │   ├── logical_switch.go
    │   │               │   ├── logical_switch_port.go
    │   │               │   ├── meter.go
    │   │               │   ├── meter_band.go
    │   │               │   ├── mirror.go
    │   │               │   ├── model.go
    │   │               │   ├── nat.go
    │   │               │   ├── nb_global.go
    │   │               │   ├── port_group.go
    │   │               │   ├── qos.go
    │   │               │   ├── sample.go
    │   │               │   ├── sample_collector.go
    │   │               │   ├── sampling_app.go
    │   │               │   ├── ssl.go
    │   │               │   └── static_mac_binding.go
    │   │               ├── observability/
    │   │               │   └── observability.go
    │   │               ├── sbdb/
    │   │               │   ├── .gitignore
    │   │               │   ├── address_set.go
    │   │               │   ├── bfd.go
    │   │               │   ├── chassis.go
    │   │               │   ├── chassis_private.go
    │   │               │   ├── chassis_template_var.go
    │   │               │   ├── connection.go
    │   │               │   ├── controller_event.go
    │   │               │   ├── datapath_binding.go
    │   │               │   ├── dhcp_options.go
    │   │               │   ├── dhcpv6_options.go
    │   │               │   ├── dns.go
    │   │               │   ├── encap.go
    │   │               │   ├── fdb.go
    │   │               │   ├── gateway_chassis.go
    │   │               │   ├── gen.go
    │   │               │   ├── ha_chassis.go
    │   │               │   ├── ha_chassis_group.go
    │   │               │   ├── igmp_group.go
    │   │               │   ├── ip_multicast.go
    │   │               │   ├── load_balancer.go
    │   │               │   ├── logical_dp_group.go
    │   │               │   ├── logical_flow.go
    │   │               │   ├── mac_binding.go
    │   │               │   ├── meter.go
    │   │               │   ├── meter_band.go
    │   │               │   ├── mirror.go
    │   │               │   ├── model.go
    │   │               │   ├── multicast_group.go
    │   │               │   ├── port_binding.go
    │   │               │   ├── port_group.go
    │   │               │   ├── rbac_permission.go
    │   │               │   ├── rbac_role.go
    │   │               │   ├── sb_global.go
    │   │               │   ├── service_monitor.go
    │   │               │   ├── ssl.go
    │   │               │   └── static_mac_binding.go
    │   │               └── types/
    │   │                   ├── const.go
    │   │                   ├── errors.go
    │   │                   └── resource_status.go
    │   ├── paulbellamy/
    │   │   └── ratecounter/
    │   │       ├── .gitignore
    │   │       ├── CONTRIBUTORS.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── avgratecounter.go
    │   │       ├── circle.yml
    │   │       ├── counter.go
    │   │       ├── doc.go
    │   │       └── ratecounter.go
    │   ├── philhofer/
    │   │   └── fwd/
    │   │       ├── LICENSE.md
    │   │       ├── README.md
    │   │       ├── reader.go
    │   │       ├── writer.go
    │   │       ├── writer_appengine.go
    │   │       ├── writer_tinygo.go
    │   │       └── writer_unsafe.go
    │   ├── pierrec/
    │   │   └── lz4/
    │   │       └── v4/
    │   │           ├── .gitignore
    │   │           ├── LICENSE
    │   │           ├── README.md
    │   │           ├── compressing_reader.go
    │   │           ├── internal/
    │   │           │   ├── lz4block/
    │   │           │   │   ├── block.go
    │   │           │   │   ├── blocks.go
    │   │           │   │   ├── decode_amd64.s
    │   │           │   │   ├── decode_arm.s
    │   │           │   │   ├── decode_arm64.s
    │   │           │   │   ├── decode_asm.go
    │   │           │   │   └── decode_other.go
    │   │           │   ├── lz4errors/
    │   │           │   │   └── errors.go
    │   │           │   ├── lz4stream/
    │   │           │   │   ├── block.go
    │   │           │   │   ├── frame.go
    │   │           │   │   └── frame_gen.go
    │   │           │   └── xxh32/
    │   │           │       ├── xxh32zero.go
    │   │           │       ├── xxh32zero_arm.go
    │   │           │       ├── xxh32zero_arm.s
    │   │           │       └── xxh32zero_other.go
    │   │           ├── lz4.go
    │   │           ├── options.go
    │   │           ├── options_gen.go
    │   │           ├── reader.go
    │   │           ├── state.go
    │   │           ├── state_gen.go
    │   │           └── writer.go
    │   ├── pion/
    │   │   └── transport/
    │   │       └── v2/
    │   │           ├── AUTHORS.txt
    │   │           ├── LICENSE
    │   │           ├── connctx/
    │   │           │   ├── connctx.go
    │   │           │   └── pipe.go
    │   │           ├── deadline/
    │   │           │   ├── deadline.go
    │   │           │   ├── timer.go
    │   │           │   ├── timer_generic.go
    │   │           │   └── timer_js.go
    │   │           ├── packetio/
    │   │           │   ├── buffer.go
    │   │           │   ├── errors.go
    │   │           │   ├── hardlimit.go
    │   │           │   └── no_hardlimit.go
    │   │           ├── replaydetector/
    │   │           │   ├── fixedbig.go
    │   │           │   └── replaydetector.go
    │   │           └── udp/
    │   │               ├── batchconn.go
    │   │               └── conn.go
    │   ├── pkg/
    │   │   └── errors/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── appveyor.yml
    │   │       ├── errors.go
    │   │       ├── go113.go
    │   │       └── stack.go
    │   ├── pmezard/
    │   │   └── go-difflib/
    │   │       ├── LICENSE
    │   │       └── difflib/
    │   │           └── difflib.go
    │   ├── prometheus/
    │   │   ├── client_golang/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   ├── internal/
    │   │   │   │   └── github.com/
    │   │   │   │       └── golang/
    │   │   │   │           └── gddo/
    │   │   │   │               ├── LICENSE
    │   │   │   │               └── httputil/
    │   │   │   │                   ├── header/
    │   │   │   │                   │   └── header.go
    │   │   │   │                   └── negotiate.go
    │   │   │   └── prometheus/
    │   │   │       ├── .gitignore
    │   │   │       ├── README.md
    │   │   │       ├── build_info_collector.go
    │   │   │       ├── collector.go
    │   │   │       ├── collectorfunc.go
    │   │   │       ├── collectors/
    │   │   │       │   ├── collectors.go
    │   │   │       │   ├── dbstats_collector.go
    │   │   │       │   ├── expvar_collector.go
    │   │   │       │   ├── go_collector_go116.go
    │   │   │       │   ├── go_collector_latest.go
    │   │   │       │   └── process_collector.go
    │   │   │       ├── counter.go
    │   │   │       ├── desc.go
    │   │   │       ├── doc.go
    │   │   │       ├── expvar_collector.go
    │   │   │       ├── fnv.go
    │   │   │       ├── gauge.go
    │   │   │       ├── get_pid.go
    │   │   │       ├── get_pid_gopherjs.go
    │   │   │       ├── go_collector.go
    │   │   │       ├── go_collector_go116.go
    │   │   │       ├── go_collector_latest.go
    │   │   │       ├── histogram.go
    │   │   │       ├── internal/
    │   │   │       │   ├── almost_equal.go
    │   │   │       │   ├── difflib.go
    │   │   │       │   ├── go_collector_options.go
    │   │   │       │   ├── go_runtime_metrics.go
    │   │   │       │   └── metric.go
    │   │   │       ├── labels.go
    │   │   │       ├── metric.go
    │   │   │       ├── num_threads.go
    │   │   │       ├── num_threads_gopherjs.go
    │   │   │       ├── observer.go
    │   │   │       ├── process_collector.go
    │   │   │       ├── process_collector_darwin.go
    │   │   │       ├── process_collector_mem_cgo_darwin.c
    │   │   │       ├── process_collector_mem_cgo_darwin.go
    │   │   │       ├── process_collector_mem_nocgo_darwin.go
    │   │   │       ├── process_collector_not_supported.go
    │   │   │       ├── process_collector_procfsenabled.go
    │   │   │       ├── process_collector_windows.go
    │   │   │       ├── promhttp/
    │   │   │       │   ├── delegator.go
    │   │   │       │   ├── http.go
    │   │   │       │   ├── instrument_client.go
    │   │   │       │   ├── instrument_server.go
    │   │   │       │   ├── internal/
    │   │   │       │   │   └── compression.go
    │   │   │       │   └── option.go
    │   │   │       ├── registry.go
    │   │   │       ├── summary.go
    │   │   │       ├── timer.go
    │   │   │       ├── untyped.go
    │   │   │       ├── value.go
    │   │   │       ├── vec.go
    │   │   │       ├── vnext.go
    │   │   │       └── wrap.go
    │   │   ├── client_model/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   └── go/
    │   │   │       └── metrics.pb.go
    │   │   ├── common/
    │   │   │   ├── LICENSE
    │   │   │   ├── NOTICE
    │   │   │   ├── config/
    │   │   │   │   ├── config.go
    │   │   │   │   ├── headers.go
    │   │   │   │   ├── http_config.go
    │   │   │   │   └── oauth_assertion.go
    │   │   │   ├── expfmt/
    │   │   │   │   ├── decode.go
    │   │   │   │   ├── encode.go
    │   │   │   │   ├── expfmt.go
    │   │   │   │   ├── fuzz.go
    │   │   │   │   ├── openmetrics_create.go
    │   │   │   │   ├── text_create.go
    │   │   │   │   └── text_parse.go
    │   │   │   ├── model/
    │   │   │   │   ├── alert.go
    │   │   │   │   ├── fingerprinting.go
    │   │   │   │   ├── fnv.go
    │   │   │   │   ├── labels.go
    │   │   │   │   ├── labelset.go
    │   │   │   │   ├── labelset_string.go
    │   │   │   │   ├── metadata.go
    │   │   │   │   ├── metric.go
    │   │   │   │   ├── model.go
    │   │   │   │   ├── signature.go
    │   │   │   │   ├── silence.go
    │   │   │   │   ├── time.go
    │   │   │   │   ├── value.go
    │   │   │   │   ├── value_float.go
    │   │   │   │   ├── value_histogram.go
    │   │   │   │   └── value_type.go
    │   │   │   └── version/
    │   │   │       └── info.go
    │   │   ├── procfs/
    │   │   │   ├── .gitignore
    │   │   │   ├── .golangci.yml
    │   │   │   ├── CODE_OF_CONDUCT.md
    │   │   │   ├── CONTRIBUTING.md
    │   │   │   ├── LICENSE
    │   │   │   ├── MAINTAINERS.md
    │   │   │   ├── Makefile
    │   │   │   ├── Makefile.common
    │   │   │   ├── NOTICE
    │   │   │   ├── README.md
    │   │   │   ├── SECURITY.md
    │   │   │   ├── arp.go
    │   │   │   ├── buddyinfo.go
    │   │   │   ├── cmdline.go
    │   │   │   ├── cpuinfo.go
    │   │   │   ├── cpuinfo_armx.go
    │   │   │   ├── cpuinfo_loong64.go
    │   │   │   ├── cpuinfo_mipsx.go
    │   │   │   ├── cpuinfo_others.go
    │   │   │   ├── cpuinfo_ppcx.go
    │   │   │   ├── cpuinfo_riscvx.go
    │   │   │   ├── cpuinfo_s390x.go
    │   │   │   ├── cpuinfo_x86.go
    │   │   │   ├── crypto.go
    │   │   │   ├── doc.go
    │   │   │   ├── fs.go
    │   │   │   ├── fs_statfs_notype.go
    │   │   │   ├── fs_statfs_type.go
    │   │   │   ├── fscache.go
    │   │   │   ├── internal/
    │   │   │   │   ├── fs/
    │   │   │   │   │   └── fs.go
    │   │   │   │   └── util/
    │   │   │   │       ├── parse.go
    │   │   │   │       ├── readfile.go
    │   │   │   │       ├── sysreadfile.go
    │   │   │   │       ├── sysreadfile_compat.go
    │   │   │   │       └── valueparser.go
    │   │   │   ├── ipvs.go
    │   │   │   ├── kernel_random.go
    │   │   │   ├── loadavg.go
    │   │   │   ├── mdstat.go
    │   │   │   ├── meminfo.go
    │   │   │   ├── mountinfo.go
    │   │   │   ├── mountstats.go
    │   │   │   ├── net_conntrackstat.go
    │   │   │   ├── net_dev.go
    │   │   │   ├── net_dev_snmp6.go
    │   │   │   ├── net_ip_socket.go
    │   │   │   ├── net_protocols.go
    │   │   │   ├── net_route.go
    │   │   │   ├── net_sockstat.go
    │   │   │   ├── net_softnet.go
    │   │   │   ├── net_tcp.go
    │   │   │   ├── net_tls_stat.go
    │   │   │   ├── net_udp.go
    │   │   │   ├── net_unix.go
    │   │   │   ├── net_wireless.go
    │   │   │   ├── net_xfrm.go
    │   │   │   ├── netstat.go
    │   │   │   ├── proc.go
    │   │   │   ├── proc_cgroup.go
    │   │   │   ├── proc_cgroups.go
    │   │   │   ├── proc_environ.go
    │   │   │   ├── proc_fdinfo.go
    │   │   │   ├── proc_interrupts.go
    │   │   │   ├── proc_io.go
    │   │   │   ├── proc_limits.go
    │   │   │   ├── proc_maps.go
    │   │   │   ├── proc_netstat.go
    │   │   │   ├── proc_ns.go
    │   │   │   ├── proc_psi.go
    │   │   │   ├── proc_smaps.go
    │   │   │   ├── proc_snmp.go
    │   │   │   ├── proc_snmp6.go
    │   │   │   ├── proc_stat.go
    │   │   │   ├── proc_status.go
    │   │   │   ├── proc_sys.go
    │   │   │   ├── schedstat.go
    │   │   │   ├── slab.go
    │   │   │   ├── softirqs.go
    │   │   │   ├── stat.go
    │   │   │   ├── swaps.go
    │   │   │   ├── thread.go
    │   │   │   ├── ttar
    │   │   │   ├── vm.go
    │   │   │   └── zoneinfo.go
    │   │   └── prometheus/
    │   │       ├── LICENSE
    │   │       ├── NOTICE
    │   │       ├── model/
    │   │       │   ├── exemplar/
    │   │       │   │   └── exemplar.go
    │   │       │   ├── histogram/
    │   │       │   │   ├── float_histogram.go
    │   │       │   │   ├── generic.go
    │   │       │   │   ├── histogram.go
    │   │       │   │   └── test_utils.go
    │   │       │   ├── labels/
    │   │       │   │   ├── labels.go
    │   │       │   │   ├── labels_common.go
    │   │       │   │   ├── labels_dedupelabels.go
    │   │       │   │   ├── labels_stringlabels.go
    │   │       │   │   ├── matcher.go
    │   │       │   │   ├── regexp.go
    │   │       │   │   ├── sharding.go
    │   │       │   │   ├── sharding_dedupelabels.go
    │   │       │   │   ├── sharding_stringlabels.go
    │   │       │   │   └── test_utils.go
    │   │       │   ├── metadata/
    │   │       │   │   └── metadata.go
    │   │       │   ├── timestamp/
    │   │       │   │   └── timestamp.go
    │   │       │   └── value/
    │   │       │       └── value.go
    │   │       ├── promql/
    │   │       │   └── parser/
    │   │       │       ├── ast.go
    │   │       │       ├── functions.go
    │   │       │       ├── generated_parser.y
    │   │       │       ├── generated_parser.y.go
    │   │       │       ├── lex.go
    │   │       │       ├── parse.go
    │   │       │       ├── posrange/
    │   │       │       │   └── posrange.go
    │   │       │       ├── prettier.go
    │   │       │       ├── prettier_rules.md
    │   │       │       ├── printer.go
    │   │       │       └── value.go
    │   │       ├── storage/
    │   │       │   ├── buffer.go
    │   │       │   ├── errors.go
    │   │       │   ├── fanout.go
    │   │       │   ├── generic.go
    │   │       │   ├── interface.go
    │   │       │   ├── lazy.go
    │   │       │   ├── memoized_iterator.go
    │   │       │   ├── merge.go
    │   │       │   ├── noop.go
    │   │       │   ├── secondary.go
    │   │       │   └── series.go
    │   │       ├── tsdb/
    │   │       │   ├── chunkenc/
    │   │       │   │   ├── bstream.go
    │   │       │   │   ├── chunk.go
    │   │       │   │   ├── float_histogram.go
    │   │       │   │   ├── histogram.go
    │   │       │   │   ├── histogram_meta.go
    │   │       │   │   ├── varbit.go
    │   │       │   │   └── xor.go
    │   │       │   ├── chunks/
    │   │       │   │   ├── chunk_write_queue.go
    │   │       │   │   ├── chunks.go
    │   │       │   │   ├── head_chunks.go
    │   │       │   │   ├── head_chunks_other.go
    │   │       │   │   ├── head_chunks_windows.go
    │   │       │   │   ├── queue.go
    │   │       │   │   └── samples.go
    │   │       │   ├── errors/
    │   │       │   │   └── errors.go
    │   │       │   └── fileutil/
    │   │       │       ├── dir.go
    │   │       │       ├── dir_unix.go
    │   │       │       ├── dir_windows.go
    │   │       │       ├── fileutil.go
    │   │       │       ├── flock.go
    │   │       │       ├── flock_js.go
    │   │       │       ├── flock_plan9.go
    │   │       │       ├── flock_solaris.go
    │   │       │       ├── flock_unix.go
    │   │       │       ├── flock_windows.go
    │   │       │       ├── mmap.go
    │   │       │       ├── mmap_386.go
    │   │       │       ├── mmap_amd64.go
    │   │       │       ├── mmap_arm64.go
    │   │       │       ├── mmap_js.go
    │   │       │       ├── mmap_unix.go
    │   │       │       ├── mmap_windows.go
    │   │       │       ├── preallocate.go
    │   │       │       ├── preallocate_darwin.go
    │   │       │       ├── preallocate_linux.go
    │   │       │       ├── preallocate_other.go
    │   │       │       ├── sync.go
    │   │       │       ├── sync_darwin.go
    │   │       │       └── sync_linux.go
    │   │       └── util/
    │   │           ├── annotations/
    │   │           │   └── annotations.go
    │   │           └── strutil/
    │   │               ├── quote.go
    │   │               └── strconv.go
    │   ├── rs/
    │   │   └── xid/
    │   │       ├── .appveyor.yml
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── error.go
    │   │       ├── hostid_darwin.go
    │   │       ├── hostid_fallback.go
    │   │       ├── hostid_freebsd.go
    │   │       ├── hostid_linux.go
    │   │       ├── hostid_windows.go
    │   │       └── id.go
    │   ├── russross/
    │   │   └── blackfriday/
    │   │       └── v2/
    │   │           ├── .gitignore
    │   │           ├── .travis.yml
    │   │           ├── LICENSE.txt
    │   │           ├── README.md
    │   │           ├── block.go
    │   │           ├── doc.go
    │   │           ├── entities.go
    │   │           ├── esc.go
    │   │           ├── html.go
    │   │           ├── inline.go
    │   │           ├── markdown.go
    │   │           ├── node.go
    │   │           └── smartypants.go
    │   ├── safchain/
    │   │   └── ethtool/
    │   │       ├── .gitignore
    │   │       ├── .golangci.yml
    │   │       ├── .yamllint
    │   │       ├── LICENSE
    │   │       ├── Makefile
    │   │       ├── README.md
    │   │       ├── ethtool.go
    │   │       ├── ethtool_cmd.go
    │   │       ├── ethtool_darwin.go
    │   │       ├── ethtool_linux.go
    │   │       └── ethtool_msglvl.go
    │   ├── spf13/
    │   │   └── pflag/
    │   │       ├── .editorconfig
    │   │       ├── .gitignore
    │   │       ├── .golangci.yaml
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── bool.go
    │   │       ├── bool_func.go
    │   │       ├── bool_slice.go
    │   │       ├── bytes.go
    │   │       ├── count.go
    │   │       ├── duration.go
    │   │       ├── duration_slice.go
    │   │       ├── errors.go
    │   │       ├── flag.go
    │   │       ├── float32.go
    │   │       ├── float32_slice.go
    │   │       ├── float64.go
    │   │       ├── float64_slice.go
    │   │       ├── func.go
    │   │       ├── golangflag.go
    │   │       ├── int.go
    │   │       ├── int16.go
    │   │       ├── int32.go
    │   │       ├── int32_slice.go
    │   │       ├── int64.go
    │   │       ├── int64_slice.go
    │   │       ├── int8.go
    │   │       ├── int_slice.go
    │   │       ├── ip.go
    │   │       ├── ip_slice.go
    │   │       ├── ipmask.go
    │   │       ├── ipnet.go
    │   │       ├── ipnet_slice.go
    │   │       ├── string.go
    │   │       ├── string_array.go
    │   │       ├── string_slice.go
    │   │       ├── string_to_int.go
    │   │       ├── string_to_int64.go
    │   │       ├── string_to_string.go
    │   │       ├── text.go
    │   │       ├── time.go
    │   │       ├── uint.go
    │   │       ├── uint16.go
    │   │       ├── uint32.go
    │   │       ├── uint64.go
    │   │       ├── uint8.go
    │   │       └── uint_slice.go
    │   ├── stretchr/
    │   │   ├── objx/
    │   │   │   ├── .codeclimate.yml
    │   │   │   ├── .gitignore
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── Taskfile.yml
    │   │   │   ├── accessors.go
    │   │   │   ├── conversions.go
    │   │   │   ├── doc.go
    │   │   │   ├── map.go
    │   │   │   ├── mutations.go
    │   │   │   ├── security.go
    │   │   │   ├── tests.go
    │   │   │   ├── type_specific.go
    │   │   │   ├── type_specific_codegen.go
    │   │   │   └── value.go
    │   │   └── testify/
    │   │       ├── LICENSE
    │   │       ├── assert/
    │   │       │   ├── assertion_compare.go
    │   │       │   ├── assertion_format.go
    │   │       │   ├── assertion_format.go.tmpl
    │   │       │   ├── assertion_forward.go
    │   │       │   ├── assertion_forward.go.tmpl
    │   │       │   ├── assertion_order.go
    │   │       │   ├── assertions.go
    │   │       │   ├── doc.go
    │   │       │   ├── errors.go
    │   │       │   ├── forward_assertions.go
    │   │       │   ├── http_assertions.go
    │   │       │   └── yaml/
    │   │       │       ├── yaml_custom.go
    │   │       │       ├── yaml_default.go
    │   │       │       └── yaml_fail.go
    │   │       ├── mock/
    │   │       │   ├── doc.go
    │   │       │   └── mock.go
    │   │       └── require/
    │   │           ├── doc.go
    │   │           ├── forward_requirements.go
    │   │           ├── require.go
    │   │           ├── require.go.tmpl
    │   │           ├── require_forward.go
    │   │           ├── require_forward.go.tmpl
    │   │           └── requirements.go
    │   ├── tinylib/
    │   │   └── msgp/
    │   │       ├── LICENSE
    │   │       └── msgp/
    │   │           ├── advise_linux.go
    │   │           ├── advise_other.go
    │   │           ├── autoshim.go
    │   │           ├── circular.go
    │   │           ├── defs.go
    │   │           ├── edit.go
    │   │           ├── elsize.go
    │   │           ├── elsize_default.go
    │   │           ├── elsize_tinygo.go
    │   │           ├── errors.go
    │   │           ├── errors_default.go
    │   │           ├── errors_tinygo.go
    │   │           ├── extension.go
    │   │           ├── file.go
    │   │           ├── file_port.go
    │   │           ├── integers.go
    │   │           ├── iter.go
    │   │           ├── json.go
    │   │           ├── json_bytes.go
    │   │           ├── number.go
    │   │           ├── purego.go
    │   │           ├── read.go
    │   │           ├── read_bytes.go
    │   │           ├── setof/
    │   │           │   ├── generated.go
    │   │           │   └── setof.go
    │   │           ├── size.go
    │   │           ├── unsafe.go
    │   │           ├── write.go
    │   │           └── write_bytes.go
    │   ├── vishvananda/
    │   │   ├── netlink/
    │   │   │   ├── .gitignore
    │   │   │   ├── CHANGELOG.md
    │   │   │   ├── LICENSE
    │   │   │   ├── Makefile
    │   │   │   ├── README.md
    │   │   │   ├── addr.go
    │   │   │   ├── addr_linux.go
    │   │   │   ├── bpf_linux.go
    │   │   │   ├── bridge_linux.go
    │   │   │   ├── chain.go
    │   │   │   ├── chain_linux.go
    │   │   │   ├── class.go
    │   │   │   ├── class_linux.go
    │   │   │   ├── conntrack_linux.go
    │   │   │   ├── conntrack_unspecified.go
    │   │   │   ├── devlink_linux.go
    │   │   │   ├── filter.go
    │   │   │   ├── filter_linux.go
    │   │   │   ├── fou.go
    │   │   │   ├── fou_linux.go
    │   │   │   ├── fou_unspecified.go
    │   │   │   ├── genetlink_linux.go
    │   │   │   ├── genetlink_unspecified.go
    │   │   │   ├── gtp_linux.go
    │   │   │   ├── handle_linux.go
    │   │   │   ├── handle_unspecified.go
    │   │   │   ├── inet_diag.go
    │   │   │   ├── ioctl_linux.go
    │   │   │   ├── ipset_linux.go
    │   │   │   ├── link.go
    │   │   │   ├── link_linux.go
    │   │   │   ├── link_tuntap_linux.go
    │   │   │   ├── neigh.go
    │   │   │   ├── neigh_linux.go
    │   │   │   ├── netlink.go
    │   │   │   ├── netlink_linux.go
    │   │   │   ├── netlink_unspecified.go
    │   │   │   ├── netns_linux.go
    │   │   │   ├── netns_unspecified.go
    │   │   │   ├── nl/
    │   │   │   │   ├── addr_linux.go
    │   │   │   │   ├── bridge_linux.go
    │   │   │   │   ├── conntrack_linux.go
    │   │   │   │   ├── devlink_linux.go
    │   │   │   │   ├── genetlink_linux.go
    │   │   │   │   ├── ip6tnl_linux.go
    │   │   │   │   ├── ipset_linux.go
    │   │   │   │   ├── link_linux.go
    │   │   │   │   ├── lwt_linux.go
    │   │   │   │   ├── mpls_linux.go
    │   │   │   │   ├── nl_linux.go
    │   │   │   │   ├── nl_unspecified.go
    │   │   │   │   ├── parse_attr_linux.go
    │   │   │   │   ├── rdma_link_linux.go
    │   │   │   │   ├── route_linux.go
    │   │   │   │   ├── seg6_linux.go
    │   │   │   │   ├── seg6local_linux.go
    │   │   │   │   ├── syscall.go
    │   │   │   │   ├── tc_linux.go
    │   │   │   │   ├── vdpa_linux.go
    │   │   │   │   ├── xfrm_linux.go
    │   │   │   │   ├── xfrm_monitor_linux.go
    │   │   │   │   ├── xfrm_policy_linux.go
    │   │   │   │   └── xfrm_state_linux.go
    │   │   │   ├── order.go
    │   │   │   ├── proc_event_linux.go
    │   │   │   ├── protinfo.go
    │   │   │   ├── protinfo_linux.go
    │   │   │   ├── qdisc.go
    │   │   │   ├── qdisc_linux.go
    │   │   │   ├── rdma_link_linux.go
    │   │   │   ├── route.go
    │   │   │   ├── route_linux.go
    │   │   │   ├── route_unspecified.go
    │   │   │   ├── rule.go
    │   │   │   ├── rule_linux.go
    │   │   │   ├── rule_nonlinux.go
    │   │   │   ├── socket.go
    │   │   │   ├── socket_linux.go
    │   │   │   ├── socket_xdp_linux.go
    │   │   │   ├── tcp.go
    │   │   │   ├── tcp_linux.go
    │   │   │   ├── unix_diag.go
    │   │   │   ├── vdpa_linux.go
    │   │   │   ├── virtio.go
    │   │   │   ├── xdp_diag.go
    │   │   │   ├── xdp_linux.go
    │   │   │   ├── xfrm_linux.go
    │   │   │   ├── xfrm_monitor_linux.go
    │   │   │   ├── xfrm_policy_linux.go
    │   │   │   ├── xfrm_state_linux.go
    │   │   │   └── xfrm_unspecified.go
    │   │   └── netns/
    │   │       ├── .golangci.yml
    │   │       ├── .yamllint.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── doc.go
    │   │       ├── netns_linux.go
    │   │       ├── netns_others.go
    │   │       ├── nshandle_linux.go
    │   │       └── nshandle_others.go
    │   ├── vmware/
    │   │   └── go-ipfix/
    │   │       ├── LICENSE
    │   │       ├── NOTICE
    │   │       └── pkg/
    │   │           ├── collector/
    │   │           │   ├── clock.go
    │   │           │   ├── process.go
    │   │           │   ├── session.go
    │   │           │   ├── tcp.go
    │   │           │   └── udp.go
    │   │           ├── entities/
    │   │           │   ├── ie.go
    │   │           │   ├── ie_value.go
    │   │           │   ├── message.go
    │   │           │   ├── record.go
    │   │           │   └── set.go
    │   │           ├── exporter/
    │   │           │   ├── buffered.go
    │   │           │   ├── msg.go
    │   │           │   └── process.go
    │   │           └── registry/
    │   │               ├── registry.go
    │   │               ├── registry_IANA.go
    │   │               ├── registry_antrea.csv
    │   │               └── registry_antrea.go
    │   ├── x448/
    │   │   └── float16/
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       └── float16.go
    │   ├── xdg-go/
    │   │   ├── pbkdf2/
    │   │   │   ├── .gitignore
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   └── pbkdf2.go
    │   │   ├── scram/
    │   │   │   ├── .gitignore
    │   │   │   ├── CHANGELOG.md
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── client.go
    │   │   │   ├── client_conv.go
    │   │   │   ├── common.go
    │   │   │   ├── doc.go
    │   │   │   ├── parse.go
    │   │   │   ├── scram.go
    │   │   │   ├── server.go
    │   │   │   └── server_conv.go
    │   │   └── stringprep/
    │   │       ├── .gitignore
    │   │       ├── CHANGELOG.md
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── bidi.go
    │   │       ├── doc.go
    │   │       ├── error.go
    │   │       ├── map.go
    │   │       ├── profile.go
    │   │       ├── saslprep.go
    │   │       ├── set.go
    │   │       └── tables.go
    │   └── xrash/
    │       └── smetrics/
    │           ├── .travis.yml
    │           ├── LICENSE
    │           ├── README.md
    │           ├── doc.go
    │           ├── hamming.go
    │           ├── jaro-winkler.go
    │           ├── jaro.go
    │           ├── soundex.go
    │           ├── ukkonen.go
    │           └── wagner-fischer.go
    ├── go.opentelemetry.io/
    │   ├── auto/
    │   │   └── sdk/
    │   │       ├── CONTRIBUTING.md
    │   │       ├── LICENSE
    │   │       ├── VERSIONING.md
    │   │       ├── doc.go
    │   │       ├── internal/
    │   │       │   └── telemetry/
    │   │       │       ├── attr.go
    │   │       │       ├── doc.go
    │   │       │       ├── id.go
    │   │       │       ├── number.go
    │   │       │       ├── resource.go
    │   │       │       ├── scope.go
    │   │       │       ├── span.go
    │   │       │       ├── status.go
    │   │       │       ├── traces.go
    │   │       │       └── value.go
    │   │       ├── limit.go
    │   │       ├── span.go
    │   │       ├── tracer.go
    │   │       └── tracer_provider.go
    │   ├── otel/
    │   │   ├── .clomonitor.yml
    │   │   ├── .codespellignore
    │   │   ├── .codespellrc
    │   │   ├── .gitattributes
    │   │   ├── .gitignore
    │   │   ├── .golangci.yml
    │   │   ├── .lycheeignore
    │   │   ├── .markdownlint.yaml
    │   │   ├── CHANGELOG.md
    │   │   ├── CODEOWNERS
    │   │   ├── CONTRIBUTING.md
    │   │   ├── LICENSE
    │   │   ├── Makefile
    │   │   ├── README.md
    │   │   ├── RELEASING.md
    │   │   ├── SECURITY-INSIGHTS.yml
    │   │   ├── VERSIONING.md
    │   │   ├── attribute/
    │   │   │   ├── README.md
    │   │   │   ├── doc.go
    │   │   │   ├── encoder.go
    │   │   │   ├── filter.go
    │   │   │   ├── hash.go
    │   │   │   ├── internal/
    │   │   │   │   ├── attribute.go
    │   │   │   │   └── xxhash/
    │   │   │   │       └── xxhash.go
    │   │   │   ├── iterator.go
    │   │   │   ├── key.go
    │   │   │   ├── kv.go
    │   │   │   ├── rawhelpers.go
    │   │   │   ├── set.go
    │   │   │   ├── type_string.go
    │   │   │   └── value.go
    │   │   ├── baggage/
    │   │   │   ├── README.md
    │   │   │   ├── baggage.go
    │   │   │   ├── context.go
    │   │   │   └── doc.go
    │   │   ├── codes/
    │   │   │   ├── README.md
    │   │   │   ├── codes.go
    │   │   │   └── doc.go
    │   │   ├── dependencies.Dockerfile
    │   │   ├── doc.go
    │   │   ├── error_handler.go
    │   │   ├── exporters/
    │   │   │   └── otlp/
    │   │   │       ├── otlpmetric/
    │   │   │       │   ├── otlpmetricgrpc/
    │   │   │       │   │   ├── LICENSE
    │   │   │       │   │   ├── README.md
    │   │   │       │   │   ├── client.go
    │   │   │       │   │   ├── config.go
    │   │   │       │   │   ├── doc.go
    │   │   │       │   │   ├── exporter.go
    │   │   │       │   │   ├── internal/
    │   │   │       │   │   │   ├── envconfig/
    │   │   │       │   │   │   │   └── envconfig.go
    │   │   │       │   │   │   ├── gen.go
    │   │   │       │   │   │   ├── oconf/
    │   │   │       │   │   │   │   ├── envconfig.go
    │   │   │       │   │   │   │   ├── options.go
    │   │   │       │   │   │   │   ├── optiontypes.go
    │   │   │       │   │   │   │   └── tls.go
    │   │   │       │   │   │   ├── partialsuccess.go
    │   │   │       │   │   │   ├── retry/
    │   │   │       │   │   │   │   └── retry.go
    │   │   │       │   │   │   └── transform/
    │   │   │       │   │   │       ├── attribute.go
    │   │   │       │   │   │       ├── error.go
    │   │   │       │   │   │       └── metricdata.go
    │   │   │       │   │   └── version.go
    │   │   │       │   └── otlpmetrichttp/
    │   │   │       │       ├── LICENSE
    │   │   │       │       ├── README.md
    │   │   │       │       ├── client.go
    │   │   │       │       ├── config.go
    │   │   │       │       ├── doc.go
    │   │   │       │       ├── exporter.go
    │   │   │       │       ├── internal/
    │   │   │       │       │   ├── envconfig/
    │   │   │       │       │   │   └── envconfig.go
    │   │   │       │       │   ├── gen.go
    │   │   │       │       │   ├── oconf/
    │   │   │       │       │   │   ├── envconfig.go
    │   │   │       │       │   │   ├── options.go
    │   │   │       │       │   │   ├── optiontypes.go
    │   │   │       │       │   │   └── tls.go
    │   │   │       │       │   ├── partialsuccess.go
    │   │   │       │       │   ├── retry/
    │   │   │       │       │   │   └── retry.go
    │   │   │       │       │   └── transform/
    │   │   │       │       │       ├── attribute.go
    │   │   │       │       │       ├── error.go
    │   │   │       │       │       └── metricdata.go
    │   │   │       │       └── version.go
    │   │   │       └── otlptrace/
    │   │   │           ├── LICENSE
    │   │   │           ├── README.md
    │   │   │           ├── clients.go
    │   │   │           ├── doc.go
    │   │   │           ├── exporter.go
    │   │   │           ├── internal/
    │   │   │           │   └── tracetransform/
    │   │   │           │       ├── attribute.go
    │   │   │           │       ├── instrumentation.go
    │   │   │           │       ├── resource.go
    │   │   │           │       └── span.go
    │   │   │           ├── otlptracegrpc/
    │   │   │           │   ├── LICENSE
    │   │   │           │   ├── README.md
    │   │   │           │   ├── client.go
    │   │   │           │   ├── doc.go
    │   │   │           │   ├── exporter.go
    │   │   │           │   ├── internal/
    │   │   │           │   │   ├── counter/
    │   │   │           │   │   │   └── counter.go
    │   │   │           │   │   ├── envconfig/
    │   │   │           │   │   │   └── envconfig.go
    │   │   │           │   │   ├── gen.go
    │   │   │           │   │   ├── observ/
    │   │   │           │   │   │   ├── doc.go
    │   │   │           │   │   │   ├── instrumentation.go
    │   │   │           │   │   │   └── target.go
    │   │   │           │   │   ├── otlpconfig/
    │   │   │           │   │   │   ├── envconfig.go
    │   │   │           │   │   │   ├── options.go
    │   │   │           │   │   │   ├── optiontypes.go
    │   │   │           │   │   │   └── tls.go
    │   │   │           │   │   ├── partialsuccess.go
    │   │   │           │   │   ├── retry/
    │   │   │           │   │   │   └── retry.go
    │   │   │           │   │   ├── version.go
    │   │   │           │   │   └── x/
    │   │   │           │   │       ├── README.md
    │   │   │           │   │       ├── observ.go
    │   │   │           │   │       └── x.go
    │   │   │           │   └── options.go
    │   │   │           ├── otlptracehttp/
    │   │   │           │   ├── LICENSE
    │   │   │           │   ├── README.md
    │   │   │           │   ├── client.go
    │   │   │           │   ├── doc.go
    │   │   │           │   ├── exporter.go
    │   │   │           │   ├── internal/
    │   │   │           │   │   ├── counter/
    │   │   │           │   │   │   └── counter.go
    │   │   │           │   │   ├── envconfig/
    │   │   │           │   │   │   └── envconfig.go
    │   │   │           │   │   ├── gen.go
    │   │   │           │   │   ├── observ/
    │   │   │           │   │   │   └── instrumentation.go
    │   │   │           │   │   ├── otlpconfig/
    │   │   │           │   │   │   ├── envconfig.go
    │   │   │           │   │   │   ├── options.go
    │   │   │           │   │   │   ├── optiontypes.go
    │   │   │           │   │   │   └── tls.go
    │   │   │           │   │   ├── partialsuccess.go
    │   │   │           │   │   ├── retry/
    │   │   │           │   │   │   └── retry.go
    │   │   │           │   │   ├── version.go
    │   │   │           │   │   └── x/
    │   │   │           │   │       ├── observ.go
    │   │   │           │   │       └── x.go
    │   │   │           │   └── options.go
    │   │   │           └── version.go
    │   │   ├── handler.go
    │   │   ├── internal/
    │   │   │   ├── baggage/
    │   │   │   │   ├── baggage.go
    │   │   │   │   └── context.go
    │   │   │   ├── errorhandler/
    │   │   │   │   └── errorhandler.go
    │   │   │   └── global/
    │   │   │       ├── handler.go
    │   │   │       ├── instruments.go
    │   │   │       ├── internal_logging.go
    │   │   │       ├── meter.go
    │   │   │       ├── propagator.go
    │   │   │       ├── state.go
    │   │   │       └── trace.go
    │   │   ├── internal_logging.go
    │   │   ├── metric/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── asyncfloat64.go
    │   │   │   ├── asyncint64.go
    │   │   │   ├── config.go
    │   │   │   ├── doc.go
    │   │   │   ├── embedded/
    │   │   │   │   ├── README.md
    │   │   │   │   └── embedded.go
    │   │   │   ├── instrument.go
    │   │   │   ├── meter.go
    │   │   │   ├── noop/
    │   │   │   │   ├── README.md
    │   │   │   │   └── noop.go
    │   │   │   ├── syncfloat64.go
    │   │   │   └── syncint64.go
    │   │   ├── metric.go
    │   │   ├── propagation/
    │   │   │   ├── README.md
    │   │   │   ├── baggage.go
    │   │   │   ├── doc.go
    │   │   │   ├── propagation.go
    │   │   │   └── trace_context.go
    │   │   ├── propagation.go
    │   │   ├── renovate.json
    │   │   ├── requirements.txt
    │   │   ├── sdk/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── instrumentation/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── library.go
    │   │   │   │   └── scope.go
    │   │   │   ├── internal/
    │   │   │   │   └── x/
    │   │   │   │       ├── README.md
    │   │   │   │       ├── features.go
    │   │   │   │       └── x.go
    │   │   │   ├── metric/
    │   │   │   │   ├── LICENSE
    │   │   │   │   ├── README.md
    │   │   │   │   ├── aggregation.go
    │   │   │   │   ├── cache.go
    │   │   │   │   ├── config.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── env.go
    │   │   │   │   ├── exemplar/
    │   │   │   │   │   ├── README.md
    │   │   │   │   │   ├── doc.go
    │   │   │   │   │   ├── exemplar.go
    │   │   │   │   │   ├── filter.go
    │   │   │   │   │   ├── fixed_size_reservoir.go
    │   │   │   │   │   ├── histogram_reservoir.go
    │   │   │   │   │   ├── reservoir.go
    │   │   │   │   │   ├── storage.go
    │   │   │   │   │   └── value.go
    │   │   │   │   ├── exemplar.go
    │   │   │   │   ├── exporter.go
    │   │   │   │   ├── instrument.go
    │   │   │   │   ├── instrumentkind_string.go
    │   │   │   │   ├── internal/
    │   │   │   │   │   ├── aggregate/
    │   │   │   │   │   │   ├── aggregate.go
    │   │   │   │   │   │   ├── atomic.go
    │   │   │   │   │   │   ├── doc.go
    │   │   │   │   │   │   ├── drop.go
    │   │   │   │   │   │   ├── exemplar.go
    │   │   │   │   │   │   ├── exponential_histogram.go
    │   │   │   │   │   │   ├── filtered_reservoir.go
    │   │   │   │   │   │   ├── histogram.go
    │   │   │   │   │   │   ├── lastvalue.go
    │   │   │   │   │   │   ├── limit.go
    │   │   │   │   │   │   └── sum.go
    │   │   │   │   │   ├── observ/
    │   │   │   │   │   │   └── instrumentation.go
    │   │   │   │   │   ├── reservoir/
    │   │   │   │   │   │   ├── concurrent_safe.go
    │   │   │   │   │   │   └── doc.go
    │   │   │   │   │   └── reuse_slice.go
    │   │   │   │   ├── manual_reader.go
    │   │   │   │   ├── meter.go
    │   │   │   │   ├── metricdata/
    │   │   │   │   │   ├── README.md
    │   │   │   │   │   ├── data.go
    │   │   │   │   │   ├── temporality.go
    │   │   │   │   │   └── temporality_string.go
    │   │   │   │   ├── periodic_reader.go
    │   │   │   │   ├── pipeline.go
    │   │   │   │   ├── provider.go
    │   │   │   │   ├── reader.go
    │   │   │   │   ├── version.go
    │   │   │   │   └── view.go
    │   │   │   ├── resource/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── auto.go
    │   │   │   │   ├── builtin.go
    │   │   │   │   ├── config.go
    │   │   │   │   ├── container.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── env.go
    │   │   │   │   ├── host_id.go
    │   │   │   │   ├── host_id_bsd.go
    │   │   │   │   ├── host_id_darwin.go
    │   │   │   │   ├── host_id_exec.go
    │   │   │   │   ├── host_id_linux.go
    │   │   │   │   ├── host_id_readfile.go
    │   │   │   │   ├── host_id_unsupported.go
    │   │   │   │   ├── host_id_windows.go
    │   │   │   │   ├── os.go
    │   │   │   │   ├── os_release_darwin.go
    │   │   │   │   ├── os_release_unix.go
    │   │   │   │   ├── os_unix.go
    │   │   │   │   ├── os_unsupported.go
    │   │   │   │   ├── os_windows.go
    │   │   │   │   ├── process.go
    │   │   │   │   └── resource.go
    │   │   │   ├── trace/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── batch_span_processor.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── event.go
    │   │   │   │   ├── evictedqueue.go
    │   │   │   │   ├── id_generator.go
    │   │   │   │   ├── internal/
    │   │   │   │   │   ├── env/
    │   │   │   │   │   │   └── env.go
    │   │   │   │   │   └── observ/
    │   │   │   │   │       ├── batch_span_processor.go
    │   │   │   │   │       ├── doc.go
    │   │   │   │   │       ├── simple_span_processor.go
    │   │   │   │   │       └── tracer.go
    │   │   │   │   ├── link.go
    │   │   │   │   ├── provider.go
    │   │   │   │   ├── sampler_env.go
    │   │   │   │   ├── sampling.go
    │   │   │   │   ├── simple_span_processor.go
    │   │   │   │   ├── snapshot.go
    │   │   │   │   ├── span.go
    │   │   │   │   ├── span_exporter.go
    │   │   │   │   ├── span_limits.go
    │   │   │   │   ├── span_processor.go
    │   │   │   │   └── tracer.go
    │   │   │   └── version.go
    │   │   ├── semconv/
    │   │   │   ├── v1.21.0/
    │   │   │   │   ├── README.md
    │   │   │   │   ├── attribute_group.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── event.go
    │   │   │   │   ├── exception.go
    │   │   │   │   ├── resource.go
    │   │   │   │   ├── schema.go
    │   │   │   │   └── trace.go
    │   │   │   ├── v1.37.0/
    │   │   │   │   ├── MIGRATION.md
    │   │   │   │   ├── README.md
    │   │   │   │   ├── attribute_group.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── error_type.go
    │   │   │   │   ├── exception.go
    │   │   │   │   └── schema.go
    │   │   │   └── v1.40.0/
    │   │   │       ├── MIGRATION.md
    │   │   │       ├── README.md
    │   │   │       ├── attribute_group.go
    │   │   │       ├── doc.go
    │   │   │       ├── error_type.go
    │   │   │       ├── exception.go
    │   │   │       ├── otelconv/
    │   │   │       │   └── metric.go
    │   │   │       └── schema.go
    │   │   ├── trace/
    │   │   │   ├── LICENSE
    │   │   │   ├── README.md
    │   │   │   ├── auto.go
    │   │   │   ├── config.go
    │   │   │   ├── context.go
    │   │   │   ├── doc.go
    │   │   │   ├── embedded/
    │   │   │   │   ├── README.md
    │   │   │   │   └── embedded.go
    │   │   │   ├── hex.go
    │   │   │   ├── internal/
    │   │   │   │   └── telemetry/
    │   │   │   │       ├── attr.go
    │   │   │   │       ├── doc.go
    │   │   │   │       ├── id.go
    │   │   │   │       ├── number.go
    │   │   │   │       ├── resource.go
    │   │   │   │       ├── scope.go
    │   │   │   │       ├── span.go
    │   │   │   │       ├── status.go
    │   │   │   │       ├── traces.go
    │   │   │   │       └── value.go
    │   │   │   ├── nonrecording.go
    │   │   │   ├── noop/
    │   │   │   │   ├── README.md
    │   │   │   │   └── noop.go
    │   │   │   ├── noop.go
    │   │   │   ├── provider.go
    │   │   │   ├── span.go
    │   │   │   ├── trace.go
    │   │   │   ├── tracer.go
    │   │   │   └── tracestate.go
    │   │   ├── trace.go
    │   │   ├── verify_released_changelog.sh
    │   │   ├── version.go
    │   │   └── versions.yaml
    │   └── proto/
    │       └── otlp/
    │           ├── LICENSE
    │           ├── collector/
    │           │   ├── logs/
    │           │   │   └── v1/
    │           │   │       ├── logs_service.pb.go
    │           │   │       ├── logs_service.pb.gw.go
    │           │   │       └── logs_service_grpc.pb.go
    │           │   ├── metrics/
    │           │   │   └── v1/
    │           │   │       ├── metrics_service.pb.go
    │           │   │       ├── metrics_service.pb.gw.go
    │           │   │       └── metrics_service_grpc.pb.go
    │           │   └── trace/
    │           │       └── v1/
    │           │           ├── trace_service.pb.go
    │           │           ├── trace_service.pb.gw.go
    │           │           └── trace_service_grpc.pb.go
    │           ├── common/
    │           │   └── v1/
    │           │       └── common.pb.go
    │           ├── logs/
    │           │   └── v1/
    │           │       └── logs.pb.go
    │           ├── metrics/
    │           │   └── v1/
    │           │       └── metrics.pb.go
    │           ├── resource/
    │           │   └── v1/
    │           │       └── resource.pb.go
    │           └── trace/
    │               └── v1/
    │                   └── trace.pb.go
    ├── go.yaml.in/
    │   └── yaml/
    │       ├── v2/
    │       │   ├── .travis.yml
    │       │   ├── LICENSE
    │       │   ├── LICENSE.libyaml
    │       │   ├── NOTICE
    │       │   ├── README.md
    │       │   ├── apic.go
    │       │   ├── decode.go
    │       │   ├── emitterc.go
    │       │   ├── encode.go
    │       │   ├── parserc.go
    │       │   ├── readerc.go
    │       │   ├── resolve.go
    │       │   ├── scannerc.go
    │       │   ├── sorter.go
    │       │   ├── writerc.go
    │       │   ├── yaml.go
    │       │   ├── yamlh.go
    │       │   └── yamlprivateh.go
    │       └── v3/
    │           ├── LICENSE
    │           ├── NOTICE
    │           ├── README.md
    │           ├── apic.go
    │           ├── decode.go
    │           ├── emitterc.go
    │           ├── encode.go
    │           ├── parserc.go
    │           ├── readerc.go
    │           ├── resolve.go
    │           ├── scannerc.go
    │           ├── sorter.go
    │           ├── writerc.go
    │           ├── yaml.go
    │           ├── yamlh.go
    │           └── yamlprivateh.go
    ├── golang.org/
    │   └── x/
    │       ├── crypto/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── argon2/
    │       │   │   ├── argon2.go
    │       │   │   ├── blake2b.go
    │       │   │   ├── blamka_amd64.go
    │       │   │   ├── blamka_amd64.s
    │       │   │   ├── blamka_generic.go
    │       │   │   └── blamka_ref.go
    │       │   ├── blake2b/
    │       │   │   ├── blake2b.go
    │       │   │   ├── blake2bAVX2_amd64.go
    │       │   │   ├── blake2bAVX2_amd64.s
    │       │   │   ├── blake2b_amd64.s
    │       │   │   ├── blake2b_generic.go
    │       │   │   ├── blake2b_ref.go
    │       │   │   ├── blake2x.go
    │       │   │   ├── go125.go
    │       │   │   └── register.go
    │       │   ├── cryptobyte/
    │       │   │   ├── asn1/
    │       │   │   │   └── asn1.go
    │       │   │   ├── asn1.go
    │       │   │   ├── builder.go
    │       │   │   └── string.go
    │       │   └── curve25519/
    │       │       └── curve25519.go
    │       ├── net/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── bpf/
    │       │   │   ├── asm.go
    │       │   │   ├── constants.go
    │       │   │   ├── doc.go
    │       │   │   ├── instructions.go
    │       │   │   ├── setter.go
    │       │   │   ├── vm.go
    │       │   │   └── vm_instructions.go
    │       │   ├── context/
    │       │   │   └── context.go
    │       │   ├── html/
    │       │   │   ├── atom/
    │       │   │   │   ├── atom.go
    │       │   │   │   └── table.go
    │       │   │   ├── const.go
    │       │   │   ├── doc.go
    │       │   │   ├── doctype.go
    │       │   │   ├── entity.go
    │       │   │   ├── escape.go
    │       │   │   ├── foreign.go
    │       │   │   ├── iter.go
    │       │   │   ├── node.go
    │       │   │   ├── nodetype_string.go
    │       │   │   ├── parse.go
    │       │   │   ├── render.go
    │       │   │   └── token.go
    │       │   ├── http/
    │       │   │   ├── httpguts/
    │       │   │   │   ├── guts.go
    │       │   │   │   └── httplex.go
    │       │   │   └── httpproxy/
    │       │   │       └── proxy.go
    │       │   ├── http2/
    │       │   │   ├── .gitignore
    │       │   │   ├── ascii.go
    │       │   │   ├── ciphers.go
    │       │   │   ├── client_conn_pool.go
    │       │   │   ├── client_priority_go126.go
    │       │   │   ├── client_priority_go127.go
    │       │   │   ├── config.go
    │       │   │   ├── config_go125.go
    │       │   │   ├── config_go126.go
    │       │   │   ├── databuffer.go
    │       │   │   ├── errors.go
    │       │   │   ├── flow.go
    │       │   │   ├── frame.go
    │       │   │   ├── gotrack.go
    │       │   │   ├── hpack/
    │       │   │   │   ├── encode.go
    │       │   │   │   ├── hpack.go
    │       │   │   │   ├── huffman.go
    │       │   │   │   ├── static_table.go
    │       │   │   │   └── tables.go
    │       │   │   ├── http2.go
    │       │   │   ├── pipe.go
    │       │   │   ├── server.go
    │       │   │   ├── transport.go
    │       │   │   ├── unencrypted.go
    │       │   │   ├── write.go
    │       │   │   ├── writesched.go
    │       │   │   ├── writesched_priority_rfc7540.go
    │       │   │   ├── writesched_priority_rfc9218.go
    │       │   │   ├── writesched_random.go
    │       │   │   └── writesched_roundrobin.go
    │       │   ├── idna/
    │       │   │   ├── go118.go
    │       │   │   ├── idna10.0.0.go
    │       │   │   ├── idna9.0.0.go
    │       │   │   ├── pre_go118.go
    │       │   │   ├── punycode.go
    │       │   │   ├── tables10.0.0.go
    │       │   │   ├── tables11.0.0.go
    │       │   │   ├── tables12.0.0.go
    │       │   │   ├── tables13.0.0.go
    │       │   │   ├── tables15.0.0.go
    │       │   │   ├── tables9.0.0.go
    │       │   │   ├── trie.go
    │       │   │   ├── trie12.0.0.go
    │       │   │   ├── trie13.0.0.go
    │       │   │   └── trieval.go
    │       │   ├── internal/
    │       │   │   ├── httpcommon/
    │       │   │   │   ├── ascii.go
    │       │   │   │   ├── headermap.go
    │       │   │   │   └── request.go
    │       │   │   ├── httpsfv/
    │       │   │   │   └── httpsfv.go
    │       │   │   ├── iana/
    │       │   │   │   └── const.go
    │       │   │   ├── socket/
    │       │   │   │   ├── cmsghdr.go
    │       │   │   │   ├── cmsghdr_bsd.go
    │       │   │   │   ├── cmsghdr_linux_32bit.go
    │       │   │   │   ├── cmsghdr_linux_64bit.go
    │       │   │   │   ├── cmsghdr_solaris_64bit.go
    │       │   │   │   ├── cmsghdr_stub.go
    │       │   │   │   ├── cmsghdr_unix.go
    │       │   │   │   ├── cmsghdr_zos_s390x.go
    │       │   │   │   ├── complete_dontwait.go
    │       │   │   │   ├── complete_nodontwait.go
    │       │   │   │   ├── empty.s
    │       │   │   │   ├── error_unix.go
    │       │   │   │   ├── error_windows.go
    │       │   │   │   ├── iovec_32bit.go
    │       │   │   │   ├── iovec_64bit.go
    │       │   │   │   ├── iovec_solaris_64bit.go
    │       │   │   │   ├── iovec_stub.go
    │       │   │   │   ├── mmsghdr_stub.go
    │       │   │   │   ├── mmsghdr_unix.go
    │       │   │   │   ├── msghdr_bsd.go
    │       │   │   │   ├── msghdr_bsdvar.go
    │       │   │   │   ├── msghdr_linux.go
    │       │   │   │   ├── msghdr_linux_32bit.go
    │       │   │   │   ├── msghdr_linux_64bit.go
    │       │   │   │   ├── msghdr_openbsd.go
    │       │   │   │   ├── msghdr_solaris_64bit.go
    │       │   │   │   ├── msghdr_stub.go
    │       │   │   │   ├── msghdr_zos_s390x.go
    │       │   │   │   ├── norace.go
    │       │   │   │   ├── race.go
    │       │   │   │   ├── rawconn.go
    │       │   │   │   ├── rawconn_mmsg.go
    │       │   │   │   ├── rawconn_msg.go
    │       │   │   │   ├── rawconn_nommsg.go
    │       │   │   │   ├── rawconn_nomsg.go
    │       │   │   │   ├── socket.go
    │       │   │   │   ├── sys_bsd.go
    │       │   │   │   ├── sys_const_unix.go
    │       │   │   │   ├── sys_linux.go
    │       │   │   │   ├── sys_linux_386.go
    │       │   │   │   ├── sys_linux_386.s
    │       │   │   │   ├── sys_linux_amd64.go
    │       │   │   │   ├── sys_linux_arm.go
    │       │   │   │   ├── sys_linux_arm64.go
    │       │   │   │   ├── sys_linux_loong64.go
    │       │   │   │   ├── sys_linux_mips.go
    │       │   │   │   ├── sys_linux_mips64.go
    │       │   │   │   ├── sys_linux_mips64le.go
    │       │   │   │   ├── sys_linux_mipsle.go
    │       │   │   │   ├── sys_linux_ppc.go
    │       │   │   │   ├── sys_linux_ppc64.go
    │       │   │   │   ├── sys_linux_ppc64le.go
    │       │   │   │   ├── sys_linux_riscv64.go
    │       │   │   │   ├── sys_linux_s390x.go
    │       │   │   │   ├── sys_linux_s390x.s
    │       │   │   │   ├── sys_netbsd.go
    │       │   │   │   ├── sys_posix.go
    │       │   │   │   ├── sys_stub.go
    │       │   │   │   ├── sys_unix.go
    │       │   │   │   ├── sys_windows.go
    │       │   │   │   ├── sys_zos_s390x.go
    │       │   │   │   ├── sys_zos_s390x.s
    │       │   │   │   ├── zsys_aix_ppc64.go
    │       │   │   │   ├── zsys_darwin_amd64.go
    │       │   │   │   ├── zsys_darwin_arm64.go
    │       │   │   │   ├── zsys_dragonfly_amd64.go
    │       │   │   │   ├── zsys_freebsd_386.go
    │       │   │   │   ├── zsys_freebsd_amd64.go
    │       │   │   │   ├── zsys_freebsd_arm.go
    │       │   │   │   ├── zsys_freebsd_arm64.go
    │       │   │   │   ├── zsys_freebsd_riscv64.go
    │       │   │   │   ├── zsys_linux_386.go
    │       │   │   │   ├── zsys_linux_amd64.go
    │       │   │   │   ├── zsys_linux_arm.go
    │       │   │   │   ├── zsys_linux_arm64.go
    │       │   │   │   ├── zsys_linux_loong64.go
    │       │   │   │   ├── zsys_linux_mips.go
    │       │   │   │   ├── zsys_linux_mips64.go
    │       │   │   │   ├── zsys_linux_mips64le.go
    │       │   │   │   ├── zsys_linux_mipsle.go
    │       │   │   │   ├── zsys_linux_ppc.go
    │       │   │   │   ├── zsys_linux_ppc64.go
    │       │   │   │   ├── zsys_linux_ppc64le.go
    │       │   │   │   ├── zsys_linux_riscv64.go
    │       │   │   │   ├── zsys_linux_s390x.go
    │       │   │   │   ├── zsys_netbsd_386.go
    │       │   │   │   ├── zsys_netbsd_amd64.go
    │       │   │   │   ├── zsys_netbsd_arm.go
    │       │   │   │   ├── zsys_netbsd_arm64.go
    │       │   │   │   ├── zsys_openbsd_386.go
    │       │   │   │   ├── zsys_openbsd_amd64.go
    │       │   │   │   ├── zsys_openbsd_arm.go
    │       │   │   │   ├── zsys_openbsd_arm64.go
    │       │   │   │   ├── zsys_openbsd_mips64.go
    │       │   │   │   ├── zsys_openbsd_ppc64.go
    │       │   │   │   ├── zsys_openbsd_riscv64.go
    │       │   │   │   ├── zsys_solaris_amd64.go
    │       │   │   │   └── zsys_zos_s390x.go
    │       │   │   ├── socks/
    │       │   │   │   ├── client.go
    │       │   │   │   └── socks.go
    │       │   │   └── timeseries/
    │       │   │       └── timeseries.go
    │       │   ├── ipv4/
    │       │   │   ├── batch.go
    │       │   │   ├── control.go
    │       │   │   ├── control_bsd.go
    │       │   │   ├── control_pktinfo.go
    │       │   │   ├── control_stub.go
    │       │   │   ├── control_unix.go
    │       │   │   ├── control_windows.go
    │       │   │   ├── control_zos.go
    │       │   │   ├── dgramopt.go
    │       │   │   ├── doc.go
    │       │   │   ├── endpoint.go
    │       │   │   ├── genericopt.go
    │       │   │   ├── header.go
    │       │   │   ├── helper.go
    │       │   │   ├── iana.go
    │       │   │   ├── icmp.go
    │       │   │   ├── icmp_linux.go
    │       │   │   ├── icmp_stub.go
    │       │   │   ├── packet.go
    │       │   │   ├── payload.go
    │       │   │   ├── payload_cmsg.go
    │       │   │   ├── payload_nocmsg.go
    │       │   │   ├── sockopt.go
    │       │   │   ├── sockopt_posix.go
    │       │   │   ├── sockopt_stub.go
    │       │   │   ├── sys_aix.go
    │       │   │   ├── sys_asmreq.go
    │       │   │   ├── sys_asmreq_stub.go
    │       │   │   ├── sys_asmreqn.go
    │       │   │   ├── sys_asmreqn_stub.go
    │       │   │   ├── sys_bpf.go
    │       │   │   ├── sys_bpf_stub.go
    │       │   │   ├── sys_bsd.go
    │       │   │   ├── sys_darwin.go
    │       │   │   ├── sys_dragonfly.go
    │       │   │   ├── sys_freebsd.go
    │       │   │   ├── sys_linux.go
    │       │   │   ├── sys_solaris.go
    │       │   │   ├── sys_ssmreq.go
    │       │   │   ├── sys_ssmreq_stub.go
    │       │   │   ├── sys_stub.go
    │       │   │   ├── sys_windows.go
    │       │   │   ├── sys_zos.go
    │       │   │   ├── zsys_aix_ppc64.go
    │       │   │   ├── zsys_darwin.go
    │       │   │   ├── zsys_dragonfly.go
    │       │   │   ├── zsys_freebsd_386.go
    │       │   │   ├── zsys_freebsd_amd64.go
    │       │   │   ├── zsys_freebsd_arm.go
    │       │   │   ├── zsys_freebsd_arm64.go
    │       │   │   ├── zsys_freebsd_riscv64.go
    │       │   │   ├── zsys_linux_386.go
    │       │   │   ├── zsys_linux_amd64.go
    │       │   │   ├── zsys_linux_arm.go
    │       │   │   ├── zsys_linux_arm64.go
    │       │   │   ├── zsys_linux_loong64.go
    │       │   │   ├── zsys_linux_mips.go
    │       │   │   ├── zsys_linux_mips64.go
    │       │   │   ├── zsys_linux_mips64le.go
    │       │   │   ├── zsys_linux_mipsle.go
    │       │   │   ├── zsys_linux_ppc.go
    │       │   │   ├── zsys_linux_ppc64.go
    │       │   │   ├── zsys_linux_ppc64le.go
    │       │   │   ├── zsys_linux_riscv64.go
    │       │   │   ├── zsys_linux_s390x.go
    │       │   │   ├── zsys_netbsd.go
    │       │   │   ├── zsys_openbsd.go
    │       │   │   ├── zsys_solaris.go
    │       │   │   └── zsys_zos_s390x.go
    │       │   ├── ipv6/
    │       │   │   ├── batch.go
    │       │   │   ├── control.go
    │       │   │   ├── control_rfc2292_unix.go
    │       │   │   ├── control_rfc3542_unix.go
    │       │   │   ├── control_stub.go
    │       │   │   ├── control_unix.go
    │       │   │   ├── control_windows.go
    │       │   │   ├── dgramopt.go
    │       │   │   ├── doc.go
    │       │   │   ├── endpoint.go
    │       │   │   ├── genericopt.go
    │       │   │   ├── header.go
    │       │   │   ├── helper.go
    │       │   │   ├── iana.go
    │       │   │   ├── icmp.go
    │       │   │   ├── icmp_bsd.go
    │       │   │   ├── icmp_linux.go
    │       │   │   ├── icmp_solaris.go
    │       │   │   ├── icmp_stub.go
    │       │   │   ├── icmp_windows.go
    │       │   │   ├── icmp_zos.go
    │       │   │   ├── payload.go
    │       │   │   ├── payload_cmsg.go
    │       │   │   ├── payload_nocmsg.go
    │       │   │   ├── sockopt.go
    │       │   │   ├── sockopt_posix.go
    │       │   │   ├── sockopt_stub.go
    │       │   │   ├── sys_aix.go
    │       │   │   ├── sys_asmreq.go
    │       │   │   ├── sys_asmreq_stub.go
    │       │   │   ├── sys_bpf.go
    │       │   │   ├── sys_bpf_stub.go
    │       │   │   ├── sys_bsd.go
    │       │   │   ├── sys_darwin.go
    │       │   │   ├── sys_freebsd.go
    │       │   │   ├── sys_linux.go
    │       │   │   ├── sys_solaris.go
    │       │   │   ├── sys_ssmreq.go
    │       │   │   ├── sys_ssmreq_stub.go
    │       │   │   ├── sys_stub.go
    │       │   │   ├── sys_windows.go
    │       │   │   ├── sys_zos.go
    │       │   │   ├── zsys_aix_ppc64.go
    │       │   │   ├── zsys_darwin.go
    │       │   │   ├── zsys_dragonfly.go
    │       │   │   ├── zsys_freebsd_386.go
    │       │   │   ├── zsys_freebsd_amd64.go
    │       │   │   ├── zsys_freebsd_arm.go
    │       │   │   ├── zsys_freebsd_arm64.go
    │       │   │   ├── zsys_freebsd_riscv64.go
    │       │   │   ├── zsys_linux_386.go
    │       │   │   ├── zsys_linux_amd64.go
    │       │   │   ├── zsys_linux_arm.go
    │       │   │   ├── zsys_linux_arm64.go
    │       │   │   ├── zsys_linux_loong64.go
    │       │   │   ├── zsys_linux_mips.go
    │       │   │   ├── zsys_linux_mips64.go
    │       │   │   ├── zsys_linux_mips64le.go
    │       │   │   ├── zsys_linux_mipsle.go
    │       │   │   ├── zsys_linux_ppc.go
    │       │   │   ├── zsys_linux_ppc64.go
    │       │   │   ├── zsys_linux_ppc64le.go
    │       │   │   ├── zsys_linux_riscv64.go
    │       │   │   ├── zsys_linux_s390x.go
    │       │   │   ├── zsys_netbsd.go
    │       │   │   ├── zsys_openbsd.go
    │       │   │   ├── zsys_solaris.go
    │       │   │   └── zsys_zos_s390x.go
    │       │   ├── proxy/
    │       │   │   ├── dial.go
    │       │   │   ├── direct.go
    │       │   │   ├── per_host.go
    │       │   │   ├── proxy.go
    │       │   │   └── socks5.go
    │       │   ├── publicsuffix/
    │       │   │   ├── data/
    │       │   │   │   ├── children
    │       │   │   │   ├── nodes
    │       │   │   │   └── text
    │       │   │   ├── list.go
    │       │   │   └── table.go
    │       │   ├── trace/
    │       │   │   ├── events.go
    │       │   │   ├── histogram.go
    │       │   │   └── trace.go
    │       │   └── websocket/
    │       │       ├── client.go
    │       │       ├── dial.go
    │       │       ├── hybi.go
    │       │       ├── server.go
    │       │       └── websocket.go
    │       ├── oauth2/
    │       │   ├── .travis.yml
    │       │   ├── CONTRIBUTING.md
    │       │   ├── LICENSE
    │       │   ├── README.md
    │       │   ├── clientcredentials/
    │       │   │   └── clientcredentials.go
    │       │   ├── deviceauth.go
    │       │   ├── internal/
    │       │   │   ├── doc.go
    │       │   │   ├── oauth2.go
    │       │   │   ├── token.go
    │       │   │   └── transport.go
    │       │   ├── oauth2.go
    │       │   ├── pkce.go
    │       │   ├── token.go
    │       │   └── transport.go
    │       ├── sys/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── cpu/
    │       │   │   ├── asm_aix_ppc64.s
    │       │   │   ├── asm_darwin_arm64_gc.s
    │       │   │   ├── asm_darwin_x86_gc.s
    │       │   │   ├── byteorder.go
    │       │   │   ├── cpu.go
    │       │   │   ├── cpu_aix.go
    │       │   │   ├── cpu_arm.go
    │       │   │   ├── cpu_arm64.go
    │       │   │   ├── cpu_arm64.s
    │       │   │   ├── cpu_darwin_arm64.go
    │       │   │   ├── cpu_darwin_arm64_other.go
    │       │   │   ├── cpu_darwin_x86.go
    │       │   │   ├── cpu_gc_arm64.go
    │       │   │   ├── cpu_gc_s390x.go
    │       │   │   ├── cpu_gc_x86.go
    │       │   │   ├── cpu_gc_x86.s
    │       │   │   ├── cpu_gccgo_arm64.go
    │       │   │   ├── cpu_gccgo_s390x.go
    │       │   │   ├── cpu_gccgo_x86.c
    │       │   │   ├── cpu_gccgo_x86.go
    │       │   │   ├── cpu_linux.go
    │       │   │   ├── cpu_linux_arm.go
    │       │   │   ├── cpu_linux_arm64.go
    │       │   │   ├── cpu_linux_loong64.go
    │       │   │   ├── cpu_linux_mips64x.go
    │       │   │   ├── cpu_linux_noinit.go
    │       │   │   ├── cpu_linux_ppc64x.go
    │       │   │   ├── cpu_linux_riscv64.go
    │       │   │   ├── cpu_linux_s390x.go
    │       │   │   ├── cpu_loong64.go
    │       │   │   ├── cpu_loong64.s
    │       │   │   ├── cpu_mips64x.go
    │       │   │   ├── cpu_mipsx.go
    │       │   │   ├── cpu_netbsd_arm64.go
    │       │   │   ├── cpu_openbsd_arm64.go
    │       │   │   ├── cpu_openbsd_arm64.s
    │       │   │   ├── cpu_other_arm.go
    │       │   │   ├── cpu_other_arm64.go
    │       │   │   ├── cpu_other_mips64x.go
    │       │   │   ├── cpu_other_ppc64x.go
    │       │   │   ├── cpu_other_riscv64.go
    │       │   │   ├── cpu_other_x86.go
    │       │   │   ├── cpu_ppc64x.go
    │       │   │   ├── cpu_riscv64.go
    │       │   │   ├── cpu_s390x.go
    │       │   │   ├── cpu_s390x.s
    │       │   │   ├── cpu_wasm.go
    │       │   │   ├── cpu_x86.go
    │       │   │   ├── cpu_zos.go
    │       │   │   ├── cpu_zos_s390x.go
    │       │   │   ├── endian_big.go
    │       │   │   ├── endian_little.go
    │       │   │   ├── hwcap_linux.go
    │       │   │   ├── parse.go
    │       │   │   ├── proc_cpuinfo_linux.go
    │       │   │   ├── runtime_auxv.go
    │       │   │   ├── runtime_auxv_go121.go
    │       │   │   ├── syscall_aix_gccgo.go
    │       │   │   ├── syscall_aix_ppc64_gc.go
    │       │   │   ├── syscall_darwin_arm64_gc.go
    │       │   │   └── syscall_darwin_x86_gc.go
    │       │   ├── plan9/
    │       │   │   ├── asm.s
    │       │   │   ├── asm_plan9_386.s
    │       │   │   ├── asm_plan9_amd64.s
    │       │   │   ├── asm_plan9_arm.s
    │       │   │   ├── const_plan9.go
    │       │   │   ├── dir_plan9.go
    │       │   │   ├── env_plan9.go
    │       │   │   ├── errors_plan9.go
    │       │   │   ├── mkall.sh
    │       │   │   ├── mkerrors.sh
    │       │   │   ├── mksysnum_plan9.sh
    │       │   │   ├── pwd_plan9.go
    │       │   │   ├── race.go
    │       │   │   ├── race0.go
    │       │   │   ├── str.go
    │       │   │   ├── syscall.go
    │       │   │   ├── syscall_plan9.go
    │       │   │   ├── zsyscall_plan9_386.go
    │       │   │   ├── zsyscall_plan9_amd64.go
    │       │   │   ├── zsyscall_plan9_arm.go
    │       │   │   └── zsysnum_plan9.go
    │       │   ├── unix/
    │       │   │   ├── .gitignore
    │       │   │   ├── README.md
    │       │   │   ├── affinity_linux.go
    │       │   │   ├── aliases.go
    │       │   │   ├── asm_aix_ppc64.s
    │       │   │   ├── asm_bsd_386.s
    │       │   │   ├── asm_bsd_amd64.s
    │       │   │   ├── asm_bsd_arm.s
    │       │   │   ├── asm_bsd_arm64.s
    │       │   │   ├── asm_bsd_ppc64.s
    │       │   │   ├── asm_bsd_riscv64.s
    │       │   │   ├── asm_linux_386.s
    │       │   │   ├── asm_linux_amd64.s
    │       │   │   ├── asm_linux_arm.s
    │       │   │   ├── asm_linux_arm64.s
    │       │   │   ├── asm_linux_loong64.s
    │       │   │   ├── asm_linux_mips64x.s
    │       │   │   ├── asm_linux_mipsx.s
    │       │   │   ├── asm_linux_ppc64x.s
    │       │   │   ├── asm_linux_riscv64.s
    │       │   │   ├── asm_linux_s390x.s
    │       │   │   ├── asm_openbsd_mips64.s
    │       │   │   ├── asm_solaris_amd64.s
    │       │   │   ├── asm_zos_s390x.s
    │       │   │   ├── auxv.go
    │       │   │   ├── auxv_unsupported.go
    │       │   │   ├── bluetooth_linux.go
    │       │   │   ├── bpxsvc_zos.go
    │       │   │   ├── bpxsvc_zos.s
    │       │   │   ├── cap_freebsd.go
    │       │   │   ├── constants.go
    │       │   │   ├── dev_aix_ppc.go
    │       │   │   ├── dev_aix_ppc64.go
    │       │   │   ├── dev_darwin.go
    │       │   │   ├── dev_dragonfly.go
    │       │   │   ├── dev_freebsd.go
    │       │   │   ├── dev_linux.go
    │       │   │   ├── dev_netbsd.go
    │       │   │   ├── dev_openbsd.go
    │       │   │   ├── dev_zos.go
    │       │   │   ├── dirent.go
    │       │   │   ├── endian_big.go
    │       │   │   ├── endian_little.go
    │       │   │   ├── env_unix.go
    │       │   │   ├── fcntl.go
    │       │   │   ├── fcntl_darwin.go
    │       │   │   ├── fcntl_linux_32bit.go
    │       │   │   ├── fdset.go
    │       │   │   ├── gccgo.go
    │       │   │   ├── gccgo_c.c
    │       │   │   ├── gccgo_linux_amd64.go
    │       │   │   ├── ifreq_linux.go
    │       │   │   ├── ioctl_linux.go
    │       │   │   ├── ioctl_signed.go
    │       │   │   ├── ioctl_unsigned.go
    │       │   │   ├── ioctl_zos.go
    │       │   │   ├── mkall.sh
    │       │   │   ├── mkerrors.sh
    │       │   │   ├── mmap_nomremap.go
    │       │   │   ├── mremap.go
    │       │   │   ├── pagesize_unix.go
    │       │   │   ├── pledge_openbsd.go
    │       │   │   ├── ptrace_darwin.go
    │       │   │   ├── ptrace_ios.go
    │       │   │   ├── race.go
    │       │   │   ├── race0.go
    │       │   │   ├── readdirent_getdents.go
    │       │   │   ├── readdirent_getdirentries.go
    │       │   │   ├── sockcmsg_dragonfly.go
    │       │   │   ├── sockcmsg_linux.go
    │       │   │   ├── sockcmsg_unix.go
    │       │   │   ├── sockcmsg_unix_other.go
    │       │   │   ├── sockcmsg_zos.go
    │       │   │   ├── symaddr_zos_s390x.s
    │       │   │   ├── syscall.go
    │       │   │   ├── syscall_aix.go
    │       │   │   ├── syscall_aix_ppc.go
    │       │   │   ├── syscall_aix_ppc64.go
    │       │   │   ├── syscall_bsd.go
    │       │   │   ├── syscall_darwin.go
    │       │   │   ├── syscall_darwin_amd64.go
    │       │   │   ├── syscall_darwin_arm64.go
    │       │   │   ├── syscall_darwin_libSystem.go
    │       │   │   ├── syscall_dragonfly.go
    │       │   │   ├── syscall_dragonfly_amd64.go
    │       │   │   ├── syscall_freebsd.go
    │       │   │   ├── syscall_freebsd_386.go
    │       │   │   ├── syscall_freebsd_amd64.go
    │       │   │   ├── syscall_freebsd_arm.go
    │       │   │   ├── syscall_freebsd_arm64.go
    │       │   │   ├── syscall_freebsd_riscv64.go
    │       │   │   ├── syscall_hurd.go
    │       │   │   ├── syscall_hurd_386.go
    │       │   │   ├── syscall_illumos.go
    │       │   │   ├── syscall_linux.go
    │       │   │   ├── syscall_linux_386.go
    │       │   │   ├── syscall_linux_alarm.go
    │       │   │   ├── syscall_linux_amd64.go
    │       │   │   ├── syscall_linux_amd64_gc.go
    │       │   │   ├── syscall_linux_arm.go
    │       │   │   ├── syscall_linux_arm64.go
    │       │   │   ├── syscall_linux_gc.go
    │       │   │   ├── syscall_linux_gc_386.go
    │       │   │   ├── syscall_linux_gc_arm.go
    │       │   │   ├── syscall_linux_gccgo_386.go
    │       │   │   ├── syscall_linux_gccgo_arm.go
    │       │   │   ├── syscall_linux_loong64.go
    │       │   │   ├── syscall_linux_mips64x.go
    │       │   │   ├── syscall_linux_mipsx.go
    │       │   │   ├── syscall_linux_ppc.go
    │       │   │   ├── syscall_linux_ppc64x.go
    │       │   │   ├── syscall_linux_riscv64.go
    │       │   │   ├── syscall_linux_s390x.go
    │       │   │   ├── syscall_linux_sparc64.go
    │       │   │   ├── syscall_netbsd.go
    │       │   │   ├── syscall_netbsd_386.go
    │       │   │   ├── syscall_netbsd_amd64.go
    │       │   │   ├── syscall_netbsd_arm.go
    │       │   │   ├── syscall_netbsd_arm64.go
    │       │   │   ├── syscall_openbsd.go
    │       │   │   ├── syscall_openbsd_386.go
    │       │   │   ├── syscall_openbsd_amd64.go
    │       │   │   ├── syscall_openbsd_arm.go
    │       │   │   ├── syscall_openbsd_arm64.go
    │       │   │   ├── syscall_openbsd_libc.go
    │       │   │   ├── syscall_openbsd_mips64.go
    │       │   │   ├── syscall_openbsd_ppc64.go
    │       │   │   ├── syscall_openbsd_riscv64.go
    │       │   │   ├── syscall_solaris.go
    │       │   │   ├── syscall_solaris_amd64.go
    │       │   │   ├── syscall_unix.go
    │       │   │   ├── syscall_unix_gc.go
    │       │   │   ├── syscall_unix_gc_ppc64x.go
    │       │   │   ├── syscall_zos_s390x.go
    │       │   │   ├── sysvshm_linux.go
    │       │   │   ├── sysvshm_unix.go
    │       │   │   ├── sysvshm_unix_other.go
    │       │   │   ├── timestruct.go
    │       │   │   ├── unveil_openbsd.go
    │       │   │   ├── vgetrandom_linux.go
    │       │   │   ├── vgetrandom_unsupported.go
    │       │   │   ├── xattr_bsd.go
    │       │   │   ├── zerrors_aix_ppc.go
    │       │   │   ├── zerrors_aix_ppc64.go
    │       │   │   ├── zerrors_darwin_amd64.go
    │       │   │   ├── zerrors_darwin_arm64.go
    │       │   │   ├── zerrors_dragonfly_amd64.go
    │       │   │   ├── zerrors_freebsd_386.go
    │       │   │   ├── zerrors_freebsd_amd64.go
    │       │   │   ├── zerrors_freebsd_arm.go
    │       │   │   ├── zerrors_freebsd_arm64.go
    │       │   │   ├── zerrors_freebsd_riscv64.go
    │       │   │   ├── zerrors_linux.go
    │       │   │   ├── zerrors_linux_386.go
    │       │   │   ├── zerrors_linux_amd64.go
    │       │   │   ├── zerrors_linux_arm.go
    │       │   │   ├── zerrors_linux_arm64.go
    │       │   │   ├── zerrors_linux_loong64.go
    │       │   │   ├── zerrors_linux_mips.go
    │       │   │   ├── zerrors_linux_mips64.go
    │       │   │   ├── zerrors_linux_mips64le.go
    │       │   │   ├── zerrors_linux_mipsle.go
    │       │   │   ├── zerrors_linux_ppc.go
    │       │   │   ├── zerrors_linux_ppc64.go
    │       │   │   ├── zerrors_linux_ppc64le.go
    │       │   │   ├── zerrors_linux_riscv64.go
    │       │   │   ├── zerrors_linux_s390x.go
    │       │   │   ├── zerrors_linux_sparc64.go
    │       │   │   ├── zerrors_netbsd_386.go
    │       │   │   ├── zerrors_netbsd_amd64.go
    │       │   │   ├── zerrors_netbsd_arm.go
    │       │   │   ├── zerrors_netbsd_arm64.go
    │       │   │   ├── zerrors_openbsd_386.go
    │       │   │   ├── zerrors_openbsd_amd64.go
    │       │   │   ├── zerrors_openbsd_arm.go
    │       │   │   ├── zerrors_openbsd_arm64.go
    │       │   │   ├── zerrors_openbsd_mips64.go
    │       │   │   ├── zerrors_openbsd_ppc64.go
    │       │   │   ├── zerrors_openbsd_riscv64.go
    │       │   │   ├── zerrors_solaris_amd64.go
    │       │   │   ├── zerrors_zos_s390x.go
    │       │   │   ├── zptrace_armnn_linux.go
    │       │   │   ├── zptrace_linux_arm64.go
    │       │   │   ├── zptrace_mipsnn_linux.go
    │       │   │   ├── zptrace_mipsnnle_linux.go
    │       │   │   ├── zptrace_x86_linux.go
    │       │   │   ├── zsymaddr_zos_s390x.s
    │       │   │   ├── zsyscall_aix_ppc.go
    │       │   │   ├── zsyscall_aix_ppc64.go
    │       │   │   ├── zsyscall_aix_ppc64_gc.go
    │       │   │   ├── zsyscall_aix_ppc64_gccgo.go
    │       │   │   ├── zsyscall_darwin_amd64.go
    │       │   │   ├── zsyscall_darwin_amd64.s
    │       │   │   ├── zsyscall_darwin_arm64.go
    │       │   │   ├── zsyscall_darwin_arm64.s
    │       │   │   ├── zsyscall_dragonfly_amd64.go
    │       │   │   ├── zsyscall_freebsd_386.go
    │       │   │   ├── zsyscall_freebsd_amd64.go
    │       │   │   ├── zsyscall_freebsd_arm.go
    │       │   │   ├── zsyscall_freebsd_arm64.go
    │       │   │   ├── zsyscall_freebsd_riscv64.go
    │       │   │   ├── zsyscall_illumos_amd64.go
    │       │   │   ├── zsyscall_linux.go
    │       │   │   ├── zsyscall_linux_386.go
    │       │   │   ├── zsyscall_linux_amd64.go
    │       │   │   ├── zsyscall_linux_arm.go
    │       │   │   ├── zsyscall_linux_arm64.go
    │       │   │   ├── zsyscall_linux_loong64.go
    │       │   │   ├── zsyscall_linux_mips.go
    │       │   │   ├── zsyscall_linux_mips64.go
    │       │   │   ├── zsyscall_linux_mips64le.go
    │       │   │   ├── zsyscall_linux_mipsle.go
    │       │   │   ├── zsyscall_linux_ppc.go
    │       │   │   ├── zsyscall_linux_ppc64.go
    │       │   │   ├── zsyscall_linux_ppc64le.go
    │       │   │   ├── zsyscall_linux_riscv64.go
    │       │   │   ├── zsyscall_linux_s390x.go
    │       │   │   ├── zsyscall_linux_sparc64.go
    │       │   │   ├── zsyscall_netbsd_386.go
    │       │   │   ├── zsyscall_netbsd_amd64.go
    │       │   │   ├── zsyscall_netbsd_arm.go
    │       │   │   ├── zsyscall_netbsd_arm64.go
    │       │   │   ├── zsyscall_openbsd_386.go
    │       │   │   ├── zsyscall_openbsd_386.s
    │       │   │   ├── zsyscall_openbsd_amd64.go
    │       │   │   ├── zsyscall_openbsd_amd64.s
    │       │   │   ├── zsyscall_openbsd_arm.go
    │       │   │   ├── zsyscall_openbsd_arm.s
    │       │   │   ├── zsyscall_openbsd_arm64.go
    │       │   │   ├── zsyscall_openbsd_arm64.s
    │       │   │   ├── zsyscall_openbsd_mips64.go
    │       │   │   ├── zsyscall_openbsd_mips64.s
    │       │   │   ├── zsyscall_openbsd_ppc64.go
    │       │   │   ├── zsyscall_openbsd_ppc64.s
    │       │   │   ├── zsyscall_openbsd_riscv64.go
    │       │   │   ├── zsyscall_openbsd_riscv64.s
    │       │   │   ├── zsyscall_solaris_amd64.go
    │       │   │   ├── zsyscall_zos_s390x.go
    │       │   │   ├── zsysctl_openbsd_386.go
    │       │   │   ├── zsysctl_openbsd_amd64.go
    │       │   │   ├── zsysctl_openbsd_arm.go
    │       │   │   ├── zsysctl_openbsd_arm64.go
    │       │   │   ├── zsysctl_openbsd_mips64.go
    │       │   │   ├── zsysctl_openbsd_ppc64.go
    │       │   │   ├── zsysctl_openbsd_riscv64.go
    │       │   │   ├── zsysnum_darwin_amd64.go
    │       │   │   ├── zsysnum_darwin_arm64.go
    │       │   │   ├── zsysnum_dragonfly_amd64.go
    │       │   │   ├── zsysnum_freebsd_386.go
    │       │   │   ├── zsysnum_freebsd_amd64.go
    │       │   │   ├── zsysnum_freebsd_arm.go
    │       │   │   ├── zsysnum_freebsd_arm64.go
    │       │   │   ├── zsysnum_freebsd_riscv64.go
    │       │   │   ├── zsysnum_linux_386.go
    │       │   │   ├── zsysnum_linux_amd64.go
    │       │   │   ├── zsysnum_linux_arm.go
    │       │   │   ├── zsysnum_linux_arm64.go
    │       │   │   ├── zsysnum_linux_loong64.go
    │       │   │   ├── zsysnum_linux_mips.go
    │       │   │   ├── zsysnum_linux_mips64.go
    │       │   │   ├── zsysnum_linux_mips64le.go
    │       │   │   ├── zsysnum_linux_mipsle.go
    │       │   │   ├── zsysnum_linux_ppc.go
    │       │   │   ├── zsysnum_linux_ppc64.go
    │       │   │   ├── zsysnum_linux_ppc64le.go
    │       │   │   ├── zsysnum_linux_riscv64.go
    │       │   │   ├── zsysnum_linux_s390x.go
    │       │   │   ├── zsysnum_linux_sparc64.go
    │       │   │   ├── zsysnum_netbsd_386.go
    │       │   │   ├── zsysnum_netbsd_amd64.go
    │       │   │   ├── zsysnum_netbsd_arm.go
    │       │   │   ├── zsysnum_netbsd_arm64.go
    │       │   │   ├── zsysnum_openbsd_386.go
    │       │   │   ├── zsysnum_openbsd_amd64.go
    │       │   │   ├── zsysnum_openbsd_arm.go
    │       │   │   ├── zsysnum_openbsd_arm64.go
    │       │   │   ├── zsysnum_openbsd_mips64.go
    │       │   │   ├── zsysnum_openbsd_ppc64.go
    │       │   │   ├── zsysnum_openbsd_riscv64.go
    │       │   │   ├── zsysnum_zos_s390x.go
    │       │   │   ├── ztypes_aix_ppc.go
    │       │   │   ├── ztypes_aix_ppc64.go
    │       │   │   ├── ztypes_darwin_amd64.go
    │       │   │   ├── ztypes_darwin_arm64.go
    │       │   │   ├── ztypes_dragonfly_amd64.go
    │       │   │   ├── ztypes_freebsd_386.go
    │       │   │   ├── ztypes_freebsd_amd64.go
    │       │   │   ├── ztypes_freebsd_arm.go
    │       │   │   ├── ztypes_freebsd_arm64.go
    │       │   │   ├── ztypes_freebsd_riscv64.go
    │       │   │   ├── ztypes_linux.go
    │       │   │   ├── ztypes_linux_386.go
    │       │   │   ├── ztypes_linux_amd64.go
    │       │   │   ├── ztypes_linux_arm.go
    │       │   │   ├── ztypes_linux_arm64.go
    │       │   │   ├── ztypes_linux_loong64.go
    │       │   │   ├── ztypes_linux_mips.go
    │       │   │   ├── ztypes_linux_mips64.go
    │       │   │   ├── ztypes_linux_mips64le.go
    │       │   │   ├── ztypes_linux_mipsle.go
    │       │   │   ├── ztypes_linux_ppc.go
    │       │   │   ├── ztypes_linux_ppc64.go
    │       │   │   ├── ztypes_linux_ppc64le.go
    │       │   │   ├── ztypes_linux_riscv64.go
    │       │   │   ├── ztypes_linux_s390x.go
    │       │   │   ├── ztypes_linux_sparc64.go
    │       │   │   ├── ztypes_netbsd_386.go
    │       │   │   ├── ztypes_netbsd_amd64.go
    │       │   │   ├── ztypes_netbsd_arm.go
    │       │   │   ├── ztypes_netbsd_arm64.go
    │       │   │   ├── ztypes_openbsd_386.go
    │       │   │   ├── ztypes_openbsd_amd64.go
    │       │   │   ├── ztypes_openbsd_arm.go
    │       │   │   ├── ztypes_openbsd_arm64.go
    │       │   │   ├── ztypes_openbsd_mips64.go
    │       │   │   ├── ztypes_openbsd_ppc64.go
    │       │   │   ├── ztypes_openbsd_riscv64.go
    │       │   │   ├── ztypes_solaris_amd64.go
    │       │   │   └── ztypes_zos_s390x.go
    │       │   └── windows/
    │       │       ├── aliases.go
    │       │       ├── dll_windows.go
    │       │       ├── env_windows.go
    │       │       ├── eventlog.go
    │       │       ├── exec_windows.go
    │       │       ├── memory_windows.go
    │       │       ├── mkerrors.bash
    │       │       ├── mkknownfolderids.bash
    │       │       ├── mksyscall.go
    │       │       ├── race.go
    │       │       ├── race0.go
    │       │       ├── registry/
    │       │       │   ├── key.go
    │       │       │   ├── mksyscall.go
    │       │       │   ├── syscall.go
    │       │       │   ├── value.go
    │       │       │   └── zsyscall_windows.go
    │       │       ├── security_windows.go
    │       │       ├── service.go
    │       │       ├── setupapi_windows.go
    │       │       ├── str.go
    │       │       ├── syscall.go
    │       │       ├── syscall_windows.go
    │       │       ├── types_windows.go
    │       │       ├── types_windows_386.go
    │       │       ├── types_windows_amd64.go
    │       │       ├── types_windows_arm.go
    │       │       ├── types_windows_arm64.go
    │       │       ├── zerrors_windows.go
    │       │       ├── zknownfolderids_windows.go
    │       │       └── zsyscall_windows.go
    │       ├── term/
    │       │   ├── CONTRIBUTING.md
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── README.md
    │       │   ├── codereview.cfg
    │       │   ├── term.go
    │       │   ├── term_plan9.go
    │       │   ├── term_unix.go
    │       │   ├── term_unix_bsd.go
    │       │   ├── term_unix_other.go
    │       │   ├── term_unsupported.go
    │       │   ├── term_windows.go
    │       │   └── terminal.go
    │       ├── text/
    │       │   ├── LICENSE
    │       │   ├── PATENTS
    │       │   ├── secure/
    │       │   │   └── bidirule/
    │       │   │       └── bidirule.go
    │       │   ├── transform/
    │       │   │   └── transform.go
    │       │   └── unicode/
    │       │       ├── bidi/
    │       │       │   ├── bidi.go
    │       │       │   ├── bracket.go
    │       │       │   ├── core.go
    │       │       │   ├── prop.go
    │       │       │   ├── tables15.0.0.go
    │       │       │   ├── tables17.0.0.go
    │       │       │   └── trieval.go
    │       │       └── norm/
    │       │           ├── composition.go
    │       │           ├── forminfo.go
    │       │           ├── input.go
    │       │           ├── iter.go
    │       │           ├── normalize.go
    │       │           ├── readwriter.go
    │       │           ├── tables15.0.0.go
    │       │           ├── tables17.0.0.go
    │       │           ├── transform.go
    │       │           └── trie.go
    │       └── time/
    │           ├── LICENSE
    │           ├── PATENTS
    │           └── rate/
    │               ├── rate.go
    │               └── sometimes.go
    ├── google.golang.org/
    │   ├── genproto/
    │   │   └── googleapis/
    │   │       ├── api/
    │   │       │   ├── LICENSE
    │   │       │   └── httpbody/
    │   │       │       └── httpbody.pb.go
    │   │       └── rpc/
    │   │           ├── LICENSE
    │   │           ├── errdetails/
    │   │           │   └── error_details.pb.go
    │   │           └── status/
    │   │               └── status.pb.go
    │   ├── grpc/
    │   │   ├── AUTHORS
    │   │   ├── CODE-OF-CONDUCT.md
    │   │   ├── CONTRIBUTING.md
    │   │   ├── GOVERNANCE.md
    │   │   ├── LICENSE
    │   │   ├── MAINTAINERS.md
    │   │   ├── Makefile
    │   │   ├── NOTICE.txt
    │   │   ├── README.md
    │   │   ├── SECURITY.md
    │   │   ├── attributes/
    │   │   │   └── attributes.go
    │   │   ├── backoff/
    │   │   │   └── backoff.go
    │   │   ├── backoff.go
    │   │   ├── balancer/
    │   │   │   ├── balancer.go
    │   │   │   ├── base/
    │   │   │   │   ├── balancer.go
    │   │   │   │   └── base.go
    │   │   │   ├── conn_state_evaluator.go
    │   │   │   ├── endpointsharding/
    │   │   │   │   └── endpointsharding.go
    │   │   │   ├── grpclb/
    │   │   │   │   └── state/
    │   │   │   │       └── state.go
    │   │   │   ├── pickfirst/
    │   │   │   │   ├── internal/
    │   │   │   │   │   └── internal.go
    │   │   │   │   └── pickfirst.go
    │   │   │   ├── roundrobin/
    │   │   │   │   └── roundrobin.go
    │   │   │   └── subconn.go
    │   │   ├── balancer_wrapper.go
    │   │   ├── binarylog/
    │   │   │   └── grpc_binarylog_v1/
    │   │   │       └── binarylog.pb.go
    │   │   ├── call.go
    │   │   ├── channelz/
    │   │   │   └── channelz.go
    │   │   ├── clientconn.go
    │   │   ├── codec.go
    │   │   ├── codes/
    │   │   │   ├── code_string.go
    │   │   │   └── codes.go
    │   │   ├── connectivity/
    │   │   │   └── connectivity.go
    │   │   ├── credentials/
    │   │   │   ├── credentials.go
    │   │   │   ├── insecure/
    │   │   │   │   └── insecure.go
    │   │   │   └── tls.go
    │   │   ├── dialoptions.go
    │   │   ├── doc.go
    │   │   ├── encoding/
    │   │   │   ├── encoding.go
    │   │   │   ├── encoding_v2.go
    │   │   │   ├── gzip/
    │   │   │   │   └── gzip.go
    │   │   │   ├── internal/
    │   │   │   │   └── internal.go
    │   │   │   └── proto/
    │   │   │       └── proto.go
    │   │   ├── experimental/
    │   │   │   └── stats/
    │   │   │       ├── metricregistry.go
    │   │   │       └── metrics.go
    │   │   ├── grpclog/
    │   │   │   ├── component.go
    │   │   │   ├── grpclog.go
    │   │   │   ├── internal/
    │   │   │   │   ├── grpclog.go
    │   │   │   │   ├── logger.go
    │   │   │   │   └── loggerv2.go
    │   │   │   ├── logger.go
    │   │   │   └── loggerv2.go
    │   │   ├── health/
    │   │   │   └── grpc_health_v1/
    │   │   │       ├── health.pb.go
    │   │   │       └── health_grpc.pb.go
    │   │   ├── interceptor.go
    │   │   ├── internal/
    │   │   │   ├── backoff/
    │   │   │   │   └── backoff.go
    │   │   │   ├── balancer/
    │   │   │   │   ├── gracefulswitch/
    │   │   │   │   │   ├── config.go
    │   │   │   │   │   └── gracefulswitch.go
    │   │   │   │   └── weight/
    │   │   │   │       └── weight.go
    │   │   │   ├── balancerload/
    │   │   │   │   └── load.go
    │   │   │   ├── binarylog/
    │   │   │   │   ├── binarylog.go
    │   │   │   │   ├── binarylog_testutil.go
    │   │   │   │   ├── env_config.go
    │   │   │   │   ├── method_logger.go
    │   │   │   │   └── sink.go
    │   │   │   ├── buffer/
    │   │   │   │   └── unbounded.go
    │   │   │   ├── channelz/
    │   │   │   │   ├── channel.go
    │   │   │   │   ├── channelmap.go
    │   │   │   │   ├── funcs.go
    │   │   │   │   ├── logging.go
    │   │   │   │   ├── server.go
    │   │   │   │   ├── socket.go
    │   │   │   │   ├── subchannel.go
    │   │   │   │   ├── syscall_linux.go
    │   │   │   │   ├── syscall_nonlinux.go
    │   │   │   │   └── trace.go
    │   │   │   ├── credentials/
    │   │   │   │   ├── credentials.go
    │   │   │   │   ├── spiffe.go
    │   │   │   │   ├── syscallconn.go
    │   │   │   │   └── util.go
    │   │   │   ├── envconfig/
    │   │   │   │   ├── envconfig.go
    │   │   │   │   ├── observability.go
    │   │   │   │   └── xds.go
    │   │   │   ├── experimental.go
    │   │   │   ├── grpclog/
    │   │   │   │   └── prefix_logger.go
    │   │   │   ├── grpcsync/
    │   │   │   │   ├── callback_serializer.go
    │   │   │   │   ├── event.go
    │   │   │   │   └── pubsub.go
    │   │   │   ├── grpcutil/
    │   │   │   │   ├── compressor.go
    │   │   │   │   ├── encode_duration.go
    │   │   │   │   ├── grpcutil.go
    │   │   │   │   ├── metadata.go
    │   │   │   │   ├── method.go
    │   │   │   │   └── regex.go
    │   │   │   ├── idle/
    │   │   │   │   └── idle.go
    │   │   │   ├── internal.go
    │   │   │   ├── mem/
    │   │   │   │   └── buffer_pool.go
    │   │   │   ├── metadata/
    │   │   │   │   └── metadata.go
    │   │   │   ├── pretty/
    │   │   │   │   └── pretty.go
    │   │   │   ├── proxyattributes/
    │   │   │   │   └── proxyattributes.go
    │   │   │   ├── resolver/
    │   │   │   │   ├── config_selector.go
    │   │   │   │   ├── delegatingresolver/
    │   │   │   │   │   └── delegatingresolver.go
    │   │   │   │   ├── dns/
    │   │   │   │   │   ├── dns_resolver.go
    │   │   │   │   │   └── internal/
    │   │   │   │   │       └── internal.go
    │   │   │   │   ├── passthrough/
    │   │   │   │   │   └── passthrough.go
    │   │   │   │   └── unix/
    │   │   │   │       └── unix.go
    │   │   │   ├── serviceconfig/
    │   │   │   │   ├── duration.go
    │   │   │   │   └── serviceconfig.go
    │   │   │   ├── stats/
    │   │   │   │   ├── labels.go
    │   │   │   │   ├── metrics_recorder_list.go
    │   │   │   │   └── stats.go
    │   │   │   ├── status/
    │   │   │   │   └── status.go
    │   │   │   ├── syscall/
    │   │   │   │   ├── syscall_linux.go
    │   │   │   │   └── syscall_nonlinux.go
    │   │   │   ├── tcp_keepalive_others.go
    │   │   │   ├── tcp_keepalive_unix.go
    │   │   │   ├── tcp_keepalive_windows.go
    │   │   │   └── transport/
    │   │   │       ├── bdp_estimator.go
    │   │   │       ├── client_stream.go
    │   │   │       ├── controlbuf.go
    │   │   │       ├── defaults.go
    │   │   │       ├── flowcontrol.go
    │   │   │       ├── handler_server.go
    │   │   │       ├── http2_client.go
    │   │   │       ├── http2_server.go
    │   │   │       ├── http_util.go
    │   │   │       ├── logging.go
    │   │   │       ├── networktype/
    │   │   │       │   └── networktype.go
    │   │   │       ├── proxy.go
    │   │   │       ├── readyreader/
    │   │   │       │   ├── raw_conn_linux.go
    │   │   │       │   ├── raw_conn_nonlinux.go
    │   │   │       │   └── ready_reader.go
    │   │   │       ├── server_stream.go
    │   │   │       └── transport.go
    │   │   ├── keepalive/
    │   │   │   └── keepalive.go
    │   │   ├── mem/
    │   │   │   ├── buffer_pool.go
    │   │   │   ├── buffer_slice.go
    │   │   │   └── buffers.go
    │   │   ├── metadata/
    │   │   │   └── metadata.go
    │   │   ├── peer/
    │   │   │   └── peer.go
    │   │   ├── picker_wrapper.go
    │   │   ├── preloader.go
    │   │   ├── reflection/
    │   │   │   ├── README.md
    │   │   │   ├── adapt.go
    │   │   │   ├── grpc_reflection_v1/
    │   │   │   │   ├── reflection.pb.go
    │   │   │   │   └── reflection_grpc.pb.go
    │   │   │   ├── grpc_reflection_v1alpha/
    │   │   │   │   ├── reflection.pb.go
    │   │   │   │   └── reflection_grpc.pb.go
    │   │   │   ├── internal/
    │   │   │   │   └── internal.go
    │   │   │   └── serverreflection.go
    │   │   ├── resolver/
    │   │   │   ├── dns/
    │   │   │   │   └── dns_resolver.go
    │   │   │   ├── map.go
    │   │   │   └── resolver.go
    │   │   ├── resolver_wrapper.go
    │   │   ├── rpc_util.go
    │   │   ├── server.go
    │   │   ├── service_config.go
    │   │   ├── serviceconfig/
    │   │   │   └── serviceconfig.go
    │   │   ├── stats/
    │   │   │   ├── handlers.go
    │   │   │   ├── metrics.go
    │   │   │   └── stats.go
    │   │   ├── status/
    │   │   │   └── status.go
    │   │   ├── stream.go
    │   │   ├── stream_interfaces.go
    │   │   ├── tap/
    │   │   │   └── tap.go
    │   │   ├── trace.go
    │   │   ├── trace_notrace.go
    │   │   ├── trace_withtrace.go
    │   │   └── version.go
    │   └── protobuf/
    │       ├── LICENSE
    │       ├── PATENTS
    │       ├── encoding/
    │       │   ├── protodelim/
    │       │   │   └── protodelim.go
    │       │   ├── protojson/
    │       │   │   ├── decode.go
    │       │   │   ├── doc.go
    │       │   │   ├── encode.go
    │       │   │   └── well_known_types.go
    │       │   ├── prototext/
    │       │   │   ├── decode.go
    │       │   │   ├── doc.go
    │       │   │   └── encode.go
    │       │   └── protowire/
    │       │       └── wire.go
    │       ├── internal/
    │       │   ├── descfmt/
    │       │   │   └── stringer.go
    │       │   ├── descopts/
    │       │   │   └── options.go
    │       │   ├── detrand/
    │       │   │   └── rand.go
    │       │   ├── editiondefaults/
    │       │   │   ├── defaults.go
    │       │   │   └── editions_defaults.binpb
    │       │   ├── editionssupport/
    │       │   │   └── editions.go
    │       │   ├── encoding/
    │       │   │   ├── defval/
    │       │   │   │   └── default.go
    │       │   │   ├── json/
    │       │   │   │   ├── decode.go
    │       │   │   │   ├── decode_number.go
    │       │   │   │   ├── decode_string.go
    │       │   │   │   ├── decode_token.go
    │       │   │   │   └── encode.go
    │       │   │   ├── messageset/
    │       │   │   │   └── messageset.go
    │       │   │   ├── tag/
    │       │   │   │   └── tag.go
    │       │   │   └── text/
    │       │   │       ├── decode.go
    │       │   │       ├── decode_number.go
    │       │   │       ├── decode_string.go
    │       │   │       ├── decode_token.go
    │       │   │       ├── doc.go
    │       │   │       └── encode.go
    │       │   ├── errors/
    │       │   │   └── errors.go
    │       │   ├── filedesc/
    │       │   │   ├── build.go
    │       │   │   ├── desc.go
    │       │   │   ├── desc_init.go
    │       │   │   ├── desc_lazy.go
    │       │   │   ├── desc_list.go
    │       │   │   ├── desc_list_gen.go
    │       │   │   ├── editions.go
    │       │   │   ├── placeholder.go
    │       │   │   └── presence.go
    │       │   ├── filetype/
    │       │   │   └── build.go
    │       │   ├── flags/
    │       │   │   ├── flags.go
    │       │   │   ├── proto_legacy_disable.go
    │       │   │   └── proto_legacy_enable.go
    │       │   ├── genid/
    │       │   │   ├── any_gen.go
    │       │   │   ├── api_gen.go
    │       │   │   ├── descriptor_gen.go
    │       │   │   ├── doc.go
    │       │   │   ├── duration_gen.go
    │       │   │   ├── empty_gen.go
    │       │   │   ├── field_mask_gen.go
    │       │   │   ├── go_features_gen.go
    │       │   │   ├── goname.go
    │       │   │   ├── map_entry.go
    │       │   │   ├── name.go
    │       │   │   ├── source_context_gen.go
    │       │   │   ├── struct_gen.go
    │       │   │   ├── timestamp_gen.go
    │       │   │   ├── type_gen.go
    │       │   │   ├── wrappers.go
    │       │   │   └── wrappers_gen.go
    │       │   ├── impl/
    │       │   │   ├── api_export.go
    │       │   │   ├── api_export_opaque.go
    │       │   │   ├── bitmap.go
    │       │   │   ├── bitmap_race.go
    │       │   │   ├── checkinit.go
    │       │   │   ├── codec_extension.go
    │       │   │   ├── codec_field.go
    │       │   │   ├── codec_field_opaque.go
    │       │   │   ├── codec_gen.go
    │       │   │   ├── codec_map.go
    │       │   │   ├── codec_message.go
    │       │   │   ├── codec_message_opaque.go
    │       │   │   ├── codec_messageset.go
    │       │   │   ├── codec_tables.go
    │       │   │   ├── codec_unsafe.go
    │       │   │   ├── convert.go
    │       │   │   ├── convert_list.go
    │       │   │   ├── convert_map.go
    │       │   │   ├── decode.go
    │       │   │   ├── encode.go
    │       │   │   ├── enum.go
    │       │   │   ├── equal.go
    │       │   │   ├── extension.go
    │       │   │   ├── lazy.go
    │       │   │   ├── legacy_enum.go
    │       │   │   ├── legacy_export.go
    │       │   │   ├── legacy_extension.go
    │       │   │   ├── legacy_file.go
    │       │   │   ├── legacy_message.go
    │       │   │   ├── merge.go
    │       │   │   ├── merge_gen.go
    │       │   │   ├── message.go
    │       │   │   ├── message_opaque.go
    │       │   │   ├── message_opaque_gen.go
    │       │   │   ├── message_reflect.go
    │       │   │   ├── message_reflect_field.go
    │       │   │   ├── message_reflect_field_gen.go
    │       │   │   ├── message_reflect_gen.go
    │       │   │   ├── pointer_unsafe.go
    │       │   │   ├── pointer_unsafe_opaque.go
    │       │   │   ├── presence.go
    │       │   │   └── validate.go
    │       │   ├── order/
    │       │   │   ├── order.go
    │       │   │   └── range.go
    │       │   ├── pragma/
    │       │   │   └── pragma.go
    │       │   ├── protolazy/
    │       │   │   ├── bufferreader.go
    │       │   │   ├── lazy.go
    │       │   │   └── pointer_unsafe.go
    │       │   ├── set/
    │       │   │   └── ints.go
    │       │   ├── strs/
    │       │   │   ├── strings.go
    │       │   │   └── strings_unsafe.go
    │       │   └── version/
    │       │       └── version.go
    │       ├── proto/
    │       │   ├── checkinit.go
    │       │   ├── decode.go
    │       │   ├── decode_gen.go
    │       │   ├── doc.go
    │       │   ├── encode.go
    │       │   ├── encode_gen.go
    │       │   ├── equal.go
    │       │   ├── extension.go
    │       │   ├── merge.go
    │       │   ├── messageset.go
    │       │   ├── proto.go
    │       │   ├── proto_methods.go
    │       │   ├── proto_reflect.go
    │       │   ├── reset.go
    │       │   ├── size.go
    │       │   ├── size_gen.go
    │       │   ├── wrapperopaque.go
    │       │   └── wrappers.go
    │       ├── protoadapt/
    │       │   └── convert.go
    │       ├── reflect/
    │       │   ├── protodesc/
    │       │   │   ├── desc.go
    │       │   │   ├── desc_init.go
    │       │   │   ├── desc_resolve.go
    │       │   │   ├── desc_validate.go
    │       │   │   ├── editions.go
    │       │   │   └── proto.go
    │       │   ├── protoreflect/
    │       │   │   ├── methods.go
    │       │   │   ├── proto.go
    │       │   │   ├── source.go
    │       │   │   ├── source_gen.go
    │       │   │   ├── type.go
    │       │   │   ├── value.go
    │       │   │   ├── value_equal.go
    │       │   │   ├── value_union.go
    │       │   │   └── value_unsafe.go
    │       │   └── protoregistry/
    │       │       └── registry.go
    │       ├── runtime/
    │       │   ├── protoiface/
    │       │   │   ├── legacy.go
    │       │   │   └── methods.go
    │       │   └── protoimpl/
    │       │       ├── impl.go
    │       │       └── version.go
    │       └── types/
    │           ├── descriptorpb/
    │           │   └── descriptor.pb.go
    │           ├── gofeaturespb/
    │           │   └── go_features.pb.go
    │           └── known/
    │               ├── anypb/
    │               │   └── any.pb.go
    │               ├── durationpb/
    │               │   └── duration.pb.go
    │               ├── fieldmaskpb/
    │               │   └── field_mask.pb.go
    │               ├── structpb/
    │               │   └── struct.pb.go
    │               ├── timestamppb/
    │               │   └── timestamp.pb.go
    │               └── wrapperspb/
    │                   └── wrappers.pb.go
    ├── gopkg.in/
    │   ├── evanphx/
    │   │   └── json-patch.v4/
    │   │       ├── .gitignore
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── errors.go
    │   │       ├── merge.go
    │   │       └── patch.go
    │   ├── gcfg.v1/
    │   │   ├── LICENSE
    │   │   ├── README
    │   │   ├── doc.go
    │   │   ├── errors.go
    │   │   ├── read.go
    │   │   ├── scanner/
    │   │   │   ├── errors.go
    │   │   │   └── scanner.go
    │   │   ├── set.go
    │   │   ├── token/
    │   │   │   ├── position.go
    │   │   │   ├── serialize.go
    │   │   │   └── token.go
    │   │   └── types/
    │   │       ├── bool.go
    │   │       ├── doc.go
    │   │       ├── enum.go
    │   │       ├── int.go
    │   │       └── scan.go
    │   ├── inf.v0/
    │   │   ├── LICENSE
    │   │   ├── dec.go
    │   │   └── rounder.go
    │   ├── natefinch/
    │   │   └── lumberjack.v2/
    │   │       ├── .gitignore
    │   │       ├── .travis.yml
    │   │       ├── LICENSE
    │   │       ├── README.md
    │   │       ├── chown.go
    │   │       ├── chown_linux.go
    │   │       └── lumberjack.go
    │   ├── warnings.v0/
    │   │   ├── LICENSE
    │   │   ├── README
    │   │   └── warnings.go
    │   ├── yaml.v2/
    │   │   ├── .travis.yml
    │   │   ├── LICENSE
    │   │   ├── LICENSE.libyaml
    │   │   ├── NOTICE
    │   │   ├── README.md
    │   │   ├── apic.go
    │   │   ├── decode.go
    │   │   ├── emitterc.go
    │   │   ├── encode.go
    │   │   ├── parserc.go
    │   │   ├── readerc.go
    │   │   ├── resolve.go
    │   │   ├── scannerc.go
    │   │   ├── sorter.go
    │   │   ├── writerc.go
    │   │   ├── yaml.go
    │   │   ├── yamlh.go
    │   │   └── yamlprivateh.go
    │   └── yaml.v3/
    │       ├── LICENSE
    │       ├── NOTICE
    │       ├── README.md
    │       ├── apic.go
    │       ├── decode.go
    │       ├── emitterc.go
    │       ├── encode.go
    │       ├── parserc.go
    │       ├── readerc.go
    │       ├── resolve.go
    │       ├── scannerc.go
    │       ├── sorter.go
    │       ├── writerc.go
    │       ├── yaml.go
    │       ├── yamlh.go
    │       └── yamlprivateh.go
    ├── k8s.io/
    │   ├── api/
    │   │   ├── LICENSE
    │   │   ├── admissionregistration/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── apidiscovery/
    │   │   │   ├── v2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v2beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── apiserverinternal/
    │   │   │   └── v1alpha1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       └── zz_generated.model_name.go
    │   │   ├── apps/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta2/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── authentication/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── authorization/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── autoscaling/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v2beta1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v2beta2/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── batch/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── certificates/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── coordination/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── core/
    │   │   │   └── v1/
    │   │   │       ├── annotation_key_constants.go
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── lifecycle.go
    │   │   │       ├── objectreference.go
    │   │   │       ├── register.go
    │   │   │       ├── resource.go
    │   │   │       ├── taint.go
    │   │   │       ├── toleration.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── well_known_labels.go
    │   │   │       ├── well_known_taints.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── discovery/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── well_known_labels.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── well_known_labels.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── events/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── extensions/
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       ├── zz_generated.prerelease-lifecycle.go
    │   │   │       └── zz_generated.validations.go
    │   │   ├── flowcontrol/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta2/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta3/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── networking/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── well_known_annotations.go
    │   │   │   │   ├── well_known_labels.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── well_known_annotations.go
    │   │   │       ├── well_known_labels.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── node/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   └── zz_generated.model_name.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── policy/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── rbac/
    │   │   │   ├── v1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha1/
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   └── zz_generated.model_name.go
    │   │   │   └── v1beta1/
    │   │   │       ├── doc.go
    │   │   │       ├── generated.pb.go
    │   │   │       ├── generated.proto
    │   │   │       ├── generated.protomessage.pb.go
    │   │   │       ├── register.go
    │   │   │       ├── types.go
    │   │   │       ├── types_swagger_doc_generated.go
    │   │   │       ├── zz_generated.deepcopy.go
    │   │   │       ├── zz_generated.model_name.go
    │   │   │       └── zz_generated.prerelease-lifecycle.go
    │   │   ├── resource/
    │   │   │   ├── v1/
    │   │   │   │   ├── devicetaint.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1alpha3/
    │   │   │   │   ├── devicetaint.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├── zz_generated.model_name.go
    │   │   │   │   └── zz_generated.prerelease-lifecycle.go
    │   │   │   ├── v1beta1/
    │   │   │   │   ├── devicetaint.go
    │   │   │   │   ├── doc.go
    │   │   │   │   ├── generated.pb.go
    │   │   │   │   ├── generated.proto
    │   │   │   │   ├── generated.protomessage.pb.go
    │   │   │   │   ├── register.go
    │   │   │   │   ├── types.go
    │   │   │   │   ├── types_swagger_doc_generated.go
    │   │   │   │   ├── zz_generated.deepcopy.go
    │   │   │   │   ├──
Copy disabled (too large) Download .txt
Showing preview only (20,616K chars total). Download the full file to get everything.
SYMBOL INDEX (244929 symbols across 5854 files)

FILE: bpf/dns_tracker.h
  type dns_header (line 14) | struct dns_header {
  function fill_dns_id (line 23) | static inline void fill_dns_id(flow_id *id, dns_flow_id *dns_flow, u16 d...
  function __always_inline (line 39) | static __always_inline u8 calc_dns_header_offset(pkt_info *pkt, void *da...
  function __always_inline (line 68) | static __always_inline int track_dns_packet(struct __sk_buff *skb, pkt_i...

FILE: bpf/flows.c
  function __always_inline (line 71) | static __always_inline int add_observed_intf(flow_metrics *value, pkt_in...
  function __always_inline (line 93) | static __always_inline void update_existing_flow(flow_metrics *aggregate...
  function update_dns (line 140) | static inline void update_dns(dns_metrics *dns_metrics, pkt_info *pkt, i...
  function flow_monitor (line 155) | static inline int flow_monitor(struct __sk_buff *skb, u8 direction) {
  function tc_ingress_flow_parse (line 327) | int tc_ingress_flow_parse(struct __sk_buff *skb) {
  function tc_egress_flow_parse (line 332) | int tc_egress_flow_parse(struct __sk_buff *skb) {
  function tcx_ingress_flow_parse (line 337) | int tcx_ingress_flow_parse(struct __sk_buff *skb) {
  function tcx_egress_flow_parse (line 344) | int tcx_egress_flow_parse(struct __sk_buff *skb) {

FILE: bpf/flows_filter.h
  function __always_inline (line 14) | static __always_inline int flow_filter_setup_lookup_key(flow_id *id, str...
  function __always_inline (line 42) | static __always_inline int do_flow_filter_lookup(flow_id *id, struct fil...
  function __always_inline (line 224) | static __always_inline int is_flow_filtered(flow_id *id, filter_action *...

FILE: bpf/headers/bpf_builtins.h
  function __bpf_memset_builtin (line 23) | void
  function __always_inline (line 32) | static __always_inline void __bpf_memzero(void *d, __u64 len)
  function bpf_memset (line 331) | void bpf_memset(void *d, int c,
  function __bpf_memcpy_builtin (line 340) | void
  function __always_inline (line 347) | static __always_inline void __bpf_memcpy(void *d, const void *s, __u64 len)
  function bpf_memcpy (line 647) | void bpf_memcpy(void *d, const void *s,
  function __u64 (line 653) | __u64
  function __always_inline (line 668) | static __always_inline __u64 __bpf_memcmp(const void *x, const void *y,
  function __u64 (line 958) | __u64
  function __u64 (line 972) | __u64 bpf_memcmp(const void *x,
  function __bpf_memmove_builtin (line 979) | void
  function __always_inline (line 986) | static __always_inline void __bpf_memmove_bwd(void *d, const void *s, __...
  function __always_inline (line 992) | static __always_inline void __bpf_memmove_fwd(void *d, const void *s, __...
  function __always_inline (line 1284) | static __always_inline void __bpf_memmove(void *d, const void *s, __u64 ...
  function bpf_memmove (line 1301) | void bpf_memmove(void *d,

FILE: bpf/headers/bpf_core_read.h
  type bpf_field_info_kind (line 15) | enum bpf_field_info_kind {
  type bpf_type_id_kind (line 25) | enum bpf_type_id_kind {
  type bpf_type_info_kind (line 31) | enum bpf_type_info_kind {
  type bpf_enum_value_kind (line 38) | enum bpf_enum_value_kind {

FILE: bpf/headers/bpf_helper_defs.h
  type bpf_fib_lookup (line 4) | struct bpf_fib_lookup
  type bpf_sk_lookup (line 5) | struct bpf_sk_lookup
  type bpf_perf_event_data (line 6) | struct bpf_perf_event_data
  type bpf_perf_event_value (line 7) | struct bpf_perf_event_value
  type bpf_pidns_info (line 8) | struct bpf_pidns_info
  type bpf_redir_neigh (line 9) | struct bpf_redir_neigh
  type bpf_sock (line 10) | struct bpf_sock
  type bpf_sock_addr (line 11) | struct bpf_sock_addr
  type bpf_sock_ops (line 12) | struct bpf_sock_ops
  type bpf_sock_tuple (line 13) | struct bpf_sock_tuple
  type bpf_spin_lock (line 14) | struct bpf_spin_lock
  type bpf_sysctl (line 15) | struct bpf_sysctl
  type bpf_tcp_sock (line 16) | struct bpf_tcp_sock
  type bpf_tunnel_key (line 17) | struct bpf_tunnel_key
  type bpf_xfrm_state (line 18) | struct bpf_xfrm_state
  type linux_binprm (line 19) | struct linux_binprm
  type pt_regs (line 20) | struct pt_regs
  type sk_reuseport_md (line 21) | struct sk_reuseport_md
  type sockaddr (line 22) | struct sockaddr
  type tcphdr (line 23) | struct tcphdr
  type seq_file (line 24) | struct seq_file
  type tcp6_sock (line 25) | struct tcp6_sock
  type tcp_sock (line 26) | struct tcp_sock
  type tcp_timewait_sock (line 27) | struct tcp_timewait_sock
  type tcp_request_sock (line 28) | struct tcp_request_sock
  type udp6_sock (line 29) | struct udp6_sock
  type unix_sock (line 30) | struct unix_sock
  type task_struct (line 31) | struct task_struct
  type __sk_buff (line 32) | struct __sk_buff
  type sk_msg_md (line 33) | struct sk_msg_md
  type xdp_md (line 34) | struct xdp_md
  type path (line 35) | struct path
  type btf_ptr (line 36) | struct btf_ptr
  type inode (line 37) | struct inode
  type socket (line 38) | struct socket
  type file (line 39) | struct file
  type bpf_timer (line 40) | struct bpf_timer
  type __sk_buff (line 222) | struct __sk_buff
  type __sk_buff (line 251) | struct __sk_buff
  type __sk_buff (line 287) | struct __sk_buff
  type __sk_buff (line 350) | struct __sk_buff
  type __sk_buff (line 417) | struct __sk_buff
  type __sk_buff (line 437) | struct __sk_buff
  type __sk_buff (line 453) | struct __sk_buff
  type __sk_buff (line 508) | struct __sk_buff
  type bpf_tunnel_key (line 508) | struct bpf_tunnel_key
  type __sk_buff (line 549) | struct __sk_buff
  type bpf_tunnel_key (line 549) | struct bpf_tunnel_key
  type __sk_buff (line 637) | struct __sk_buff
  type __sk_buff (line 806) | struct __sk_buff
  type __sk_buff (line 820) | struct __sk_buff
  type __sk_buff (line 851) | struct __sk_buff
  type __sk_buff (line 882) | struct __sk_buff
  type __sk_buff (line 897) | struct __sk_buff
  type __sk_buff (line 917) | struct __sk_buff
  type __sk_buff (line 993) | struct __sk_buff
  type __sk_buff (line 1033) | struct __sk_buff
  type __sk_buff (line 1049) | struct __sk_buff
  type __sk_buff (line 1061) | struct __sk_buff
  type __sk_buff (line 1101) | struct __sk_buff
  type xdp_md (line 1120) | struct xdp_md
  type __sk_buff (line 1167) | struct __sk_buff
  type __sk_buff (line 1178) | struct __sk_buff
  type __sk_buff (line 1267) | struct __sk_buff
  type __sk_buff (line 1311) | struct __sk_buff
  type bpf_sock_ops (line 1334) | struct bpf_sock_ops
  type xdp_md (line 1367) | struct xdp_md
  type bpf_perf_event_value (line 1421) | struct bpf_perf_event_value
  type bpf_perf_event_data (line 1436) | struct bpf_perf_event_data
  type bpf_perf_event_value (line 1436) | struct bpf_perf_event_value
  type pt_regs (line 1494) | struct pt_regs
  type bpf_sock_ops (line 1542) | struct bpf_sock_ops
  type sk_msg_md (line 1560) | struct sk_msg_md
  type sk_msg_md (line 1598) | struct sk_msg_md
  type sk_msg_md (line 1620) | struct sk_msg_md
  type sk_msg_md (line 1655) | struct sk_msg_md
  type bpf_sock_addr (line 1677) | struct bpf_sock_addr
  type sockaddr (line 1677) | struct sockaddr
  type xdp_md (line 1695) | struct xdp_md
  type __sk_buff (line 1715) | struct __sk_buff
  type bpf_xfrm_state (line 1715) | struct bpf_xfrm_state
  type bpf_fib_lookup (line 1816) | struct bpf_fib_lookup
  type bpf_sock_ops (line 1839) | struct bpf_sock_ops
  type sk_msg_md (line 1857) | struct sk_msg_md
  type __sk_buff (line 1875) | struct __sk_buff
  type __sk_buff (line 1916) | struct __sk_buff
  type __sk_buff (line 1935) | struct __sk_buff
  type __sk_buff (line 1955) | struct __sk_buff
  type __sk_buff (line 1988) | struct __sk_buff
  type __sk_buff (line 2061) | struct __sk_buff
  type sk_reuseport_md (line 2106) | struct sk_reuseport_md
  type __sk_buff (line 2128) | struct __sk_buff
  type bpf_sock (line 2169) | struct bpf_sock
  type bpf_sock_tuple (line 2169) | struct bpf_sock_tuple
  type bpf_sock (line 2210) | struct bpf_sock
  type bpf_sock_tuple (line 2210) | struct bpf_sock_tuple
  type sk_msg_md (line 2276) | struct sk_msg_md
  type sk_msg_md (line 2292) | struct sk_msg_md
  type bpf_spin_lock (line 2362) | struct bpf_spin_lock
  type bpf_spin_lock (line 2373) | struct bpf_spin_lock
  type bpf_sock (line 2385) | struct bpf_sock
  type bpf_sock (line 2385) | struct bpf_sock
  type bpf_tcp_sock (line 2397) | struct bpf_tcp_sock
  type bpf_sock (line 2397) | struct bpf_sock
  type __sk_buff (line 2411) | struct __sk_buff
  type bpf_sock (line 2423) | struct bpf_sock
  type bpf_sock (line 2423) | struct bpf_sock
  type bpf_sock (line 2446) | struct bpf_sock
  type bpf_sock_tuple (line 2446) | struct bpf_sock_tuple
  type tcphdr (line 2465) | struct tcphdr
  type bpf_sysctl (line 2485) | struct bpf_sysctl
  type bpf_sysctl (line 2508) | struct bpf_sysctl
  type bpf_sysctl (line 2529) | struct bpf_sysctl
  type bpf_sysctl (line 2550) | struct bpf_sysctl
  type tcphdr (line 2702) | struct tcphdr
  type bpf_perf_event_data (line 2874) | struct bpf_perf_event_data
  type bpf_pidns_info (line 2890) | struct bpf_pidns_info
  type seq_file (line 3037) | struct seq_file
  type seq_file (line 3051) | struct seq_file
  type __sk_buff (line 3217) | struct __sk_buff
  type tcp6_sock (line 3227) | struct tcp6_sock
  type tcp_sock (line 3237) | struct tcp_sock
  type tcp_timewait_sock (line 3247) | struct tcp_timewait_sock
  type tcp_request_sock (line 3257) | struct tcp_request_sock
  type udp6_sock (line 3267) | struct udp6_sock
  type task_struct (line 3303) | struct task_struct
  type bpf_sock_ops (line 3370) | struct bpf_sock_ops
  type bpf_sock_ops (line 3407) | struct bpf_sock_ops
  type bpf_sock_ops (line 3433) | struct bpf_sock_ops
  type path (line 3493) | struct path
  type btf_ptr (line 3544) | struct btf_ptr
  type seq_file (line 3556) | struct seq_file
  type btf_ptr (line 3556) | struct btf_ptr
  type __sk_buff (line 3569) | struct __sk_buff
  type bpf_redir_neigh (line 3594) | struct bpf_redir_neigh
  type task_struct (line 3683) | struct task_struct
  type task_struct (line 3695) | struct task_struct
  type task_struct (line 3707) | struct task_struct
  type linux_binprm (line 3721) | struct linux_binprm
  type inode (line 3749) | struct inode
  type socket (line 3761) | struct socket
  type file (line 3761) | struct file
  type bpf_timer (line 3948) | struct bpf_timer
  type bpf_timer (line 3963) | struct bpf_timer
  type bpf_timer (line 3993) | struct bpf_timer
  type bpf_timer (line 4007) | struct bpf_timer
  type task_struct (line 4046) | struct task_struct
  type unix_sock (line 4095) | struct unix_sock
  type task_struct (line 4137) | struct task_struct

FILE: bpf/headers/bpf_helpers.h
  function __always_inline (line 98) | static __always_inline void
  type bpf_map_def (line 130) | struct bpf_map_def {
  type libbpf_pin_type (line 138) | enum libbpf_pin_type {
  type libbpf_tristate (line 144) | enum libbpf_tristate {

FILE: bpf/headers/bpf_tracing.h
  type pt_regs (line 147) | struct pt_regs
  type pt_regs (line 199) | struct pt_regs
  type pt_regs (line 299) | struct pt_regs
  type pt_regs (line 427) | struct pt_regs

FILE: bpf/headers/vmlinux_amd64.h
  type __s8 (line 8) | typedef signed char __s8;
  type __u8 (line 10) | typedef unsigned char __u8;
  type __s16 (line 12) | typedef short int __s16;
  type __u16 (line 14) | typedef short unsigned int __u16;
  type __s32 (line 16) | typedef int __s32;
  type __u32 (line 18) | typedef unsigned int __u32;
  type __s64 (line 20) | typedef long long int __s64;
  type __u64 (line 22) | typedef long long unsigned int __u64;
  type __s8 (line 24) | typedef __s8 s8;
  type __u8 (line 26) | typedef __u8 u8;
  type __s16 (line 28) | typedef __s16 s16;
  type __u16 (line 30) | typedef __u16 u16;
  type __s32 (line 32) | typedef __s32 s32;
  type __u32 (line 34) | typedef __u32 u32;
  type __s64 (line 36) | typedef __s64 s64;
  type __u64 (line 38) | typedef __u64 u64;
  type __kernel_long_t (line 45) | typedef long int __kernel_long_t;
  type __kernel_ulong_t (line 47) | typedef long unsigned int __kernel_ulong_t;
  type __kernel_pid_t (line 49) | typedef int __kernel_pid_t;
  type __kernel_uid32_t (line 51) | typedef unsigned int __kernel_uid32_t;
  type __kernel_gid32_t (line 53) | typedef unsigned int __kernel_gid32_t;
  type __kernel_ulong_t (line 55) | typedef __kernel_ulong_t __kernel_size_t;
  type __kernel_long_t (line 57) | typedef __kernel_long_t __kernel_ssize_t;
  type __kernel_loff_t (line 59) | typedef long long int __kernel_loff_t;
  type __kernel_time64_t (line 61) | typedef long long int __kernel_time64_t;
  type __kernel_long_t (line 63) | typedef __kernel_long_t __kernel_clock_t;
  type __kernel_timer_t (line 65) | typedef int __kernel_timer_t;
  type __kernel_clockid_t (line 67) | typedef int __kernel_clockid_t;
  type __poll_t (line 69) | typedef unsigned int __poll_t;
  type u32 (line 71) | typedef u32 __kernel_dev_t;
  type __kernel_dev_t (line 73) | typedef __kernel_dev_t dev_t;
  type umode_t (line 75) | typedef short unsigned int umode_t;
  type __kernel_pid_t (line 77) | typedef __kernel_pid_t pid_t;
  type __kernel_clockid_t (line 79) | typedef __kernel_clockid_t clockid_t;
  type _Bool (line 81) | typedef _Bool bool;
  type __kernel_uid32_t (line 83) | typedef __kernel_uid32_t uid_t;
  type __kernel_gid32_t (line 85) | typedef __kernel_gid32_t gid_t;
  type __kernel_loff_t (line 87) | typedef __kernel_loff_t loff_t;
  type __kernel_size_t (line 89) | typedef __kernel_size_t size_t;
  type __kernel_ssize_t (line 91) | typedef __kernel_ssize_t ssize_t;
  type s32 (line 93) | typedef s32 int32_t;
  type u32 (line 95) | typedef u32 uint32_t;
  type u64 (line 97) | typedef u64 sector_t;
  type u64 (line 99) | typedef u64 blkcnt_t;
  type gfp_t (line 101) | typedef unsigned int gfp_t;
  type fmode_t (line 103) | typedef unsigned int fmode_t;
  type u64 (line 105) | typedef u64 phys_addr_t;
  type atomic_t (line 107) | typedef struct {
  type atomic64_t (line 111) | typedef struct {
  type list_head (line 115) | struct list_head {
  type hlist_node (line 120) | struct hlist_node
  type hlist_head (line 122) | struct hlist_head {
  type hlist_node (line 126) | struct hlist_node {
  type callback_head (line 131) | struct callback_head {
  type kernel_symbol (line 136) | struct kernel_symbol {
  type lockdep_subclass_key (line 142) | struct lockdep_subclass_key {
  type lock_class_key (line 146) | struct lock_class_key {
  type fs_context (line 153) | struct fs_context
  type fs_parameter_spec (line 155) | struct fs_parameter_spec
  type dentry (line 157) | struct dentry
  type super_block (line 159) | struct super_block
  type module (line 161) | struct module
  type file_system_type (line 163) | struct file_system_type {
  type qspinlock (line 183) | struct qspinlock {
  type arch_spinlock_t (line 197) | typedef struct qspinlock arch_spinlock_t;
  type qrwlock (line 199) | struct qrwlock {
  type arch_rwlock_t (line 210) | typedef struct qrwlock arch_rwlock_t;
  type lock_trace (line 212) | struct lock_trace
  type lock_class (line 214) | struct lock_class {
  type lock_trace (line 231) | struct lock_trace {
  type lockdep_map (line 238) | struct lockdep_map {
  type raw_spinlock (line 247) | struct raw_spinlock {
  type raw_spinlock_t (line 255) | typedef struct raw_spinlock raw_spinlock_t;
  type ratelimit_state (line 257) | struct ratelimit_state {
  type file (line 269) | struct file
  type kiocb (line 271) | struct kiocb
  type iov_iter (line 273) | struct iov_iter
  type io_comp_batch (line 275) | struct io_comp_batch
  type dir_context (line 277) | struct dir_context
  type poll_table_struct (line 279) | struct poll_table_struct
  type vm_area_struct (line 281) | struct vm_area_struct
  type inode (line 283) | struct inode
  type file_lock (line 285) | struct file_lock
  type page (line 287) | struct page
  type pipe_inode_info (line 289) | struct pipe_inode_info
  type seq_file (line 291) | struct seq_file
  type io_uring_cmd (line 293) | struct io_uring_cmd
  type file_operations (line 295) | struct file_operations {
  type static_call_site (line 332) | struct static_call_site {
  type static_call_mod (line 337) | struct static_call_mod {
  type static_call_key (line 343) | struct static_call_key {
  type thread_info (line 352) | struct thread_info {
  type refcount_struct (line 359) | struct refcount_struct {
  type refcount_t (line 363) | typedef struct refcount_struct refcount_t;
  type llist_node (line 365) | struct llist_node {
  type __call_single_node (line 369) | struct __call_single_node {
  type load_weight (line 379) | struct load_weight {
  type rb_node (line 384) | struct rb_node {
  type util_est (line 390) | struct util_est {
  type sched_avg (line 395) | struct sched_avg {
  type cfs_rq (line 407) | struct cfs_rq
  type sched_entity (line 409) | struct sched_entity {
  type sched_rt_entity (line 433) | struct sched_rt_entity {
  type s64 (line 443) | typedef s64 ktime_t;
  type timerqueue_node (line 445) | struct timerqueue_node {
  type hrtimer_restart (line 450) | enum hrtimer_restart {
  type hrtimer_clock_base (line 455) | struct hrtimer_clock_base
  type hrtimer (line 457) | struct hrtimer {
  type sched_dl_entity (line 468) | struct sched_dl_entity {
  type sched_statistics (line 487) | struct sched_statistics {
  type cpumask (line 522) | struct cpumask {
  type cpumask_t (line 526) | typedef struct cpumask cpumask_t;
  type sched_info (line 538) | struct sched_info {
  type plist_node (line 545) | struct plist_node {
  type task_rss_stat (line 551) | struct task_rss_stat {
  type timespec_type (line 556) | enum timespec_type {
  type __kernel_timespec (line 562) | struct __kernel_timespec
  type old_timespec32 (line 564) | struct old_timespec32
  type pollfd (line 566) | struct pollfd
  type restart_block (line 568) | struct restart_block {
  type prev_cputime (line 599) | struct prev_cputime {
  type rb_root (line 605) | struct rb_root {
  type rb_root_cached (line 609) | struct rb_root_cached {
  type timerqueue_head (line 614) | struct timerqueue_head {
  type posix_cputimer_base (line 618) | struct posix_cputimer_base {
  type posix_cputimers (line 623) | struct posix_cputimers {
  type posix_cputimers_work (line 629) | struct posix_cputimers_work {
  type sem_undo_list (line 634) | struct sem_undo_list
  type sysv_sem (line 636) | struct sysv_sem {
  type sysv_shm (line 640) | struct sysv_shm {
  type sigset_t (line 644) | typedef struct {
  type sigpending (line 648) | struct sigpending {
  type kuid_t (line 653) | typedef struct {
  type seccomp_filter (line 657) | struct seccomp_filter
  type seccomp (line 659) | struct seccomp {
  type syscall_user_dispatch (line 665) | struct syscall_user_dispatch {
  type spinlock (line 672) | struct spinlock {
  type spinlock_t (line 682) | typedef struct spinlock spinlock_t;
  type wake_q_node (line 684) | struct wake_q_node {
  type irqtrace_events (line 688) | struct irqtrace_events {
  type held_lock (line 700) | struct held_lock {
  type task_io_accounting (line 715) | struct task_io_accounting {
  type nodemask_t (line 725) | typedef struct {
  type seqcount (line 729) | struct seqcount {
  type seqcount_t (line 734) | typedef struct seqcount seqcount_t;
  type seqcount_spinlock (line 736) | struct seqcount_spinlock {
  type seqcount_spinlock_t (line 741) | typedef struct seqcount_spinlock seqcount_spinlock_t;
  type atomic64_t (line 743) | typedef atomic64_t atomic_long_t;
  type optimistic_spin_queue (line 745) | struct optimistic_spin_queue {
  type mutex (line 749) | struct mutex {
  type arch_tlbflush_unmap_batch (line 758) | struct arch_tlbflush_unmap_batch {
  type tlbflush_unmap_batch (line 762) | struct tlbflush_unmap_batch {
  type page_frag (line 768) | struct page_frag {
  type kmap_ctrl (line 774) | struct kmap_ctrl {}
  type timer_list (line 776) | struct timer_list {
  type llist_head (line 784) | struct llist_head {
  type desc_struct (line 788) | struct desc_struct {
  type fpu_state_perm (line 804) | struct fpu_state_perm {
  type fregs_state (line 810) | struct fregs_state {
  type fxregs_state (line 822) | struct fxregs_state {
  type math_emu_info (line 850) | struct math_emu_info
  type swregs_state (line 852) | struct swregs_state {
  type xstate_header (line 871) | struct xstate_header {
  type xregs_state (line 877) | struct xregs_state {
  type fregs_state (line 884) | struct fregs_state
  type fxregs_state (line 885) | struct fxregs_state
  type swregs_state (line 886) | struct swregs_state
  type xregs_state (line 887) | struct xregs_state
  type fpstate (line 891) | struct fpstate {
  type fpu (line 907) | struct fpu {
  type perf_event (line 917) | struct perf_event
  type io_bitmap (line 919) | struct io_bitmap
  type thread_struct (line 921) | struct thread_struct {
  type sched_class (line 949) | struct sched_class
  type task_group (line 951) | struct task_group
  type rcu_node (line 953) | struct rcu_node
  type mm_struct (line 955) | struct mm_struct
  type pid (line 957) | struct pid
  type completion (line 959) | struct completion
  type cred (line 961) | struct cred
  type key (line 963) | struct key
  type nameidata (line 965) | struct nameidata
  type fs_struct (line 967) | struct fs_struct
  type files_struct (line 969) | struct files_struct
  type io_uring_task (line 971) | struct io_uring_task
  type nsproxy (line 973) | struct nsproxy
  type signal_struct (line 975) | struct signal_struct
  type sighand_struct (line 977) | struct sighand_struct
  type audit_context (line 979) | struct audit_context
  type rt_mutex_waiter (line 981) | struct rt_mutex_waiter
  type mutex_waiter (line 983) | struct mutex_waiter
  type bio_list (line 985) | struct bio_list
  type blk_plug (line 987) | struct blk_plug
  type reclaim_state (line 989) | struct reclaim_state
  type backing_dev_info (line 991) | struct backing_dev_info
  type io_context (line 993) | struct io_context
  type capture_control (line 995) | struct capture_control
  type kernel_siginfo (line 997) | struct kernel_siginfo
  type kernel_siginfo_t (line 999) | typedef struct kernel_siginfo kernel_siginfo_t;
  type css_set (line 1001) | struct css_set
  type robust_list_head (line 1003) | struct robust_list_head
  type futex_pi_state (line 1005) | struct futex_pi_state
  type perf_event_context (line 1007) | struct perf_event_context
  type mempolicy (line 1009) | struct mempolicy
  type numa_group (line 1011) | struct numa_group
  type rseq (line 1013) | struct rseq
  type task_delay_info (line 1015) | struct task_delay_info
  type ftrace_ret_stack (line 1017) | struct ftrace_ret_stack
  type mem_cgroup (line 1019) | struct mem_cgroup
  type request_queue (line 1021) | struct request_queue
  type uprobe_task (line 1023) | struct uprobe_task
  type vm_struct (line 1025) | struct vm_struct
  type bpf_local_storage (line 1027) | struct bpf_local_storage
  type bpf_run_ctx (line 1029) | struct bpf_run_ctx
  type task_struct (line 1031) | struct task_struct {
  type jump_entry (line 1297) | struct jump_entry {
  type static_key_mod (line 1303) | struct static_key_mod
  type static_key (line 1305) | struct static_key {
  type orc_entry (line 1314) | struct orc_entry {
  type bug_entry (line 1323) | struct bug_entry {
  type __s64 (line 1330) | typedef __s64 time64_t;
  type __kernel_timespec (line 1332) | struct __kernel_timespec {
  type timespec64 (line 1337) | struct timespec64 {
  type s32 (line 1342) | typedef s32 old_time32_t;
  type old_timespec32 (line 1344) | struct old_timespec32 {
  type pt_regs (line 1349) | struct pt_regs {
  type math_emu_info (line 1373) | struct math_emu_info {
  type pgdval_t (line 1378) | typedef long unsigned int pgdval_t;
  type pgprotval_t (line 1380) | typedef long unsigned int pgprotval_t;
  type pgprot (line 1382) | struct pgprot {
  type pgprot_t (line 1386) | typedef struct pgprot pgprot_t;
  type pgd_t (line 1388) | typedef struct {
  type page (line 1392) | struct page
  type address_space (line 1394) | struct address_space
  type page_pool (line 1396) | struct page_pool
  type dev_pagemap (line 1398) | struct dev_pagemap
  type page (line 1400) | struct page {
  type tracepoint_func (line 1464) | struct tracepoint_func {
  type tracepoint (line 1470) | struct tracepoint {
  type tracepoint_ptr_t (line 1481) | typedef const int tracepoint_ptr_t;
  type bpf_raw_event_map (line 1483) | struct bpf_raw_event_map {
  type xfeature (line 1491) | enum xfeature {
  type fpu_state_config (line 1514) | struct fpu_state_config {
  type cpuinfo_x86 (line 1522) | struct cpuinfo_x86 {
  type rwlock_t (line 1566) | typedef struct {
  type wait_queue_head (line 1574) | struct wait_queue_head {
  type wait_queue_head_t (line 1579) | typedef struct wait_queue_head wait_queue_head_t;
  type pid_type (line 1581) | enum pid_type {
  type pid_namespace (line 1589) | struct pid_namespace
  type upid (line 1591) | struct upid {
  type pid (line 1596) | struct pid {
  type kgid_t (line 1607) | typedef struct {
  type work_struct (line 1611) | struct work_struct
  type work_struct (line 1613) | struct work_struct
  type work_struct (line 1615) | struct work_struct {
  type workqueue_struct (line 1622) | struct workqueue_struct
  type delayed_work (line 1624) | struct delayed_work {
  type seqcount_raw_spinlock (line 1631) | struct seqcount_raw_spinlock {
  type seqcount_raw_spinlock_t (line 1636) | typedef struct seqcount_raw_spinlock seqcount_raw_spinlock_t;
  type seqlock_t (line 1638) | typedef struct {
  type hrtimer_cpu_base (line 1643) | struct hrtimer_cpu_base
  type hrtimer_clock_base (line 1645) | struct hrtimer_clock_base {
  type hrtimer_cpu_base (line 1658) | struct hrtimer_cpu_base {
  type rlimit (line 1678) | struct rlimit {
  type __signalfn_t (line 1685) | typedef __signalfn_t *__sighandler_t;
  type __restorefn_t (line 1689) | typedef __restorefn_t *__sigrestore_t;
  type sigval_t (line 1696) | typedef union sigval sigval_t;
  type kernel_siginfo (line 1753) | struct kernel_siginfo {
  type sigaction (line 1762) | struct sigaction {
  type k_sigaction (line 1769) | struct k_sigaction {
  type mm_rss_stat (line 1773) | struct mm_rss_stat {
  type cpu_itimer (line 1777) | struct cpu_itimer {
  type task_cputime_atomic (line 1782) | struct task_cputime_atomic {
  type thread_group_cputimer (line 1788) | struct thread_group_cputimer {
  type pacct_struct (line 1792) | struct pacct_struct {
  type rw_semaphore (line 1802) | struct rw_semaphore {
  type core_state (line 1812) | struct core_state
  type tty_struct (line 1814) | struct tty_struct
  type taskstats (line 1816) | struct taskstats
  type tty_audit_buf (line 1818) | struct tty_audit_buf
  type signal_struct (line 1820) | struct signal_struct {
  type rseq (line 1886) | struct rseq {
  type rq (line 1894) | struct rq
  type rq_flags (line 1896) | struct rq_flags
  type sched_class (line 1898) | struct sched_class {
  type lockdep_map (line 1927) | struct lockdep_map
  type maple_tree (line 1929) | struct maple_tree {
  type ldt_struct (line 1938) | struct ldt_struct
  type vdso_image (line 1940) | struct vdso_image
  type mm_context_t (line 1942) | typedef struct {
  type xol_area (line 1956) | struct xol_area
  type uprobes_state (line 1958) | struct uprobes_state {
  type linux_binfmt (line 1962) | struct linux_binfmt
  type kioctx_table (line 1964) | struct kioctx_table
  type user_namespace (line 1966) | struct user_namespace
  type mm_struct (line 1968) | struct mm_struct {
  type swait_queue_head (line 2030) | struct swait_queue_head {
  type completion (line 2035) | struct completion {
  type kernel_cap_struct (line 2040) | struct kernel_cap_struct {
  type kernel_cap_t (line 2044) | typedef struct kernel_cap_struct kernel_cap_t;
  type user_struct (line 2046) | struct user_struct
  type ucounts (line 2048) | struct ucounts
  type group_info (line 2050) | struct group_info
  type cred (line 2052) | struct cred {
  type key_serial_t (line 2087) | typedef int32_t key_serial_t;
  type key_perm_t (line 2089) | typedef uint32_t key_perm_t;
  type key_type (line 2091) | struct key_type
  type key_tag (line 2093) | struct key_tag
  type keyring_index_key (line 2095) | struct keyring_index_key {
  type assoc_array_ptr (line 2114) | struct assoc_array_ptr
  type assoc_array (line 2116) | struct assoc_array {
  type key_user (line 2121) | struct key_user
  type key_restriction (line 2123) | struct key_restriction
  type key (line 2125) | struct key {
  type sighand_struct (line 2167) | struct sighand_struct {
  type io_context (line 2174) | struct io_context {
  type uprobe_task_state (line 2180) | enum uprobe_task_state {
  type arch_uprobe_task (line 2187) | struct arch_uprobe_task {
  type uprobe (line 2193) | struct uprobe
  type return_instance (line 2195) | struct return_instance
  type uprobe_task (line 2197) | struct uprobe_task {
  type vm_struct (line 2215) | struct vm_struct {
  type kstat (line 2227) | struct kstat {
  type kref (line 2250) | struct kref {
  type rcu_segcblist (line 2254) | struct rcu_segcblist {
  type srcu_node (line 2263) | struct srcu_node
  type srcu_struct (line 2265) | struct srcu_struct
  type srcu_data (line 2267) | struct srcu_data {
  type srcu_node (line 2293) | struct srcu_node {
  type srcu_struct (line 2303) | struct srcu_struct {
  type return_instance (line 2331) | struct return_instance {
  type vdso_image (line 2340) | struct vdso_image {
  type xarray (line 2362) | struct xarray {
  type u32 (line 2368) | typedef u32 errseq_t;
  type address_space_operations (line 2370) | struct address_space_operations
  type address_space (line 2372) | struct address_space {
  type folio (line 2390) | struct folio {
  type vfsmount (line 2419) | struct vfsmount
  type path (line 2421) | struct path {
  type fown_struct (line 2426) | struct fown_struct {
  type file_ra_state (line 2435) | struct file_ra_state {
  type file (line 2444) | struct file {
  type userfaultfd_ctx (line 2471) | struct userfaultfd_ctx
  type vm_userfaultfd_ctx (line 2473) | struct vm_userfaultfd_ctx {
  type anon_vma_name (line 2477) | struct anon_vma_name {
  type anon_vma (line 2482) | struct anon_vma
  type vm_operations_struct (line 2484) | struct vm_operations_struct
  type vm_area_struct (line 2486) | struct vm_area_struct {
  type vm_fault_t (line 2510) | typedef unsigned int vm_fault_t;
  type page_entry_size (line 2512) | enum page_entry_size {
  type vm_fault (line 2518) | struct vm_fault
  type vm_operations_struct (line 2520) | struct vm_operations_struct {
  type iovec (line 2539) | struct iovec {
  type kvec (line 2544) | struct kvec {
  type bio_vec (line 2549) | struct bio_vec {
  type iov_iter (line 2555) | struct iov_iter {
  type wait_page_queue (line 2583) | struct wait_page_queue
  type kiocb (line 2585) | struct kiocb {
  type hlist_bl_node (line 2595) | struct hlist_bl_node
  type hlist_bl_head (line 2597) | struct hlist_bl_head {
  type hlist_bl_node (line 2601) | struct hlist_bl_node {
  type lockref (line 2606) | struct lockref {
  type qstr (line 2615) | struct qstr {
  type dentry_operations (line 2626) | struct dentry_operations
  type dentry (line 2628) | struct dentry {
  type posix_acl (line 2654) | struct posix_acl
  type inode_operations (line 2656) | struct inode_operations
  type bdi_writeback (line 2658) | struct bdi_writeback
  type file_lock_context (line 2660) | struct file_lock_context
  type cdev (line 2662) | struct cdev
  type fsnotify_mark_connector (line 2664) | struct fsnotify_mark_connector
  type inode (line 2666) | struct inode {
  type dentry_operations (line 2735) | struct dentry_operations {
  type mtd_info (line 2754) | struct mtd_info
  type qsize_t (line 2756) | typedef long long int qsize_t;
  type quota_format_type (line 2758) | struct quota_format_type
  type mem_dqinfo (line 2760) | struct mem_dqinfo {
  type quota_format_ops (line 2772) | struct quota_format_ops
  type quota_info (line 2774) | struct quota_info {
  type rcu_sync (line 2782) | struct rcu_sync {
  type rcuwait (line 2789) | struct rcuwait {
  type percpu_rw_semaphore (line 2793) | struct percpu_rw_semaphore {
  type sb_writers (line 2802) | struct sb_writers {
  type uuid_t (line 2808) | typedef struct {
  type shrink_control (line 2812) | struct shrink_control
  type shrinker (line 2814) | struct shrinker {
  type list_lru_node (line 2825) | struct list_lru_node
  type list_lru (line 2827) | struct list_lru {
  type super_operations (line 2835) | struct super_operations
  type dquot_operations (line 2837) | struct dquot_operations
  type quotactl_ops (line 2839) | struct quotactl_ops
  type export_operations (line 2841) | struct export_operations
  type xattr_handler (line 2843) | struct xattr_handler
  type block_device (line 2845) | struct block_device
  type super_block (line 2847) | struct super_block {
  type vfsmount (line 2918) | struct vfsmount {
  type shrink_control (line 2925) | struct shrink_control {
  type list_lru_one (line 2933) | struct list_lru_one {
  type list_lru_node (line 2938) | struct list_lru_node {
  type migrate_mode (line 2948) | enum migrate_mode {
  type exception_table_entry (line 2955) | struct exception_table_entry {
  type key_tag (line 2961) | struct key_tag {
  type key (line 2967) | struct key
  type key_preparsed_payload (line 2969) | struct key_preparsed_payload
  type key_match_data (line 2971) | struct key_match_data
  type kernel_pkey_params (line 2973) | struct kernel_pkey_params
  type kernel_pkey_query (line 2975) | struct kernel_pkey_query
  type key_type (line 2977) | struct key_type {
  type key (line 3001) | struct key
  type key_type (line 3001) | struct key_type
  type key (line 3001) | struct key
  type key_restriction (line 3003) | struct key_restriction {
  type percpu_counter (line 3009) | struct percpu_counter {
  type user_struct (line 3016) | struct user_struct {
  type group_info (line 3027) | struct group_info {
  type core_thread (line 3033) | struct core_thread {
  type core_state (line 3038) | struct core_state {
  type delayed_call (line 3044) | struct delayed_call {
  type vfsuid_t (line 3049) | typedef struct {
  type vfsgid_t (line 3053) | typedef struct {
  type iattr (line 3057) | struct iattr {
  type __kernel_uid32_t (line 3075) | typedef __kernel_uid32_t projid_t;
  type kprojid_t (line 3077) | typedef struct {
  type quota_type (line 3081) | enum quota_type {
  type kqid (line 3087) | struct kqid {
  type mem_dqblk (line 3096) | struct mem_dqblk {
  type dquot (line 3108) | struct dquot {
  type quota_format_type (line 3123) | struct quota_format_type {
  type quota_format_ops (line 3130) | struct quota_format_ops {
  type dquot_operations (line 3141) | struct dquot_operations {
  type qc_dqblk (line 3155) | struct qc_dqblk {
  type qc_type_state (line 3174) | struct qc_type_state {
  type qc_state (line 3187) | struct qc_state {
  type qc_info (line 3192) | struct qc_info {
  type quotactl_ops (line 3203) | struct quotactl_ops {
  type module_state (line 3217) | enum module_state {
  type kset (line 3224) | struct kset
  type kobj_type (line 3226) | struct kobj_type
  type kernfs_node (line 3228) | struct kernfs_node
  type kobject (line 3230) | struct kobject {
  type module_param_attrs (line 3245) | struct module_param_attrs
  type module_kobject (line 3247) | struct module_kobject {
  type latch_tree_node (line 3255) | struct latch_tree_node {
  type mod_tree_node (line 3259) | struct mod_tree_node {
  type module_layout (line 3264) | struct module_layout {
  type mod_arch_specific (line 3273) | struct mod_arch_specific {
  type elf64_sym (line 3279) | struct elf64_sym
  type Elf64_Sym (line 3281) | typedef struct elf64_sym Elf64_Sym;
  type mod_kallsyms (line 3283) | struct mod_kallsyms {
  type module_attribute (line 3290) | struct module_attribute
  type kernel_param (line 3292) | struct kernel_param
  type module_sect_attrs (line 3294) | struct module_sect_attrs
  type module_notes_attrs (line 3296) | struct module_notes_attrs
  type trace_event_call (line 3298) | struct trace_event_call
  type trace_eval_map (line 3300) | struct trace_eval_map
  type error_injection_entry (line 3302) | struct error_injection_entry
  type module (line 3304) | struct module {
  type writeback_control (line 3382) | struct writeback_control
  type readahead_control (line 3384) | struct readahead_control
  type swap_info_struct (line 3386) | struct swap_info_struct
  type address_space_operations (line 3388) | struct address_space_operations {
  type fiemap_extent_info (line 3411) | struct fiemap_extent_info
  type fileattr (line 3413) | struct fileattr
  type inode_operations (line 3415) | struct inode_operations {
  type file_lock_context (line 3442) | struct file_lock_context {
  type file_lock_operations (line 3449) | struct file_lock_operations {
  type nlm_lockowner (line 3454) | struct nlm_lockowner
  type nfs_lock_info (line 3456) | struct nfs_lock_info {
  type nfs4_lock_state (line 3462) | struct nfs4_lock_state
  type nfs4_lock_info (line 3464) | struct nfs4_lock_info {
  type fasync_struct (line 3468) | struct fasync_struct
  type lock_manager_operations (line 3470) | struct lock_manager_operations
  type file_lock (line 3472) | struct file_lock {
  type lock_manager_operations (line 3503) | struct lock_manager_operations {
  type fasync_struct (line 3517) | struct fasync_struct {
  type kstatfs (line 3526) | struct kstatfs
  type super_operations (line 3528) | struct super_operations {
  type iomap (line 3553) | struct iomap
  type fid (line 3555) | struct fid
  type export_operations (line 3557) | struct export_operations {
  type xattr_handler (line 3571) | struct xattr_handler {
  type dir_context (line 3580) | struct dir_context
  type dir_context (line 3582) | struct dir_context {
  type p_log (line 3587) | struct p_log
  type fs_parameter (line 3589) | struct fs_parameter
  type fs_parse_result (line 3591) | struct fs_parse_result
  type p_log (line 3593) | struct p_log
  type fs_parameter_spec (line 3593) | struct fs_parameter_spec
  type fs_parameter (line 3593) | struct fs_parameter
  type fs_parse_result (line 3593) | struct fs_parse_result
  type fs_parameter_spec (line 3595) | struct fs_parameter_spec {
  type membuf (line 3603) | struct membuf {
  type user_regset (line 3608) | struct user_regset
  type task_struct (line 3610) | struct task_struct
  type user_regset (line 3610) | struct user_regset
  type task_struct (line 3612) | struct task_struct
  type user_regset (line 3612) | struct user_regset
  type membuf (line 3612) | struct membuf
  type task_struct (line 3614) | struct task_struct
  type user_regset (line 3614) | struct user_regset
  type task_struct (line 3616) | struct task_struct
  type user_regset (line 3616) | struct user_regset
  type user_regset (line 3618) | struct user_regset {
  type kernfs_root (line 3630) | struct kernfs_root
  type kernfs_elem_dir (line 3632) | struct kernfs_elem_dir {
  type kernfs_elem_symlink (line 3639) | struct kernfs_elem_symlink {
  type kernfs_ops (line 3643) | struct kernfs_ops
  type kernfs_open_node (line 3645) | struct kernfs_open_node
  type kernfs_elem_attr (line 3647) | struct kernfs_elem_attr {
  type kernfs_iattrs (line 3654) | struct kernfs_iattrs
  type kernfs_node (line 3656) | struct kernfs_node {
  type kernfs_open_file (line 3677) | struct kernfs_open_file
  type kernfs_ops (line 3679) | struct kernfs_ops {
  type kernfs_open_file (line 3694) | struct kernfs_open_file {
  type kobj_ns_type (line 3710) | enum kobj_ns_type {
  type sock (line 3716) | struct sock
  type kobj_ns_type_operations (line 3718) | struct kobj_ns_type_operations {
  type attribute (line 3727) | struct attribute {
  type bin_attribute (line 3735) | struct bin_attribute
  type attribute_group (line 3737) | struct attribute_group {
  type bin_attribute (line 3745) | struct bin_attribute {
  type sysfs_ops (line 3755) | struct sysfs_ops {
  type kset_uevent_ops (line 3760) | struct kset_uevent_ops
  type kset (line 3762) | struct kset {
  type kobj_type (line 3769) | struct kobj_type {
  type kobj_uevent_env (line 3778) | struct kobj_uevent_env {
  type kset_uevent_ops (line 3786) | struct kset_uevent_ops {
  type __u64 (line 3792) | typedef __u64 Elf64_Addr;
  type __u16 (line 3794) | typedef __u16 Elf64_Half;
  type __u32 (line 3796) | typedef __u32 Elf64_Word;
  type __u64 (line 3798) | typedef __u64 Elf64_Xword;
  type elf64_sym (line 3800) | struct elf64_sym {
  type kernel_param_ops (line 3809) | struct kernel_param_ops {
  type kparam_string (line 3816) | struct kparam_string
  type kparam_array (line 3818) | struct kparam_array
  type kernel_param (line 3820) | struct kernel_param {
  type kparam_string (line 3834) | struct kparam_string {
  type kparam_array (line 3839) | struct kparam_array {
  type error_injection_entry (line 3847) | struct error_injection_entry {
  type module_attribute (line 3852) | struct module_attribute {
  type trace_eval_map (line 3861) | struct trace_eval_map {
  type xstate_copy_mode (line 3867) | enum xstate_copy_mode {
  type lockdep_wait_type (line 3873) | enum lockdep_wait_type {
  type lockdep_lock_type (line 3882) | enum lockdep_lock_type {
  type tlb_infos (line 3902) | enum tlb_infos {
  type pcpu_fc (line 3907) | enum pcpu_fc {
  type hrtimer_base_type (line 3914) | enum hrtimer_base_type {
  type node_states (line 3926) | enum node_states {
  type rseq_cs_flags_bit (line 3945) | enum rseq_cs_flags_bit {
  type perf_event_task_context (line 3955) | enum perf_event_task_context {
  type rseq_event_mask_bits (line 3962) | enum rseq_event_mask_bits {
  type migratetype (line 3968) | enum migratetype {
  type numa_stat_item (line 3979) | enum numa_stat_item {
  type zone_stat_item (line 3989) | enum zone_stat_item {
  type node_stat_item (line 4004) | enum node_stat_item {
  type lru_list (line 4055) | enum lru_list {
  type vmscan_throttle_state (line 4064) | enum vmscan_throttle_state {
  type zone_watermarks (line 4072) | enum zone_watermarks {
  type cpumask (line 4104) | struct cpumask
  type irq_affinity (line 4106) | struct irq_affinity {
  type irq_affinity_desc (line 4115) | struct irq_affinity_desc {
  type kmalloc_cache_type (line 4120) | enum kmalloc_cache_type {
  type node_vectors (line 4128) | struct node_vectors {
  type u64 (line 4138) | typedef u64 dma_addr_t;
  type range (line 4140) | struct range {
  type pteval_t (line 4145) | typedef long unsigned int pteval_t;
  type pmdval_t (line 4147) | typedef long unsigned int pmdval_t;
  type pudval_t (line 4149) | typedef long unsigned int pudval_t;
  type pte_t (line 4151) | typedef struct {
  type pud_t (line 4155) | typedef struct {
  type pmd_t (line 4159) | typedef struct {
  type vmem_altmap (line 4163) | struct vmem_altmap {
  type percpu_ref_data (line 4172) | struct percpu_ref_data
  type percpu_ref (line 4174) | struct percpu_ref {
  type memory_type (line 4179) | enum memory_type {
  type dev_pagemap_ops (line 4187) | struct dev_pagemap_ops
  type dev_pagemap (line 4189) | struct dev_pagemap {
  type fault_flag (line 4205) | enum fault_flag {
  type vm_fault (line 4220) | struct vm_fault {
  type percpu_ref (line 4242) | struct percpu_ref
  type percpu_ref_data (line 4244) | struct percpu_ref_data {
  type dev_pagemap_ops (line 4254) | struct dev_pagemap_ops {
  type compound_dtor_id (line 4286) | enum compound_dtor_id {
  type vm_event_item (line 4294) | enum vm_event_item {
  type fwnode_operations (line 4405) | struct fwnode_operations
  type device (line 4407) | struct device
  type fwnode_handle (line 4409) | struct fwnode_handle {
  type dev_dma_attr (line 4418) | enum dev_dma_attr {
  type fwnode_reference_args (line 4424) | struct fwnode_reference_args
  type fwnode_endpoint (line 4426) | struct fwnode_endpoint
  type fwnode_operations (line 4428) | struct fwnode_operations {
  type dl_dev_state (line 4453) | enum dl_dev_state {
  type dev_links_info (line 4460) | struct dev_links_info {
  type pm_message (line 4467) | struct pm_message {
  type pm_message_t (line 4471) | typedef struct pm_message pm_message_t;
  type rpm_request (line 4473) | enum rpm_request {
  type rpm_status (line 4481) | enum rpm_status {
  type wakeup_source (line 4489) | struct wakeup_source
  type wake_irq (line 4491) | struct wake_irq
  type pm_subsys_data (line 4493) | struct pm_subsys_data
  type dev_pm_qos (line 4495) | struct dev_pm_qos
  type dev_pm_info (line 4497) | struct dev_pm_info {
  type irq_domain (line 4553) | struct irq_domain
  type msi_device_data (line 4555) | struct msi_device_data
  type dev_msi_info (line 4557) | struct dev_msi_info {
  type dev_archdata (line 4562) | struct dev_archdata {}
  type device_removable (line 4564) | enum device_removable {
  type device_private (line 4571) | struct device_private
  type device_type (line 4573) | struct device_type
  type bus_type (line 4575) | struct bus_type
  type device_driver (line 4577) | struct device_driver
  type dev_pm_domain (line 4579) | struct dev_pm_domain
  type dma_map_ops (line 4581) | struct dma_map_ops
  type bus_dma_region (line 4583) | struct bus_dma_region
  type device_dma_parameters (line 4585) | struct device_dma_parameters
  type cma (line 4587) | struct cma
  type io_tlb_mem (line 4589) | struct io_tlb_mem
  type device_node (line 4591) | struct device_node
  type class (line 4593) | struct class
  type iommu_group (line 4595) | struct iommu_group
  type dev_iommu (line 4597) | struct dev_iommu
  type device_physical_location (line 4599) | struct device_physical_location
  type device (line 4601) | struct device {
  type fwnode_endpoint (line 4647) | struct fwnode_endpoint {
  type fwnode_reference_args (line 4653) | struct fwnode_reference_args {
  type cpu_idle_type (line 4659) | enum cpu_idle_type {
  type dev_pm_ops (line 4684) | struct dev_pm_ops {
  type pm_subsys_data (line 4710) | struct pm_subsys_data {
  type wakeup_source (line 4715) | struct wakeup_source {
  type dev_pm_domain (line 4738) | struct dev_pm_domain {
  type iommu_ops (line 4747) | struct iommu_ops
  type subsys_private (line 4749) | struct subsys_private
  type bus_type (line 4751) | struct bus_type {
  type probe_type (line 4778) | enum probe_type {
  type of_device_id (line 4784) | struct of_device_id
  type acpi_device_id (line 4786) | struct acpi_device_id
  type driver_private (line 4788) | struct driver_private
  type device_driver (line 4790) | struct device_driver {
  type iommu_cap (line 4812) | enum iommu_cap {
  type iommu_dev_features (line 4819) | enum iommu_dev_features {
  type iommu_domain (line 4824) | struct iommu_domain
  type iommu_device (line 4826) | struct iommu_device
  type of_phandle_args (line 4828) | struct of_phandle_args
  type iommu_sva (line 4830) | struct iommu_sva
  type iommu_fault_event (line 4832) | struct iommu_fault_event
  type iommu_page_response (line 4834) | struct iommu_page_response
  type iommu_domain_ops (line 4836) | struct iommu_domain_ops
  type iommu_ops (line 4838) | struct iommu_ops {
  type device_type (line 4860) | struct device_type {
  type class (line 4869) | struct class {
  type of_device_id (line 4887) | struct of_device_id {
  type kernel_ulong_t (line 4894) | typedef long unsigned int kernel_ulong_t;
  type acpi_device_id (line 4896) | struct acpi_device_id {
  type device_dma_parameters (line 4903) | struct device_dma_parameters {
  type device_physical_location_panel (line 4909) | enum device_physical_location_panel {
  type device_physical_location_vertical_position (line 4919) | enum device_physical_location_vertical_position {
  type device_physical_location_horizontal_position (line 4925) | enum device_physical_location_horizontal_position {
  type device_physical_location (line 4931) | struct device_physical_location {
  type dma_data_direction (line 4939) | enum dma_data_direction {
  type sg_table (line 4946) | struct sg_table
  type scatterlist (line 4948) | struct scatterlist
  type dma_map_ops (line 4950) | struct dma_map_ops {
  type bus_dma_region (line 4978) | struct bus_dma_region {
  type io_tlb_area (line 4985) | struct io_tlb_area
  type io_tlb_slot (line 4987) | struct io_tlb_slot
  type io_tlb_mem (line 4989) | struct io_tlb_mem {
  type scatterlist (line 5005) | struct scatterlist {
  type sg_table (line 5013) | struct sg_table {
  type pci_p2pdma_map_type (line 5019) | enum pci_p2pdma_map_type {
  type pci_p2pdma_map_state (line 5026) | struct pci_p2pdma_map_state {
  type u16 (line 5032) | typedef u16 uint16_t;
  type xbc_node (line 5034) | struct xbc_node {
  type pollfd (line 5041) | struct pollfd {
  type seq_operations (line 5047) | struct seq_operations {
  type perf_event_state (line 5054) | enum perf_event_state {
  type local_t (line 5063) | typedef struct {
  type local64_t (line 5067) | typedef struct {
  type perf_event_attr (line 5071) | struct perf_event_attr {
  type hw_perf_event_extra (line 5149) | struct hw_perf_event_extra {
  type arch_hw_breakpoint (line 5156) | struct arch_hw_breakpoint {
  type rhash_head (line 5163) | struct rhash_head {
  type rhlist_head (line 5167) | struct rhlist_head {
  type hw_perf_event (line 5172) | struct hw_perf_event {
  type irq_work (line 5230) | struct irq_work {
  type perf_addr_filters_head (line 5236) | struct perf_addr_filters_head {
  type perf_sample_data (line 5242) | struct perf_sample_data
  type perf_event (line 5244) | struct perf_event
  type perf_sample_data (line 5244) | struct perf_sample_data
  type pt_regs (line 5244) | struct pt_regs
  type ftrace_ops (line 5246) | struct ftrace_ops
  type ftrace_regs (line 5248) | struct ftrace_regs
  type ftrace_ops (line 5250) | struct ftrace_ops
  type ftrace_regs (line 5250) | struct ftrace_regs
  type ftrace_hash (line 5252) | struct ftrace_hash
  type ftrace_ops_hash (line 5254) | struct ftrace_ops_hash {
  type ftrace_ops_cmd (line 5260) | enum ftrace_ops_cmd {
  type ftrace_ops (line 5266) | struct ftrace_ops
  type ftrace_ops_cmd (line 5266) | enum ftrace_ops_cmd
  type ftrace_ops (line 5268) | struct ftrace_ops {
  type pmu (line 5283) | struct pmu
  type perf_buffer (line 5285) | struct perf_buffer
  type perf_addr_filter_range (line 5287) | struct perf_addr_filter_range
  type bpf_prog (line 5289) | struct bpf_prog
  type event_filter (line 5291) | struct event_filter
  type perf_cgroup (line 5293) | struct perf_cgroup
  type perf_event (line 5295) | struct perf_event {
  type idr (line 5373) | struct idr {
  type proc_ns_operations (line 5379) | struct proc_ns_operations
  type ns_common (line 5381) | struct ns_common {
  type kmem_cache (line 5388) | struct kmem_cache
  type fs_pin (line 5390) | struct fs_pin
  type pid_namespace (line 5392) | struct pid_namespace {
  type uid_gid_extent (line 5407) | struct uid_gid_extent {
  type uid_gid_map (line 5413) | struct uid_gid_map {
  type ctl_table (line 5424) | struct ctl_table
  type ctl_table_root (line 5426) | struct ctl_table_root
  type ctl_table_set (line 5428) | struct ctl_table_set
  type ctl_dir (line 5430) | struct ctl_dir
  type ctl_node (line 5432) | struct ctl_node
  type ctl_table_header (line 5434) | struct ctl_table_header {
  type ctl_dir (line 5453) | struct ctl_dir {
  type ctl_table_set (line 5458) | struct ctl_table_set {
  type user_namespace (line 5463) | struct user_namespace {
  type rcu_work (line 5485) | struct rcu_work {
  type task_cputime (line 5491) | struct task_cputime {
  type ucounts (line 5497) | struct ucounts {
  type uts_namespace (line 5506) | struct uts_namespace
  type ipc_namespace (line 5508) | struct ipc_namespace
  type mnt_namespace (line 5510) | struct mnt_namespace
  type net (line 5512) | struct net
  type time_namespace (line 5514) | struct time_namespace
  type cgroup_namespace (line 5516) | struct cgroup_namespace
  type nsproxy (line 5518) | struct nsproxy {
  type cgroup_subsys_state (line 5530) | struct cgroup_subsys_state
  type cgroup (line 5532) | struct cgroup
  type css_set (line 5534) | struct css_set {
  type perf_event_groups (line 5559) | struct perf_event_groups {
  type perf_event_context (line 5564) | struct perf_event_context {
  type ftrace_ret_stack (line 5597) | struct ftrace_ret_stack {
  type cgroup_subsys (line 5604) | struct cgroup_subsys
  type cgroup_subsys_state (line 5606) | struct cgroup_subsys_state {
  type cgroup_file (line 5622) | struct cgroup_file {
  type cgroup_base_stat (line 5628) | struct cgroup_base_stat {
  type bpf_prog_array (line 5632) | struct bpf_prog_array
  type cgroup_bpf (line 5634) | struct cgroup_bpf {
  type cgroup_freezer_state (line 5644) | struct cgroup_freezer_state {
  type cgroup_root (line 5651) | struct cgroup_root
  type cgroup_rstat_cpu (line 5653) | struct cgroup_rstat_cpu
  type psi_group (line 5655) | struct psi_group
  type cgroup (line 5657) | struct cgroup {
  type ctl_table (line 5700) | struct ctl_table
  type ctl_table_poll (line 5702) | struct ctl_table_poll
  type ctl_table (line 5704) | struct ctl_table {
  type ctl_table_poll (line 5716) | struct ctl_table_poll {
  type ctl_node (line 5721) | struct ctl_node {
  type ctl_table_root (line 5726) | struct ctl_table_root {
  type taskstats (line 5733) | struct taskstats {
  type file (line 5791) | struct file
  type poll_table_struct (line 5791) | struct poll_table_struct
  type poll_table_struct (line 5793) | struct poll_table_struct {
  type seq_file (line 5798) | struct seq_file {
  type trace_event_functions (line 5813) | struct trace_event_functions
  type trace_event (line 5815) | struct trace_event {
  type trace_event_class (line 5822) | struct trace_event_class
  type trace_event_call (line 5824) | struct trace_event_call {
  type cgroup_namespace (line 5846) | struct cgroup_namespace {
  type nsset (line 5853) | struct nsset
  type proc_ns_operations (line 5855) | struct proc_ns_operations {
  type ftrace_regs (line 5866) | struct ftrace_regs {
  type ftrace_hash (line 5870) | struct ftrace_hash {
  type seq_buf (line 5878) | struct seq_buf {
  type trace_seq (line 5885) | struct trace_seq {
  type perf_sw_ids (line 5891) | enum perf_sw_ids {
  type perf_branch_entry (line 5924) | struct perf_branch_entry {
  type u32 (line 5948) | typedef u32 phandle;
  type property (line 5950) | struct property
  type device_node (line 5952) | struct device_node {
  type perf_cpu_context (line 5966) | struct perf_cpu_context
  type perf_output_handle (line 5968) | struct perf_output_handle
  type pmu (line 5970) | struct pmu {
  type perf_regs (line 6012) | struct perf_regs {
  type u64_stats_sync (line 6017) | struct u64_stats_sync {}
  type psi_group (line 6019) | struct psi_group {}
  type cgroup_taskset (line 6021) | struct cgroup_taskset
  type cftype (line 6023) | struct cftype
  type cgroup_subsys (line 6025) | struct cgroup_subsys {
  type cgroup_rstat_cpu (line 6058) | struct cgroup_rstat_cpu {
  type cgroup_root (line 6066) | struct cgroup_root {
  type cftype (line 6079) | struct cftype {
  type perf_callchain_entry (line 6103) | struct perf_callchain_entry {
  type perf_raw_frag (line 6110) | struct perf_raw_frag {
  type perf_raw_record (line 6120) | struct perf_raw_record {
  type perf_branch_stack (line 6125) | struct perf_branch_stack {
  type perf_cpu_context (line 6131) | struct perf_cpu_context {
  type perf_output_handle (line 6150) | struct perf_output_handle {
  type perf_addr_filter_range (line 6163) | struct perf_addr_filter_range {
  type perf_sample_data (line 6168) | struct perf_sample_data {
  type prog_entry (line 6207) | struct prog_entry
  type event_filter (line 6209) | struct event_filter {
  type perf_cgroup_info (line 6214) | struct perf_cgroup_info
  type perf_cgroup (line 6216) | struct perf_cgroup {
  type perf_cgroup_info (line 6221) | struct perf_cgroup_info {
  type trace_entry (line 6228) | struct trace_entry {
  type trace_array (line 6235) | struct trace_array
  type tracer (line 6237) | struct tracer
  type array_buffer (line 6239) | struct array_buffer
  type ring_buffer_iter (line 6241) | struct ring_buffer_iter
  type trace_iterator (line 6243) | struct trace_iterator {
  type trace_buffer (line 6271) | struct trace_buffer
  type trace_array_cpu (line 6273) | struct trace_array_cpu
  type array_buffer (line 6275) | struct array_buffer {
  type trace_pid_list (line 6283) | struct trace_pid_list
  type trace_event_file (line 6285) | struct trace_event_file
  type trace_options (line 6287) | struct trace_options
  type trace_func_repeats (line 6289) | struct trace_func_repeats
  type trace_array (line 6291) | struct trace_array {
  type print_line_t (line 6338) | enum print_line_t {
  type tracer_flags (line 6345) | struct tracer_flags
  type tracer (line 6347) | struct tracer {
  type print_line_t (line 6372) | enum print_line_t
  type trace_iterator (line 6372) | struct trace_iterator
  type trace_event (line 6372) | struct trace_event
  type trace_event_functions (line 6374) | struct trace_event_functions {
  type trace_reg (line 6381) | enum trace_reg {
  type trace_event_fields (line 6392) | struct trace_event_fields {
  type trace_event_class (line 6406) | struct trace_event_class {
  type trace_subsystem_dir (line 6417) | struct trace_subsystem_dir
  type trace_event_file (line 6419) | struct trace_event_file {
  type dynevent_type (line 6459) | enum dynevent_type {
  type dynevent_cmd (line 6465) | struct dynevent_cmd
  type dynevent_cmd (line 6467) | struct dynevent_cmd
  type dynevent_cmd (line 6469) | struct dynevent_cmd {
  type event_subsystem (line 6478) | struct event_subsystem
  type trace_subsystem_dir (line 6480) | struct trace_subsystem_dir {
  type property (line 6489) | struct property {
  type trace_pid_list (line 6506) | struct trace_pid_list {
  type trace_array_cpu (line 6516) | struct trace_array_cpu {
  type trace_option_dentry (line 6536) | struct trace_option_dentry
  type trace_options (line 6538) | struct trace_options {
  type tracer_opt (line 6543) | struct tracer_opt
  type trace_option_dentry (line 6545) | struct trace_option_dentry {
  type trace_func_repeats (line 6552) | struct trace_func_repeats {
  type tracer_opt (line 6563) | struct tracer_opt {
  type tracer_flags (line 6568) | struct tracer_flags {
  type trace_iterator_bits (line 6574) | enum trace_iterator_bits {
  type event_subsystem (line 6606) | struct event_subsystem {
  type perf_branch_sample_type_shift (line 6613) | enum perf_branch_sample_type_shift {
  type perf_event_mmap_page (line 6636) | struct perf_event_mmap_page {
  type perf_event_header (line 6676) | struct perf_event_header {
  type perf_event_type (line 6682) | enum perf_event_type {
  type refcount_saturation_type (line 6707) | enum refcount_saturation_type {
  type pageflags (line 6715) | enum pageflags {
  type perf_buffer (line 6758) | struct perf_buffer {
  type sysinfo (line 6794) | struct sysinfo {
  type p4dval_t (line 6811) | typedef long unsigned int p4dval_t;
  type p4d_t (line 6813) | typedef struct {
  type static_key_true (line 6817) | struct static_key_true {
  type static_key_false (line 6821) | struct static_key_false {
  type cacheline_padding (line 6825) | struct cacheline_padding {
  type wait_queue_entry (line 6829) | struct wait_queue_entry
  type wait_queue_entry (line 6831) | struct wait_queue_entry
  type wait_queue_entry (line 6833) | struct wait_queue_entry {
  type wait_queue_entry_t (line 6840) | typedef struct wait_queue_entry wait_queue_entry_t;
  type mem_cgroup_id (line 6842) | struct mem_cgroup_id {
  type page_counter (line 6847) | struct page_counter {
  type vmpressure (line 6876) | struct vmpressure {
  type mem_cgroup_threshold_ary (line 6887) | struct mem_cgroup_threshold_ary
  type mem_cgroup_thresholds (line 6889) | struct mem_cgroup_thresholds {
  type fprop_global (line 6894) | struct fprop_global {
  type wb_domain (line 6900) | struct wb_domain {
  type wb_completion (line 6909) | struct wb_completion {
  type memcg_cgwb_frn (line 6914) | struct memcg_cgwb_frn {
  type deferred_split (line 6921) | struct deferred_split {
  type memcg_vmstats (line 6927) | struct memcg_vmstats
  type obj_cgroup (line 6929) | struct obj_cgroup
  type memcg_vmstats_percpu (line 6931) | struct memcg_vmstats_percpu
  type mem_cgroup_per_node (line 6933) | struct mem_cgroup_per_node
  type mem_cgroup (line 6935) | struct mem_cgroup {
  type maple_alloc (line 7004) | struct maple_alloc {
  type maple_enode (line 7011) | struct maple_enode
  type ma_state (line 7013) | struct ma_state {
  type anon_vma (line 7057) | struct anon_vma {
  type mempolicy (line 7067) | struct mempolicy {
  type vma_iterator (line 7079) | struct vma_iterator {
  type swp_entry_t (line 7083) | typedef struct {
  type free_area (line 7087) | struct free_area {
  type pglist_data (line 7092) | struct pglist_data
  type lruvec (line 7094) | struct lruvec {
  type per_cpu_pages (line 7105) | struct per_cpu_pages
  type per_cpu_zonestat (line 7107) | struct per_cpu_zonestat
  type zone (line 7109) | struct zone {
  type zoneref (line 7150) | struct zoneref {
  type zonelist (line 7155) | struct zonelist {
  type zone_type (line 7159) | enum zone_type {
  type per_cpu_nodestat (line 7167) | struct per_cpu_nodestat
  type memory_tier (line 7169) | struct memory_tier
  type pglist_data (line 7171) | struct pglist_data {
  type per_cpu_pages (line 7227) | struct per_cpu_pages {
  type per_cpu_zonestat (line 7241) | struct per_cpu_zonestat {
  type per_cpu_nodestat (line 7247) | struct per_cpu_nodestat {
  type plist_head (line 7252) | struct plist_head {
  type bio (line 7256) | struct bio
  type bio_list (line 7258) | struct bio_list {
  type request (line 7263) | struct request
  type blk_plug (line 7265) | struct blk_plug {
  type reclaim_state (line 7276) | struct reclaim_state {
  type fprop_local_percpu (line 7280) | struct fprop_local_percpu {
  type wb_reason (line 7286) | enum wb_reason {
  type bdi_writeback (line 7298) | struct bdi_writeback {
  type backing_dev_info (line 7339) | struct backing_dev_info {
  type blk_bounce (line 7364) | enum blk_bounce {
  type blk_zoned_model (line 7369) | enum blk_zoned_model {
  type queue_limits (line 7375) | struct queue_limits {
  type elevator_queue (line 7407) | struct elevator_queue
  type blk_queue_stats (line 7409) | struct blk_queue_stats
  type rq_qos (line 7411) | struct rq_qos
  type blk_mq_ops (line 7413) | struct blk_mq_ops
  type blk_mq_ctx (line 7415) | struct blk_mq_ctx
  type gendisk (line 7417) | struct gendisk
  type blk_stat_callback (line 7419) | struct blk_stat_callback
  type blk_rq_stat (line 7421) | struct blk_rq_stat
  type blk_mq_tags (line 7423) | struct blk_mq_tags
  type blkcg_gq (line 7425) | struct blkcg_gq
  type blk_trace (line 7427) | struct blk_trace
  type blk_flush_queue (line 7429) | struct blk_flush_queue
  type throtl_data (line 7431) | struct throtl_data
  type blk_mq_tag_set (line 7433) | struct blk_mq_tag_set
  type request_queue (line 7435) | struct request_queue {
  type wait_page_queue (line 7511) | struct wait_page_queue {
  type writeback_sync_modes (line 7517) | enum writeback_sync_modes {
  type swap_iocb (line 7522) | struct swap_iocb
  type writeback_control (line 7524) | struct writeback_control {
  type readahead_control (line 7550) | struct readahead_control {
  type swap_cluster_info (line 7561) | struct swap_cluster_info {
  type swap_cluster_list (line 7567) | struct swap_cluster_list {
  type percpu_cluster (line 7572) | struct percpu_cluster
  type swap_info_struct (line 7574) | struct swap_info_struct {
  type disk_stats (line 7604) | struct disk_stats
  type partition_meta_info (line 7606) | struct partition_meta_info
  type block_device (line 7608) | struct block_device {
  type io_comp_batch (line 7634) | struct io_comp_batch {
  type fc_log (line 7640) | struct fc_log
  type p_log (line 7642) | struct p_log {
  type fs_context_purpose (line 7647) | enum fs_context_purpose {
  type fs_context_phase (line 7653) | enum fs_context_phase {
  type fs_context_operations (line 7663) | struct fs_context_operations
  type fs_context (line 7665) | struct fs_context {
  type audit_names (line 7690) | struct audit_names
  type filename (line 7692) | struct filename {
  type __u32 (line 7700) | typedef __u32 blk_opf_t;
  type u8 (line 7702) | typedef u8 blk_status_t;
  type bvec_iter (line 7704) | struct bvec_iter {
  type blk_qc_t (line 7711) | typedef unsigned int blk_qc_t;
  type bio (line 7713) | struct bio
  type bio_issue (line 7715) | struct bio_issue {
  type bio_set (line 7719) | struct bio_set
  type bio (line 7721) | struct bio {
  type mempool_s (line 7756) | struct mempool_s {
  type mempool_t (line 7767) | typedef struct mempool_s mempool_t;
  type bio_alloc_cache (line 7769) | struct bio_alloc_cache
  type bio_set (line 7771) | struct bio_set {
  type block_device_operations (line 7785) | struct block_device_operations
  type timer_rand_state (line 7787) | struct timer_rand_state
  type disk_events (line 7789) | struct disk_events
  type badblocks (line 7791) | struct badblocks
  type blk_independent_access_ranges (line 7793) | struct blk_independent_access_ranges
  type gendisk (line 7795) | struct gendisk {
  type partition_meta_info (line 7824) | struct partition_meta_info {
  type req_op (line 7829) | enum req_op {
  type blk_rq_stat (line 7847) | struct blk_rq_stat {
  type blk_zone (line 7855) | struct blk_zone {
  type blk_zone (line 7868) | struct blk_zone
  type blk_unique_id (line 7870) | enum blk_unique_id {
  type hd_geometry (line 7876) | struct hd_geometry
  type pr_ops (line 7878) | struct pr_ops
  type block_device_operations (line 7880) | struct block_device_operations {
  type blk_independent_access_range (line 7902) | struct blk_independent_access_range {
  type blk_independent_access_ranges (line 7908) | struct blk_independent_access_ranges {
  type blk_eh_timer_return (line 7915) | enum blk_eh_timer_return {
  type blk_mq_hw_ctx (line 7920) | struct blk_mq_hw_ctx
  type blk_mq_queue_data (line 7922) | struct blk_mq_queue_data
  type blk_mq_ops (line 7924) | struct blk_mq_ops {
  type pr_type (line 7945) | enum pr_type {
  type pr_ops (line 7954) | struct pr_ops {
  type mem_cgroup_reclaim_iter (line 7962) | struct mem_cgroup_reclaim_iter {
  type shrinker_info (line 7967) | struct shrinker_info {
  type lruvec_stats_percpu (line 7973) | struct lruvec_stats_percpu {
  type lruvec_stats (line 7978) | struct lruvec_stats {
  type mem_cgroup_per_node (line 7983) | struct mem_cgroup_per_node {
  type eventfd_ctx (line 7996) | struct eventfd_ctx
  type mem_cgroup_threshold (line 7998) | struct mem_cgroup_threshold {
  type mem_cgroup_threshold_ary (line 8003) | struct mem_cgroup_threshold_ary {
  type obj_cgroup (line 8009) | struct obj_cgroup {
  type file (line 8019) | struct file
  type folio (line 8019) | struct folio
  type swap_extent (line 8038) | struct swap_extent {
  type percpu_cluster (line 8062) | struct percpu_cluster {
  type fs_value_type (line 8067) | enum fs_value_type {
  type fs_parameter (line 8076) | struct fs_parameter {
  type fc_log (line 8089) | struct fc_log {
  type fs_context_operations (line 8098) | struct fs_context_operations {
  type fs_parse_result (line 8107) | struct fs_parse_result {
  type proc_ops (line 8121) | struct proc_ops {
  type rmap_t (line 8135) | typedef int rmap_t;
  type poll_table (line 8137) | typedef struct poll_table_struct poll_table;
  type exception_stack_ordering (line 8139) | enum exception_stack_ordering {
  type syscall_metadata (line 8162) | struct syscall_metadata {
  type scatter_walk (line 8173) | struct scatter_walk {
  type __u64 (line 8178) | typedef __u64 __be64;
  type crypto_alg (line 8182) | struct crypto_alg
  type crypto_tfm (line 8184) | struct crypto_tfm {
  type cipher_alg (line 8192) | struct cipher_alg {
  type compress_alg (line 8200) | struct compress_alg {
  type crypto_type (line 8205) | struct crypto_type
  type crypto_alg (line 8207) | struct crypto_alg {
  type sk_buff (line 8229) | struct sk_buff
  type crypto_instance (line 8231) | struct crypto_instance
  type crypto_type (line 8233) | struct crypto_type {
  type crypto_template (line 8247) | struct crypto_template
  type crypto_spawn (line 8249) | struct crypto_spawn
  type crypto_instance (line 8251) | struct crypto_instance {
  type crypto_spawn (line 8261) | struct crypto_spawn {
  type rtattr (line 8274) | struct rtattr
  type crypto_template (line 8276) | struct crypto_template {
  type be128 (line 8284) | typedef struct {
  type gf128mul_4k (line 8289) | struct gf128mul_4k {
  type ghash_ctx (line 8293) | struct ghash_ctx {
  type ghash_desc_ctx (line 8297) | struct ghash_desc_ctx {
  type crypto_shash (line 8302) | struct crypto_shash
  type shash_desc (line 8304) | struct shash_desc {
  type crypto_shash (line 8309) | struct crypto_shash {
  type shash_alg (line 8314) | struct shash_alg {
  type __u32 (line 8332) | typedef __u32 blk_mq_req_flags_t;
  type blk_mq_queue_map (line 8334) | struct blk_mq_queue_map {
  type hctx_type (line 8340) | enum hctx_type {
  type badblocks (line 8347) | struct badblocks {
  type io_ring_ctx (line 8359) | struct io_ring_ctx
  type io_wq (line 8361) | struct io_wq
  type io_uring_task (line 8363) | struct io_uring_task {
  type __kernel_rwf_t (line 8388) | typedef int __kernel_rwf_t;
  type io_uring_cmd (line 8390) | struct io_uring_cmd {
  type io_uring_sqe (line 8402) | struct io_uring_sqe {
  type io_uring_cqe (line 8464) | struct io_uring_cqe {
  type io_uring_cmd_flags (line 8471) | enum io_uring_cmd_flags {
  type xattr_name (line 8481) | struct xattr_name {
  type xattr_ctx (line 8485) | struct xattr_ctx {
  type task_work_notify_mode (line 8496) | enum task_work_notify_mode {
  type io_wq_work_node (line 8503) | struct io_wq_work_node {
  type io_wq_work_list (line 8507) | struct io_wq_work_list {
  type io_wq_work (line 8512) | struct io_wq_work {
  type io_fixed_file (line 8518) | struct io_fixed_file {
  type io_file_table (line 8522) | struct io_file_table {
  type io_hash_bucket (line 8528) | struct io_hash_bucket {
  type io_hash_table (line 8540) | struct io_hash_table {
  type io_kiocb (line 8545) | struct io_kiocb
  type io_submit_link (line 8547) | struct io_submit_link {
  type io_submit_state (line 8552) | struct io_submit_state {
  type io_alloc_cache (line 8562) | struct io_alloc_cache {
  type io_restriction (line 8567) | struct io_restriction {
  type io_rings (line 8575) | struct io_rings
  type io_rsrc_node (line 8577) | struct io_rsrc_node
  type io_mapped_ubuf (line 8579) | struct io_mapped_ubuf
  type io_buffer_list (line 8581) | struct io_buffer_list
  type io_sq_data (line 8583) | struct io_sq_data
  type io_ev_fd (line 8585) | struct io_ev_fd
  type io_rsrc_data (line 8587) | struct io_rsrc_data
  type socket (line 8589) | struct socket
  type io_wq_hash (line 8591) | struct io_wq_hash
  type io_ring_ctx (line 8593) | struct io_ring_ctx {
  type io_uring (line 8705) | struct io_uring {
  type io_rings (line 8724) | struct io_rings {
  type io_cmd_data (line 8742) | struct io_cmd_data {
  type io_cqe (line 8747) | struct io_cqe {
  type io_kiocb (line 8756) | struct io_kiocb
  type io_task_work (line 8758) | struct io_task_work {
  type io_buffer (line 8763) | struct io_buffer
  type async_poll (line 8765) | struct async_poll
  type io_kiocb (line 8767) | struct io_kiocb {
  type io_ev_fd (line 8806) | struct io_ev_fd {
  type io_wq_hash (line 8814) | struct io_wq_hash {
  type io_xattr (line 8860) | struct io_xattr {
  type __u32 (line 8866) | typedef __u32 __le32;
  type s16 (line 8868) | typedef s16 int16_t;
  type u8 (line 8870) | typedef u8 uint8_t;
  type u64 (line 8872) | typedef u64 uint64_t;
  type BYTE (line 8874) | typedef uint8_t BYTE;
  type U16 (line 8876) | typedef uint16_t U16;
  type S16 (line 8878) | typedef int16_t S16;
  type U32 (line 8880) | typedef uint32_t U32;
  type U64 (line 8882) | typedef uint64_t U64;
  type U32 (line 8884) | typedef U32 HUF_DTable;
  type ZSTD_seqSymbol (line 8886) | typedef struct {
  type ZSTD_entropyDTables_t (line 8893) | typedef struct {
  type ZSTD_frameType_e (line 8902) | typedef enum {
  type ZSTD_frameHeader (line 8907) | typedef struct {
  type blockType_e (line 8917) | typedef enum {
  type ZSTD_dStage (line 8924) | typedef enum {
  type xxh64_state (line 8935) | struct xxh64_state {
  type ZSTD_format_e (line 8945) | typedef enum {
  type ZSTD_forceIgnoreChecksum_e (line 8950) | typedef enum {
  type ZSTD_customMem (line 8959) | typedef struct {
  type ZSTD_dictUses_e (line 8965) | typedef enum {
  type ZSTD_DDict_s (line 8971) | struct ZSTD_DDict_s
  type ZSTD_DDict (line 8973) | typedef struct ZSTD_DDict_s ZSTD_DDict;
  type ZSTD_DDictHashSet (line 8975) | typedef struct {
  type ZSTD_refMultipleDDicts_e (line 8981) | typedef enum {
  type ZSTD_dStreamStage (line 8986) | typedef enum {
  type ZSTD_bufferMode_e (line 8994) | typedef enum {
  type ZSTD_outBuffer_s (line 8999) | struct ZSTD_outBuffer_s {
  type ZSTD_outBuffer (line 9005) | typedef struct ZSTD_outBuffer_s ZSTD_outBuffer;
  type ZSTD_DCtx_s (line 9007) | struct ZSTD_DCtx_s {
  type ZSTD_DCtx (line 9066) | typedef struct ZSTD_DCtx_s ZSTD_DCtx;
  type ZSTD_DDict_s (line 9068) | struct ZSTD_DDict_s {
  type ZSTD_dictContentType_e (line 9078) | typedef enum {
  type ZSTD_dictLoadMethod_e (line 9084) | typedef enum {
  type notifier_block (line 9089) | struct notifier_block
  type notifier_block (line 9091) | struct notifier_block
  type notifier_block (line 9093) | struct notifier_block {
  type ei_entry (line 9099) | struct ei_entry {
  type phys_addr_t (line 9107) | typedef phys_addr_t resource_size_t;
  type pci_device_id (line 9109) | struct pci_device_id {
  type resource (line 9120) | struct resource {
  type pci_bus (line 9131) | struct pci_bus
  type hotplug_slot (line 9133) | struct hotplug_slot
  type pci_slot (line 9135) | struct pci_slot {
  type pci_bus_flags_t (line 9143) | typedef short unsigned int pci_bus_flags_t;
  type pci_dev (line 9145) | struct pci_dev
  type pci_ops (line 9147) | struct pci_ops
  type proc_dir_entry (line 9149) | struct proc_dir_entry
  type pci_bus (line 9151) | struct pci_bus {
  type pci_power_t (line 9191) | typedef int pci_power_t;
  type pci_channel_state_t (line 9193) | typedef unsigned int pci_channel_state_t;
  type pcie_reset_state_t (line 9195) | typedef unsigned int pcie_reset_state_t;
  type pci_dev_flags_t (line 9197) | typedef short unsigned int pci_dev_flags_t;
  type pci_vpd (line 9199) | struct pci_vpd {
  type pci_sriov (line 9205) | struct pci_sriov {
  type rcec_ea (line 9230) | struct rcec_ea
  type pci_driver (line 9232) | struct pci_driver
  type pcie_link_state (line 9234) | struct pcie_link_state
  type pci_dev (line 9236) | struct pci_dev {
  type rcec_ea (line 9356) | struct rcec_ea {
  type pci_dynids (line 9362) | struct pci_dynids {
  type pci_error_handlers (line 9367) | struct pci_error_handlers
  type pci_driver (line 9369) | struct pci_driver {
  type pci_ops (line 9389) | struct pci_ops {
  type pci_ers_result_t (line 9397) | typedef unsigned int pci_ers_result_t;
  type pci_error_handlers (line 9399) | struct pci_error_handlers {
  type __u16 (line 9408) | typedef __u16 __be16;
  type __u32 (line 9410) | typedef __u32 __be32;
  type __u32 (line 9412) | typedef __u32 __wsum;
  type irq_hw_number_t (line 9414) | typedef long unsigned int irq_hw_number_t;
  type blocking_notifier_head (line 9416) | struct blocking_notifier_head {
  type raw_notifier_head (line 9421) | struct raw_notifier_head {
  type page_pool_params (line 9425) | struct page_pool_params {
  type pp_alloc_cache (line 9438) | struct pp_alloc_cache {
  type ptr_ring (line 9443) | struct ptr_ring {
  type page_pool (line 9474) | struct page_pool {
  type irq_domain_bus_token (line 9510) | enum irq_domain_bus_token {
  type irq_domain_ops (line 9524) | struct irq_domain_ops
  type irq_domain_chip_generic (line 9526) | struct irq_domain_chip_generic
  type irq_data (line 9528) | struct irq_data
  type irq_domain (line 9530) | struct irq_domain {
  type rhashtable (line 9549) | struct rhashtable
  type rhashtable_compare_arg (line 9551) | struct rhashtable_compare_arg {
  type u32 (line 9556) | typedef u32 (*rht_hashfn_t)(const void *, u32, u32);
  type u32 (line 9558) | typedef u32 (*rht_obj_hashfn_t)(const void *, u32, u32);
  type rhashtable_compare_arg (line 9560) | struct rhashtable_compare_arg
  type rhashtable_params (line 9562) | struct rhashtable_params {
  type bucket_table (line 9575) | struct bucket_table
  type rhashtable (line 9577) | struct rhashtable {
  type pipe_buffer (line 9589) | struct pipe_buffer
  type pipe_inode_info (line 9591) | struct pipe_inode_info {
  type irq_fwspec (line 9613) | struct irq_fwspec {
  type irq_domain_ops (line 9619) | struct irq_domain_ops {
  type u64 (line 9632) | typedef u64 acpi_io_address;
  type u32 (line 9636) | typedef u32 acpi_object_type;
  type acpi_device (line 9677) | struct acpi_device
  type acpi_hotplug_profile (line 9679) | struct acpi_hotplug_profile {
  type acpi_device_status (line 9687) | struct acpi_device_status {
  type acpi_device_flags (line 9696) | struct acpi_device_flags {
  type acpi_pnp_type (line 9716) | struct acpi_pnp_type {
  type u64 (line 9723) | typedef u64 acpi_bus_address;
  type acpi_device_pnp (line 9729) | struct acpi_device_pnp {
  type acpi_device_power_flags (line 9741) | struct acpi_device_power_flags {
  type acpi_device_power_state (line 9751) | struct acpi_device_power_state {
  type acpi_device_power (line 9762) | struct acpi_device_power {
  type acpi_device_wakeup_flags (line 9769) | struct acpi_device_wakeup_flags {
  type acpi_device_wakeup_context (line 9774) | struct acpi_device_wakeup_context {
  type acpi_device_wakeup (line 9779) | struct acpi_device_wakeup {
  type acpi_device_perf_flags (line 9791) | struct acpi_device_perf_flags {
  type acpi_device_perf_state (line 9795) | struct acpi_device_perf_state
  type acpi_device_perf (line 9797) | struct acpi_device_perf {
  type acpi_device_dir (line 9804) | struct acpi_device_dir {
  type acpi_device_data (line 9808) | struct acpi_device_data {
  type acpi_scan_handler (line 9815) | struct acpi_scan_handler
  type acpi_hotplug_context (line 9817) | struct acpi_hotplug_context
  type acpi_gpio_mapping (line 9819) | struct acpi_gpio_mapping
  type acpi_device (line 9821) | struct acpi_device {
  type acpi_scan_handler (line 9848) | struct acpi_scan_handler {
  type acpi_hotplug_context (line 9859) | struct acpi_hotplug_context {
  type acpi_device_perf_state (line 9866) | struct acpi_device_perf_state {
  type acpi_gpio_params (line 9876) | struct acpi_gpio_params
  type acpi_gpio_mapping (line 9878) | struct acpi_gpio_mapping {
  type acpi_bus_event (line 9885) | struct acpi_bus_event {
  type sk_buff_data_t (line 9893) | typedef unsigned int sk_buff_data_t;
  type net_device (line 9895) | struct net_device
  type skb_ext (line 9897) | struct skb_ext
  type sk_buff (line 9899) | struct sk_buff {
  type ref_tracker_dir (line 10098) | struct ref_tracker_dir {}
  type prot_inuse (line 10100) | struct prot_inuse
  type netns_core (line 10102) | struct netns_core {
  type ipstats_mib (line 10109) | struct ipstats_mib
  type tcp_mib (line 10111) | struct tcp_mib
  type linux_mib (line 10113) | struct linux_mib
  type udp_mib (line 10115) | struct udp_mib
  type linux_tls_mib (line 10117) | struct linux_tls_mib
  type mptcp_mib (line 10119) | struct mptcp_mib
  type icmp_mib (line 10121) | struct icmp_mib
  type icmpmsg_mib (line 10123) | struct icmpmsg_mib
  type icmpv6_mib (line 10125) | struct icmpv6_mib
  type icmpv6msg_mib (line 10127) | struct icmpv6msg_mib
  type netns_mib (line 10129) | struct netns_mib {
  type netns_packet (line 10147) | struct netns_packet {
  type unix_table (line 10152) | struct unix_table {
  type netns_unix (line 10157) | struct netns_unix {
  type netns_nexthop (line 10163) | struct netns_nexthop {
  type inet_hashinfo (line 10171) | struct inet_hashinfo
  type inet_timewait_death_row (line 10173) | struct inet_timewait_death_row {
  type local_ports (line 10192) | struct local_ports {
  type ping_group_range (line 10198) | struct ping_group_range {
  type siphash_key_t (line 10203) | typedef struct {
  type udp_table (line 10207) | struct udp_table
  type ipv4_devconf (line 10209) | struct ipv4_devconf
  type ip_ra_chain (line 10211) | struct ip_ra_chain
  type fib_rules_ops (line 10213) | struct fib_rules_ops
  type fib_table (line 10215) | struct fib_table
  type inet_peer_base (line 10217) | struct inet_peer_base
  type fqdir (line 10219) | struct fqdir
  type tcp_congestion_ops (line 10221) | struct tcp_congestion_ops
  type tcp_fastopen_context (line 10223) | struct tcp_fastopen_context
  type mr_table (line 10225) | struct mr_table
  type fib_notifier_ops (line 10227) | struct fib_notifier_ops
  type netns_ipv4 (line 10229) | struct netns_ipv4 {
  type dst_entry (line 10382) | struct dst_entry
  type neighbour (line 10384) | struct neighbour
  type dst_ops (line 10386) | struct dst_ops {
  type netns_sysctl_ipv6 (line 10411) | struct netns_sysctl_ipv6 {
  type ipv6_devconf (line 10454) | struct ipv6_devconf
  type fib6_info (line 10456) | struct fib6_info
  type rt6_info (line 10458) | struct rt6_info
  type rt6_statistics (line 10460) | struct rt6_statistics
  type fib6_table (line 10462) | struct fib6_table
  type seg6_pernet_data (line 10464) | struct seg6_pernet_data
  type ioam6_pernet_data (line 10466) | struct ioam6_pernet_data
  type netns_ipv6 (line 10468) | struct netns_ipv6 {
  type nf_logger (line 10517) | struct nf_logger
  type nf_hook_entries (line 10519) | struct nf_hook_entries
  type netns_nf (line 10521) | struct netns_nf {
  type nf_ct_event_notifier (line 10531) | struct nf_ct_event_notifier
  type nf_generic_net (line 10533) | struct nf_generic_net {
  type nf_tcp_net (line 10537) | struct nf_tcp_net {
  type nf_udp_net (line 10545) | struct nf_udp_net {
  type nf_icmp_net (line 10549) | struct nf_icmp_net {
  type nf_dccp_net (line 10553) | struct nf_dccp_net {
  type nf_sctp_net (line 10558) | struct nf_sctp_net {
  type nf_ip_net (line 10562) | struct nf_ip_net {
  type ip_conntrack_stat (line 10572) | struct ip_conntrack_stat
  type netns_ct (line 10574) | struct netns_ct {
  type netns_bpf (line 10585) | struct netns_bpf {
  type xfrm_policy_hash (line 10591) | struct xfrm_policy_hash {
  type xfrm_policy_hthresh (line 10600) | struct xfrm_policy_hthresh {
  type netns_xfrm (line 10609) | struct netns_xfrm {
  type mpls_route (line 10650) | struct mpls_route
  type netns_mpls (line 10652) | struct netns_mpls {
  type netns_xdp (line 10660) | struct netns_xdp {
  type uevent_sock (line 10665) | struct uevent_sock
  type net_generic (line 10667) | struct net_generic
  type net (line 10669) | struct net {
  type in6_addr (line 10736) | struct in6_addr {
  type pipe_buf_operations (line 10744) | struct pipe_buf_operations
  type pipe_buffer (line 10746) | struct pipe_buffer {
  type pipe_buf_operations (line 10755) | struct pipe_buf_operations {
  type ip_conntrack_stat (line 10762) | struct ip_conntrack_stat {
  type skb_drop_reason (line 10778) | enum skb_drop_reason {
  type skb_ext (line 11109) | struct skb_ext {
  type scm_creds (line 11116) | struct scm_creds {
  type nlmsghdr (line 11122) | struct nlmsghdr {
  type nlattr (line 11130) | struct nlattr {
  type netlink_skb_parms (line 11135) | struct netlink_skb_parms {
  type nla_policy (line 11145) | struct nla_policy
  type netlink_ext_ack (line 11147) | struct netlink_ext_ack {
  type netlink_range_validation (line 11158) | struct netlink_range_validation
  type netlink_range_validation_signed (line 11160) | struct netlink_range_validation_signed
  type nla_policy (line 11162) | struct nla_policy {
  type netlink_callback (line 11182) | struct netlink_callback {
  type netlink_range_validation (line 11202) | struct netlink_range_validation {
  type netlink_range_validation_signed (line 11207) | struct netlink_range_validation_signed {
  type genlmsghdr (line 11212) | struct genlmsghdr {
  type ipstats_mib (line 11516) | struct ipstats_mib {
  type icmp_mib (line 11521) | struct icmp_mib {
  type icmpmsg_mib (line 11525) | struct icmpmsg_mib {
  type icmpv6_mib (line 11529) | struct icmpv6_mib {
  type icmpv6msg_mib (line 11533) | struct icmpv6msg_mib {
  type tcp_mib (line 11537) | struct tcp_mib {
  type udp_mib (line 11541) | struct udp_mib {
  type linux_mib (line 11545) | struct linux_mib {
  type linux_tls_mib (line 11549) | struct linux_tls_mib {
  type inet_frags (line 11553) | struct inet_frags
  type fqdir (line 11555) | struct fqdir {
  type inet_frag_queue (line 11580) | struct inet_frag_queue
  type inet_frags (line 11582) | struct inet_frags {
  type frag_v4_compare_key (line 11594) | struct frag_v4_compare_key {
  type frag_v6_compare_key (line 11603) | struct frag_v6_compare_key {
  type inet_frag_queue (line 11611) | struct inet_frag_queue {
  type tcp_ca_event (line 11633) | enum tcp_ca_event {
  type ack_sample (line 11642) | struct ack_sample
  type rate_sample (line 11644) | struct rate_sample
  type tcp_congestion_ops (line 11648) | struct tcp_congestion_ops {
  type netdevice_tracker (line 11674) | typedef struct {} netdevice_tracker;
  type xfrm_state (line 11676) | struct xfrm_state
  type lwtunnel_state (line 11678) | struct lwtunnel_state
  type dst_entry (line 11680) | struct dst_entry {
  type nf_inet_hooks (line 11703) | enum nf_inet_hooks {
  type nf_log_type (line 11724) | enum nf_log_type {
  type u8 (line 11730) | typedef u8 u_int8_t;
  type nf_loginfo (line 11732) | struct nf_loginfo
  type net (line 11734) | struct net
  type sk_buff (line 11734) | struct sk_buff
  type net_device (line 11734) | struct net_device
  type net_device (line 11734) | struct net_device
  type nf_loginfo (line 11734) | struct nf_loginfo
  type nf_logger (line 11736) | struct nf_logger {
  type tcp_conntrack (line 11743) | enum tcp_conntrack {
  type ct_dccp_states (line 11761) | enum ct_dccp_states {
  type ip_conntrack_dir (line 11775) | enum ip_conntrack_dir {
  type sctp_conntrack (line 11781) | enum sctp_conntrack {
  type udp_conntrack (line 11795) | enum udp_conntrack {
  type netns_bpf_attach_type (line 11809) | enum netns_bpf_attach_type {
  type possible_net_t (line 11816) | typedef struct {
  type genl_multicast_group (line 11820) | struct genl_multicast_group {
  type genl_split_ops (line 11825) | struct genl_split_ops
  type genl_info (line 11827) | struct genl_info
  type genl_ops (line 11829) | struct genl_ops
  type genl_small_ops (line 11831) | struct genl_small_ops
  type genl_family (line 11833) | struct genl_family {
  type genl_split_ops (line 11857) | struct genl_split_ops {
  type genl_info (line 11878) | struct genl_info {
  type genl_ops (line 11890) | struct genl_ops {
  type genl_small_ops (line 11903) | struct genl_small_ops {
  type acpi_genl_event (line 11912) | struct acpi_genl_event {
  type clk (line 11931) | struct clk
  type pm_qos_type (line 11933) | enum pm_qos_type {
  type pm_qos_constraints (line 11939) | struct pm_qos_constraints {
  type freq_constraints (line 11948) | struct freq_constraints {
  type pm_qos_flags (line 11955) | struct pm_qos_flags {
  type dev_pm_qos_request (line 11960) | struct dev_pm_qos_request
  type dev_pm_qos (line 11962) | struct dev_pm_qos {
  type pm_qos_flags_request (line 11972) | struct pm_qos_flags_request {
  type freq_qos_req_type (line 11977) | enum freq_qos_req_type {
  type freq_qos_request (line 11982) | struct freq_qos_request {
  type dev_pm_qos_req_type (line 11988) | enum dev_pm_qos_req_type {
  type dev_pm_qos_request (line 11996) | struct dev_pm_qos_request {
  type cpufreq_table_sorting (line 12006) | enum cpufreq_table_sorting {
  type cpufreq_cpuinfo (line 12012) | struct cpufreq_cpuinfo {
  type cpufreq_governor (line 12018) | struct cpufreq_governor
  type cpufreq_frequency_table (line 12020) | struct cpufreq_frequency_table
  type cpufreq_stats (line 12022) | struct cpufreq_stats
  type thermal_cooling_device (line 12024) | struct thermal_cooling_device
  type cpufreq_policy (line 12026) | struct cpufreq_policy {
  type cpufreq_governor (line 12072) | struct cpufreq_governor {
  type cpufreq_frequency_table (line 12086) | struct cpufreq_frequency_table {
  type thermal_cooling_device_ops (line 12092) | struct thermal_cooling_device_ops
  type thermal_cooling_device (line 12094) | struct thermal_cooling_device {
  type u64 (line 12108) | typedef u64 acpi_size;
  type u32 (line 12110) | typedef u32 acpi_status;
  type acpi_object_list (line 12114) | struct acpi_object_list {
  type acpi_buffer (line 12119) | struct acpi_buffer {
  type acpi_table_header (line 12124) | struct acpi_table_header {
  type acpi_generic_address (line 12136) | struct acpi_generic_address {
  type acpi_table_fadt (line 12144) | struct acpi_table_fadt {
  type u32 (line 12203) | typedef u32 phys_cpuid_t;
  type thermal_cooling_device_ops (line 12205) | struct thermal_cooling_device_ops {
  type acpi_processor_cx (line 12214) | struct acpi_processor_cx {
  type acpi_lpi_state (line 12225) | struct acpi_lpi_state {
  type acpi_processor_power (line 12238) | struct acpi_processor_power {
  type acpi_psd_package (line 12247) | struct acpi_psd_package {
  type acpi_pct_register (line 12255) | struct acpi_pct_register {
  type acpi_processor_px (line 12265) | struct acpi_processor_px {
  type acpi_processor_performance (line 12274) | struct acpi_processor_performance {
  type acpi_tsd_package (line 12288) | struct acpi_tsd_package {
  type acpi_processor_tx_tss (line 12296) | struct acpi_processor_tx_tss {
  type acpi_processor_tx (line 12304) | struct acpi_processor_tx {
  type acpi_processor (line 12309) | struct acpi_processor
  type acpi_processor_throttling (line 12311) | struct acpi_processor_throttling {
  type acpi_processor_flags (line 12333) | struct acpi_processor_flags {
  type acpi_processor_lx (line 12347) | struct acpi_processor_lx {
  type acpi_processor_limit (line 12352) | struct acpi_processor_limit {
  type acpi_processor (line 12358) | struct acpi_processor {
  type uint (line 12377) | typedef unsigned int uint;
  type ld_semaphore (line 12379) | struct ld_semaphore {
  type tcflag_t (line 12388) | typedef unsigned int tcflag_t;
  type cc_t (line 12390) | typedef unsigned char cc_t;
  type speed_t (line 12392) | typedef unsigned int speed_t;
  type ktermios (line 12394) | struct ktermios {
  type winsize (line 12405) | struct winsize {
  type tty_driver (line 12412) | struct tty_driver
  type tty_operations (line 12414) | struct tty_operations
  type tty_ldisc (line 12416) | struct tty_ldisc
  type tty_port (line 12418) | struct tty_port
  type tty_struct (line 12420) | struct tty_struct {
  type cdev (line 12472) | struct cdev {
  type tty_buffer (line 12481) | struct tty_buffer {
  type tty_bufhead (line 12495) | struct tty_bufhead {
  type serial_icounter_struct (line 12507) | struct serial_icounter_struct
  type serial_struct (line 12509) | struct serial_struct
  type tty_operations (line 12511) | struct tty_operations {
  type tty_driver (line 12547) | struct tty_driver {
  type serial_icounter_struct (line 12571) | struct serial_icounter_struct {
  type serial_struct (line 12586) | struct serial_struct {
  type __kfifo (line 12607) | struct __kfifo {
  type tty_port_operations (line 12615) | struct tty_port_operations
  type tty_port_client_operations (line 12617) | struct tty_port_client_operations
  type tty_port (line 12619) | struct tty_port {
  type tty_ldisc_ops (line 12654) | struct tty_ldisc_ops {
  type tty_ldisc (line 12675) | struct tty_ldisc {
  type tty_port_operations (line 12680) | struct tty_port_operations {
  type tty_port_client_operations (line 12688) | struct tty_port_client_operations {
  type console (line 12694) | struct console {
  type serial_rs485 (line 12714) | struct serial_rs485 {
  type serial_iso7816 (line 12729) | struct serial_iso7816 {
  type circ_buf (line 12738) | struct circ_buf {
  type uart_port (line 12744) | struct uart_port
  type uart_ops (line 12746) | struct uart_ops {
  type uart_icount (line 12773) | struct uart_icount {
  type u64 (line 12787) | typedef u64 upf_t;
  type upstat_t (line 12789) | typedef unsigned int upstat_t;
  type gpio_desc (line 12791) | struct gpio_desc
  type uart_state (line 12793) | struct uart_state
  type uart_port (line 12795) | struct uart_port {
  type uart_pm_state (line 12859) | enum uart_pm_state {
  type uart_state (line 12865) | struct uart_state {
  type earlycon_device (line 12874) | struct earlycon_device {
  type earlycon_id (line 12881) | struct earlycon_id {
  type __va_list_tag (line 12888) | struct __va_list_tag {
  type __builtin_va_list (line 12895) | typedef __builtin_va_list va_list;
  type klist_node (line 12897) | struct klist_node
  type klist (line 12899) | struct klist {
  type klist_node (line 12906) | struct klist_node {
  type subsys_private (line 12912) | struct subsys_private {
  type driver_private (line 12927) | struct driver_private {
  type device (line 12935) | struct device
  type device (line 12937) | struct device
  type device_private (line 12939) | struct device_private {
  type devres_node (line 12952) | struct devres_node {
  type devres (line 12959) | struct devres {
  type devres_group (line 12964) | struct devres_group {
  type action_devres (line 12970) | struct action_devres {
  type pages_devres (line 12975) | struct pages_devres {
  type __u16 (line 12980) | typedef __u16 __sum16;
  type slab_flags_t (line 12982) | typedef unsigned int slab_flags_t;
  type debugfs_u32_array (line 12984) | struct debugfs_u32_array {
  type __kernel_sa_family_t (line 12989) | typedef short unsigned int __kernel_sa_family_t;
  type __kernel_sa_family_t (line 12991) | typedef __kernel_sa_family_t sa_family_t;
  type sockaddr (line 12993) | struct sockaddr {
  type ubuf_info (line 13004) | struct ubuf_info
  type msghdr (line 13006) | struct msghdr {
  type ubuf_info (line 13024) | struct ubuf_info {
  type __u64 (line 13030) | typedef __u64 __addrpair;
  type __u32 (line 13032) | typedef __u32 __portpair;
  type hlist_nulls_node (line 13034) | struct hlist_nulls_node {
  type proto (line 13039) | struct proto
  type sock_common (line 13041) | struct sock_common {
  type socket_lock_t (line 13102) | typedef struct {
  type sk_buff_list (line 13109) | struct sk_buff_list {
  type sk_buff_head (line 13114) | struct sk_buff_head {
  type u64 (line 13126) | typedef u64 netdev_features_t;
  type sock_cgroup_data (line 13128) | struct sock_cgroup_data {
  type netns_tracker (line 13133) | typedef struct {} netns_tracker;
  type sk_filter (line 13135) | struct sk_filter
  type socket_wq (line 13137) | struct socket_wq
  type xfrm_policy (line 13139) | struct xfrm_policy
  type sock_reuseport (line 13141) | struct sock_reuseport
  type sock (line 13143) | struct sock {
  type sockptr_t (line 13249) | typedef struct {
  type socket_state (line 13257) | typedef enum {
  type socket_wq (line 13265) | struct socket_wq {
  type proto_ops (line 13274) | struct proto_ops
  type socket (line 13276) | struct socket {
  type read_descriptor_t (line 13289) | typedef struct {
  type sk_buff (line 13299) | struct sk_buff
  type sock (line 13301) | struct sock
  type sk_buff (line 13301) | struct sk_buff
  type proto_ops (line 13303) | struct proto_ops {
  type ethhdr (line 13404) | struct ethhdr {
  type flowi_tunnel (line 13410) | struct flowi_tunnel {
  type flowi_common (line 13414) | struct flowi_common {
  type flowi4 (line 13444) | struct flowi4 {
  type flowi6 (line 13451) | struct flowi6 {
  type flowi (line 13460) | struct flowi {
  type skb_shared_hwtstamps (line 13468) | struct skb_shared_hwtstamps {
  type net_device_stats (line 13475) | struct net_device_stats {
  type netdev_hw_addr_list (line 13570) | struct netdev_hw_addr_list {
  type rx_handler_result (line 13576) | enum rx_handler_result {
  type rx_handler_result_t (line 13583) | typedef enum rx_handler_result rx_handler_result_t;
  type rx_handler_result_t (line 13585) | typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **);
  type netdev_ml_priv_type (line 13587) | enum netdev_ml_priv_type {
  type netdev_tc_txq (line 13592) | struct netdev_tc_txq {
  type sfp_bus (line 13597) | struct sfp_bus
  type bpf_xdp_link (line 13599) | struct bpf_xdp_link
  type bpf_xdp_entity (line 13601) | struct bpf_xdp_entity {
  type netdev_name_node (line 13606) | struct netdev_name_node
  type dev_ifalias (line 13608) | struct dev_ifalias
  type net_device_ops (line 13610) | struct net_device_ops
  type net_device_core_stats (line 13612) | struct net_device_core_stats
  type ethtool_ops (line 13614) | struct ethtool_ops
  type l3mdev_ops (line 13616) | struct l3mdev_ops
  type ndisc_ops (line 13618) | struct ndisc_ops
  type header_ops (line 13620) | struct header_ops
  type in_device (line 13622) | struct in_device
  type inet6_dev (line 13624) | struct inet6_dev
  type vlan_info (line 13626) | struct vlan_info
  type mpls_dev (line 13628) | struct mpls_dev
  type netdev_rx_queue (line 13630) | struct netdev_rx_queue
  type mini_Qdisc (line 13632) | struct mini_Qdisc
  type netdev_queue (line 13634) | struct netdev_queue
  type cpu_rmap (line 13636) | struct cpu_rmap
  type Qdisc (line 13638) | struct Qdisc
  type xdp_dev_bulk_queue (line 13640) | struct xdp_dev_bulk_queue
  type xps_dev_maps (line 13642) | struct xps_dev_maps
  type pcpu_lstats (line 13644) | struct pcpu_lstats
  type pcpu_sw_netstats (line 13646) | struct pcpu_sw_netstats
  type pcpu_dstats (line 13648) | struct pcpu_dstats
  type rtnl_link_ops (line 13650) | struct rtnl_link_ops
  type dcbnl_rtnl_ops (line 13652) | struct dcbnl_rtnl_ops
  type phy_device (line 13654) | struct phy_device
  type udp_tunnel_nic_info (line 13656) | struct udp_tunnel_nic_info
  type udp_tunnel_nic (line 13658) | struct udp_tunnel_nic
  type rtnl_hw_stats64 (line 13660) | struct rtnl_hw_stats64
  type devlink_port (line 13662) | struct devlink_port
  type net_device (line 13664) | struct net_device {
  type dql (line 13838) | struct dql {
  type prot_inuse (line 13862) | struct prot_inuse {
  type u64_stats_t (line 13867) | typedef struct {
  type icmpv6_mib_device (line 13871) | struct icmpv6_mib_device {
  type icmpv6msg_mib_device (line 13875) | struct icmpv6msg_mib_device {
  type udp_hslot (line 13879) | struct udp_hslot
  type udp_table (line 13881) | struct udp_table {
  type ip_ra_chain (line 13888) | struct ip_ra_chain {
  type fib_rule (line 13898) | struct fib_rule
  type fib_lookup_arg (line 13900) | struct fib_lookup_arg
  type fib_rule_hdr (line 13902) | struct fib_rule_hdr
  type fib_rules_ops (line 13904) | struct fib_rules_ops {
  type fib_table (line 13928) | struct fib_table {
  type inet_peer_base (line 13937) | struct inet_peer_base {
  type fib_notifier_ops (line 13943) | struct fib_notifier_ops {
  type hh_cache (line 13952) | struct hh_cache {
  type neigh_table (line 13958) | struct neigh_table
  type neigh_parms (line 13960) | struct neigh_parms
  type neigh_ops (line 13962) | struct neigh_ops
  type neighbour (line 13964) | struct neighbour {
  type ipv6_stable_secret (line 13995) | struct ipv6_stable_secret {
  type ipv6_devconf (line 14000) | struct ipv6_devconf {
  type rt6key (line 14058) | struct rt6key {
  type rtable (line 14063) | struct rtable
  type fnhe_hash_bucket (line 14065) | struct fnhe_hash_bucket
  type fib_nh_common (line 14067) | struct fib_nh_common {
  type rt6_exception_bucket (line 14087) | struct rt6_exception_bucket
  type fib6_nh (line 14089) | struct fib6_nh {
  type fib6_node (line 14096) | struct fib6_node
  type dst_metrics (line 14098) | struct dst_metrics
  type nexthop (line 14100) | struct nexthop
  type fib6_info (line 14102) | struct fib6_info {
  type uncached_list (line 14134) | struct uncached_list
  type rt6_info (line 14136) | struct rt6_info {
  type rt6_statistics (line 14150) | struct rt6_statistics {
  type fib6_node (line 14159) | struct fib6_node {
  type fib6_table (line 14172) | struct fib6_table {
  type net_generic (line 14182) | struct net_generic {
  type ieee_ets (line 14195) | struct ieee_ets {
  type ieee_maxrate (line 14208) | struct ieee_maxrate {
  type ieee_qcn (line 14212) | struct ieee_qcn {
  type ieee_qcn_stats (line 14227) | struct ieee_qcn_stats {
  type ieee_pfc (line 14232) | struct ieee_pfc {
  type dcbnl_buffer (line 14241) | struct dcbnl_buffer {
  type cee_pg (line 14247) | struct cee_pg {
  type cee_pfc (line 14256) | struct cee_pfc {
  type dcb_app (line 14263) | struct dcb_app {
  type dcb_peer_app_info (line 14269) | struct dcb_peer_app_info {
  type dcbnl_rtnl_ops (line 14274) | struct dcbnl_rtnl_ops {
  type xdp_mem_info (line 14328) | struct xdp_mem_info {
  type xdp_rxq_info (line 14333) | struct xdp_rxq_info {
  type xdp_txq_info (line 14346) | struct xdp_txq_info {
  type xdp_buff (line 14350) | struct xdp_buff {
  type xdp_frame (line 14361) | struct xdp_frame {
  type xdp_attachment_info (line 14372) | struct xdp_attachment_info {
  type ndmsg (line 14377) | struct ndmsg {
  type sync_serial_settings (line 14387) | typedef struct {
  type te1_settings (line 14393) | typedef struct {
  type raw_hdlc_proto (line 14400) | typedef struct {
  type fr_proto (line 14405) | typedef struct {
  type fr_proto_pvc (line 14415) | typedef struct {
  type fr_proto_pvc_info (line 14419) | typedef struct {
  type cisco_proto (line 14424) | typedef struct {
  type x25_hdlc_proto (line 14429) | typedef struct {
  type net_device_flags (line 14438) | enum net_device_flags {
  type ifmap (line 14460) | struct ifmap {
  type if_settings (line 14469) | struct if_settings {
  type ifreq (line 14484) | struct ifreq {
  type rtnl_link_stats64 (line 14505) | struct rtnl_link_stats64 {
  type rtnl_hw_stats64 (line 14533) | struct rtnl_hw_stats64 {
  type ifla_vf_guid (line 14545) | struct ifla_vf_guid {
  type ifla_vf_stats (line 14557) | struct ifla_vf_stats {
  type ifla_vf_info (line 14568) | struct ifla_vf_info {
  type tc_stats (line 14582) | struct tc_stats {
  type tc_sizespec (line 14593) | struct tc_sizespec {
  type netdev_tx (line 14604) | enum netdev_tx {
  type netdev_tx_t (line 14610) | typedef enum netdev_tx netdev_tx_t;
  type net_device_core_stats (line 14612) | struct net_device_core_stats {
  type header_ops (line 14619) | struct header_ops {
  type xsk_buff_pool (line 14628) | struct xsk_buff_pool
  type netdev_queue (line 14630) | struct netdev_queue {
  type net_rate_estimator (line 14653) | struct net_rate_estimator
  type qdisc_skb_head (line 14655) | struct qdisc_skb_head {
  type gnet_stats_basic_sync (line 14662) | struct gnet_stats_basic_sync {
  type gnet_stats_queue (line 14668) | struct gnet_stats_queue {
  type Qdisc_ops (line 14676) | struct Qdisc_ops
  type qdisc_size_table (line 14678) | struct qdisc_size_table
  type Qdisc (line 14680) | struct Qdisc {
  type rps_map (line 14727) | struct rps_map {
  type rps_dev_flow (line 14733) | struct rps_dev_flow {
  type rps_dev_flow_table (line 14739) | struct rps_dev_flow_table {
  type netdev_rx_queue (line 14745) | struct netdev_rx_queue {
  type xps_map (line 14759) | struct xps_map {
  type xps_dev_maps (line 14766) | struct xps_dev_maps {
  type netdev_phys_item_id (line 14773) | struct netdev_phys_item_id {
  type net_device_path_type (line 14778) | enum net_device_path_type {
  type net_device_path (line 14787) | struct net_device_path {
  type net_device_path_ctx (line 14819) | struct net_device_path_ctx {
  type tc_setup_type (line 14829) | enum tc_setup_type {
  type bpf_netdev_command (line 14853) | enum bpf_netdev_command {
  type bpf_offloaded_map (line 14861) | struct bpf_offloaded_map
  type netdev_bpf (line 14863) | struct netdev_bpf {
  type dev_ifalias (line 14881) | struct dev_ifalias {
  type ip_tunnel_parm (line 14886) | struct ip_tunnel_parm
  type net_device_ops (line 14888) | struct net_device_ops {
  type neigh_parms (line 14966) | struct neigh_parms {
  type iphdr (line 14983) | struct iphdr {
  type ip_tunnel_parm (line 15005) | struct ip_tunnel_parm {
  type netdev_priv_flags (line 15015) | enum netdev_priv_flags {
  type pcpu_lstats (line 15050) | struct pcpu_lstats {
  type pcpu_sw_netstats (line 15056) | struct pcpu_sw_netstats {
  type ethtool_phys_id_state (line 15064) | enum ethtool_phys_id_state {
  type ethtool_drvinfo (line 15071) | struct ethtool_drvinfo
  type ethtool_regs (line 15073) | struct ethtool_regs
  type ethtool_wolinfo (line 15075) | struct ethtool_wolinfo
  type ethtool_link_ext_state_info (line 15077) | struct ethtool_link_ext_state_info
  type ethtool_link_ext_stats (line 15079) | struct ethtool_link_ext_stats
  type ethtool_eeprom (line 15081) | struct ethtool_eeprom
  type ethtool_coalesce (line 15083) | struct ethtool_coalesce
  type kernel_ethtool_coalesce (line 15085) | struct kernel_ethtool_coalesce
  type ethtool_ringparam (line 15087) | struct ethtool_ringparam
  type kernel_ethtool_ringparam (line 15089) | struct kernel_ethtool_ringparam
  type ethtool_pause_stats (line 15091) | struct ethtool_pause_stats
  type ethtool_pauseparam (line 15093) | struct ethtool_pauseparam
  type ethtool_test (line 15095) | struct ethtool_test
  type ethtool_stats (line 15097) | struct ethtool_stats
  type ethtool_rxnfc (line 15099) | struct ethtool_rxnfc
  type ethtool_flash (line 15101) | struct ethtool_flash
  type ethtool_channels (line 15103) | struct ethtool_channels
  type ethtool_dump (line 15105) | struct ethtool_dump
  type ethtool_ts_info (line 15107) | struct ethtool_ts_info
  type ethtool_modinfo (line 15109) | struct ethtool_modinfo
  type ethtool_eee (line 15111) | struct ethtool_eee
  type ethtool_tunable (line 15113) | struct ethtool_tunable
  type ethtool_link_ksettings (line 15115) | struct ethtool_link_ksettings
  type ethtool_fec_stats (line 15117) | struct ethtool_fec_stats
  type ethtool_fecparam (line 15119) | struct ethtool_fecparam
  type ethtool_module_eeprom (line 15121) | struct ethtool_module_eeprom
  type ethtool_eth_phy_stats (line 15123) | struct ethtool_eth_phy_stats
  type ethtool_eth_mac_stats (line 15125) | struct ethtool_eth_mac_stats
  type ethtool_eth_ctrl_stats (line 15127) | struct ethtool_eth_ctrl_stats
  type ethtool_rmon_stats (line 15129) | struct ethtool_rmon_stats
  type ethtool_rmon_hist_range (line 15131) | struct ethtool_rmon_hist_range
  type ethtool_module_power_mode_params (line 15133) | struct ethtool_module_power_mode_params
  type ethtool_ops (line 15135) | struct ethtool_ops {
  type l3mdev_ops (line 15210) | struct l3mdev_ops {
  type nd_opt_hdr (line 15217) | struct nd_opt_hdr
  type ndisc_options (line 15219) | struct ndisc_options
  type prefix_info (line 15221) | struct prefix_info
  type ndisc_ops (line 15223) | struct ndisc_ops {
  type ipv6_devstat (line 15232) | struct ipv6_devstat {
  type ifmcaddr6 (line 15239) | struct ifmcaddr6
  type ifacaddr6 (line 15241) | struct ifacaddr6
  type inet6_dev (line 15243) | struct inet6_dev {
  type tcf_proto (line 15286) | struct tcf_proto
  type tcf_block (line 15288) | struct tcf_block
  type mini_Qdisc (line 15290) | struct mini_Qdisc {
  type rtnl_link_ops (line 15298) | struct rtnl_link_ops {
  type udp_tunnel_nic_table_info (line 15327) | struct udp_tunnel_nic_table_info {
  type udp_tunnel_info (line 15332) | struct udp_tunnel_info
  type udp_tunnel_nic_shared (line 15334) | struct udp_tunnel_nic_shared
  type udp_tunnel_nic_info (line 15336) | struct udp_tunnel_nic_info {
  type devlink_port_type (line 15345) | enum devlink_port_type {
  type devlink_port_flavour (line 15352) | enum devlink_port_flavour {
  type devlink_port_phys_attrs (line 15363) | struct devlink_port_phys_attrs {
  type devlink_port_pci_pf_attrs (line 15368) | struct devlink_port_pci_pf_attrs {
  type devlink_port_pci_vf_attrs (line 15374) | struct devlink_port_pci_vf_attrs {
  type devlink_port_pci_sf_attrs (line 15381) | struct devlink_port_pci_sf_attrs {
  type devlink_port_attrs (line 15388) | struct devlink_port_attrs {
  type devlink (line 15402) | struct devlink
  type ib_device (line 15404) | struct ib_device
  type devlink_rate (line 15406) | struct devlink_rate
  type devlink_linecard (line 15408) | struct devlink_linecard
  type devlink_port (line 15410) | struct devlink_port {
  type tcmsg (line 15462) | struct tcmsg {
  type gnet_dump (line 15472) | struct gnet_dump {
  type flow_action_hw_stats_bit (line 15484) | enum flow_action_hw_stats_bit {
  type flow_action_cookie (line 15491) | struct flow_action_cookie {
  type flow_block_command (line 15496) | enum flow_block_command {
  type flow_block_binder_type (line 15501) | enum flow_block_binder_type {
  type flow_block (line 15509) | struct flow_block {
  type flow_block_offload (line 15513) | struct flow_block_offload {
  type tc_setup_type (line 15527) | enum tc_setup_type
  type qdisc_size_table (line 15529) | struct qdisc_size_table {
  type Qdisc_class_ops (line 15537) | struct Qdisc_class_ops
  type Qdisc_ops (line 15539) | struct Qdisc_ops {
  type qdisc_walker (line 15564) | struct qdisc_walker
  type Qdisc_class_ops (line 15566) | struct Qdisc_class_ops {
  type qdisc_walker (line 15583) | struct qdisc_walker {
  type tcf_chain (line 15590) | struct tcf_chain
  type tcf_block (line 15592) | struct tcf_block {
  type tcf_result (line 15616) | struct tcf_result
  type tcf_proto_ops (line 15618) | struct tcf_proto_ops
  type tcf_proto (line 15620) | struct tcf_proto {
  type tcf_result (line 15636) | struct tcf_result {
  type tcf_walker (line 15646) | struct tcf_walker
  type tcf_proto_ops (line 15648) | struct tcf_proto_ops {
  type tcf_walker (line 15673) | struct tcf_walker {
  type tcf_chain (line 15682) | struct tcf_chain {
  type wb_stat_item (line 15697) | enum wb_stat_item {
  type memcg_memory_event (line 15705) | enum memcg_memory_event {
  type pneigh_entry (line 15743) | struct pneigh_entry
  type neigh_statistics (line 15745) | struct neigh_statistics
  type neigh_hash_table (line 15747) | struct neigh_hash_table
  type neigh_table (line 15749) | struct neigh_table {
  type neigh_statistics (line 15785) | struct neigh_statistics {
  type neigh_ops (line 15800) | struct neigh_ops {
  type pneigh_entry (line 15808) | struct pneigh_entry {
  type neigh_hash_table (line 15818) | struct neigh_hash_table {
  type lwtunnel_state (line 15825) | struct lwtunnel_state {
  type dst_metrics (line 15836) | struct dst_metrics {
  type fib_rule_hdr (line 15857) | struct fib_rule_hdr {
  type fib_rule_port_range (line 15869) | struct fib_rule_port_range {
  type fib_kuid_range (line 15874) | struct fib_kuid_range {
  type fib_rule (line 15879) | struct fib_rule {
  type fib_lookup_arg (line 15907) | struct fib_lookup_arg {
  type smc_hashinfo (line 15916) | struct smc_hashinfo
  type sk_psock (line 15918) | struct sk_psock
  type request_sock_ops (line 15920) | struct request_sock_ops
  type timewait_sock_ops (line 15922) | struct timewait_sock_ops
  type raw_hashinfo (line 15924) | struct raw_hashinfo
  type proto (line 15926) | struct proto {
  type request_sock (line 15990) | struct request_sock
  type request_sock_ops (line 15992) | struct request_sock_ops {
  type timewait_sock_ops (line 16004) | struct timewait_sock_ops {
  type saved_syn (line 16012) | struct saved_syn
  type request_sock (line 16014) | struct request_sock {
  type saved_syn (line 16031) | struct saved_syn {
  type tsq_enum (line 16038) | enum tsq_enum {
  type ip6_sf_list (line 16047) | struct ip6_sf_list {
  type ifmcaddr6 (line 16057) | struct ifmcaddr6 {
  type ifacaddr6 (line 16075) | struct ifacaddr6 {
  type fib_nh_exception (line 16087) | struct fib_nh_exception {
  type rtable (line 16101) | struct rtable {
  type fnhe_hash_bucket (line 16120) | struct fnhe_hash_bucket {
  type fib_info (line 16124) | struct fib_info
  type fib_nh (line 16126) | struct fib_nh {
  type fib_info (line 16134) | struct fib_info {
  type nh_info (line 16158) | struct nh_info
  type nh_group (line 16160) | struct nh_group
  type nexthop (line 16162) | struct nexthop {
  type nd_opt_hdr (line 16199) | struct nd_opt_hdr {
  type ndisc_options (line 16204) | struct ndisc_options {
  type prefix_info (line 16212) | struct prefix_info {
  type rt6_exception_bucket (line 16225) | struct rt6_exception_bucket {
  type nh_info (line 16230) | struct nh_info {
  type nh_grp_entry (line 16243) | struct nh_grp_entry
  type nh_res_bucket (line 16245) | struct nh_res_bucket {
  type nh_grp_entry (line 16253) | struct nh_grp_entry {
  type nh_res_table (line 16270) | struct nh_res_table {
  type nh_group (line 16282) | struct nh_group {
  type udp_hslot (line 16294) | struct udp_hslot {
  type udp_tunnel_info (line 16300) | struct udp_tunnel_info {
  type udp_tunnel_nic_shared (line 16307) | struct udp_tunnel_nic_shared {
  type ethtool_drvinfo (line 16312) | struct ethtool_drvinfo {
  type ethtool_wolinfo (line 16327) | struct ethtool_wolinfo {
  type ethtool_tunable (line 16334) | struct ethtool_tunable {
  type ethtool_regs (line 16342) | struct ethtool_regs {
  type ethtool_eeprom (line 16349) | struct ethtool_eeprom {
  type ethtool_eee (line 16357) | struct ethtool_eee {
  type ethtool_modinfo (line 16369) | struct ethtool_modinfo {
  type ethtool_coalesce (line 16376) | struct ethtool_coalesce {
  type ethtool_ringparam (line 16402) | struct ethtool_ringparam {
  type ethtool_channels (line 16414) | struct ethtool_channels {
  type ethtool_pauseparam (line 16426) | struct ethtool_pauseparam {
  type ethtool_link_ext_state (line 16433) | enum ethtool_link_ext_state {
  type ethtool_link_ext_substate_autoneg (line 16447) | enum ethtool_link_ext_substate_autoneg {
  type ethtool_link_ext_substate_link_training (line 16456) | enum ethtool_link_ext_substate_link_training {
  type ethtool_link_ext_substate_link_logical_mismatch (line 16463) | enum ethtool_link_ext_substate_link_logical_mismatch {
  type ethtool_link_ext_substate_bad_signal_integrity (line 16471) | enum ethtool_link_ext_substate_bad_signal_integrity {
  type ethtool_link_ext_substate_cable_issue (line 16478) | enum ethtool_link_ext_substate_cable_issue {
  type ethtool_link_ext_substate_module (line 16483) | enum ethtool_link_ext_substate_module {
  type ethtool_module_power_mode_policy (line 16487) | enum ethtool_module_power_mode_policy {
  type ethtool_module_power_mode (line 16492) | enum ethtool_module_power_mode {
  type ethtool_test (line 16497) | struct ethtool_test {
  type ethtool_stats (line 16505) | struct ethtool_stats {
  type ethtool_tcpip4_spec (line 16511) | struct ethtool_tcpip4_spec {
  type ethtool_ah_espip4_spec (line 16519) | struct ethtool_ah_espip4_spec {
  type ethtool_usrip4_spec (line 16526) | struct ethtool_usrip4_spec {
  type ethtool_tcpip6_spec (line 16535) | struct ethtool_tcpip6_spec {
  type ethtool_ah_espip6_spec (line 16543) | struct ethtool_ah_espip6_spec {
  type ethtool_usrip6_spec (line 16550) | struct ethtool_usrip6_spec {
  type ethtool_tcpip4_spec (line 16559) | struct ethtool_tcpip4_spec
  type ethtool_tcpip4_spec (line 16560) | struct ethtool_tcpip4_spec
  type ethtool_tcpip4_spec (line 16561) | struct ethtool_tcpip4_spec
  type ethtool_ah_espip4_spec (line 16562) | struct ethtool_ah_espip4_spec
  type ethtool_ah_espip4_spec (line 16563) | struct ethtool_ah_espip4_spec
  type ethtool_usrip4_spec (line 16564) | struct ethtool_usrip4_spec
  type ethtool_tcpip6_spec (line 16565) | struct ethtool_tcpip6_spec
  type ethtool_tcpip6_spec (line 16566) | struct ethtool_tcpip6_spec
  type ethtool_tcpip6_spec (line 16567) | struct ethtool_tcpip6_spec
  type ethtool_ah_espip6_spec (line 16568) | struct ethtool_ah_espip6_spec
  type ethtool_ah_espip6_spec (line 16569) | struct ethtool_ah_espip6_spec
  type ethtool_usrip6_spec (line 16570) | struct ethtool_usrip6_spec
  type ethhdr (line 16571) | struct ethhdr
  type ethtool_flow_ext (line 16575) | struct ethtool_flow_ext {
  type ethtool_rx_flow_spec (line 16583) | struct ethtool_rx_flow_spec {
  type ethtool_rxnfc (line 16593) | struct ethtool_rxnfc {
  type ethtool_flash (line 16605) | struct ethtool_flash {
  type ethtool_dump (line 16611) | struct ethtool_dump {
  type ethtool_ts_info (line 16619) | struct ethtool_ts_info {
  type ethtool_fecparam (line 16629) | struct ethtool_fecparam {
  type ethtool_link_mode_bit_indices (line 16636) | enum ethtool_link_mode_bit_indices {
  type ethtool_link_settings (line 16739) | struct ethtool_link_settings {
  type kernel_ethtool_ringparam (line 16758) | struct kernel_ethtool_ringparam {
  type ethtool_link_ext_state_info (line 16765) | struct ethtool_link_ext_state_info {
  type ethtool_link_ext_stats (line 16778) | struct ethtool_link_ext_stats {
  type ethtool_link_ksettings (line 16782) | struct ethtool_link_ksettings {
  type kernel_ethtool_coalesce (line 16792) | struct kernel_ethtool_coalesce {
  type ethtool_eth_mac_stats (line 16797) | struct ethtool_eth_mac_stats {
  type ethtool_eth_phy_stats (line 16822) | struct ethtool_eth_phy_stats {
  type ethtool_eth_ctrl_stats (line 16826) | struct ethtool_eth_ctrl_stats {
  type ethtool_pause_stats (line 16832) | struct ethtool_pause_stats {
  type ethtool_fec_stat (line 16837) | struct ethtool_fec_stat {
  type ethtool_fec_stats (line 16842) | struct ethtool_fec_stats {
  type ethtool_rmon_hist_range (line 16848) | struct ethtool_rmon_hist_range {
  type ethtool_rmon_stats (line 16853) | struct ethtool_rmon_stats {
  type ethtool_module_eeprom (line 16862) | struct ethtool_module_eeprom {
  type ethtool_module_power_mode_params (line 16871) | struct ethtool_module_power_mode_params {
  type devlink_eswitch_mode (line 16876) | enum devlink_eswitch_mode {
  type devlink_rate_type (line 16881) | enum devlink_rate_type {
  type devlink_rate (line 16886) | struct devlink_rate {
  type devlink_dev_stats (line 16905) | struct devlink_dev_stats {
  type devlink_dpipe_headers (line 16910) | struct devlink_dpipe_headers
  type devlink_ops (line 16912) | struct devlink_ops
  type devlink (line 16914) | struct devlink {
  type nsim_sa (line 16948) | struct nsim_sa {
  type nsim_ipsec (line 16958) | struct nsim_ipsec {
  type nsim_ethtool_pauseparam (line 16966) | struct nsim_ethtool_pauseparam {
  type nsim_ethtool (line 16973) | struct nsim_ethtool {
  type nsim_dev (line 16983) | struct nsim_dev
  type nsim_dev_port (line 16985) | struct nsim_dev_port
  type nsim_bus_dev (line 16987) | struct nsim_bus_dev
  type netdevsim (line 16989) | struct netdevsim {
  type devlink_region (line 17017) | struct devlink_region
  type devlink_health_reporter (line 17019) | struct devlink_health_reporter
  type nsim_dev_health (line 17021) | struct nsim_dev_health {
  type nsim_dev_hwstats (line 17030) | struct nsim_dev_hwstats {
  type nsim_dev_psample (line 17039) | struct nsim_dev_psample
  type nsim_fib_data (line 17041) | struct nsim_fib_data
  type nsim_trap_data (line 17043) | struct nsim_trap_data
  type nsim_vf_config (line 17045) | struct nsim_vf_config
  type bpf_offload_dev (line 17047) | struct bpf_offload_dev
  type nsim_dev (line 17049) | struct nsim_dev {
  type nsim_dev_port_type (line 17097) | enum nsim_dev_port_type {
  type nsim_dev_port (line 17102) | struct nsim_dev_port {
  type nsim_bus_dev (line 17113) | struct nsim_bus_dev {
  type nsim_vf_config (line 17124) | struct nsim_vf_config {
  type bpf_run_ctx (line 17137) | struct bpf_run_ctx {}
  type hlist_nulls_head (line 17139) | struct hlist_nulls_head {
  type snmp_mib (line 17143) | struct snmp_mib {
  type inet_ehash_bucket (line 17148) | struct inet_ehash_bucket
  type inet_bind_hashbucket (line 17150) | struct inet_bind_hashbucket
  type inet_listen_hashbucket (line 17152) | struct inet_listen_hashbucket
  type inet_hashinfo (line 17154) | struct inet_hashinfo {
  type tcp_fastopen_context (line 17169) | struct tcp_fastopen_context {
  type bpf_cgroup_storage (line 17175) | struct bpf_cgroup_storage
  type bpf_prog_array_item (line 17177) | struct bpf_prog_array_item {
  type bpf_prog_array (line 17185) | struct bpf_prog_array {
  type bpf_prog_type (line 17190) | enum bpf_prog_type {
  type bpf_attach_type (line 17225) | enum bpf_attach_type {
  type sock_filter (line 17273) | struct sock_filter {
  type bpf_insn (line 17280) | struct bpf_insn {
  type bpf_prog_stats (line 17288) | struct bpf_prog_stats
  type bpf_prog_aux (line 17290) | struct bpf_prog_aux
  type sock_fprog_kern (line 17292) | struct sock_fprog_kern
  type bpf_prog (line 17294) | struct bpf_prog {
  type pernet_operations (line 17332) | struct pernet_operations {
  type cgroup_bpf_attach_type (line 17342) | enum cgroup_bpf_attach_type {
  type bpf_map_type (line 17372) | enum bpf_map_type {
  type bpf_map_ops (line 17409) | struct bpf_map_ops
  type btf_record (line 17411) | struct btf_record
  type btf (line 17413) | struct btf
  type btf_field_offs (line 17415) | struct btf_field_offs
  type bpf_map (line 17417) | struct bpf_map {
  type bpf_map_dev_ops (line 17453) | struct bpf_map_dev_ops
  type bpf_offloaded_map (line 17455) | struct bpf_offloaded_map {
  type sk_filter (line 17466) | struct sk_filter {
  type sock_reuseport (line 17472) | struct sock_reuseport {
  type inet_ehash_bucket (line 17486) | struct inet_ehash_bucket {
  type inet_bind_hashbucket (line 17490) | struct inet_bind_hashbucket {
  type inet_listen_hashbucket (line 17495) | struct inet_listen_hashbucket {
  type bpf_cgroup_storage_key (line 17500) | struct bpf_cgroup_storage_key {
  type bpf_cgroup_iter_order (line 17505) | enum bpf_cgroup_iter_order {
  type bpf_func_info (line 17708) | struct bpf_func_info {
  type bpf_line_info (line 17713) | struct bpf_line_info {
  type btf_type (line 17720) | struct btf_type {
  type btf_field_type (line 17729) | enum btf_field_type {
  type btf_field_kptr (line 17741) | struct btf_field_kptr {
  type btf_field_list_head (line 17748) | struct btf_field_list_head {
  type btf_field (line 17755) | struct btf_field {
  type btf_record (line 17764) | struct btf_record {
  type btf_field_offs (line 17772) | struct btf_field_offs {
  type u64 (line 17778) | typedef u64 (*bpf_callback_t)(u64, u64, u64, u64, u64);
  type bpf_iter_aux_info (line 17780) | struct bpf_iter_aux_info
  type bpf_iter_aux_info (line 17782) | struct bpf_iter_aux_info
  type bpf_iter_task_type (line 17784) | enum bpf_iter_task_type {
  type bpf_iter_aux_info (line 17790) | struct bpf_iter_aux_info {
  type bpf_iter_seq_info (line 17804) | struct bpf_iter_seq_info {
  type bpf_local_storage_map (line 17811) | struct bpf_local_storage_map
  type bpf_verifier_env (line 17813) | struct bpf_verifier_env
  type bpf_func_state (line 17815) | struct bpf_func_state
  type bpf_map_ops (line 17817) | struct bpf_map_ops {
  type btf_header (line 17861) | struct btf_header {
  type btf_kfunc_set_tab (line 17872) | struct btf_kfunc_set_tab
  type btf_id_dtor_kfunc_tab (line 17874) | struct btf_id_dtor_kfunc_tab
  type btf_struct_metas (line 17876) | struct btf_struct_metas
  type btf (line 17878) | struct btf {
  type bpf_ksym (line 17902) | struct bpf_ksym {
  type bpf_ctx_arg_aux (line 17911) | struct bpf_ctx_arg_aux
  type bpf_trampoline (line 17913) | struct bpf_trampoline
  type bpf_jit_poke_descriptor (line 17915) | struct bpf_jit_poke_descriptor
  type bpf_kfunc_desc_tab (line 17917) | struct bpf_kfunc_desc_tab
  type bpf_kfunc_btf_tab (line 17919) | struct bpf_kfunc_btf_tab
  type bpf_prog_ops (line 17921) | struct bpf_prog_ops
  type btf_mod_pair (line 17923) | struct btf_mod_pair
  type bpf_prog_offload (line 17925) | struct bpf_prog_offload
  type bpf_func_info_aux (line 17927) | struct bpf_func_info_aux
  type bpf_prog_aux (line 17929) | struct bpf_prog_aux {
  type bpf_map_dev_ops (line 17996) | struct bpf_map_dev_ops {
  type bpf_reg_type (line 18003) | enum bpf_reg_type {
  type bpf_prog_ops (line 18034) | struct bpf_prog_ops {
  type bpf_prog_offload (line 18038) | struct bpf_prog_offload {
  type bpf_cgroup_storage_type (line 18050) | enum bpf_cgroup_storage_type {
  type btf_func_model (line 18056) | struct btf_func_model {
  type bpf_tramp_image (line 18063) | struct bpf_tramp_image {
  type bpf_trampoline (line 18075) | struct bpf_trampoline {
  type bpf_func_info_aux (line 18095) | struct bpf_func_info_aux {
  type bpf_jit_poke_descriptor (line 18100) | struct bpf_jit_poke_descriptor {
  type bpf_ctx_arg_aux (line 18117) | struct bpf_ctx_arg_aux {
  type btf_mod_pair (line 18123) | struct btf_mod_pair {
  type bpf_prog_stats (line 18128) | struct bpf_prog_stats {
  type sock_fprog_kern (line 18136) | struct sock_fprog_kern {
  type bpf_storage_buffer (line 18141) | struct bpf_storage_buffer
  type bpf_cgroup_storage_map (line 18143) | struct bpf_cgroup_storage_map
  type bpf_cgroup_storage (line 18145) | struct bpf_cgroup_storage {
  type bpf_storage_buffer (line 18158) | struct bpf_storage_buffer {
  type ack_sample (line 18163) | struct ack_sample {
  type rate_sample (line 18169) | struct rate_sample {
  type atomic_notifier_head (line 18188) | struct atomic_notifier_head {
  type xps_map_type (line 18206) | enum xps_map_type {
  type bpf_xdp_mode (line 18212) | enum bpf_xdp_mode {
  type screen_info (line 18238) | struct screen_info {
  type apm_bios_info (line 18277) | struct apm_bios_info {
  type edd_device_params (line 18289) | struct edd_device_params {
  type edd_info (line 18389) | struct edd_info {
  type ist_info (line 18399) | struct ist_info {
  type edid_info (line 18406) | struct edid_info {
  type setup_header (line 18410) | struct setup_header {
  type sys_desc_table (line 18452) | struct sys_desc_table {
  type olpc_ofw_header (line 18457) | struct olpc_ofw_header {
  type efi_info (line 18464) | struct efi_info {
  type boot_e820_entry (line 18475) | struct boot_e820_entry {
  type boot_params (line 18481) | struct boot_params {
  type x86_hardware_subarch (line 18519) | enum x86_hardware_subarch {
  type idt_bits (line 18528) | struct idt_bits {
  type gate_struct (line 18536) | struct gate_struct {
  type gate_desc (line 18545) | typedef struct gate_struct gate_desc;
  type desc_ptr (line 18547) | struct desc_ptr {
  type fixed_addresses (line 18552) | enum fixed_addresses {
  type tlb_context (line 18565) | struct tlb_context {
  type tlb_state (line 18570) | struct tlb_state {
  type boot_params_to_save (line 18584) | struct boot_params_to_save {
  type gen_pool (line 18589) | struct gen_pool
  type gen_pool (line 18591) | struct gen_pool
  type gen_pool (line 18593) | struct gen_pool {
  type mce (line 18602) | struct mce {
  type mce_evt_llist (line 18630) | struct mce_evt_llist {
  type obs_kernel_param (line 18635) | struct obs_kernel_param {
  type irqreturn (line 18641) | enum irqreturn {
  type irqreturn_t (line 18647) | typedef enum irqreturn irqreturn_t;
  type io_bitmap (line 18649) | struct io_bitmap {
  type apic_delivery_modes (line 18658) | enum apic_delivery_modes {
  type irqreturn_t (line 18667) | typedef irqreturn_t (*irq_handler_t)(int, void *);
  type irqaction (line 18669) | struct irqaction {
  type irq_affinity_notify (line 18689) | struct irq_affinity_notify {
  type irqchip_irq_state (line 18697) | enum irqchip_irq_state {
  type irq_desc (line 18704) | struct irq_desc
  type irq_desc (line 18706) | struct irq_desc
  type msi_desc (line 18708) | struct msi_desc
  type irq_common_data (line 18710) | struct irq_common_data {
  type irq_chip (line 18719) | struct irq_chip
  type irq_data (line 18721) | struct irq_data {
  type irq_desc (line 18732) | struct irq_desc {
  type physid_mask (line 18775) | struct physid_mask {
  type physid_mask_t (line 18779) | typedef struct physid_mask physid_mask_t;
  type msi_msg (line 18787) | struct msi_msg
  type irq_chip (line 18789) | struct irq_chip {
  type irq_alloc_type (line 18852) | enum irq_alloc_type {
  type ioapic_alloc_info (line 18862) | struct ioapic_alloc_info {
  type uv_alloc_info (line 18870) | struct uv_alloc_info {
  type irq_alloc_info (line 18877) | struct irq_alloc_info {
  type irq_cfg (line 18891) | struct irq_cfg {
  type irq_desc (line 18896) | struct irq_desc
  type irq_chip_regs (line 18898) | struct irq_chip_regs {
  type irq_chip_type (line 18908) | struct irq_chip_type {
  type irq_chip_generic (line 18917) | struct irq_chip_generic {
  type irq_gc_flags (line 18940) | enum irq_gc_flags {
  type irq_domain_chip_generic (line 18948) | struct irq_domain_chip_generic {
  type irqentry_state (line 18968) | struct irqentry_state {
  type irqentry_state_t (line 18975) | typedef struct irqentry_state irqentry_state_t;
  type apic (line 18977) | struct apic {
  type legacy_pic (line 19016) | struct legacy_pic {
  type apic_chip_data (line 19029) | struct apic_chip_data {
  type irq_matrix (line 19043) | struct irq_matrix
  type callback_head (line 19045) | struct callback_head
  type bpf_cmd (line 19062) | enum bpf_cmd {
  type bpf_link_type (line 19102) | enum bpf_link_type {
  type bpf_stats_type (line 19139) | enum bpf_stats_type {
  type bpf_func_id (line 19143) | enum bpf_func_id {
  type bpf_prog_info (line 19359) | struct bpf_prog_info {
  type bpf_map_info (line 19400) | struct bpf_map_info {
  type bpf_btf_info (line 19418) | struct bpf_btf_info {
  type bpf_link_info (line 19427) | struct bpf_link_info {
  type bpf_task_fd_type (line 19474) | enum bpf_task_fd_type {
  type bpf_spin_lock (line 19483) | struct bpf_spin_lock {
  type tk_offsets (line 19487) | enum tk_offsets {
  type fd (line 19494) | struct fd {
  type local_lock_t (line 19499) | typedef struct {
  type rhash_lock_head (line 19504) | struct rhash_lock_head
  type bucket_table (line 19506) | struct bucket_table {
  type fdtable (line 19521) | struct fdtable {
  type files_struct (line 19530) | struct files_struct {
  type xa_node (line 19553) | struct xa_node {
  type radix_tree_preload (line 19571) | struct radix_tree_preload {
  type sockptr_t (line 19577) | typedef sockptr_t bpfptr_t;
  type btf_struct_meta (line 19579) | struct btf_struct_meta {
  type bpf_insn (line 19585) | struct bpf_insn
  type bpf_verifier_log (line 19587) | struct bpf_verifier_log {
  type bpf_subprog_info (line 19595) | struct bpf_subprog_info {
  type bpf_id_pair (line 19605) | struct bpf_id_pair {
  type bpf_verifier_ops (line 19610) | struct bpf_verifier_ops
  type bpf_verifier_stack_elem (line 19612) | struct bpf_verifier_stack_elem
  type bpf_verifier_state (line 19614) | struct bpf_verifier_state
  type bpf_verifier_state_list (line 19616) | struct bpf_verifier_state_list
  type bpf_insn_aux_data (line 19618) | struct bpf_insn_aux_data
  type bpf_verifier_env (line 19620) | struct bpf_verifier_env {
  type bpf_dynptr_type (line 19674) | enum bpf_dynptr_type {
  type tnum (line 19680) | struct tnum {
  type bpf_reg_liveness (line 19685) | enum bpf_reg_liveness {
  type bpf_reg_state (line 19694) | struct bpf_reg_state {
  type bpf_reference_state (line 19736) | struct bpf_reference_state
  type bpf_stack_state (line 19738) | struct bpf_stack_state
  type bpf_func_state (line 19740) | struct bpf_func_state {
  type bpf_type_flag (line 19755) | enum bpf_type_flag {
  type bpf_arg_type (line 19774) | enum bpf_arg_type {
  type bpf_return_type (line 19812) | enum bpf_return_type {
  type bpf_func_proto (line 19834) | struct bpf_func_proto {
  type bpf_access_type (line 19872) | enum bpf_access_type {
  type bpf_insn_access_aux (line 19877) | struct bpf_insn_access_aux {
  type bpf_verifier_ops (line 19889) | struct bpf_verifier_ops {
  type bpf_link_ops (line 19898) | struct bpf_link_ops
  type bpf_link (line 19900) | struct bpf_link {
  type bpf_tramp_link (line 19909) | struct bpf_tramp_link {
  type bpf_tramp_run_ctx (line 19915) | struct bpf_tramp_run_ctx {
  type bpf_attach_target_info (line 19921) | struct bpf_attach_target_info {
  type bpf_link_ops (line 19928) | struct bpf_link_ops {
  type bpf_tracing_link (line 19937) | struct bpf_tracing_link {
  type bpf_link_primer (line 19944) | struct bpf_link_primer {
  type bpf_insn (line 19959) | struct bpf_insn
  type bpf_insn (line 19959) | struct bpf_insn
  type rhash_lock_head (line 19961) | struct rhash_lock_head {}
  type bpf_stack_state (line 19963) | struct bpf_stack_state {
  type bpf_reference_state (line 19968) | struct bpf_reference_state {
  type bpf_idx_pair (line 19975) | struct bpf_idx_pair {
  type bpf_verifier_state (line 19980) | struct bpf_verifier_state {
  type bpf_verifier_state_list (line 19998) | struct bpf_verifier_state_list {
  type bpf_loop_inline_state (line 20005) | struct bpf_loop_inline_state {
  type bpf_insn_aux_data (line 20011) | struct bpf_insn_aux_data {
  type perf_bpf_event_type (line 20047) | enum perf_bpf_event_type {
  type audit_ntp_type (line 20054) | enum audit_ntp_type {
  type bpf_audit (line 20064) | enum bpf_audit {
  type bpf_prog_kstats (line 20070) | struct bpf_prog_kstats {
  type bpf_raw_tp_link (line 20076) | struct bpf_raw_tp_link {
  type bpf_perf_link (line 20081) | struct bpf_perf_link {
  type u64 (line 20086) | typedef u64 (*btf_bpf_sys_bpf)(int, union bpf_attr *, u32);
  type u64 (line 20088) | typedef u64 (*btf_bpf_sys_close)(u32);
  type u64 (line 20090) | typedef u64 (*btf_bpf_kallsyms_lookup_name)(const char *, int, int, u64 *);
  type audit_buffer (line 20092) | struct audit_buffer
  type __u64 (line 20094) | typedef __u64 __le64;
  type u128 (line 20096) | typedef struct {
  type le128 (line 20101) | typedef struct {
  type gf128mul_64k (line 20106) | struct gf128mul_64k {
  type xxhash64_tfm_ctx (line 20110) | struct xxhash64_tfm_ctx {
  type xxhash64_desc_ctx (line 20114) | struct xxhash64_desc_ctx {
  type __call_single_data (line 20118) | struct __call_single_data {
  type io_cq (line 20124) | struct io_cq {
  type sbitmap_word (line 20138) | struct sbitmap_word {
  type sbitmap (line 20157) | struct sbitmap {
  type sbq_wait_state (line 20166) | struct sbq_wait_state {
  type sbitmap_queue (line 20176) | struct sbitmap_queue {
  type __u32 (line 20185) | typedef __u32 req_flags_t;
  type mq_rq_state (line 20187) | enum mq_rq_state {
  type rq_end_io_ret (line 20193) | enum rq_end_io_ret {
  type rq_end_io_ret (line 20198) | enum rq_end_io_ret
  type request (line 20198) | struct request
  type request (line 20200) | struct request {
  type blk_mq_ctxs (line 20255) | struct blk_mq_ctxs
  type blk_mq_ctx (line 20257) | struct blk_mq_ctx {
  type blk_stat_callback (line 20273) | struct blk_stat_callback {
  type blk_mq_tags (line 20285) | struct blk_mq_tags {
  type blk_flush_queue (line 20297) | struct blk_flush_queue {
  type blk_mq_tag_set (line 20308) | struct blk_mq_tag_set {
  type blk_mq_hw_ctx (line 20326) | struct blk_mq_hw_ctx {
  type blk_mq_queue_data (line 20370) | struct blk_mq_queue_data {
  type blk_mq_ctxs (line 20375) | struct blk_mq_ctxs {
  type io_fadvise (line 20380) | struct io_fadvise {
  type io_madvise (line 20387) | struct io_madvise {
  type xz_mode (line 20394) | enum xz_mode {
  type xz_ret (line 20400) | enum xz_ret {
  type xz_buf (line 20412) | struct xz_buf {
  type vli_type (line 20421) | typedef uint64_t vli_type;
  type xz_check (line 20423) | enum xz_check {
  type xz_dec_hash (line 20430) | struct xz_dec_hash {
  type xz_dec_lzma2 (line 20436) | struct xz_dec_lzma2
  type xz_dec_bcj (line 20438) | struct xz_dec_bcj
  type xz_dec (line 20440) | struct xz_dec {
  type seccomp_data (line 20492) | struct seccomp_data {
  type syscall_info (line 20499) | struct syscall_info {
  type dmi_field (line 20504) | enum dmi_field {
  type dmi_strmatch (line 20532) | struct dmi_strmatch {
  type dmi_system_id (line 20538) | struct dmi_system_id {
  type pci_ers_result (line 20551) | enum pci_ers_result {
  type acpi_subtable_header (line 20560) | struct acpi_subtable_header {
  type acpi_table_madt (line 20565) | struct acpi_table_madt {
  type acpi_madt_type (line 20571) | enum acpi_madt_type {
  type acpi_madt_local_apic (line 20593) | struct acpi_madt_local_apic {
  type acpi_madt_io_apic (line 20600) | struct acpi_madt_io_apic {
  type acpi_madt_local_sapic (line 20608) | struct acpi_madt_local_sapic {
  type acpi_madt_local_x2apic (line 20619) | struct acpi_madt_local_x2apic {
  type acpi_madt_generic_interrupt (line 20627) | struct acpi_madt_generic_interrupt {
  type u64 (line 20647) | typedef u64 acpi_physical_address;
  type u8 (line 20649) | typedef u8 acpi_adr_space_type;
  type acpi_status (line 20651) | typedef acpi_status (*acpi_adr_space_handler)(u32, acpi_physical_address...
  type acpi_status (line 20653) | typedef acpi_status (*acpi_adr_space_setup)(acpi_handle, u32, void *, vo...
  type acpi_gpio_params (line 20655) | struct acpi_gpio_params {
  type u16 (line 20661) | typedef u16 acpi_owner_id;
  type u32 (line 20663) | typedef u32 acpi_event_status;
  type u32 (line 20665) | typedef u32 (*acpi_gpe_handler)(acpi_handle, u32, void *);
  type acpi_namespace_node (line 20678) | struct acpi_namespace_node {
  type acpi_object_common (line 20690) | struct acpi_object_common {
  type acpi_object_integer (line 20698) | struct acpi_object_integer {
  type acpi_object_string (line 20708) | struct acpi_object_string {
  type acpi_object_buffer (line 20718) | struct acpi_object_buffer {
  type acpi_object_package (line 20731) | struct acpi_object_package {
  type acpi_object_event (line 20744) | struct acpi_object_event {
  type acpi_walk_state (line 20753) | struct acpi_walk_state
  type acpi_status (line 20755) | typedef acpi_status (*acpi_internal_method)(struct acpi_walk_state *);
  type acpi_object_method (line 20757) | struct acpi_object_method {
  type acpi_thread_state (line 20778) | struct acpi_thread_state
  type acpi_object_mutex (line 20780) | struct acpi_object_mutex {
  type acpi_object_region (line 20797) | struct acpi_object_region {
  type acpi_object_notify_common (line 20812) | struct acpi_object_notify_common {
  type acpi_gpe_block_info (line 20822) | struct acpi_gpe_block_info
  type acpi_object_device (line 20824) | struct acpi_object_device {
  type acpi_object_power_resource (line 20835) | struct acpi_object_power_resource {
  type acpi_object_processor (line 20847) | struct acpi_object_processor {
  type acpi_object_thermal_zone (line 20860) | struct acpi_object_thermal_zone {
  type acpi_object_field_common (line 20870) | struct acpi_object_field_common {
  type acpi_object_region_field (line 20888) | struct acpi_object_region_field {
  type acpi_object_buffer_field (line 20910) | struct acpi_object_buffer_field {
  type acpi_object_bank_field (line 20929) | struct acpi_object_bank_field {
  type acpi_object_index_field (line 20948) | struct acpi_object_index_field {
  type acpi_object_notify_handler (line 20967) | struct acpi_object_notify_handler {
  type acpi_object_addr_handler (line 20980) | struct acpi_object_addr_handler {
  type acpi_object_reference (line 20997) | struct acpi_object_reference {
  type acpi_object_extra (line 21014) | struct acpi_object_extra {
  type acpi_object_data (line 21027) | struct acpi_object_data {
  type acpi_object_cache_list (line 21037) | struct acpi_object_cache_list {
  type acpi_object_common (line 21047) | struct acpi_object_common
  type acpi_object_integer (line 21048) | struct acpi_object_integer
  type acpi_object_string (line 21049) | struct acpi_object_string
  type acpi_object_buffer (line 21050) | struct acpi_object_buffer
  type acpi_object_package (line 21051) | struct acpi_object_package
  type acpi_object_event (line 21052) | struct acpi_object_event
  type acpi_object_method (line 21053) | struct acpi_object_method
  type acpi_object_mutex (line 21054) | struct acpi_object_mutex
  type acpi_object_region (line 21055) | struct acpi_object_region
  type acpi_object_notify_common (line 21056) | struct acpi_object_notify_common
  type acpi_object_device (line 21057) | struct acpi_object_device
  type acpi_object_power_resource (line 21058) | struct acpi_object_power_resource
  type acpi_object_processor (line 21059) | struct acpi_object_processor
  type acpi_object_thermal_zone (line 21060) | struct acpi_object_thermal_zone
  type acpi_object_field_common (line 21061) | struct acpi_object_field_common
  type acpi_object_region_field (line 21062) | struct acpi_object_region_field
  type acpi_object_buffer_field (line 21063) | struct acpi_object_buffer_field
  type acpi_object_bank_field (line 21064) | struct acpi_object_bank_field
  type acpi_object_index_field (line 21065) | struct acpi_object_index_field
  type acpi_object_notify_handler (line 21066) | struct acpi_object_notify_handler
  type acpi_object_addr_handler (line 21067) | struct acpi_object_addr_handler
  type acpi_object_reference (line 21068) | struct acpi_object_reference
  type acpi_object_extra (line 21069) | struct acpi_object_extra
  type acpi_object_data (line 21070) | struct acpi_object_data
  type acpi_object_cache_list (line 21071) | struct acpi_object_cache_list
  type acpi_namespace_node (line 21072) | struct acpi_namespace_node
  type acpi_parse_state (line 21079) | struct acpi_parse_state {
  type acpi_status (line 21092) | typedef acpi_status (*acpi_parse_downwards)(struct acpi_walk_state *, un...
  type acpi_status (line 21094) | typedef acpi_status (*acpi_parse_upwards)(struct acpi_walk_state *);
  type acpi_opcode_info (line 21096) | struct acpi_opcode_info
  type acpi_walk_state (line 21098) | struct acpi_walk_state {
  type acpi_gpe_handler_info (line 21153) | struct acpi_gpe_handler_info {
  type acpi_gpe_notify_info (line 21161) | struct acpi_gpe_notify_info {
  type acpi_namespace_node (line 21167) | struct acpi_namespace_node
  type acpi_gpe_handler_info (line 21168) | struct acpi_gpe_handler_info
  type acpi_gpe_notify_info (line 21169) | struct acpi_gpe_notify_info
  type acpi_gpe_register_info (line 21172) | struct acpi_gpe_register_info
  type acpi_gpe_event_info (line 21174) | struct acpi_gpe_event_info {
  type acpi_gpe_address (line 21183) | struct acpi_gpe_address {
  type acpi_gpe_register_info (line 21188) | struct acpi_gpe_register_info {
  type acpi_gpe_xrupt_info (line 21198) | struct acpi_gpe_xrupt_info
  type acpi_gpe_block_info (line 21200) | struct acpi_gpe_block_info {
  type acpi_gpe_xrupt_info (line 21215) | struct acpi_gpe_xrupt_info {
  type acpi_status (line 21222) | typedef acpi_status (*acpi_gpe_callback)(struct acpi_gpe_xrupt_info *, s...
  type acpi_common_state (line 21224) | struct acpi_common_state {
  type acpi_update_state (line 21232) | struct acpi_update_state {
  type acpi_pkg_state (line 21241) | struct acpi_pkg_state {
  type acpi_control_state (line 21255) | struct acpi_control_state {
  type acpi_parse_obj_common (line 21277) | struct acpi_parse_obj_common {
  type acpi_parse_obj_named (line 21289) | struct acpi_parse_obj_named {
  type acpi_parse_obj_asl (line 21305) | struct acpi_parse_obj_asl {
  type acpi_parse_obj_common (line 21344) | struct acpi_parse_obj_common
  type acpi_parse_obj_named (line 21345) | struct acpi_parse_obj_named
  type acpi_parse_obj_asl (line 21346) | struct acpi_parse_obj_asl
  type acpi_scope_state (line 21349) | struct acpi_scope_state {
  type acpi_pscope_state (line 21358) | struct acpi_pscope_state {
  type acpi_thread_state (line 21371) | struct acpi_thread_state {
  type acpi_result_values (line 21383) | struct acpi_result_values {
  type acpi_global_notify_handler (line 21392) | struct acpi_global_notify_handler {
  type acpi_notify_info (line 21397) | struct acpi_notify_info {
  type acpi_common_state (line 21410) | struct acpi_common_state
  type acpi_control_state (line 21411) | struct acpi_control_state
  type acpi_update_state (line 21412) | struct acpi_update_state
  type acpi_scope_state (line 21413) | struct acpi_scope_state
  type acpi_pscope_state (line 21414) | struct acpi_pscope_state
  type acpi_pkg_state (line 21415) | struct acpi_pkg_state
  type acpi_thread_state (line 21416) | struct acpi_thread_state
  type acpi_result_values (line 21417) | struct acpi_result_values
  type acpi_notify_info (line 21418) | struct acpi_notify_info
  type acpi_opcode_info (line 21421) | struct acpi_opcode_info {
  type acpi_gpe_block_status_context (line 21430) | struct acpi_gpe_block_status_context {
  type acpi_table_desc (line 21436) | struct acpi_table_desc {
  type u32 (line 21446) | typedef u32 acpi_mutex_handle;
  type acpi_table_list (line 21448) | struct acpi_table_list {
  type acpi_table_rsdp (line 21455) | struct acpi_table_rsdp {
  type hwrng (line 21472) | struct hwrng {
  type hash_algo (line 21487) | enum hash_algo {
  type tpm_bank_info (line 21511) | struct tpm_bank_info {
  type tpm_chip (line 21517) | struct tpm_chip
  type tpm_class_ops (line 21519) | struct tpm_class_ops {
  type tpm_bios_log (line 21537) | struct tpm_bios_log {
  type tpm_chip_seqops (line 21542) | struct tpm_chip_seqops {
  type tpm_space (line 21547) | struct tpm_space {
  type tpm_chip (line 21555) | struct tpm_chip {
  type tpm_duration (line 21592) | enum tpm_duration {
  type file_priv (line 21601) | struct file_priv {
  type tpmrm_priv (line 21615) | struct tpmrm_priv {
  type input_id (line 21620) | struct input_id {
  type input_absinfo (line 21627) | struct input_absinfo {
  type input_keymap_entry (line 21636) | struct input_keymap_entry {
  type ff_replay (line 21644) | struct ff_replay {
  type ff_trigger (line 21649) | struct ff_trigger {
  type ff_envelope (line 21654) | struct ff_envelope {
  type ff_constant_effect (line 21661) | struct ff_constant_effect {
  type ff_ramp_effect (line 21666) | struct ff_ramp_effect {
  type ff_condition_effect (line 21672) | struct ff_condition_effect {
  type ff_periodic_effect (line 21681) | struct ff_periodic_effect {
  type ff_rumble_effect (line 21692) | struct ff_rumble_effect {
  type ff_effect (line 21697) | struct ff_effect {
  type semaphore (line 21712) | struct semaphore {
  type hid_device_id (line 21718) | struct hid_device_id {
  type input_device_id (line 21726) | struct input_device_id {
  type input_value (line 21745) | struct input_value {
  type input_clock_type (line 21751) | enum input_clock_type {
  type ff_device (line 21758) | struct ff_device
  type input_dev_poller (line 21760) | struct input_dev_poller
  type input_mt (line 21762) | struct input_mt
  type input_handle (line 21764) | struct input_handle
  type input_dev (line 21766) | struct input_dev {
  type ff_device (line 21818) | struct ff_device {
  type input_handler (line 21833) | struct input_handler
  type input_handle (line 21835) | struct input_handle {
  type input_handler (line 21845) | struct input_handler {
  type hid_report_type (line 21862) | enum hid_report_type {
  type hid_collection (line 21869) | struct hid_collection {
  type hid_usage (line 21876) | struct hid_usage {
  type hid_report (line 21890) | struct hid_report
  type hid_input (line 21892) | struct hid_input
  type hid_field (line 21894) | struct hid_field {
  type hid_field_entry (line 21922) | struct hid_field_entry
  type hid_device (line 21924) | struct hid_device
  type hid_report (line 21926) | struct hid_report {
  type hid_input (line 21942) | struct hid_input {
  type hid_field_entry (line 21952) | struct hid_field_entry {
  type hid_type (line 21959) | enum hid_type {
  type hid_report_enum (line 21965) | struct hid_report_enum {
  type hid_driver (line 21971) | struct hid_driver
  type hid_ll_driver (line 21973) | struct hid_ll_driver
  type hid_device (line 21975) | struct hid_device {
  type hid_report_id (line 22025) | struct hid_report_id
  type hid_usage_id (line 22027) | struct hid_usage_id
  type hid_driver (line 22029) | struct hid_driver {
  type hid_ll_driver (line 22053) | struct hid_ll_driver {
  type hid_report_id (line 22068) | struct hid_report_id {
  type hid_usage_id (line 22072) | struct hid_usage_id {
  type sock_type (line 22078) | enum sock_type {
  type netlink_kernel_cfg (line 22120) | struct netlink_kernel_cfg {
  type pcpu_gen_cookie (line 22130) | struct pcpu_gen_cookie {
  type gen_cookie (line 22135) | struct gen_cookie {
  type sock_diag_req (line 22162) | struct sock_diag_req {
  type sknetlink_groups (line 22180) | enum sknetlink_groups {
  type sock_diag_handler (line 22189) | struct sock_diag_handler {
  type broadcast_sk (line 22196) | struct broadcast_sk {
  type ip_conntrack_info (line 22201) | enum ip_conntrack_info {
  type nf_hook_state (line 22212) | struct nf_hook_state
  type sk_buff (line 22214) | struct sk_buff
  type nf_hook_state (line 22214) | struct nf_hook_state
  type nf_hook_entry (line 22216) | struct nf_hook_entry {
  type nf_hook_entries (line 22221) | struct nf_hook_entries {
  type nf_hook_state (line 22226) | struct nf_hook_state {
  type nf_conntrack_net (line 22236) | struct nf_conntrack_net {
  type nf_ct_ext_id (line 22245) | enum nf_ct_ext_id {
  type nf_ct_sysctl_index (line 22254) | enum nf_ct_sysctl_index {
  type u16 (line 22302) | typedef u16 u_int16_t;
  type u32 (line 22304) | typedef u32 u_int32_t;
  type u64 (line 22306) | typedef u64 u_int64_t;
  type ip_conntrack_status (line 22308) | enum ip_conntrack_status {
  type nf_conntrack (line 22349) | struct nf_conntrack {
  type in_addr (line 22353) | struct in_addr {
  type in_addr (line 22361) | struct in_addr
  type in6_addr (line 22362) | struct in6_addr
  type ip_ct_tcp_state (line 22365) | struct ip_ct_tcp_state {
  type ip_ct_tcp (line 22374) | struct ip_ct_tcp {
  type nf_ct_dccp (line 22410) | struct nf_ct_dccp {
  type ip_ct_sctp (line 22418) | struct ip_ct_sctp {
  type nf_conntrack_man (line 22425) | struct nf_conntrack_man {
  type nf_conntrack_tuple (line 22431) | struct nf_conntrack_tuple {
  type nf_conntrack_tuple_hash (line 22462) | struct nf_conntrack_tuple_hash {
  type nf_ct_udp (line 22467) | struct nf_ct_udp {
  type nf_ct_gre (line 22471) | struct nf_ct_gre {
  type nf_ct_dccp (line 22477) | struct nf_ct_dccp
  type ip_ct_sctp (line 22478) | struct ip_ct_sctp
  type ip_ct_tcp (line 22479) | struct ip_ct_tcp
  type nf_ct_udp (line 22480) | struct nf_ct_udp
  type nf_ct_gre (line 22481) | struct nf_ct_gre
  type nf_ct_ext (line 22485) | struct nf_ct_ext
  type nf_conntrack_zone (line 22487) | struct nf_conntrack_zone {
  type nf_conn (line 22493) | struct nf_conn {
  type xt_action_param (line 22509) | struct xt_action_param
  type xt_mtchk_param (line 22511) | struct xt_mtchk_param
  type xt_mtdtor_param (line 22513) | struct xt_mtdtor_param
  type xt_match (line 22515) | struct xt_match {
  type xt_tgchk_param (line 22531) | struct xt_tgchk_param
  type xt_tgdtor_param (line 22533) | struct xt_tgdtor_param
  type xt_target (line 22535) | struct xt_target {
  type xt_counters (line 22551) | struct xt_counters {
  type xt_action_param (line 22556) | struct xt_action_param {
  type xt_mtchk_param (line 22571) | struct xt_mtchk_param {
  type xt_mtdtor_param (line 22582) | struct xt_mtdtor_param {
  type xt_tgchk_param (line 22589) | struct xt_tgchk_param {
  type xt_tgdtor_param (line 22600) | struct xt_tgdtor_param {
  type ipt_ip (line 22607) | struct ipt_ip {
  type ipt_entry (line 22621) | struct ipt_entry {
  type ip6t_ip6 (line 22631) | struct ip6t_ip6 {
  type ip6t_entry (line 22646) | struct ip6t_entry {
  type xt_ct_target_info (line 22665) | struct xt_ct_target_info {
  type xt_ct_target_info_v1 (line 22674) | struct xt_ct_target_info_v1 {
  type nf_ct_ext (line 22684) | struct nf_ct_ext {
  type nf_conntrack_expect_policy (line 22692) | struct nf_conntrack_expect_policy
  type nf_conntrack_helper (line 22694) | struct nf_conntrack_helper {
  type nf_conntrack_expect_policy (line 22712) | struct nf_conntrack_expect_policy {
  type nf_conn_help (line 22718) | struct nf_conn_help {
  type xfrm_address_t (line 22726) | typedef union {
  type xfrm_id (line 22732) | struct xfrm_id {
  type xfrm_sec_ctx (line 22738) | struct xfrm_sec_ctx {
  type xfrm_selector (line 22746) | struct xfrm_selector {
  type xfrm_lifetime_cfg (line 22761) | struct xfrm_lifetime_cfg {
  type xfrm_lifetime_cur (line 22772) | struct xfrm_lifetime_cur {
  type xfrm_replay_state (line 22779) | struct xfrm_replay_state {
  type xfrm_replay_state_esn (line 22785) | struct xfrm_replay_state_esn {
  type xfrm_algo (line 22795) | struct xfrm_algo {
  type xfrm_algo_auth (line 22801) | struct xfrm_algo_auth {
  type xfrm_algo_aead (line 22808) | struct xfrm_algo_aead {
  type xfrm_stats (line 22815) | struct xfrm_stats {
  type xfrm_encap_tmpl (line 22858) | struct xfrm_encap_tmpl {
  type xfrm_attr_type_t (line 22865) | enum xfrm_attr_type_t {
  type xfrm_mark (line 22902) | struct xfrm_mark {
  type xfrm_address_filter (line 22907) | struct xfrm_address_filter {
  type xfrm_state_walk (line 22915) | struct xfrm_state_walk {
  type xfrm_replay_mode (line 22924) | enum xfrm_replay_mode {
  type xfrm_dev_offload (line 22930) | struct xfrm_dev_offload {
  type xfrm_mode (line 22939) | struct xfrm_mode {
  type xfrm_type (line 22945) | struct xfrm_type
  type xfrm_type_offload (line 22947) | struct xfrm_type_offload
  type xfrm_state (line 22949) | struct xfrm_state {
  type xfrm_policy_walk_entry (line 23021) | struct xfrm_policy_walk_entry {
  type xfrm_policy_queue (line 23026) | struct xfrm_policy_queue {
  type xfrm_tmpl (line 23032) | struct xfrm_tmpl {
  type xfrm_policy (line 23046) | struct xfrm_policy {
  type xfrm_type (line 23077) | struct xfrm_type {
  type xfrm_type_offload (line 23088) | struct xfrm_type_offload {
  type xfrm_state_afinfo (line 23096) | struct xfrm_state_afinfo {
  type sk_action (line 23112) | enum sk_action {
  type sockaddr_in6 (line 23117) | struct sockaddr_in6 {
  type seg6_pernet_data (line 23125) | struct seg6_pernet_data {
  type sockaddr_in (line 23130) | struct sockaddr_in {
  type skb_frag_t (line 23137) | typedef struct bio_vec skb_frag_t;
  type skb_shared_info (line 23139) | struct skb_shared_info {
  type skb_ext_id (line 23178) | enum skb_ext_id {
  type seq_net_private (line 23185) | struct seq_net_private {
  type sock_flags (line 23227) | enum sock_flags {
  type raw_hashinfo (line 23258) | struct raw_hashinfo {
  type sockcm_cookie (line 23263) | struct sockcm_cookie {
  type in6_pktinfo (line 23269) | struct in6_pktinfo {
  type ipv6_rt_hdr (line 23274) | struct ipv6_rt_hdr {
  type ipv6_opt_hdr (line 23281) | struct ipv6_opt_hdr {
  type ipv6hdr (line 23286) | struct ipv6hdr {
  type ip_options (line 23305) | struct ip_options {
  type ip_options_rcu (line 23324) | struct ip_options_rcu {
  type ipv6_txoptions (line 23329) | struct ipv6_txoptions {
  type inet_cork (line 23341) | struct inet_cork {
  type inet_cork_full (line 23357) | struct inet_cork_full {
  type ipv6_pinfo (line 23362) | struct ipv6_pinfo
  type ip_mc_socklist (line 23364) | struct ip_mc_socklist
  type inet_sock (line 23366) | struct inet_sock {
  type inet6_cork (line 23399) | struct inet6_cork {
  type ipv6_mc_socklist (line 23405) | struct ipv6_mc_socklist
  type ipv6_ac_socklist (line 23407) | struct ipv6_ac_socklist
  type ipv6_fl_socklist (line 23409) | struct ipv6_fl_socklist
  type ipv6_pinfo (line 23411) | struct ipv6_pinfo {
  type udphdr (line 23470) | struct udphdr {
  type udp_sock (line 23477) | struct udp_sock {
  type inet6_skb_parm (line 23514) | struct inet6_skb_parm {
  type ip6_sf_socklist (line 23528) | struct ip6_sf_socklist
  type ipv6_mc_socklist (line 23530) | struct ipv6_mc_socklist {
  type ipv6_ac_socklist (line 23539) | struct ipv6_ac_socklist {
  type ip6_flowlabel (line 23545) | struct ip6_flowlabel
  type ipv6_fl_socklist (line 23547) | struct ipv6_fl_socklist {
  type ip6_sf_socklist (line 23553) | struct ip6_sf_socklist {
  type static_key_false_deferred (line 23560) | struct static_key_false_deferred {
  type ip6_flowlabel (line 23566) | struct ip6_flowlabel {
  type ipcm6_cookie (line 23584) | struct ipcm6_cookie {
  type inet6_protocol (line 23593) | struct inet6_protocol {
  type inet_protosw (line 23599) | struct inet_protosw {
  type ipv6_sr_hdr (line 23608) | struct ipv6_sr_hdr {
  type inet_skb_parm (line 23619) | struct inet_skb_parm {
  type ip_tunnel_encap (line 23626) | struct ip_tunnel_encap {
  type ip6_tnl_encap_ops (line 23633) | struct ip6_tnl_encap_ops {
  type xfrm_offload (line 23645) | struct xfrm_offload {
  type sec_path (line 23656) | struct sec_path {
  type bpf_sk_lookup_kern (line 23663) | struct bpf_sk_lookup_kern {
  type udp_skb_cb (line 23681) | struct udp_skb_cb {
  type udp_dev_scratch (line 23690) | struct udp_dev_scratch {
  type udp_seq_afinfo (line 23697) | struct udp_seq_afinfo {
  type udp_iter_state (line 23702) | struct udp_iter_state {
  type x86_guest (line 23708) | struct x86_guest {
  type x86_legacy_devices (line 23715) | struct x86_legacy_devices {
  type x86_legacy_i8042_state (line 23719) | enum x86_legacy_i8042_state {
  type x86_legacy_features (line 23725) | struct x86_legacy_features {
  type ghcb (line 23734) | struct ghcb
  type x86_hyper_runtime (line 23736) | struct x86_hyper_runtime {
  type x86_platform_ops (line 23742) | struct x86_platform_ops {
  type stack_type (line 23762) | enum stack_type {
  type stack_info (line 23772) | struct stack_info {
  type unwind_state (line 23779) | struct unwind_state {
  type stack_frame_user (line 23795) | struct stack_frame_user {
  type of_phandle_args (line 23800) | struct of_phandle_args {
  type irqchip_fwid (line 23845) | struct irqchip_fwid {
  type bpf_local_storage_data (line 23852) | struct bpf_local_storage_data
  type bpf_local_storage (line 23854) | struct bpf_local_storage {
  type bpf_local_storage_map_bucket (line 23874) | struct bpf_local_storage_map_bucket
  type bpf_local_storage_map (line 23876) | struct bpf_local_storage_map {
  type bpf_local_storage_map_bucket (line 23890) | struct bpf_local_storage_map_bucket {
  type bpf_local_storage_data (line 23895) | struct bpf_local_storage_data {
  type bpf_local_storage_elem (line 23900) | struct bpf_local_storage_elem {
  type bpf_local_storage_cache (line 23916) | struct bpf_local_storage_cache {
  type u64 (line 23921) | typedef u64 (*btf_bpf_task_storage_get_recur)(struct bpf_map *, struct t...
  type u64 (line 23923) | typedef u64 (*btf_bpf_task_storage_get)(struct bpf_map *, struct task_st...
  type u64 (line 23925) | typedef u64 (*btf_bpf_task_storage_delete_recur)(struct bpf_map *, struc...
  type u64 (line 23927) | typedef u64 (*btf_bpf_task_storage_delete)(struct bpf_map *, struct task...
  type fs_struct (line 23929) | struct fs_struct {
  type kernel_read_file_id (line 23939) | enum kernel_read_file_id {
  type pseudo_fs_context (line 23950) | struct pseudo_fs_context {
  type u32 (line 23957) | typedef u32 nlink_t;
  type vm_flags_t (line 23959) | typedef long unsigned int vm_flags_t;
  type linux_binprm (line 23961) | struct linux_binprm
  type coredump_params (line 23963) | struct coredump_params
  type linux_binfmt (line 23965) | struct linux_binfmt {
  type mm_walk (line 23974) | struct mm_walk
  type mm_walk_ops (line 23976) | struct mm_walk_ops {
  type page_walk_action (line 23989) | enum page_walk_action {
  type mm_walk (line 23995) | struct mm_walk {
  type nsset (line 24005) | struct nsset {
  type file (line 24012) | struct file
  type proc_dir_entry (line 24014) | struct proc_dir_entry {
  type pte_marker (line 24048) | typedef long unsigned int pte_marker;
  type hstate (line 24050) | struct hstate
  type hugepage_subpool (line 24052) | struct hugepage_subpool {
  type hstate (line 24062) | struct hstate {
  type hugetlbfs_sb_info (line 24086) | struct hugetlbfs_sb_info {
  type mmu_notifier_range (line 24097) | struct mmu_notifier_range {
  type linux_binprm (line 24102) | struct linux_binprm {
  type dentry (line 24132) | struct dentry
  type path (line 24132) | struct path
  type seq_file (line 24133) | struct seq_file
  type pid_namespace (line 24133) | struct pid_namespace
  type pid (line 24133) | struct pid
  type task_struct (line 24133) | struct task_struct
  type proc_inode (line 24137) | struct proc_inode {
  type proc_maps_private (line 24149) | struct proc_maps_private {
  type mem_size_stats (line 24157) | struct mem_size_stats {
  type clear_refs_types (line 24181) | enum clear_refs_types {
  type clear_refs_private (line 24190) | struct clear_refs_private {
  type pagemap_entry_t (line 24194) | typedef struct {
  type pagemapread (line 24198) | struct pagemapread {
  type numa_maps (line 24205) | struct numa_maps {
  type numa_maps_private (line 24216) | struct numa_maps_private {
  type key_preparsed_payload (line 24221) | struct key_preparsed_payload {
  type key_match_data (line 24231) | struct key_match_data {
  type kernel_pkey_operation (line 24238) | enum kernel_pkey_operation {
  type kernel_pkey_params (line 24245) | struct kernel_pkey_params {
  type kernel_pkey_query (line 24258) | struct kernel_pkey_query {
  type key_being_used_for (line 24267) | enum key_being_used_for {
  type asymmetric_payload_bits (line 24277) | enum asymmetric_payload_bits {
  type asymmetric_key_id (line 24284) | struct asymmetric_key_id {
  type public_key_signature (line 24289) | struct public_key_signature
  type asymmetric_key_subtype (line 24291) | struct asymmetric_key_subtype {
  type public_key_signature (line 24302) | struct public_key_signature {
  type OID (line 24315) | enum OID {
  type public_key (line 24417) | struct public_key {
  type crypto_async_request (line 24428) | struct crypto_async_request
  type crypto_async_request (line 24430) | struct crypto_async_request
  type crypto_async_request (line 24432) | struct crypto_async_request {
  type crypto_wait (line 24440) | struct crypto_wait {
  type akcipher_request (line 24445) | struct akcipher_request {
  type crypto_akcipher (line 24454) | struct crypto_akcipher {
  type akcipher_alg (line 24458) | struct akcipher_alg {
  type mpi_limb_t (line 24472) | typedef long unsigned int mpi_limb_t;
  type mpi_limb_t (line 24474) | typedef mpi_limb_t *mpi_ptr_t;
  type mpi_size_t (line 24476) | typedef int mpi_size_t;
  type mpi_limb_t (line 24478) | typedef mpi_limb_t UWtype;
  type UHWtype (line 24480) | typedef unsigned int UHWtype;
  type gcry_mpi (line 24482) | struct gcry_mpi {
  type gcry_mpi (line 24491) | struct gcry_mpi
  type u32 (line 24493) | typedef u32 depot_stack_handle_t;
  type stack_record (line 24505) | struct stack_record {
  type kobject_action (line 24513) | enum kobject_action {
  type device_attribute (line 24524) | struct device_attribute {
  type pci_dev_flags (line 24530) | enum pci_dev_flags {
  type u64 (line 24545) | typedef u64 pci_bus_addr_t;
  type pci_bus_region (line 24547) | struct pci_bus_region {
  type pci_sysdata (line 24552) | struct pci_sysdata {
  type pci_bar_type (line 24560) | enum pci_bar_type {
  type x86_cpu_id (line 24567) | struct x86_cpu_id {
  type override_status_id (line 24576) | struct override_status_id {
  type n_tty_data (line 24585) | struct n_tty_data {
  type iova (line 24621) | struct iova {
  type iova_rcache (line 24627) | struct iova_rcache
  type iova_domain (line 24629) | struct iova_domain {
  type iova_magazine (line 24643) | struct iova_magazine
  type iova_cpu_rcache (line 24645) | struct iova_cpu_rcache
  type iova_rcache (line 24647) | struct iova_rcache {
  type cpuhp_state (line 24654) | enum cpuhp_state {
  type iova_magazine (line 24848) | struct iova_magazine {
  type iova_cpu_rcache (line 24853) | struct iova_cpu_rcache {
  type firmware_fallback_config (line 24859) | struct firmware_fallback_config {
  type firmware (line 24866) | struct firmware {
  type u64 (line 24872) | typedef u64 async_cookie_t;
  type async_domain (line 24876) | struct async_domain {
  type syscore_ops (line 24881) | struct syscore_ops {
  type fw_opt (line 24888) | enum fw_opt {
  type fw_status (line 24899) | enum fw_status {
  type fw_state (line 24906) | struct fw_state {
  type firmware_cache (line 24911) | struct firmware_cache
  type fw_priv (line 24913) | struct fw_priv {
  type firmware_cache (line 24932) | struct firmware_cache {
  type fw_cache_entry (line 24942) | struct fw_cache_entry {
  type fw_name_devm (line 24947) | struct fw_name_devm {
  type firmware_work (line 24952) | struct firmware_work {
  type rc_proto (line 24962) | enum rc_proto {
  type rc_map_table (line 24994) | struct rc_map_table {
  type rc_map (line 24999) | struct rc_map {
  type rc_map_list (line 25009) | struct rc_map_list {
  type net_device_devres (line 25014) | struct net_device_devres {
  type tca_id (line 25018) | enum tca_id {
  type tcf_t (line 25044) | struct tcf_t {
  type netlink_validation (line 25111) | enum netlink_validation {
  type flow_cls_common_offload (line 25120) | struct flow_cls_common_offload {
  type qdisc_skb_cb (line 25127) | struct qdisc_skb_cb {
  type bpf_skb_data_end (line 25136) | struct bpf_skb_data_end {
  type tcf_idrinfo (line 25142) | struct tcf_idrinfo {
  type tc_action_ops (line 25148) | struct tc_action_ops
  type tc_cookie (line 25150) | struct tc_cookie
  type tc_action (line 25152) | struct tc_action {
  type psample_group (line 25182) | struct psample_group
  type tc_action_ops (line 25184) | struct tc_action_ops {
  type tc_cookie (line 25204) | struct tc_cookie {
  type tcf_exts (line 25210) | struct tcf_exts {
  type tc_clsbpf_command (line 25220) | enum tc_clsbpf_command {
  type tc_cls_bpf_offload (line 25225) | struct tc_cls_bpf_offload {
  type cls_bpf_head (line 25235) | struct cls_bpf_head {
  type cls_bpf_prog (line 25241) | struct cls_bpf_prog {
  type icmpv6_echo (line 25257) | struct icmpv6_echo {
  type icmpv6_nd_advt (line 25262) | struct icmpv6_nd_advt {
  type icmpv6_nd_ra (line 25270) | struct icmpv6_nd_ra {
  type icmp6hdr (line 25280) | struct icmp6hdr {
  type mld_msg (line 25294) | struct mld_msg {
  type resource_entry (line 25299) | struct resource_entry {
  type pci_root_res (line 25306) | struct pci_root_res {
  type pci_root_info (line 25311) | struct pci_root_info {
  type bug_trap_type (line 25320) | enum bug_trap_type {
  type __u64 (line 25326) | typedef __u64 Elf64_Off;
  type elf64_hdr (line 25328) | struct elf64_hdr {
  type Elf64_Ehdr (line 25345) | typedef struct elf64_hdr Elf64_Ehdr;
  type elf64_shdr (line 25347) | struct elf64_shdr {
  type Elf64_Shdr (line 25360) | typedef struct elf64_shdr Elf64_Shdr;
  type warn_args (line 25362) | struct warn_args
  type ldt_struct (line 25364) | struct ldt_struct {
  type guid_t (line 25370) | typedef struct {
  type efi_status_t (line 25374) | typedef long unsigned int efi_status_t;
  type u8 (line 25376) | typedef u8 efi_bool_t;
  type u16 (line 25378) | typedef u16 efi_char16_t;
  type guid_t (line 25380) | typedef guid_t efi_guid_t;
  type efi_table_hdr_t (line 25382) | typedef struct {
  type efi_memory_desc_t (line 25390) | typedef struct {
  type efi_capsule_header_t (line 25399) | typedef struct {
  type efi_time_t (line 25406) | typedef struct {
  type efi_time_cap_t (line 25420) | typedef struct {
  type efi_runtime_services_32_t (line 25426) | typedef struct {
  type efi_status_t (line 25444) | typedef efi_status_t efi_get_time_t(efi_time_t *, efi_time_cap_t *);
  type efi_status_t (line 25446) | typedef efi_status_t efi_set_time_t(efi_time_t *);
  type efi_status_t (line 25448) | typedef efi_status_t efi_get_wakeup_time_t(efi_bool_t *, efi_bool_t *, e...
  type efi_status_t (line 25450) | typedef efi_status_t efi_set_wakeup_time_t(efi_bool_t, efi_time_t *);
  type efi_status_t (line 25452) | typedef efi_status_t efi_get_variable_t(efi_char16_t *, efi_guid_t *, u3...
  type efi_status_t (line 25454) | typedef efi_status_t efi_get_next_variable_t(long unsigned int *, efi_ch...
  type efi_status_t (line 25456) | typedef efi_status_t efi_set_variable_t(efi_char16_t *, efi_guid_t *, u3...
  type efi_status_t (line 25458) | typedef efi_status_t efi_get_next_high_mono_count_t(u32 *);
  type efi_status_t (line 25462) | typedef efi_status_t efi_query_variable_info_t(u32, u64 *, u64 *, u64 *);
  type efi_status_t (line 25464) | typedef efi_status_t efi_update_capsule_t(efi_capsule_header_t **, long ...
  type efi_status_t (line 25466) | typedef efi_status_t efi_query_capsule_caps_t(efi_capsule_header_t **, l...
  type efi_runtime_services_t (line 25468) | typedef union {
  type efi_config_table_64_t (line 25489) | typedef struct {
  type efi_memory_map_data (line 25494) | struct efi_memory_map_data {
  type efi_memory_map (line 25502) | struct efi_memory_map {
  type efi_mem_range (line 25512) | struct efi_mem_range {
  type efi (line 25517) | struct efi {
  type efi_rts_ids (line 25548) | enum efi_rts_ids {
  type efi_runtime_work (line 25564) | struct efi_runtime_work {
  type e820_type (line 25584) | enum e820_type {
  type e820_entry (line 25596) | struct e820_entry {
  type e820_table (line 25602) | struct e820_table {
  type ucount_type (line 25614) | enum ucount_type {
  type rlimit_type (line 25628) | enum rlimit_type {
  type cpu_usage_stat (line 25636) | enum cpu_usage_stat {
  type cgroup_subsys_id (line 25650) | enum cgroup_subsys_id {
  type efi_setup_data (line 25664) | struct efi_setup_data {
  type real_mode_header (line 25672) | struct real_mode_header {
  type btf_member (line 25710) | struct btf_member {
  type bpf_tramp_links (line 25716) | struct bpf_tramp_links {
  type bpf_tramp_prog_type (line 25721) | enum bpf_tramp_prog_type {
  type bpf_struct_ops (line 25729) | struct bpf_struct_ops {
  type bpf_dummy_ops_state (line 25744) | struct bpf_dummy_ops_state {
  type bpf_dummy_ops (line 25748) | struct bpf_dummy_ops {
  type bpf_struct_ops_state (line 25753) | enum bpf_struct_ops_state {
  type bpf_struct_ops_value (line 25759) | struct bpf_struct_ops_value {
  type bpf_struct_ops_map (line 25772) | struct bpf_struct_ops_map {
  type bpf_struct_ops_bpf_dummy_ops (line 25783) | struct bpf_struct_ops_bpf_dummy_ops {
  type bpf_struct_ops_tcp_congestion_ops (line 25802) | struct bpf_struct_ops_tcp_congestion_ops {
  type ebitmap_node (line 25821) | struct ebitmap_node {
  type ebitmap (line 25827) | struct ebitmap {
  type mls_level (line 25832) | struct mls_level {
  type mls_range (line 25837) | struct mls_range {
  type context (line 25841) | struct context {
  type sidtab_str_cache (line 25850) | struct sidtab_str_cache
  type sidtab_entry (line 25852) | struct sidtab_entry {
  type sidtab_str_cache (line 25860) | struct sidtab_str_cache {
  type sidtab_node_inner (line 25868) | struct sidtab_node_inner
  type sidtab_node_leaf (line 25870) | struct sidtab_node_leaf
  type sidtab_node_inner (line 25873) | struct sidtab_node_inner
  type sidtab_node_leaf (line 25874) | struct sidtab_node_leaf
  type sidtab_node_inner (line 25877) | struct sidtab_node_inner {
  type sidtab_node_leaf (line 25881) | struct sidtab_node_leaf {
  type sidtab_isid_entry (line 25885) | struct sidtab_isid_entry {
  type sidtab (line 25890) | struct sidtab
  type sidtab_convert_params (line 25892) | struct sidtab_convert_params {
  type sidtab (line 25898) | struct sidtab {
  type sockaddr_un (line 25911) | struct sockaddr_un {
  type unix_address (line 25916) | struct unix_address {
  type scm_stat (line 25922) | struct scm_stat {
  type unix_sock (line 25926) | struct unix_sock {
  type tcphdr (line 25948) | struct tcphdr {
  type dccp_hdr (line 25968) | struct dccp_hdr {
  type sctphdr (line 25982) | struct sctphdr {
  type lsm_network_audit (line 25989) | struct lsm_network_audit {
  type lsm_ioctlop_audit (line 26007) | struct lsm_ioctlop_audit {
  type lsm_ibpkey_audit (line 26012) | struct lsm_ibpkey_audit {
  type lsm_ibendport_audit (line 26017) | struct lsm_ibendport_audit {
  type selinux_audit_data (line 26022) | struct selinux_audit_data
  type common_audit_data (line 26024) | struct common_audit_data {
  type __large_struct (line 26051) | struct __large_struct {
  type system_states (line 26055) | enum system_states {
  type nvs_region (line 26066) | struct nvs_region {
  type nvs_page (line 26072) | struct nvs_page {
  type acpi_device_properties (line 26081) | struct acpi_device_properties {
  type acpi_status (line 26088) | typedef acpi_status (*acpi_walk_callback)(acpi_handle, u32, void *, void...
  type acpi_gpe_walk_info (line 26090) | struct acpi_gpe_walk_info {
  type acpi_name_info (line 26107) | struct acpi_name_info {
  type acpi_package_info (line 26113) | struct acpi_package_info {
  type acpi_package_info2 (line 26122) | struct acpi_package_info2 {
  type acpi_package_info3 (line 26129) | struct acpi_package_info3 {
  type acpi_package_info4 (line 26137) | struct acpi_package_info4 {
  type acpi_name_info (line 26147) | struct acpi_name_info
  type acpi_package_info (line 26148) | struct acpi_package_info
  type acpi_package_info2 (line 26149) | struct acpi_package_info2
  type acpi_package_info3 (line 26150) | struct acpi_package_info3
  type acpi_package_info4 (line 26151) | struct acpi_package_info4
  type acpi_evaluate_info (line 26154) | struct acpi_evaluate_info {
  type acpi_fadt_info (line 26173) | struct acpi_fadt_info {
  type acpi_fadt_pm_info (line 26182) | struct acpi_fadt_pm_info {
  type acpi_common_descriptor (line 26199) | struct acpi_common_descriptor {
  type acpi_common_descriptor (line 26205) | struct acpi_common_descriptor
  type acpi_namespace_node (line 26207) | struct acpi_namespace_node
  type acpi_status (line 26211) | typedef acpi_status (*acpi_pkg_callback)(u8, union acpi_operand_object *...
  type acpi_pkg_info (line 26213) | struct acpi_pkg_info {
  type pnp_device_id (line 26220) | struct pnp_device_id {
  type pnp_card_device_id (line 26225) | struct pnp_card_device_id {
  type pnp_protocol (line 26233) | struct pnp_protocol
  type pnp_id (line 26235) | struct pnp_id
  type pnp_card (line 26237) | struct pnp_card {
  type pnp_dev (line 26253) | struct pnp_dev
  type pnp_protocol (line 26255) | struct pnp_protocol {
  type pnp_id (line 26270) | struct pnp_id {
  type pnp_card_driver (line 26275) | struct pnp_card_driver
  type pnp_card_link (line 26277) | struct pnp_card_link {
  type pnp_driver (line 26284) | struct pnp_driver {
  type pnp_card_driver (line 26296) | struct pnp_card_driver {
  type pnp_dev (line 26308) | struct pnp_dev {
  type tty_audit_buf (line 26333) | struct tty_audit_buf {
  type resource_win (line 26341) | struct resource_win {
  type module_version_attribute (line 26346) | struct module_version_attribute {
  type acpi_table_tpm2 (line 26352) | struct acpi_table_tpm2 {
  type acpi_resource_irq (line 26360) | struct acpi_resource_irq {
  type acpi_resource_dma (line 26370) | struct acpi_resource_dma {
  type acpi_resource_start_dependent (line 26378) | struct acpi_resource_start_dependent {
  type acpi_resource_io (line 26384) | struct acpi_resource_io {
  type acpi_resource_fixed_io (line 26392) | struct acpi_resource_fixed_io {
  type acpi_resource_fixed_dma (line 26397) | struct acpi_resource_fixed_dma {
  type acpi_resource_vendor (line 26403) | struct acpi_resource_vendor {
  type acpi_resource_vendor_typed (line 26408) | struct acpi_resource_vendor_typed {
  type acpi_resource_end_tag (line 26415) | struct acpi_resource_end_tag {
  type acpi_resource_memory24 (line 26419) | struct acpi_resource_memory24 {
  type acpi_resource_memory32 (line 26427) | struct acpi_resource_memory32 {
  type acpi_resource_fixed_memory32 (line 26435) | struct acpi_resource_fixed_memory32 {
  type acpi_memory_attribute (line 26441) | struct acpi_memory_attribute {
  type acpi_io_attribute (line 26448) | struct acpi_io_attribute {
  type acpi_memory_attribute (line 26456) | struct acpi_memory_attribute
  type acpi_io_attribute (line 26457) | struct acpi_io_attribute
  type acpi_resource_label (line 26461) | struct acpi_resource_label {
  type acpi_resource_source (line 26466) | struct acpi_resource_source {
  type acpi_address16_attribute (line 26472) | struct acpi_address16_attribute {
  type acpi_address32_attribute (line 26480) | struct acpi_address32_attribute {
  type acpi_address64_attribute (line 26488) | struct acpi_address64_attribute {
  type acpi_resource_address (line 26496) | struct acpi_resource_address {
  type acpi_resource_address16 (line 26505) | struct acpi_resource_address16 {
  type acpi_resource_address32 (line 26516) | struct acpi_resource_address32 {
  type acpi_resource_address64 (line 26527) | struct acpi_resource_address64 {
  type acpi_resource_extended_address64 (line 26538) | struct acpi_resource_extended_address64 {
  type acpi_resource_extended_irq (line 26550) | struct acpi_resource_extended_irq {
  type acpi_resource_generic_register (line 26561) | struct acpi_resource_generic_register {
  type acpi_resource_gpio (line 26569) | struct acpi_resource_gpio {
  type acpi_resource_common_serialbus (line 26588) | struct acpi_resource_common_serialbus {
  type acpi_resource_i2c_serialbus (line 26601) | struct acpi_resource_i2c_serialbus {
  type acpi_resource_spi_serialbus (line 26617) | struct acpi_resource_spi_serialbus {
  type acpi_resource_uart_serialbus (line 26637) | struct acpi_resource_uart_serialbus {
  type acpi_resource_csi2_serialbus (line 26659) | struct acpi_resource_csi2_serialbus {
  type acpi_resource_pin_function (line 26674) | struct acpi_resource_pin_function {
  type acpi_resource_pin_config (line 26686) | struct acpi_resource_pin_config {
  type acpi_resource_pin_group (line 26699) | struct acpi_resource_pin_group {
  type acpi_resource_pin_group_function (line 26709) | struct acpi_resource_pin_group_function {
  type acpi_resource_pin_group_config (line 26720) | struct acpi_resource_pin_group_config {
  type acpi_resource_irq (line 26733) | struct acpi_resource_irq
  type acpi_resource_dma (line 26734) | struct acpi_resource_dma
  type acpi_resource_start_dependent (line 26735) | struct acpi_resource_start_dependent
  type acpi_resource_io (line 26736) | struct acpi_resource_io
  type acpi_resource_fixed_io (line 26737) | struct acpi_resource_fixed_io
  type acpi_resource_fixed_dma (line 26738) | struct acpi_resource_fixed_dma
  type acpi_resource_vendor (line 26739) | struct acpi_resource_vendor
  type acpi_resource_vendor_typed (line 26740) | struct acpi_resource_vendor_typed
  type acpi_resource_end_tag (line 26741) | struct acpi_resource_end_tag
  type acpi_resource_memory24 (line 26742) | struct acpi_resource_memory24
  type acpi_resource_memory32 (line 26743) | struct acpi_resource_memory32
  type acpi_resource_fixed_memory32 (line 26744) | struct acpi_resource_fixed_memory32
  type acpi_resource_address16 (line 26745) | struct acpi_resource_address16
  type acpi_resource_address32 (line 26746) | struct acpi_resource_address32
  type acpi_resource_address64 (line 26747) | struct acpi_resource_address64
  type acpi_resource_extended_address64 (line 26748) | struct acpi_resource_extended_address64
  type acpi_resource_extended_irq (line 26749) | struct acpi_resource_extended_irq
  type acpi_resource_generic_register (line 26750) | struct acpi_resource_generic_register
  type acpi_resource_gpio (line 26751) | struct acpi_resource_gpio
  type acpi_resource_i2c_serialbus (line 26752) | struct acpi_resource_i2c_serialbus
  type acpi_resource_spi_serialbus (line 26753) | struct acpi_resource_spi_serialbus
  type acpi_resource_uart_serialbus (line 26754) | struct acpi_resource_uart_serialbus
  type acpi_resource_csi2_serialbus (line 26755) | struct acpi_resource_csi2_serialbus
  type acpi_resource_common_serialbus (line 26756) | struct acpi_resource_common_serialbus
  type acpi_resource_pin_function (line 26757) | struct acpi_resource_pin_function
  type acpi_resource_pin_config (line 26758) | struct acpi_resource_pin_config
  type acpi_resource_pin_group (line 26759) | struct acpi_resource_pin_group
  type acpi_resource_pin_group_function (line 26760) | struct acpi_resource_pin_group_function
  type acpi_resource_pin_group_config (line 26761) | struct acpi_resource_pin_group_config
  type acpi_resource_address (line 26762) | struct acpi_resource_address
  type acpi_resource (line 26765) | struct acpi_resource {
  type acpi_device (line 26771) | struct acpi_device
  type acpi_device (line 26773) | struct acpi_device
  type acpi_device (line 26775) | struct acpi_device
  type acpi_device_ops (line 26777) | struct acpi_device_ops {
  type acpi_driver (line 26783) | struct acpi_driver {
  type TPM_OPS_FLAGS (line 26793) | enum TPM_OPS_FLAGS {
  type tpm2_timeouts (line 26797) | enum tpm2_timeouts {
  type tpm_chip_flags (line 26809) | enum tpm_chip_flags {
  type crb_defaults (line 26819) | enum crb_defaults {
  type crb_loc_ctrl (line 26824) | enum crb_loc_ctrl {
  type crb_loc_state (line 26829) | enum crb_loc_state {
  type crb_ctrl_req (line 26834) | enum crb_ctrl_req {
  type crb_ctrl_sts (line 26839) | enum crb_ctrl_sts {
  type crb_start (line 26844) | enum crb_start {
  type crb_cancel (line 26848) | enum crb_cancel {
  type crb_regs_head (line 26852) | struct crb_regs_head {
  type crb_regs_tail (line 26862) | struct crb_regs_tail {
  type crb_status (line 26876) | enum crb_status {
  type crb_priv (line 26880) | struct crb_priv {
  type tpm2_crb_smc (line 26891) | struct tpm2_crb_smc {
  type ipv4_devconf (line 26909) | struct ipv4_devconf {
  type netdev_state_t (line 26995) | enum netdev_state_t {
  type pcpu_dstats (line 27004) | struct pcpu_dstats {
  type in_ifaddr (line 27014) | struct in_ifaddr
  type ip_mc_list (line 27016) | struct ip_mc_list
  type in_device (line 27018) | struct in_device {
  type netdev_cmd (line 27044) | enum netdev_cmd {
  type netdev_notifier_info (line 27086) | struct netdev_notifier_info {
  type rt_scope_t (line 27144) | enum rt_scope_t {
  type rt_class_t (line 27152) | enum rt_class_t {
  type nl_info (line 27161) | struct nl_info {
  type in_ifaddr (line 27169) | struct in_ifaddr {
  type l3mdev_type (line 27232) | enum l3mdev_type {
  type net (line 27238) | struct net
  type fib6_result (line 27240) | struct fib6_result
  type fib6_config (line 27242) | struct fib6_config
  type ipv6_stub (line 27244) | struct ipv6_stub {
  type fib6_result (line 27270) | struct fib6_result {
  type fib6_config (line 27278) | struct fib6_config {
  type vrf_map (line 27306) | struct vrf_map {
  type vrf_map_elem (line 27313) | struct vrf_map_elem {
  type netns_vrf (line 27321) | struct netns_vrf {
  type net_vrf (line 27327) | struct net_vrf {
  type skb_gso_cb (line 27336) | struct skb_gso_cb {
  type offload_callbacks (line 27346) | struct offload_callbacks {
  type net_offload (line 27352) | struct net_offload {
  type frag_hdr (line 27357) | struct frag_hdr {
  type sock (line 27364) | struct sock
  type sk_buff (line 27364) | struct sk_buff
  type napi_gro_cb (line 27366) | struct napi_gro_cb {
  type xa_mark_t (line 27407) | typedef unsigned int xa_mark_t;
  type xa_lock_type (line 27409) | enum xa_lock_type {
  type ida (line 27414) | struct ida {
  type xdp_umem (line 27418) | struct xdp_umem
  type xsk_queue (line 27420) | struct xsk_queue
  type xdp_buff_xsk (line 27422) | struct xdp_buff_xsk
  type xdp_desc (line 27424) | struct xdp_desc
  type xsk_buff_pool (line 27426) | struct xsk_buff_pool {
  type xdp_umem_reg (line 27470) | struct xdp_umem_reg {
  type xdp_desc (line 27478) | struct xdp_desc {
  type xdp_umem (line 27484) | struct xdp_umem {
  type xdp_ring (line 27501) | struct xdp_ring
  type xsk_queue (line 27503) | struct xsk_queue {
  type xdp_buff_xsk (line 27513) | struct xdp_buff_xsk {
  type xdp_ring (line 27522) | struct xdp_ring {
  type __u32 (line 27566) | typedef __u32 Elf32_Word;
  type elf32_note (line 27568) | struct elf32_note {
  type new_utsname (line 27574) | struct new_utsname {
  type uts_namespace (line 27583) | struct uts_namespace {
  type x86_cpu_desc (line 27600) | struct x86_cpu_desc {
  type __kernel_rwf_t (line 27608) | typedef __kernel_rwf_t rwf_t;
  type splice_desc (line 27610) | struct splice_desc {
  type partial_page (line 27625) | struct partial_page {
  type splice_pipe_desc (line 27631) | struct splice_pipe_desc {
  type pipe_inode_info (line 27640) | struct pipe_inode_info
  type pipe_buffer (line 27640) | struct pipe_buffer
  type splice_desc (line 27640) | struct splice_desc
  type pipe_inode_info (line 27642) | struct pipe_inode_info
  type splice_desc (line 27642) | struct splice_desc
  type dax_device (line 27644) | struct dax_device
  type iomap_page_ops (line 27646) | struct iomap_page_ops
  type iomap (line 27648) | struct iomap {
  type iomap_page_ops (line 27661) | struct iomap_page_ops {
  type iomap_ops (line 27666) | struct iomap_ops {
  type iomap_iter (line 27671) | struct iomap_iter {
  type kernfs_node_type (line 27682) | enum kernfs_node_type {
  type __u16 (line 27688) | typedef __u16 __le16;
  type buffer_head (line 27690) | struct buffer_head
  type buffer_head (line 27692) | struct buffer_head
  type buffer_head (line 27694) | struct buffer_head {
  type fiemap_extent (line 27710) | struct fiemap_extent
  type fiemap_extent_info (line 27712) | struct fiemap_extent_info {
  type disk_stats (line 27719) | struct disk_stats {
  type stat_group (line 27728) | enum stat_group {
  type tid_t (line 27736) | typedef unsigned int tid_t;
  type transaction_chp_stats_s (line 27738) | struct transaction_chp_stats_s {
  type journal_s (line 27745) | struct journal_s
  type journal_t (line 27747) | typedef struct journal_s journal_t;
  type journal_head (line 27749) | struct journal_head
  type transaction_s (line 27751) | struct transaction_s
  type transaction_t (line 27753) | typedef struct transaction_s transaction_t;
  type transaction_s (line 27755) | struct transaction_s {
  type jbd2_buffer_trigger_type (line 27796) | struct jbd2_buffer_trigger_type
  type journal_head (line 27798) | struct journal_head {
  type jbd2_buffer_trigger_type (line 27817) | struct jbd2_buffer_trigger_type {
  type transaction_run_stats_s (line 27822) | struct transaction_run_stats_s {
  type transaction_stats_s (line 27834) | struct transaction_stats_s {
  type passtype (line 27840) | enum passtype {
  type journal_superblock_s (line 27846) | struct journal_superblock_s
  type journal_superblock_t (line 27848) | typedef struct journal_superblock_s journal_superblock_t;
  type jbd2_revoke_table_s (line 27850) | struct jbd2_revoke_table_s
  type jbd2_inode (line 27852) | struct jbd2_inode
  type journal_s (line 27854) | struct journal_s {
  type journal_header_s (line 27932) | struct journal_header_s {
  type journal_header_t (line 27938) | typedef struct journal_header_s journal_header_t;
  type journal_superblock_s (line 27940) | struct journal_superblock_s {
  type jbd2_inode (line 27964) | struct jbd2_inode {
  type bgl_lock (line 27974) | struct bgl_lock {
  type blockgroup_lock (line 27978) | struct blockgroup_lock {
  type fiemap_extent (line 27982) | struct fiemap_extent {
  type fscrypt_dummy_policy (line 27991) | struct fscrypt_dummy_policy {}
  type ext4_grpblk_t (line 27993) | typedef int ext4_grpblk_t;
  type ext4_fsblk_t (line 27995) | typedef long long unsigned int ext4_fsblk_t;
  type __u32 (line 27997) | typedef __u32 ext4_lblk_t;
  type ext4_group_t (line 27999) | typedef unsigned int ext4_group_t;
  type ext4_system_blocks (line 28001) | struct ext4_system_blocks {
  type flex_groups (line 28006) | struct flex_groups {
  type ext4_es_stats (line 28012) | struct ext4_es_stats {
  type ext4_fc_stats (line 28022) | struct ext4_fc_stats {
  type ext4_fc_alloc_region (line 28032) | struct ext4_fc_alloc_region {
  type ext4_fc_replay_state (line 28039) | struct ext4_fc_replay_state {
  type ext4_super_block (line 28054) | struct ext4_super_block {
  type ext4_journal_trigger (line 28160) | struct ext4_journal_trigger {
  type ext4_orphan_block (line 28165) | struct ext4_orphan_block {
  type ext4_orphan_info (line 28170) | struct ext4_orphan_info {
  type mb_cache (line 28176) | struct mb_cache
  type ext4_group_info (line 28178) | struct ext4_group_info
  type ext4_locality_group (line 28180) | struct ext4_locality_group
  type ext4_li_request (line 28182) | struct ext4_li_request
  type ext4_sb_info (line 28184) | struct ext4_sb_info {
  type ext4_group_info (line 28355) | struct ext4_group_info {
  type ext4_li_mode (line 28371) | enum ext4_li_mode {
  type ext4_li_request (line 28376) | struct ext4_li_request {
  type ext4_attr (line 28413) | struct ext4_attr {
  type __kernel_fsid_t (line 28424) | typedef struct {
  type name_snapshot (line 28428) | struct name_snapshot {
  type fsnotify_mark_connector (line 28433) | struct fsnotify_mark_connector
  type fsnotify_mark_connector (line 28435) | struct fsnotify_mark_connector {
  type tree_descr (line 28447) | struct tree_descr {
  type vfsmount (line 28453) | struct vfsmount
  type dentry (line 28453) | struct dentry
  type fsnotify_data_type (line 28455) | enum fsnotify_data_type {
  type match_token (line 28463) | struct match_token {
  type substring_t (line 28472) | typedef struct {
  type lockdown_reason (line 28477) | enum lockdown_reason {
  type debugfs_fsdata (line 28510) | struct debugfs_fsdata {
  type debugfs_mount_opts (line 28516) | struct debugfs_mount_opts {
  type debugfs_fs_info (line 28530) | struct debugfs_fs_info {
  type __una_u32 (line 28534) | struct __una_u32 {
  type netlbl_lsm_catmap (line 28538) | struct netlbl_lsm_catmap {
  type policy_file (line 28556) | struct policy_file {
  type av_decision (line 28561) | struct av_decision {
  type extended_perms_data (line 28569) | struct extended_perms_data {
  type extended_perms_decision (line 28573) | struct extended_perms_decision {
  type extended_perms (line 28581) | struct extended_perms {
  type avtab_key (line 28586) | struct avtab_key {
  type avtab_extended_perms (line 28593) | struct avtab_extended_perms {
  type avtab_datum (line 28599) | struct avtab_datum {
  type avtab_node (line 28606) | struct avtab_node {
  type avtab (line 28612) | struct avtab {
  type hashtab_node (line 28619) | struct hashtab_node {
  type hashtab (line 28625) | struct hashtab {
  type symtab (line 28631) | struct symtab {
  type type_set (line 28636) | struct type_set
  type constraint_expr (line 28638) | struct constraint_expr {
  type type_set (line 28647) | struct type_set {
  type constraint_node (line 28653) | struct constraint_node {
  type common_datum (line 28659) | struct common_datum {
  type class_datum (line 28664) | struct class_datum {
  type role_datum (line 28677) | struct role_datum {
  type role_allow (line 28684) | struct role_allow {
  type type_datum (line 28690) | struct type_datum {
  type user_datum (line 28697) | struct user_datum {
  type cond_bool_datum (line 28705) | struct cond_bool_datum {
  type ocontext (line 28710) | struct ocontext {
  type genfs (line 28745) | struct genfs {
  type cond_node (line 28751) | struct cond_node
  type policydb (line 28753) | struct policydb {
  type cond_expr_node (line 28785) | struct cond_expr_node
  type cond_expr (line 28787) | struct cond_expr {
  type cond_av_list (line 28792) | struct cond_av_list {
  type cond_node (line 28797) | struct cond_node {
  type policy_data (line 28804) | struct policy_data {
  type cond_expr_node (line 28809) | struct cond_expr_node {
  type cond_insertf_data (line 28814) | struct cond_insertf_data {
  type tpm_digest (line 28820) | struct tpm_digest {
  type integrity_status (line 28825) | enum integrity_status {
  type evm_ima_xattr_data (line 28835) | struct evm_ima_xattr_data {
  type ima_digest_data (line 28840) | struct ima_digest_data {
  type integrity_iint_cache (line 28857) | struct integrity_iint_cache {
  type ima_show_type (line 28874) | enum ima_show_type {
  type modsig (line 28881) | struct modsig
  type ima_event_data (line 28883) | struct ima_event_data {
  type ima_field_data (line 28895) | struct ima_field_data {
  type ima_template_field (line 28900) | struct ima_template_field {
  type ima_template_desc (line 28906) | struct ima_template_desc {
  type ima_template_entry (line 28914) | struct ima_template_entry {
  type ima_queue_entry (line 28922) | struct ima_queue_entry {
  type ima_h_table (line 28928) | struct ima_h_table {
  type ima_fs_flags (line 28934) | enum ima_fs_flags {
  type blake2b_lengths (line 28938) | enum blake2b_lengths {
  type blake2b_state (line 28948) | struct blake2b_state {
  type blake2b_iv (line 28957) | enum blake2b_iv {
  type blake2b_state (line 28968) | struct blake2b_state
  type blake2b_tfm_ctx (line 28970) | struct blake2b_tfm_ctx {
  type bvec_iter_all (line 28975) | struct bvec_iter_all {
  type req_flag_bits (line 28998) | enum req_flag_bits {
  type iter_type (line 29022) | enum iter_type {
  type rq_map_data (line 29032) | struct rq_map_data {
  type bio_map_data (line 29041) | struct bio_map_data {
  type u16 (line 29048) | typedef u16 acpi_rs_length;
  type acpi_status (line 29050) | typedef acpi_status (*acpi_walk_aml_callback)(u8 *, u32, u32, u8, void **);
  type aml_resource_small_header (line 29052) | struct aml_resource_small_header {
  type aml_resource_irq (line 29056) | struct aml_resource_irq {
  type aml_resource_dma (line 29062) | struct aml_resource_dma {
  type aml_resource_start_dependent (line 29068) | struct aml_resource_start_dependent {
  type aml_resource_end_dependent (line 29073) | struct aml_resource_end_dependent {
  type aml_resource_io (line 29077) | struct aml_resource_io {
  type aml_resource_fixed_io (line 29086) | struct aml_resource_fixed_io {
  type aml_resource_vendor_small (line 29092) | struct aml_resource_vendor_small {
  type aml_resource_end_tag (line 29096) | struct aml_resource_end_tag {
  type aml_resource_fixed_dma (line 29101) | struct aml_resource_fixed_dma {
  type aml_resource_large_header (line 29108) | struct aml_resource_large_header {
  type aml_resource_memory24 (line 29113) | struct aml_resource_memory24 {
  type aml_resource_vendor_large (line 29123) | struct aml_resource_vendor_large {
  type aml_resource_memory32 (line 29128) | struct aml_resource_memory32 {
  type aml_resource_fixed_memory32 (line 29138) | struct aml_resource_fixed_memory32 {
  type aml_resource_address (line 29146) | struct aml_resource_address {
  type aml_resource_extended_address64 (line 29154) | struct aml_resource_extended_address64 {
  type aml_resource_address64 (line 29170) | struct aml_resource_address64 {
  type aml_resource_address32 (line 29183) | struct aml_resource_address32 {
  type aml_resource_address16 (line 29196) | struct aml_resource_address16 {
  type aml_resource_extended_irq (line 29209) | struct aml_resource_extended_irq {
  type aml_resource_generic_register (line 29217) | struct aml_resource_generic_register {
  type aml_resource_gpio (line 29227) | struct aml_resource_gpio {
  type aml_resource_common_serialbus (line 29244) | struct aml_resource_common_serialbus {
  type aml_resource_csi2_serialbus (line 29256) | struct aml_resource_csi2_serialbus {
  type aml_resource_i2c_serialbus (line 29268) | struct aml_resource_i2c_serialbus {
  type aml_resource_spi_serialbus (line 29282) | struct aml_resource_spi_serialbus {
  type aml_resource_uart_serialbus (line 29299) | struct aml_resource_uart_serialbus {
  type aml_resource_pin_function (line 29316) | struct aml_resource_pin_function {
  type aml_resource_pin_config (line 29330) | struct aml_resource_pin_config {
  type aml_resource_pin_group (line 29344) | struct aml_resource_pin_group {
  type aml_resource_pin_group_function (line 29355) | struct aml_resource_pin_group_function {
  type aml_resource_pin_group_config (line 29368) | struct aml_resource_pin_group_config {
  type aml_resource_small_header (line 29384) | struct aml_resource_small_header
  type aml_resource_large_header (line 29385) | struct aml_resource_large_header
  type aml_resource_irq (line 29386) | struct aml_resource_irq
  type aml_resource_dma (line 29387) | struct aml_resource_dma
  type aml_resource_start_dependent (line 29388) | struct aml_resource_start_dependent
  type aml_resource_end_dependent (line 29389) | struct aml_resource_end_dependent
  type aml_resource_io (line 29390) | struct aml_resource_io
  type aml_resource_fixed_io (line 29391) | struct aml_resource_fixed_io
  type aml_resource_fixed_dma (line 29392) | struct aml_resource_fixed_dma
  type aml_resource_vendor_small (line 29393) | struct aml_resource_vendor_small
  type aml_resource_end_tag (line 29394) | struct aml_resource_end_tag
  type aml_resource_memory24 (line 29395) | struct aml_resource_memory24
  type aml_resource_generic_register (line 29396) | struct aml_resource_generic_register
  type aml_resource_vendor_large (line 29397) | struct aml_resource_vendor_large
  type aml_resource_memory32 (line 29398) | struct aml_resource_memory32
  type aml_resource_fixed_memory32 (line 29399) | struct aml_resource_fixed_memory32
  type aml_resource_address16 (line 29400) | struct aml_resource_address16
  type aml_resource_address32 (line 29401) | struct aml_resource_address32
  type aml_resource_address64 (line 29402) | struct aml_resource_address64
  type aml_resource_extended_address64 (line 29403) | struct aml_resource_extended_address64
  type aml_resource_extended_irq (line 29404) | struct aml_resource_extended_irq
  type aml_resource_gpio (line 29405) | struct aml_resource_gpio
  type aml_resource_i2c_serialbus (line 29406) | struct aml_resource_i2c_serialbus
  type aml_resource_spi_serialbus (line 29407) | struct aml_resource_spi_serialbus
  type aml_resource_uart_serialbus (line 29408) | struct aml_resource_uart_serialbus
  type aml_resource_csi2_serialbus (line 29409) | struct aml_resource_csi2_serialbus
  type aml_resource_common_serialbus (line 29410) | struct aml_resource_common_serialbus
  type aml_resource_pin_function (line 29411) | struct aml_resource_pin_function
  type aml_resource_pin_config (line 29412) | struct aml_resource_pin_config
  type aml_resource_pin_group (line 29413) | struct aml_resource_pin_group
  type aml_resource_pin_group_function (line 29414) | struct aml_resource_pin_group_function
  type aml_resource_pin_group_config (line 29415) | struct aml_resource_pin_group_config
  type aml_resource_address (line 29416) | struct aml_resource_address
  type virtio_device_id (line 29422) | struct virtio_device_id {
  type vringh_config_ops (line 29427) | struct vringh_config_ops
  type virtio_config_ops (line 29429) | struct virtio_config_ops
  type virtio_device (line 29431) | struct virtio_device {
  type virtqueue (line 29447) | struct virtqueue
  type virtqueue (line 29449) | struct virtqueue
  type virtio_shm_region (line 29451) | struct virtio_shm_region
  type virtio_config_ops (line 29453) | struct virtio_config_ops {
  type __kernel_long_t (line 29473) | typedef __kernel_long_t __kernel_off_t;
  type __kernel_off_t (line 29475) | typedef __kernel_off_t off_t;
  type chipset_type (line 29477) | enum chipset_type {
  type agp_version (line 29482) | struct agp_version {
  type agp_bridge_data (line 29487) | struct agp_bridge_data
  type agp_memory (line 29489) | struct agp_memory {
  type agp_bridge_driver (line 29507) | struct agp_bridge_driver
  type agp_bridge_data (line 29509) | struct agp_bridge_data {
  type aper_size_type (line 29541) | enum aper_size_type {
  type gatt_mask (line 29549) | struct gatt_mask {
  type aper_size_info_8 (line 29554) | struct aper_size_info_8 {
  type aper_size_info_16 (line 29561) | struct aper_size_info_16 {
  type agp_bridge_driver (line 29568) | struct agp_bridge_driver {
  type intel_agp_driver_description (line 29596) | struct intel_agp_driver_description {
  type dma_fence_ops (line 29602) | struct dma_fence_ops
  type dma_fence (line 29604) | struct dma_fence {
  type dma_fence_ops (line 29619) | struct dma_fence_ops {
  type dma_fence_flag_bits (line 
Copy disabled (too large) Download .json
Condensed preview — 7088 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (81,896K chars).
[
  {
    "path": ".ci-operator.yaml",
    "chars": 106,
    "preview": "build_root_image:\n  namespace: openshift\n  name: release\n  tag: rhel-9-release-golang-1.25-openshift-4.21\n"
  },
  {
    "path": ".coderabbit.yaml",
    "chars": 4374,
    "preview": "# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json\nlanguage: en-US\ntone_instructions: \"Be"
  },
  {
    "path": ".dockerignore",
    "chars": 679,
    "preview": "# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file\n\n# Build artifacts\n**/bin/\n*.o\n*.tar\n*."
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 605,
    "preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 926,
    "preview": "## Description\n\n<!-- Fill-in description here -->\n\n## Dependencies\n\n<!-- List here any related PRs with links, that need"
  },
  {
    "path": ".github/release.yml",
    "chars": 278,
    "preview": "changelog:\n  categories:\n    - title: Breaking changes 🛠\n      labels:\n        - breaking-change\n    - title: Non-breaki"
  },
  {
    "path": ".github/workflows/build_image_pr.yml",
    "chars": 1234,
    "preview": "name: Build PR image and upload artifact\non:\n  pull_request:\n    types: [labeled]\n\nenv:\n  WF_REGISTRY: quay.io/netobserv"
  },
  {
    "path": ".github/workflows/pull_request.yml",
    "chars": 911,
    "preview": "name: Pull request checks\n\non:\n  pull_request:\n    branches: [ '*' ]\n\njobs:\n  test:\n    name: test\n    runs-on: ubuntu-l"
  },
  {
    "path": ".github/workflows/pull_request_e2e.yml",
    "chars": 701,
    "preview": "name: pull request - e2e tests\n\n#todo: check caching dependencies: https://github.com/actions/cache\non:\n  push:\n    bran"
  },
  {
    "path": ".github/workflows/push_image.yml",
    "chars": 2356,
    "preview": "name: Build and push to quay.io\non:\n  push:\n    branches: [ main, release-*, workflow-test ]\n\nenv:\n  WF_REGISTRY_USER: n"
  },
  {
    "path": ".github/workflows/push_image_pr.yml",
    "chars": 2132,
    "preview": "name: Push PR image to quay.io\non:\n  workflow_run:\n    workflows: [\"Build PR image and upload artifact\"]\n    types:\n    "
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 2417,
    "preview": "name: release to quay.io\non:\n  push:\n    tags: [v*]\n\nenv:\n  WF_REGISTRY_USER: netobserv+github_ci\n  WF_ORG: netobserv\n  "
  },
  {
    "path": ".github/workflows/rm-ok-to-test.yaml",
    "chars": 423,
    "preview": "name: Remove ok-to-test\non:\n  pull_request_target:\n    types: [synchronize,reopened]\n\njobs:\n  rm-ok-to-test:\n    if: con"
  },
  {
    "path": ".gitignore",
    "chars": 83,
    "preview": ".idea/\n.vscode/\n*.out\nbin/\ne2e-logs\nebpf-agent.tar\n*.pcap\nprotoc/\nrelease-assets/\n\n"
  },
  {
    "path": ".gitleaks.toml",
    "chars": 211,
    "preview": "[allowlist]\n  description = \"Repo Allowlist\"\n  paths = [\n    '''pkg/test/tls.go''',\n\n    # Ignore the .gitleaks.toml\n   "
  },
  {
    "path": ".golangci.yml",
    "chars": 942,
    "preview": "version: \"2\"\nrun:\n  go: \"1.23\"\nlinters:\n  enable:\n    - copyloopvar\n    - cyclop\n    - errcheck\n    - errname\n    - erro"
  },
  {
    "path": ".mk/bc.mk",
    "chars": 3378,
    "preview": "##@ bytecode images\n\nBC_IMAGE_TAG_BASE ?= quay.io/${IMAGE_ORG}/ebpf-bytecode\nBC_IMAGE ?= $(BC_IMAGE_TAG_BASE):$(VERSION)"
  },
  {
    "path": ".mk/shortcuts.mk",
    "chars": 752,
    "preview": "##@ shortcuts helpers\n\n.PHONY: build\nbuild: prereqs fmt lint test vendors compile ## Test and Build ebpf agent\n\n.PHONY: "
  },
  {
    "path": ".snyk",
    "chars": 62,
    "preview": "---\nexclude:\n  global:\n    - vendor/**\n    - requirements.txt\n"
  },
  {
    "path": ".tekton/netobserv-ebpf-agent-ystream-pull-request.yaml",
    "chars": 1845,
    "preview": "apiVersion: tekton.dev/v1\nkind: PipelineRun\nmetadata:\n  annotations:\n    build.appstudio.openshift.io/repo: https://gith"
  },
  {
    "path": ".tekton/netobserv-ebpf-agent-ystream-push.yaml",
    "chars": 2036,
    "preview": "apiVersion: tekton.dev/v1\nkind: PipelineRun\nmetadata:\n  annotations:\n    build.appstudio.openshift.io/build-nudge-files:"
  },
  {
    "path": ".tekton/pipeline-ref.yaml",
    "chars": 16285,
    "preview": "apiVersion: tekton.dev/v1\nkind: Pipeline\nmetadata:\n  name: build-pipeline\nspec:\n  finally:\n  - name: show-sbom\n    param"
  },
  {
    "path": "AGENTS.md",
    "chars": 12026,
    "preview": "# AI Agents Best Practices for NetObserv eBPF Agent\n\nBest practices for AI coding agents on NetObserv eBPF Agent.\n\n> **N"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 140,
    "preview": "## Contributing\n\nPlease refer to [NetObserv projects contribution guide](https://github.com/netobserv/documents/blob/mai"
  },
  {
    "path": "Containerfile.bytecode.multi.arch",
    "chars": 709,
    "preview": "## see https://go.dev/doc/install/source#environment for valid\n## GOARCHes when GOOS=linux.\nFROM scratch\nARG TARGETARCH\n"
  },
  {
    "path": "DOWNSTREAM_OWNERS",
    "chars": 76,
    "preview": "approvers:\n- netobserv-team-approvers\nreviewers:\n- netobserv-team-reviewers\n"
  },
  {
    "path": "DOWNSTREAM_OWNERS_ALIASES",
    "chars": 416,
    "preview": "\naliases:\n  # Contributors who can approve any PRs in the repo.\n  netobserv-team-approvers:\n  - jotak\n  - jpinsonneau\n  "
  },
  {
    "path": "Dockerfile",
    "chars": 696,
    "preview": "ARG TARGETARCH\n\n# Build the manager binary\nFROM docker.io/library/golang:1.25 as builder\n\nARG TARGETARCH\n\nARG LDFLAGS\n\nW"
  },
  {
    "path": "Dockerfile-args.downstream",
    "chars": 40,
    "preview": "BUILDVERSION=1.12.0\nBUILDVERSION_Y=1.12\n"
  },
  {
    "path": "Dockerfile.downstream",
    "chars": 1761,
    "preview": "ARG BUILDVERSION\nARG BUILDVERSION_Y\n\n# Build the manager binary\nFROM brew.registry.redhat.io/rh-osbs/openshift-golang-bu"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 10857,
    "preview": "# VERSION defines the project version for the bundle.\n# Update this value when you upgrade the version of your project.\n"
  },
  {
    "path": "OWNERS",
    "chars": 176,
    "preview": "approvers:\n- jotak\n- jpinsonneau\n- OlivierCazade\n- msherif1234\n- luisjira\n- leandroberetta\noptions: {}\nreviewers:\n- jota"
  },
  {
    "path": "README.downstream",
    "chars": 248,
    "preview": "Network Observability eBPF Agent\n\nLicenses\n\nTwo licenses are used for the source code in this repository:\n\n- GPL v2 (fil"
  },
  {
    "path": "README.md",
    "chars": 8300,
    "preview": "# Network Observability eBPF Agent\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/netobserv/netobserv-ebp"
  },
  {
    "path": "SECURITY.md",
    "chars": 831,
    "preview": "# Security Policy\n\n## Supported Versions\n\nAll NetObserv components use a single rolling release distribution model. Only"
  },
  {
    "path": "bpf/.clang-format",
    "chars": 175,
    "preview": "{\n  BasedOnStyle: LLVM,\n  AllowShortFunctionsOnASingleLine: InlineOnly,\n  ColumnLimit: 100,\n  IndentWidth: 4,\n  SortIncl"
  },
  {
    "path": "bpf/LICENSE",
    "chars": 18092,
    "preview": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
  },
  {
    "path": "bpf/configs.h",
    "chars": 780,
    "preview": "\n#ifndef __CONFIGS_H__\n#define __CONFIGS_H__\n\n// Constant definitions, to be overridden by the invoker\nvolatile const u3"
  },
  {
    "path": "bpf/dns_tracker.h",
    "chars": 4456,
    "preview": "/*\n    light weight DNS tracker.\n*/\n\n#ifndef __DNS_TRACKER_H__\n#define __DNS_TRACKER_H__\n#include \"utils.h\"\n\n#define DNS"
  },
  {
    "path": "bpf/flows.c",
    "chars": 13274,
    "preview": "/*\n    Flows v2.\n    Flow monitor: A Flow-metric generator using TC.\n\n    This program can be hooked on to TC ingress/eg"
  },
  {
    "path": "bpf/flows_filter.h",
    "chars": 10108,
    "preview": "/*\n    rule based filter to filter out packets not of interest to users.\n*/\n\n#ifndef __FLOWS_FILTER_H__\n#define __FLOWS_"
  },
  {
    "path": "bpf/headers/bpf_builtins.h",
    "chars": 59531,
    "preview": "/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */\n/* Copyright Authors of Cilium */\n\n#ifndef __BPF_BUILTINS_"
  },
  {
    "path": "bpf/headers/bpf_core_read.h",
    "chars": 20081,
    "preview": "/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */\n#ifndef __BPF_CORE_READ_H__\n#define __BPF_CORE_READ_H__\n\n#incl"
  },
  {
    "path": "bpf/headers/bpf_endian.h",
    "chars": 3750,
    "preview": "/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */\n#ifndef __BPF_ENDIAN__\n#define __BPF_ENDIAN__\n\n/*\n * Isolate b"
  },
  {
    "path": "bpf/headers/bpf_helper_defs.h",
    "chars": 153574,
    "preview": "/* This is auto-generated file. See bpf_doc.py for details. */\n\n/* Forward declarations of BPF structs */\nstruct bpf_fib"
  },
  {
    "path": "bpf/headers/bpf_helpers.h",
    "chars": 8808,
    "preview": "/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */\n#ifndef __BPF_HELPERS__\n#define __BPF_HELPERS__\n\n/*\n * Note th"
  },
  {
    "path": "bpf/headers/bpf_tracing.h",
    "chars": 20946,
    "preview": "/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */\n#ifndef __BPF_TRACING_H__\n#define __BPF_TRACING_H__\n\n/* Scan t"
  },
  {
    "path": "bpf/headers/compiler.h",
    "chars": 1035,
    "preview": "/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */\n/* Copyright Authors of Cilium */\n\n#ifndef __BPF_COMPILER_"
  },
  {
    "path": "bpf/headers/utils.h",
    "chars": 2188,
    "preview": "// Copyright The OpenTelemetry Authors\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may "
  },
  {
    "path": "bpf/headers/vmlinux.h",
    "chars": 350,
    "preview": "#ifndef __VMLINUX_H_PARENT_\n#define __VMLINUX_H_PARENT_\n\n#if defined(__TARGET_ARCH_x86)\n\n#include \"vmlinux_amd64.h\"\n\n#el"
  },
  {
    "path": "bpf/headers/vmlinux_amd64.h",
    "chars": 2046779,
    "preview": "#ifndef __VMLINUX_H__\n#define __VMLINUX_H__\n\n#ifndef BPF_NO_PRESERVE_ACCESS_INDEX\n#pragma clang attribute push (__attrib"
  },
  {
    "path": "bpf/headers/vmlinux_arm64.h",
    "chars": 1928443,
    "preview": "#ifndef __VMLINUX_H__\n#define __VMLINUX_H__\n\n#ifndef BPF_NO_PRESERVE_ACCESS_INDEX\n#pragma clang attribute push (__attrib"
  },
  {
    "path": "bpf/headers/vmlinux_ppc64le.h",
    "chars": 2740999,
    "preview": "#ifndef __VMLINUX_H__\n#define __VMLINUX_H__\n\n#ifndef BPF_NO_PRESERVE_ACCESS_INDEX\n#pragma clang attribute push (__attrib"
  },
  {
    "path": "bpf/headers/vmlinux_s390.h",
    "chars": 2480933,
    "preview": "#ifndef __VMLINUX_H__\n#define __VMLINUX_H__\n\n#ifndef BPF_NO_PRESERVE_ACCESS_INDEX\n#pragma clang attribute push (__attrib"
  },
  {
    "path": "bpf/ipsec.h",
    "chars": 5747,
    "preview": "/*\n * IPsec monitoring kretprobe eBPF hook.\n */\n\n#ifndef __IPSEC_H__\n#define __IPSEC_H__\n\n#include \"utils.h\"\n\nstatic inl"
  },
  {
    "path": "bpf/maps_definition.h",
    "chars": 5240,
    "preview": "#ifndef __MAPS_DEFINITION_H__\n#define __MAPS_DEFINITION_H__\n\n#include <vmlinux.h>\n\n// Common Ringbuffer as a conduit for"
  },
  {
    "path": "bpf/network_events_monitoring.h",
    "chars": 5618,
    "preview": "/*\n * Network events monitoring kprobe eBPF hook.\n */\n\n#ifndef __NETWORK_EVENTS_MONITORING_H__\n#define __NETWORK_EVENTS_"
  },
  {
    "path": "bpf/openssl_tracker.h",
    "chars": 2032,
    "preview": "/*\n * OpenSSL monitoring uprobe/uretprobe eBPF hook.\n */\n\n#ifndef __OPENSSL_TRACKER_H__\n#define __OPENSSL_TRACKER_H__\n\n#"
  },
  {
    "path": "bpf/pca.h",
    "chars": 2907,
    "preview": "#ifndef __PCA_H__\n#define __PCA_H__\n\n#include \"utils.h\"\n\nstatic inline void attach_packet_payload(struct __sk_buff *skb)"
  },
  {
    "path": "bpf/pkt_drops.h",
    "chars": 4087,
    "preview": "/*\n    Packet Drops using trace points.\n*/\n\n#ifndef __PKT_DROPS_H__\n#define __PKT_DROPS_H__\n\n#include \"utils.h\"\n\nstatic "
  },
  {
    "path": "bpf/pkt_translation.h",
    "chars": 7014,
    "preview": "/*\n * Packets Transformations tracker eBPF hooks.\n */\n\n#ifndef __PKT_TRANSLATION_H__\n#define __PKT_TRANSLATION_H__\n\n#inc"
  },
  {
    "path": "bpf/rtt_tracker.h",
    "chars": 3162,
    "preview": "/*\n    A simple RTT tracker implemented using eBPF fentry hook to read RTT from TCP socket.\n */\n\n#ifndef __RTT_TRACKER_H"
  },
  {
    "path": "bpf/tls_tracker.h",
    "chars": 10842,
    "preview": "/*\n  TLS tracker detects TLS packets and extracts information such as version or cipher suite.\n*/\n#ifndef __TLS_TRACKER_"
  },
  {
    "path": "bpf/types.h",
    "chars": 9335,
    "preview": "#ifndef __TYPES_H__\n#define __TYPES_H__\n\n#define TC_ACT_OK 0\n#define TC_ACT_SHOT 2\n#define TC_ACT_UNSPEC -1\n#define IP_M"
  },
  {
    "path": "bpf/utils.h",
    "chars": 13176,
    "preview": "#ifndef __UTILS_H__\n#define __UTILS_H__\n\n#include <bpf_core_read.h>\n#include \"types.h\"\n#include \"maps_definition.h\"\n#inc"
  },
  {
    "path": "cmd/netobserv-ebpf-agent.go",
    "chars": 2354,
    "preview": "//go:build linux\n\npackage main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\n\t\"github.com/caarl"
  },
  {
    "path": "deployments/README.md",
    "chars": 1280,
    "preview": "# Deployment example files\n\nThis directory contains some example files that show how the netobserv-ebpf-agent\ncan be dep"
  },
  {
    "path": "deployments/flp-daemonset-cap.yml",
    "chars": 3586,
    "preview": "# Example deployment for manual testing with flp\n# It requires loki to be installed\napiVersion: apps/v1\nkind: DaemonSet\n"
  },
  {
    "path": "deployments/flp-daemonset.yml",
    "chars": 3522,
    "preview": "# Example deployment for manual testing with flp\n# It requires loki to be installed\napiVersion: apps/v1\nkind: DaemonSet\n"
  },
  {
    "path": "deployments/flp-service.yml",
    "chars": 3699,
    "preview": "# Example deployment for manual testing with flp\n# It requires loki to be installed\napiVersion: apps/v1\nkind: DaemonSet\n"
  },
  {
    "path": "deployments/perms.yml",
    "chars": 806,
    "preview": "kind: Namespace\napiVersion: v1\nmetadata:\n  name: netobserv\n  labels:\n    app: netobserv\n    pod-security.kubernetes.io/e"
  },
  {
    "path": "docs/architecture.md",
    "chars": 1811,
    "preview": "# NetObserv eBPF agent architecture\n\nThe eBPF agent is built as an a Extract-Transform-Load pipeline on top of the [Gopi"
  },
  {
    "path": "docs/config.md",
    "chars": 10767,
    "preview": "# eBPF Agent configuration environment variables\n\n_Please also refer to the file [config.go](../pkg/config/config.go) wh"
  },
  {
    "path": "docs/ebpf_implementation.md",
    "chars": 3363,
    "preview": "## Flows v2: An improved version of Netobserv eBPF Agent\n\n### What Changed?\nAt the eBPF/TC code, the v1 used a ringbuffe"
  },
  {
    "path": "docs/flow_filtering.md",
    "chars": 6786,
    "preview": "# eBPF Rule Based Filtering\n\n## Introduction \n\nRules-base filtering is a method to control the flow of packets cached in"
  },
  {
    "path": "docs/profiling.md",
    "chars": 1961,
    "preview": "# Profiling guide\n\n1. Run the agent with the `PROFILE_PORT` variable set to e.g. 6060.\n   - If you are executing the age"
  },
  {
    "path": "docs/rtt_calculations.md",
    "chars": 1927,
    "preview": "# RTT calculations done by ebpf-agent\n\nThis agent has the capablity to perform Round-Trip-Time calculations for packet f"
  },
  {
    "path": "e2e/README.md",
    "chars": 2197,
    "preview": "## eBPF Agent e2e tests\n\ne2e tests can be run with:\n\n```bash\nmake tests-e2e\n```\n\nIf you use podman, you may need to run "
  },
  {
    "path": "e2e/basic/common.go",
    "chars": 11139,
    "preview": "package basic\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/mariomac/guara/pkg/test\"\n\t\"github.com/netobse"
  },
  {
    "path": "e2e/basic/flow_test.go",
    "chars": 5854,
    "preview": "package basic\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"path\"\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/mariomac/guara/pkg/t"
  },
  {
    "path": "e2e/basic/manifests/pods.yml",
    "chars": 956,
    "preview": "# Pods for basic eBPF agent test\n# client pod just sends periodic HTTP requests to an HTTP service (nginx)\napiVersion: v"
  },
  {
    "path": "e2e/cluster/base/00-kind.yml",
    "chars": 205,
    "preview": "apiVersion: kind.x-k8s.io/v1alpha4\nkind: Cluster\nnodes:\n  - role: control-plane\n    extraPortMappings:\n      # hostPorts"
  },
  {
    "path": "e2e/cluster/base/01-permissions.yml",
    "chars": 778,
    "preview": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: ebpf-agent-test\n---\napiVersion: rbac.authorization.k8s.io/v1\nkind:"
  },
  {
    "path": "e2e/cluster/base/02-loki.yml",
    "chars": 4093,
    "preview": "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  name: loki-store\nspec:\n  resources:\n    requests:\n      storage: "
  },
  {
    "path": "e2e/cluster/base/03-flp.yml",
    "chars": 1829,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: flp\n  labels:\n    k8s-app: flp\nspec:\n  selector:\n    matchLabels:\n"
  },
  {
    "path": "e2e/cluster/base/04-agent.yml",
    "chars": 1096,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: netobserv-ebpf-agent\n  labels:\n    k8s-app: netobserv-ebpf-agent\ns"
  },
  {
    "path": "e2e/cluster/kind.go",
    "chars": 14512,
    "preview": "// Package cluster cointains the base setup for the test environment. This is:\n//   - Deployment manifests for a base cl"
  },
  {
    "path": "e2e/cluster/kind_test.go",
    "chars": 1107,
    "preview": "package cluster\n\nimport (\n\t\"os\"\n\t\"path\"\n\t\"testing\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/stretchr/testify/require\""
  },
  {
    "path": "e2e/cluster/tester/loki.go",
    "chars": 2852,
    "preview": "package tester\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nconst (\n"
  },
  {
    "path": "e2e/cluster/tester/pods.go",
    "chars": 2587,
    "preview": "package tester\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\n\tv1 \"k8s.io/api/core/v1\"\n\tmetav1 \"k8s.io/apimachi"
  },
  {
    "path": "e2e/ipfix/ipfix_test.go",
    "chars": 1416,
    "preview": "package basic\n\nimport (\n\t\"path\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/e2e/basic\"\n\t\"github.com/"
  },
  {
    "path": "e2e/ipfix/manifests/20-flp-transformer.yml",
    "chars": 2165,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: flp\n  labels:\n    k8s-app: flp\nspec:\n  selector:\n    matchLabels:\n"
  },
  {
    "path": "e2e/ipfix/manifests/30-agent.yml",
    "chars": 1150,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: netobserv-ebpf-agent\n  labels:\n    k8s-app: netobserv-ebpf-agent\ns"
  },
  {
    "path": "e2e/kafka/kafka_test.go",
    "chars": 3620,
    "preview": "package basic\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"path\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobs"
  },
  {
    "path": "e2e/kafka/manifests/10-kafka-crd.yml",
    "chars": 901745,
    "preview": "apiVersion: apiextensions.k8s.io/v1\nkind: CustomResourceDefinition\nmetadata:\n  name: strimzipodsets.core.strimzi.io\n  la"
  },
  {
    "path": "e2e/kafka/manifests/11-kafka-cluster.yml",
    "chars": 864,
    "preview": "apiVersion: kafka.strimzi.io/v1beta2\nkind: Kafka\nmetadata:\n  name: kafka-cluster\nspec:\n  kafka:\n    replicas: 1\n    list"
  },
  {
    "path": "e2e/kafka/manifests/12-kafka-topic.yml",
    "chars": 172,
    "preview": "apiVersion: kafka.strimzi.io/v1beta2\nkind: KafkaTopic\nmetadata:\n  name: network-flows\n  labels:\n    strimzi.io/cluster: "
  },
  {
    "path": "e2e/kafka/manifests/20-flp-transformer.yml",
    "chars": 1905,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: flp\n  labels:\n    k8s-app: flp\nspec:\n  selector:\n    matchLabels:\n"
  },
  {
    "path": "e2e/kafka/manifests/30-agent.yml",
    "chars": 1053,
    "preview": "apiVersion: apps/v1\nkind: DaemonSet\nmetadata:\n  name: netobserv-ebpf-agent\n  labels:\n    k8s-app: netobserv-ebpf-agent\ns"
  },
  {
    "path": "examples/direct-flp/README.md",
    "chars": 684,
    "preview": "## Simple example using direct-flp + stdout\n\n```bash\nexport FLP_CONFIG=$(cat ./examples/direct-flp/simple-stdout.json)\ne"
  },
  {
    "path": "examples/direct-flp/ipfix.json",
    "chars": 286,
    "preview": "{\n\t\"pipeline\":[\n\t\t{\"name\": \"writer\",\"follows\": \"preset-ingester\"}\n\t],\n\t\"parameters\":[\n\t\t{\"name\": \"writer\",\"write\": {\"typ"
  },
  {
    "path": "examples/direct-flp/simple-stdout.json",
    "chars": 140,
    "preview": "{\n\t\"pipeline\":[\n\t\t{\"name\": \"writer\",\"follows\": \"preset-ingester\"}\n\t],\n\t\"parameters\":[\n\t\t{\"name\": \"writer\",\"write\": {\"typ"
  },
  {
    "path": "examples/filters/README.md",
    "chars": 155,
    "preview": "## Simple example filtering on a single IP\n\n```bash\nexport FLOW_FILTER_RULES=$(cat ./examples/filters/single-ip.json)\nsu"
  },
  {
    "path": "examples/filters/single-ip.json",
    "chars": 55,
    "preview": "[\n\t{\"ip_cidr\":\"192.168.1.20/32\", \"action\": \"Accept\"}\n]\n"
  },
  {
    "path": "examples/flowlogs-dump/README.md",
    "chars": 1220,
    "preview": "# flowlogs-dump (like tcpdump)\n\n## How to run \n\nFrom the root directory of the project: \n\nBuild the agent (the flowlogs "
  },
  {
    "path": "examples/flowlogs-dump/server/flowlogs-dump-collector.go",
    "chars": 3964,
    "preview": "/*\n * Copyright (C) 2022 IBM, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
  },
  {
    "path": "examples/ipfix-collector/ipfix-dump.go",
    "chars": 4732,
    "preview": "// nolint\npackage main\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\t\"time\"\n\n\tipfixCollector \""
  },
  {
    "path": "examples/packetcapture-dump/README.md",
    "chars": 1486,
    "preview": "# Packet Capture TCP Client\n\n## How to run \n\nFrom the root directory of the project: \n\nBuild the agent (the flowlogs cli"
  },
  {
    "path": "examples/packetcapture-dump/client/packetcapture-client.go",
    "chars": 2555,
    "preview": "/*\n * Copyright (C) 2022 IBM, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not "
  },
  {
    "path": "examples/performance/Dockerfile_packet_counter",
    "chars": 317,
    "preview": "# this file has to be built from the project root directory\n\nFROM golang:1.25 as builder\n\nWORKDIR /app\n\nCOPY . .\n\nRUN go"
  },
  {
    "path": "examples/performance/README.md",
    "chars": 925,
    "preview": "# Performance testing\n\nHow to test your setup performance:\n\n```\n$ oc apply -f deployment.yml\n$ oc get pods\nNAME         "
  },
  {
    "path": "examples/performance/deployment.yml",
    "chars": 1765,
    "preview": "apiVersion: v1\nkind: Service\nmetadata:\n  name: packet-counter\n  labels:\n    run: packet-counter\nspec:\n  ports:\n    - por"
  },
  {
    "path": "examples/performance/perftest-iperf.yml",
    "chars": 2054,
    "preview": "# This performance test generates a high throughput in gigabytes, so the\n# maximum number of packets could not be reache"
  },
  {
    "path": "examples/performance/perftest-millionp.yml",
    "chars": 2336,
    "preview": "# This deployment generates a lot of packets (around 500,000 per replica)\n# but with a much lower throughtput, in Bytes,"
  },
  {
    "path": "examples/performance/server/packet-counter-collector.go",
    "chars": 1065,
    "preview": "package main\n\nimport (\n\t\"flag\"\n\t\"log\"\n\t\"time\"\n\n\tgrpc \"github.com/netobserv/netobserv-ebpf-agent/pkg/grpc/flow\"\n\t\"github."
  },
  {
    "path": "examples/systemd/netobserv-ebpf-agent",
    "chars": 158,
    "preview": "# default settings for netobserv-ebpf-agent\n# used by systemd unit\n# /etc/default/netobserv-ebpf-agent\n\nDIRECTION=both\nT"
  },
  {
    "path": "examples/systemd/netobserv-ebpf-agent.service",
    "chars": 251,
    "preview": "[Unit]\nDescription=Netobserv eBPF Agent\nAfter=network.target\n\n[Service]\nEnvironmentFile=-/etc/default/netobserv-ebpf-age"
  },
  {
    "path": "examples/test-ssl-host.sh",
    "chars": 21666,
    "preview": "#!/bin/bash\n# Test SSL tracking with host processes\n#\n# This script tests SSL/TLS tracking functionality by executing HT"
  },
  {
    "path": "go.mod",
    "chars": 8005,
    "preview": "module github.com/netobserv/netobserv-ebpf-agent\n\ngo 1.25.7\n\nrequire (\n\tgithub.com/caarlos0/env/v11 v11.4.0\n\tgithub.com/"
  },
  {
    "path": "go.sum",
    "chars": 58130,
    "preview": "cloud.google.com/go/auth v0.16.0 h1:Pd8P1s9WkcrBE2n/PhAwKsdrR35V3Sg2II9B+ndM3CU=\ncloud.google.com/go/auth v0.16.0/go.mod"
  },
  {
    "path": "pkg/agent/agent.go",
    "chars": 14283,
    "preview": "package agent\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/neto"
  },
  {
    "path": "pkg/agent/agent_test.go",
    "chars": 6305,
    "preview": "//go:build !race\n\n// (This test isn't thread-safe due to reading agent.status)\n\npackage agent\n\nimport (\n\t\"context\"\n\t\"net"
  },
  {
    "path": "pkg/agent/interfaces_listener.go",
    "chars": 11963,
    "preview": "package agent\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/config\"\n\t\"g"
  },
  {
    "path": "pkg/agent/ip.go",
    "chars": 4334,
    "preview": "package agent\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/config\"\n)\n\n// dependen"
  },
  {
    "path": "pkg/agent/ip_test.go",
    "chars": 4496,
    "preview": "package agent\n\nimport (\n\t\"errors\"\n\t\"net\"\n\t\"regexp\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/c"
  },
  {
    "path": "pkg/agent/packets_agent.go",
    "chars": 6359,
    "preview": "package agent\n\nimport (\n\t\"context\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\n\t\"github.com/netobserv/gopipes/pkg/node\"\n\t\"gith"
  },
  {
    "path": "pkg/agent/sasl.go",
    "chars": 964,
    "preview": "package agent\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/config\"\n\t\"github.com/se"
  },
  {
    "path": "pkg/agent/tls.go",
    "chars": 951,
    "preview": "package agent\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"os\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/config\"\n)\n\nf"
  },
  {
    "path": "pkg/config/config.go",
    "chars": 19712,
    "preview": "package config\n\nimport (\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n)\n\nvar clog = logrus.WithField(\"component\", \"config\")\n\nc"
  },
  {
    "path": "pkg/decode/decode_protobuf.go",
    "chars": 14709,
    "preview": "package decode\n\nimport (\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/netobserv/flowlogs-pipeline/pkg/config\"\n\t"
  },
  {
    "path": "pkg/decode/decode_protobuf_test.go",
    "chars": 7217,
    "preview": "package decode\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/flowlogs-pipeline/pkg/config\"\n\t\"github.com/netobserv"
  },
  {
    "path": "pkg/decode/packets/decode_protobuf_packets.go",
    "chars": 2529,
    "preview": "package packets\n\nimport (\n\t\"encoding/base64\"\n\n\t\"github.com/netobserv/flowlogs-pipeline/pkg/config\"\n\t\"github.com/netobser"
  },
  {
    "path": "pkg/ebpf/bpf_arm64_bpfel.go",
    "chars": 17455,
    "preview": "// Code generated by bpf2go; DO NOT EDIT.\n//go:build arm64\n\npackage ebpf\n\nimport (\n\t\"bytes\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\"st"
  },
  {
    "path": "pkg/ebpf/bpf_powerpc_bpfel.go",
    "chars": 17459,
    "preview": "// Code generated by bpf2go; DO NOT EDIT.\n//go:build ppc64le\n\npackage ebpf\n\nimport (\n\t\"bytes\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\""
  },
  {
    "path": "pkg/ebpf/bpf_s390_bpfeb.go",
    "chars": 17454,
    "preview": "// Code generated by bpf2go; DO NOT EDIT.\n//go:build s390x\n\npackage ebpf\n\nimport (\n\t\"bytes\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"io\"\n\t\"st"
  },
  {
    "path": "pkg/ebpf/bpf_x86_bpfel.go",
    "chars": 17460,
    "preview": "// Code generated by bpf2go; DO NOT EDIT.\n//go:build 386 || amd64\n\npackage ebpf\n\nimport (\n\t\"bytes\"\n\t_ \"embed\"\n\t\"fmt\"\n\t\"i"
  },
  {
    "path": "pkg/ebpf/gen.go",
    "chars": 444,
    "preview": "package ebpf\n\n// $BPF_CLANG and $BPF_CFLAGS are set by the Makefile.\n//go:generate bpf2go -cc $BPF_CLANG -cflags $BPF_CF"
  },
  {
    "path": "pkg/exporter/converters_test.go",
    "chars": 19109,
    "preview": "package exporter\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/flowlogs-pipeline/pkg/config\"\n\t\"gith"
  },
  {
    "path": "pkg/exporter/direct_flp.go",
    "chars": 2034,
    "preview": "package exporter\n\nimport (\n\t\"fmt\"\n\n\tflpconfig \"github.com/netobserv/flowlogs-pipeline/pkg/config\"\n\t\"github.com/netobserv"
  },
  {
    "path": "pkg/exporter/direct_flp_test.go",
    "chars": 1454,
    "preview": "package exporter\n\nimport (\n\t\"bufio\"\n\t\"encoding/json\"\n\t\"net\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-e"
  },
  {
    "path": "pkg/exporter/grpc_packets.go",
    "chars": 1739,
    "preview": "package exporter\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\tgrpc \"github.com/netobserv/netobserv-ebpf-agent/pkg/grpc/packet\"\n\t\"githu"
  },
  {
    "path": "pkg/exporter/grpc_proto.go",
    "chars": 4542,
    "preview": "package exporter\n\nimport (\n\t\"context\"\n\t\"math/rand/v2\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/c"
  },
  {
    "path": "pkg/exporter/grpc_proto_test.go",
    "chars": 7632,
    "preview": "package exporter\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/"
  },
  {
    "path": "pkg/exporter/ipfix.go",
    "chars": 11317,
    "preview": "package exporter\n\nimport (\n\t\"net\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/model\"\n\t\"github.com/netobserv/netobse"
  },
  {
    "path": "pkg/exporter/kafka_proto.go",
    "chars": 2429,
    "preview": "package exporter\n\nimport (\n\t\"context\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/metrics\"\n\t\"github.com/netobserv/n"
  },
  {
    "path": "pkg/exporter/kafka_proto_test.go",
    "chars": 4453,
    "preview": "package exporter\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t"
  },
  {
    "path": "pkg/flow/account.go",
    "chars": 4492,
    "preview": "package flow\n\nimport (\n\t\"maps\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t\"github.com/netobserv/net"
  },
  {
    "path": "pkg/flow/account_test.go",
    "chars": 6535,
    "preview": "package flow\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t\"github.com/netobserv/"
  },
  {
    "path": "pkg/flow/limiter.go",
    "chars": 1946,
    "preview": "package flow\n\nimport (\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/metrics\"\n\t\"github.com/netobserv/netobser"
  },
  {
    "path": "pkg/flow/limiter_test.go",
    "chars": 2656,
    "preview": "package flow\n\nimport (\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/gopipes/pkg/node\"\n\t\"github.com/netobserv/ne"
  },
  {
    "path": "pkg/flow/perfbuffer.go",
    "chars": 2010,
    "preview": "package flow\n\nimport (\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/model\"\n\t\"github.com/sirupsen/logrus\"\n)\n\n"
  },
  {
    "path": "pkg/flow/tracer_map.go",
    "chars": 4877,
    "preview": "package flow\n\nimport (\n\t\"context\"\n\t\"maps\"\n\t\"runtime\"\n\t\"sync\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/eb"
  },
  {
    "path": "pkg/flow/tracer_perf.go",
    "chars": 1823,
    "preview": "package flow\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"time\"\n\n\t\"github.com/cilium/ebpf/ringbuf\"\n\t\"github.com/neto"
  },
  {
    "path": "pkg/flow/tracer_ringbuf.go",
    "chars": 6802,
    "preview": "package flow\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"ti"
  },
  {
    "path": "pkg/grpc/flow/client.go",
    "chars": 2130,
    "preview": "// Package flowgrpc provides the basic interfaces to build a gRPC+Protobuf flows client & server\npackage flowgrpc\n\nimpor"
  },
  {
    "path": "pkg/grpc/flow/grpc_test.go",
    "chars": 12083,
    "preview": "package flowgrpc\n\nimport (\n\t\"context\"\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"fmt\"\n\t\"os\"\n\t\"testing\"\n\t\"time\"\n\n\ttest2 \"github.com/m"
  },
  {
    "path": "pkg/grpc/flow/server.go",
    "chars": 2218,
    "preview": "package flowgrpc\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\n\t\"google.golang.org/grpc\"\n\t\"google.golang.org/grpc/reflection\"\n\n\t\"g"
  },
  {
    "path": "pkg/grpc/packet/client.go",
    "chars": 1033,
    "preview": "// Package pktgrpc provides the basic interfaces to build a gRPC+Protobuf packet client & server\npackage pktgrpc\n\nimport"
  },
  {
    "path": "pkg/grpc/packet/grpc_test.go",
    "chars": 2109,
    "preview": "package pktgrpc\n\nimport (\n\t\"context\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/pbpacket\"\n\n\t\"gi"
  },
  {
    "path": "pkg/grpc/packet/server.go",
    "chars": 1928,
    "preview": "package pktgrpc\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/pbpacket\"\n\n\t\"google."
  },
  {
    "path": "pkg/ifaces/filter.go",
    "chars": 5777,
    "preview": "package ifaces\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"net/netip\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pk"
  },
  {
    "path": "pkg/ifaces/filter_test.go",
    "chars": 2776,
    "preview": "package ifaces\n\nimport (\n\t\"net/netip\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/testify/re"
  },
  {
    "path": "pkg/ifaces/informer.go",
    "chars": 2691,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/vishvananda/netlink\"\n\t\"github.com"
  },
  {
    "path": "pkg/ifaces/poller.go",
    "chars": 2688,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"time\"\n\n\t\"github.com/sirupsen/logrus\"\n\t\"github.com/vishvananda/netns\"\n)\n\n// Poller "
  },
  {
    "path": "pkg/ifaces/poller_test.go",
    "chars": 3000,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/stretchr/testify/assert\"\n\t\"github.com/stretchr/test"
  },
  {
    "path": "pkg/ifaces/registerer.go",
    "chars": 8015,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"net\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/netobserv/netobserv-e"
  },
  {
    "path": "pkg/ifaces/registerer_test.go",
    "chars": 8571,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/config\"\n\t\"github"
  },
  {
    "path": "pkg/ifaces/watcher.go",
    "chars": 8176,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"github.com/fsnoti"
  },
  {
    "path": "pkg/ifaces/watcher_test.go",
    "chars": 3553,
    "preview": "package ifaces\n\nimport (\n\t\"context\"\n\t\"net\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/metric"
  },
  {
    "path": "pkg/kernel/kernel_utils.go",
    "chars": 2953,
    "preview": "//go:build linux\n// +build linux\n\npackage kernel\n\nimport (\n\t\"fmt\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n"
  },
  {
    "path": "pkg/kernel/kernel_utils_test.go",
    "chars": 2237,
    "preview": "//go:build linux\n// +build linux\n\npackage kernel\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\nfunc Te"
  },
  {
    "path": "pkg/maps/maps.go",
    "chars": 403,
    "preview": "package maps\n\n// Map names\nvar Maps = []string{\n\t\"direct_flows\",\n\t\"aggregated_flows\",\n\t\"aggregated_flows_dns\",\n\t\"aggrega"
  },
  {
    "path": "pkg/maps/maps_test.go",
    "chars": 2700,
    "preview": "package maps\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"git"
  },
  {
    "path": "pkg/metrics/metrics.go",
    "chars": 11095,
    "preview": "package metrics\n\nimport (\n\t\"errors\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/model\"\n\t\"github."
  },
  {
    "path": "pkg/metrics/metrics_test.go",
    "chars": 1460,
    "preview": "package metrics\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n)\n\nfunc TestMetricsCreation(t *testing.T) {\n"
  },
  {
    "path": "pkg/model/flow_content.go",
    "chars": 5643,
    "preview": "package model\n\nimport (\n\t\"math\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n)\n\ntype BpfFlowContent struct {\n\t"
  },
  {
    "path": "pkg/model/flow_content_test.go",
    "chars": 9192,
    "preview": "package model\n\nimport (\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/assert\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/p"
  },
  {
    "path": "pkg/model/packet_record.go",
    "chars": 1424,
    "preview": "package model\n\nimport (\n\t\"encoding/binary\"\n\t\"io\"\n\t\"time\"\n\n\t\"github.com/gavv/monotime\"\n)\n\ntype RawByte byte\n\ntype PacketR"
  },
  {
    "path": "pkg/model/record.go",
    "chars": 7379,
    "preview": "package model\n\nimport (\n\t\"crypto/tls\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"github.com/netobserv/"
  },
  {
    "path": "pkg/model/record_test.go",
    "chars": 12477,
    "preview": "package model\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"sync\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/gavv/monotime\"\n\tovnmodel \"g"
  },
  {
    "path": "pkg/model/tls_types.go",
    "chars": 494,
    "preview": "package model\n\ntype tlsType struct {\n\tvalue uint8\n\tname  string\n}\n\nvar tlsTypes = []tlsType{\n\t{value: 1, name: \"ClientHe"
  },
  {
    "path": "pkg/pbflow/flow.pb.go",
    "chars": 43148,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.35.1\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "pkg/pbflow/flow_grpc.pb.go",
    "chars": 4225,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc           "
  },
  {
    "path": "pkg/pbflow/proto.go",
    "chars": 10144,
    "preview": "package pbflow\n\nimport (\n\t\"encoding/binary\"\n\t\"net\"\n\t\"strings\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t\"g"
  },
  {
    "path": "pkg/pbpacket/packet.pb.go",
    "chars": 5965,
    "preview": "// Code generated by protoc-gen-go. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-go v1.35.1\n// \tprotoc        v3.19.4\n// sou"
  },
  {
    "path": "pkg/pbpacket/packet_grpc.pb.go",
    "chars": 4229,
    "preview": "// Code generated by protoc-gen-go-grpc. DO NOT EDIT.\n// versions:\n// - protoc-gen-go-grpc v1.5.1\n// - protoc           "
  },
  {
    "path": "pkg/prometheus/prom_server.go",
    "chars": 2928,
    "preview": "package prometheus\n\nimport (\n\t\"crypto/tls\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/m"
  },
  {
    "path": "pkg/prometheus/prom_server_test.go",
    "chars": 1337,
    "preview": "package prometheus\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/neto"
  },
  {
    "path": "pkg/test/channels.go",
    "chars": 432,
    "preview": "package test\n\nimport (\n\t\"testing\"\n\t\"time\"\n)\n\n// ReceiveTimeout returns the first received element or fails the test if n"
  },
  {
    "path": "pkg/test/export_fake.go",
    "chars": 670,
    "preview": "package test\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/model\"\n)\n\ntype ExporterFake s"
  },
  {
    "path": "pkg/test/informer_fake.go",
    "chars": 491,
    "preview": "package test\n\nimport (\n\t\"context\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ifaces\"\n)\n\n// SliceInformerFake fakes"
  },
  {
    "path": "pkg/test/tls.go",
    "chars": 11180,
    "preview": "package test\n\nimport (\n\t\"os\"\n\t\"testing\"\n\n\t\"github.com/stretchr/testify/require\"\n)\n\n// Fake certificates / private keys f"
  },
  {
    "path": "pkg/test/tracer_fake.go",
    "chars": 2179,
    "preview": "package test\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t\"gith"
  },
  {
    "path": "pkg/tracer/errors.go",
    "chars": 442,
    "preview": "package tracer\n\ntype Error struct {\n\tinner      error\n\tName       string\n\tDoNotRetry bool\n}\n\nfunc NewError(name string, "
  },
  {
    "path": "pkg/tracer/flow_filter.go",
    "chars": 7530,
    "preview": "package tracer\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"syscall\"\n\n\tcilium \"github.com/cilium/ebpf\"\n\t\"github.com/n"
  },
  {
    "path": "pkg/tracer/flow_filter_test.go",
    "chars": 6455,
    "preview": "package tracer\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\t\"syscall\"\n\t\"testing\"\n\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t\"gi"
  },
  {
    "path": "pkg/tracer/tracer.go",
    "chars": 82138,
    "preview": "package tracer\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/netobserv/netobserv-eb"
  },
  {
    "path": "pkg/tracer/tracer_legacy.go",
    "chars": 1908,
    "preview": "package tracer\n\nimport (\n\t\"github.com/netobserv/netobserv-ebpf-agent/pkg/ebpf\"\n\t\"github.com/netobserv/netobserv-ebpf-age"
  },
  {
    "path": "pkg/utils/networkevents/network_events.go",
    "chars": 3631,
    "preview": "package networkevents\n\nimport (\n\t\"github.com/netobserv/flowlogs-pipeline/pkg/config\"\n\tovnmodel \"github.com/ovn-org/ovn-k"
  }
]

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

About this extraction

This page contains the full source code of the netobserv/netobserv-ebpf-agent GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 7088 files (72.2 MB), approximately 19.4M tokens, and a symbol index with 244929 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!