ebpf-for-windows/mainpage.dox

39 строки
2.0 KiB
Plaintext

// Copyright (c) Microsoft Corporation
// SPDX-License-Identifier: MIT
/**
* @mainpage
*
* @section intro Introduction
* eBPF is a well-known technology for providing programmability and agility, especially for extending an OS kernel,
* for use cases such as DoS protection and observability. This project is a work-in-progress that allows using
* existing eBPF toolchains and APIs familiar in the Linux ecosystem to be used on top of Windows. That is, this
* project takes existing eBPF projects as submodules and adds the layer in between to make them run on top of Windows.
*
* For more info, see the
* <a href="https://github.com/microsoft/ebpf-for-windows#architectural-overview">Architectural Overview</a>.
*
* @section hooks eBPF Program Reference
* The following hooks are currently exposed to eBPF programs that include ebpf_nethooks.h:
* <ul>
* <li>\ref EBPF_PROGRAM_TYPE_BIND : Program type for handling socket bind() requests.</li>
* <li>\ref EBPF_PROGRAM_TYPE_XDP : Program type for handling incoming packets as early as possible.</li>
* </ul>
* More hooks will be added over time.
*
* eBPF programs can also call helper APIs to do additional processing. There are two types of helpers:
* <ul>
* <li>Helpers defined in ebpf_helpers.h which are accessible to all program types.
* <li>Helpers specific to a given program type and declared in other headers.
* </ul>
* The documentation for each program type will list which helper header files can be used for that program type.
* Similarly such documentation for each program type will give the API prototype to implement, and the list
* of supported attach types that can be used when attaching an eBPF program. Most program types have only
* a single attach type, but some may support multiple places to which the same type of program can be attached.
*
* @section api eBPF User-Mode API Reference
*
* Eventually the libbpf API will be supported but this is still a work in progress.
* In the meantime, ebpf_api.h defines the temporary user-mode API.
*/