Skip to content

Commit

Permalink
Add total_size to extension header. (microsoft#3573)
Browse files Browse the repository at this point in the history
* change ebpf_extension_header_t to ebpf_version_header_t

* revert to ebpf_version_header_t

* revert to ebpf_version_header_t

* update header

* update doc

* update doc

* use total_size to get the actual struct size

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler1968@gmail.com>

---------

Co-authored-by: Dave Thaler <dthaler1968@gmail.com>
  • Loading branch information
saxena-anurag and dthaler committed May 24, 2024
1 parent aed27b4 commit f7ec168
Show file tree
Hide file tree
Showing 18 changed files with 157 additions and 154 deletions.
16 changes: 14 additions & 2 deletions docs/eBpfExtensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,25 @@ initialized as follows:
#### `ebpf_extension_header_t` Struct
This is a mandatory header that is common to all data structures needed by eBPF extensions to register with the eBPF framework.
* `version`: Version of the extension data structure.
* `size`: Size of the extension data structure.
When populating these data structures, the correct `version` and `size` fields must be set. The set of current version numbers and the
* `size`: Size of the extension data structure, not including any padding.
* `total_size` Total size of the extension data structure, including any padding.

When populating these data structures, the correct `version`, `size` and `total_size` fields must be set. The set of current version numbers and the
size for the various extension structures are listed in `ebpf_windows.h`. For example:
```c
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION 1
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_SIZE \
(EBPF_OFFSET_OF(ebpf_program_type_descriptor_t, is_privileged) + sizeof(char))
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_program_type_descriptor_t)
```
When initializing the `ebpf_extension_header_t` struct, instead of using the individual values listed above, macros like below can also be used for convenience.
```c
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_HEADER \
{ \
EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION, EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_SIZE, \
EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_TOTAL_SIZE \
}
```
> NOTE: Extension developers **must not** set the `size` field of these structures to `sizeof()` of the corresponding type. Instead,
> the `CURRENT_VERSION_SIZE` macros defined in `ebpf_windows.h` should be used.
Expand Down
47 changes: 45 additions & 2 deletions include/ebpf_windows.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,29 +76,71 @@ typedef enum _ebpf_helper_function
// Version 1 of the eBPF extension data structures and their lengths.
#define EBPF_ATTACH_PROVIDER_DATA_CURRENT_VERSION 1
#define EBPF_ATTACH_PROVIDER_DATA_CURRENT_VERSION_SIZE EBPF_SIZE_INCLUDING_FIELD(ebpf_attach_provider_data_t, link_type)
#define EBPF_ATTACH_PROVIDER_DATA_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_attach_provider_data_t)
#define EBPF_ATTACH_PROVIDER_DATA_HEADER \
{ \
EBPF_ATTACH_PROVIDER_DATA_CURRENT_VERSION, EBPF_ATTACH_PROVIDER_DATA_CURRENT_VERSION_SIZE, \
EBPF_ATTACH_PROVIDER_DATA_CURRENT_VERSION_TOTAL_SIZE \
}

#define EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION 1
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_SIZE \
EBPF_SIZE_INCLUDING_FIELD(ebpf_program_type_descriptor_t, is_privileged)
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_program_type_descriptor_t)
#define EBPF_PROGRAM_TYPE_DESCRIPTOR_HEADER \
{ \
EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION, EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_SIZE, \
EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_TOTAL_SIZE \
}

#define EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION 1
#define EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE \
EBPF_SIZE_INCLUDING_FIELD(ebpf_helper_function_prototype_t, flags)
#define EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_helper_function_prototype_t)
#define EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER \
{ \
EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE, \
EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_TOTAL_SIZE \
}

