diff --git a/libs/platform/user/ebpf_extension_user.c b/libs/platform/user/ebpf_extension_user.c index 850360866..10623aa1d 100644 --- a/libs/platform/user/ebpf_extension_user.c +++ b/libs/platform/user/ebpf_extension_user.c @@ -106,6 +106,13 @@ ebpf_extension_load( } local_extension_provider = *hash_table_find_result; + if (memcmp(interface_id, &local_extension_provider->interface_id, sizeof(GUID)) != 0) { + EBPF_LOG_MESSAGE_GUID( + EBPF_TRACELOG_LEVEL_ERROR, EBPF_TRACELOG_KEYWORD_BASE, "Wrong interface_id", *interface_id); + return_value = EBPF_INVALID_ARGUMENT; + goto Done; + } + return_value = ebpf_hash_table_update( local_extension_provider->client_table, (const uint8_t*)&local_extension_client->client_module_id, diff --git a/tests/performance/ExecutionContext.cpp b/tests/performance/ExecutionContext.cpp index bf30382c0..3bc881292 100644 --- a/tests/performance/ExecutionContext.cpp +++ b/tests/performance/ExecutionContext.cpp @@ -17,10 +17,15 @@ typedef class _ebpf_program_test_state { public: _ebpf_program_test_state(std::vector byte_code) - : byte_code(byte_code), program_info_provider(EBPF_PROGRAM_TYPE_XDP) + : byte_code(byte_code), program_info_provider(nullptr) { ebpf_program_parameters_t parameters = {EBPF_PROGRAM_TYPE_XDP}; REQUIRE(ebpf_core_initiate() == EBPF_SUCCESS); + + // Create the program info provider. We can only do this after calling + // ebpf_core_initiate() since that initializes the interface GUID. + program_info_provider = new _program_info_provider(EBPF_PROGRAM_TYPE_XDP); + REQUIRE(ebpf_program_create(&program) == EBPF_SUCCESS); REQUIRE(ebpf_program_initialize(program, ¶meters) == EBPF_SUCCESS); @@ -28,6 +33,7 @@ typedef class _ebpf_program_test_state ~_ebpf_program_test_state() { ebpf_object_release_reference(reinterpret_cast(program)); + delete program_info_provider; ebpf_core_terminate(); } @@ -77,7 +83,7 @@ typedef class _ebpf_program_test_state private: ebpf_program_t* program; std::vector byte_code; - _program_info_provider program_info_provider; + _program_info_provider* program_info_provider; } ebpf_program_test_state_t; typedef class _ebpf_map_test_state