ebpf_extension_load should check both module_id and interface_id (#1147)

* ebpf_extension_load should check both module_id and interface_id

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix performance test

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
This commit is contained in:
Alan Jowett 2022-05-27 16:40:39 -06:00 коммит произвёл GitHub
Родитель 9fdd90adb3
Коммит 82db45509d
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 15 добавлений и 2 удалений

Просмотреть файл

@ -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,

Просмотреть файл

@ -17,10 +17,15 @@ typedef class _ebpf_program_test_state
{
public:
_ebpf_program_test_state(std::vector<ebpf_instruction_t> 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, &parameters) == EBPF_SUCCESS);
@ -28,6 +33,7 @@ typedef class _ebpf_program_test_state
~_ebpf_program_test_state()
{
ebpf_object_release_reference(reinterpret_cast<ebpf_core_object_t*>(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<ebpf_instruction_t> 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