#define EBPF_PROGRAM_INFORMATION_CURRENT_VERSION 1
#define EBPF_PROGRAM_INFORMATION_CURRENT_VERSION_SIZE \
EBPF_SIZE_INCLUDING_FIELD(ebpf_program_info_t, global_helper_prototype)
#define EBPF_PROGRAM_INFORMATION_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_program_info_t)
#define EBPF_PROGRAM_INFORMATION_HEADER \
{ \
EBPF_PROGRAM_INFORMATION_CURRENT_VERSION, EBPF_PROGRAM_INFORMATION_CURRENT_VERSION_SIZE, \
EBPF_PROGRAM_INFORMATION_CURRENT_VERSION_TOTAL_SIZE \
}

#define EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION 1
#define EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION_SIZE \
EBPF_SIZE_INCLUDING_FIELD(ebpf_helper_function_addresses_t, helper_function_address)
#define EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_helper_function_addresses_t)
#define EBPF_HELPER_FUNCTION_ADDRESSES_HEADER \
{ \
EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION, EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION_SIZE, \
EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION_TOTAL_SIZE \
}

#define EBPF_PROGRAM_DATA_CURRENT_VERSION 1
#define EBPF_PROGRAM_DATA_CURRENT_VERSION_SIZE EBPF_SIZE_INCLUDING_FIELD(ebpf_program_data_t, required_irql)
#define EBPF_PROGRAM_DATA_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_program_data_t)
#define EBPF_PROGRAM_DATA_HEADER \
{ \
EBPF_PROGRAM_DATA_CURRENT_VERSION, EBPF_PROGRAM_DATA_CURRENT_VERSION_SIZE, \
EBPF_PROGRAM_DATA_CURRENT_VERSION_TOTAL_SIZE \
}

#define EBPF_PROGRAM_SECTION_INFORMATION_CURRENT_VERSION 1
#define EBPF_PROGRAM_SECTION_INFORMATION_CURRENT_VERSION_SIZE \
EBPF_SIZE_INCLUDING_FIELD(ebpf_program_section_info_t, bpf_attach_type)
#define EBPF_PROGRAM_SECTION_INFORMATION_CURRENT_VERSION_TOTAL_SIZE sizeof(ebpf_program_section_info_t)
#define EBPF_PROGRAM_SECTION_INFORMATION_HEADER \
{ \
EBPF_PROGRAM_SECTION_INFORMATION_CURRENT_VERSION, EBPF_PROGRAM_SECTION_INFORMATION_CURRENT_VERSION_SIZE, \
EBPF_PROGRAM_SECTION_INFORMATION_CURRENT_VERSION_TOTAL_SIZE \
}

/**
* @brief Header of an eBPF extension data structure.
Expand All @@ -109,6 +151,7 @@ typedef enum _ebpf_helper_function
*/
typedef struct _ebpf_extension_header
{
uint16_t version; ///< Version of the extension data structure.
size_t size; ///< Size of the extension data structure.
uint16_t version; ///< Version of the extension data structure.
size_t size; ///< Size of the extension data structure not including any padding.
size_t total_size; ///< Total size of the extension data structure including any padding.
} ebpf_extension_header_t;
23 changes: 4 additions & 19 deletions libs/execution_context/ebpf_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,20 +102,9 @@ _ebpf_core_memmove(
#define EBPF_CORE_GLOBAL_HELPER_EXTENSION_VERSION 0

static ebpf_program_type_descriptor_t _ebpf_global_helper_program_descriptor = {
EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION,
EBPF_PROGRAM_TYPE_DESCRIPTOR_CURRENT_VERSION_SIZE,
"global_helper",
NULL,
{0},
0,
0};
EBPF_PROGRAM_TYPE_DESCRIPTOR_HEADER, "global_helper", NULL, {0}, 0, 0};
static ebpf_program_info_t _ebpf_global_helper_program_info = {
{EBPF_PROGRAM_INFORMATION_CURRENT_VERSION, EBPF_PROGRAM_INFORMATION_CURRENT_VERSION_SIZE},
&_ebpf_global_helper_program_descriptor,
0,
NULL,
0,
NULL};
EBPF_PROGRAM_INFORMATION_HEADER, &_ebpf_global_helper_program_descriptor, 0, NULL, 0, NULL};

// Order of elements in this table must match the order of the elements in ebpf_core_helper_function_prototype.
static const void* _ebpf_general_helpers[] = {
Expand Down Expand Up @@ -153,13 +142,9 @@ static const void* _ebpf_general_helpers[] = {
};

static const ebpf_helper_function_addresses_t _ebpf_global_helper_function_dispatch_table = {
{EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION, EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION_SIZE},
EBPF_COUNT_OF(_ebpf_general_helpers),
(uint64_t*)_ebpf_general_helpers};
EBPF_HELPER_FUNCTION_ADDRESSES_HEADER, EBPF_COUNT_OF(_ebpf_general_helpers), (uint64_t*)_ebpf_general_helpers};
static const ebpf_program_data_t _ebpf_global_helper_function_program_data = {
{EBPF_PROGRAM_DATA_CURRENT_VERSION, EBPF_PROGRAM_DATA_CURRENT_VERSION_SIZE},
&_ebpf_global_helper_program_info,
&_ebpf_global_helper_function_dispatch_table};
EBPF_PROGRAM_DATA_HEADER, &_ebpf_global_helper_program_info, &_ebpf_global_helper_function_dispatch_table};

static NPI_PROVIDER_ATTACH_CLIENT_FN _ebpf_general_helper_function_provider_attach_client;
static NPI_PROVIDER_DETACH_CLIENT_FN _ebpf_general_helper_function_provider_detach_client;
Expand Down
56 changes: 26 additions & 30 deletions libs/execution_context/ebpf_general_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,55 +11,51 @@
#include "ebpf_structs.h"

ebpf_helper_function_prototype_t ebpf_core_helper_function_prototype_array[] = {
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_lookup_elem,
"bpf_map_lookup_elem",
EBPF_RETURN_TYPE_PTR_TO_MAP_VALUE_OR_NULL,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_KEY}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_update_elem,
"bpf_map_update_elem",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP,
EBPF_ARGUMENT_TYPE_PTR_TO_MAP_KEY,
EBPF_ARGUMENT_TYPE_PTR_TO_MAP_VALUE,
EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_delete_elem,
"bpf_map_delete_elem",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_KEY}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_lookup_and_delete_elem,
"bpf_map_lookup_and_delete_elem",
EBPF_RETURN_TYPE_PTR_TO_MAP_VALUE_OR_NULL,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_KEY}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_tail_call,
"bpf_tail_call",
EBPF_RETURN_TYPE_INTEGER_OR_NO_RETURN_IF_SUCCEED,
{EBPF_ARGUMENT_TYPE_PTR_TO_CTX, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_OF_PROGRAMS, EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_get_prandom_u32,
"bpf_get_prandom_u32",
EBPF_RETURN_TYPE_INTEGER,
{0}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_ktime_get_boot_ns,
"bpf_ktime_get_boot_ns",
EBPF_RETURN_TYPE_INTEGER,
{0}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_get_smp_processor_id,
"bpf_get_smp_processor_id",
EBPF_RETURN_TYPE_INTEGER,
{0}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
BPF_FUNC_ktime_get_ns,
"bpf_ktime_get_ns",
EBPF_RETURN_TYPE_INTEGER,
{0}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER, BPF_FUNC_ktime_get_ns, "bpf_ktime_get_ns", EBPF_RETURN_TYPE_INTEGER, {0}},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_csum_diff,
"bpf_csum_diff",
EBPF_RETURN_TYPE_INTEGER,
Expand All @@ -68,33 +64,33 @@ ebpf_helper_function_prototype_t ebpf_core_helper_function_prototype_array[] = {
EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM_OR_NULL,
EBPF_ARGUMENT_TYPE_CONST_SIZE_OR_ZERO,
EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_ringbuf_output,
"bpf_ringbuf_output",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP,
EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM,
EBPF_ARGUMENT_TYPE_CONST_SIZE,
EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_trace_printk2,
"bpf_trace_printk2",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM, EBPF_ARGUMENT_TYPE_CONST_SIZE}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_trace_printk3,
"bpf_trace_printk3",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM, EBPF_ARGUMENT_TYPE_CONST_SIZE, EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_trace_printk4,
"bpf_trace_printk4",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM,
EBPF_ARGUMENT_TYPE_CONST_SIZE,
EBPF_ARGUMENT_TYPE_ANYTHING,
EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_trace_printk5,
"bpf_trace_printk5",
EBPF_RETURN_TYPE_INTEGER,
Expand All @@ -103,37 +99,37 @@ ebpf_helper_function_prototype_t ebpf_core_helper_function_prototype_array[] = {
EBPF_ARGUMENT_TYPE_ANYTHING,
EBPF_ARGUMENT_TYPE_ANYTHING,
EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_push_elem,
"bpf_map_push_elem",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_VALUE, EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_pop_elem,
"bpf_map_pop_elem",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_VALUE}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_map_peek_elem,
"bpf_map_peek_elem",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_MAP, EBPF_ARGUMENT_TYPE_PTR_TO_MAP_VALUE}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_get_current_pid_tgid,
"bpf_get_current_pid_tgid",
EBPF_RETURN_TYPE_INTEGER,
{0}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_get_current_logon_id,
"bpf_get_current_logon_id",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_CTX}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_is_current_admin,
"bpf_is_current_admin",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_CTX}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_memcpy,
"bpf_memcpy",
EBPF_RETURN_TYPE_INTEGER,
Expand All @@ -143,7 +139,7 @@ ebpf_helper_function_prototype_t ebpf_core_helper_function_prototype_array[] = {
EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM,
EBPF_ARGUMENT_TYPE_CONST_SIZE_OR_ZERO,
}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_memcmp,
"bpf_memcmp",
EBPF_RETURN_TYPE_INTEGER,
Expand All @@ -153,12 +149,12 @@ ebpf_helper_function_prototype_t ebpf_core_helper_function_prototype_array[] = {
EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM,
EBPF_ARGUMENT_TYPE_CONST_SIZE_OR_ZERO,
}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_memset,
"bpf_memset",
EBPF_RETURN_TYPE_INTEGER,
{EBPF_ARGUMENT_TYPE_PTR_TO_WRITABLE_MEM, EBPF_ARGUMENT_TYPE_CONST_SIZE_OR_ZERO, EBPF_ARGUMENT_TYPE_ANYTHING}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_memmove,
"bpf_memmove",
EBPF_RETURN_TYPE_INTEGER,
Expand All @@ -168,7 +164,7 @@ ebpf_helper_function_prototype_t ebpf_core_helper_function_prototype_array[] = {
EBPF_ARGUMENT_TYPE_PTR_TO_READABLE_MEM,
EBPF_ARGUMENT_TYPE_CONST_SIZE_OR_ZERO,
}},
{{EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION, EBPF_HELPER_FUNCTION_PROTOTYPE_CURRENT_VERSION_SIZE},
{EBPF_HELPER_FUNCTION_PROTOTYPE_HEADER,
BPF_FUNC_get_socket_cookie,
"bpf_get_socket_cookie",
EBPF_RETURN_TYPE_INTEGER,
Expand Down
4 changes: 1 addition & 3 deletions libs/execution_context/unit/execution_context_unit_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -807,9 +807,7 @@ TEST_CASE("program", "[execution_context]")
uint32_t test_function_ids[] = {(EBPF_MAX_GENERAL_HELPER_FUNCTION + 1)};
const void* helper_functions[] = {(void*)function_pointer1};
ebpf_helper_function_addresses_t helper_function_addresses = {
{EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION, EBPF_HELPER_FUNCTION_ADDRESSES_CURRENT_VERSION_SIZE},
EBPF_COUNT_OF(helper_functions),
(uint64_t*)helper_functions};
EBPF_HELPER_FUNCTION_ADDRESSES_HEADER, EBPF_COUNT_OF(helper_functions), (uint64_t*)helper_functions};

{
ebpf_trampoline_table_t* local_table = nullptr;
Expand Down
Loading

0 comments on commit f7ec168

Please sign in to comment.