From f734b5e1d9b3a616647015992a6804bcfdd4f123 Mon Sep 17 00:00:00 2001 From: Alan Jowett Date: Fri, 9 Jun 2023 12:24:42 -0700 Subject: [PATCH] Cleanup ebpf_map_metadata_tables (#2565) Signed-off-by: Alan Jowett --- libs/execution_context/ebpf_maps.c | 294 ++++++++++------------------- 1 file changed, 99 insertions(+), 195 deletions(-) diff --git a/libs/execution_context/ebpf_maps.c b/libs/execution_context/ebpf_maps.c index c9b748cdc..88a5a8b41 100644 --- a/libs/execution_context/ebpf_maps.c +++ b/libs/execution_context/ebpf_maps.c @@ -1425,7 +1425,7 @@ _update_hash_map_entry_with_handle( goto Done; } - //Store the content of old object ID. + // Store the content of old object ID. ebpf_id_t old_id = (old_value) ? *(ebpf_id_t*)old_value : 0; // Store the new object ID as the value. result = @@ -1991,226 +1991,130 @@ const ebpf_map_metadata_table_t ebpf_map_metadata_tables[] = { NULL, }, { - BPF_MAP_TYPE_HASH, - _create_hash_map, - _delete_hash_map, - NULL, - _find_hash_map_entry, - NULL, - _update_hash_map_entry, - NULL, - NULL, - _delete_hash_map_entry, - _next_hash_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_HASH, + .create_map = _create_hash_map, + .delete_map = _delete_hash_map, + .find_entry = _find_hash_map_entry, + .update_entry = _update_hash_map_entry, + .delete_entry = _delete_hash_map_entry, + .next_key = _next_hash_map_key, }, { - BPF_MAP_TYPE_ARRAY, - _create_array_map, - _delete_array_map, - NULL, - _find_array_map_entry, - NULL, - _update_array_map_entry, - NULL, - NULL, - _delete_array_map_entry, - _next_array_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_ARRAY, + .create_map = _create_array_map, + .delete_map = _delete_array_map, + .find_entry = _find_array_map_entry, + .update_entry = _update_array_map_entry, + .delete_entry = _delete_array_map_entry, + .next_key = _next_array_map_key, }, { - BPF_MAP_TYPE_PROG_ARRAY, - _create_object_array_map, - _delete_program_array_map, - _associate_program_with_prog_array_map, - _find_array_map_entry, - _get_object_from_array_map_entry, - NULL, - _update_prog_array_map_entry_with_handle, - NULL, - _delete_program_array_map_entry, - _next_array_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_PROG_ARRAY, + .create_map = _create_object_array_map, + .delete_map = _delete_program_array_map, + .associate_program = _associate_program_with_prog_array_map, + .find_entry = _find_array_map_entry, + .get_object_from_entry = _get_object_from_array_map_entry, + .update_entry_with_handle = _update_prog_array_map_entry_with_handle, + .delete_entry = _delete_program_array_map_entry, + .next_key = _next_array_map_key, }, { - BPF_MAP_TYPE_PERCPU_HASH, - _create_hash_map, - _delete_hash_map, - NULL, - _find_hash_map_entry, - NULL, - _update_hash_map_entry, - NULL, - _update_entry_per_cpu, - _delete_hash_map_entry, - _next_hash_map_key, - false, // Zero length key. - false, // Zero length value. - true, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_PERCPU_HASH, + .create_map = _create_hash_map, + .delete_map = _delete_hash_map, + .find_entry = _find_hash_map_entry, + .update_entry = _update_hash_map_entry, + .update_entry_per_cpu = _update_entry_per_cpu, + .delete_entry = _delete_hash_map_entry, + .next_key = _next_hash_map_key, + .per_cpu = true, }, { - BPF_MAP_TYPE_PERCPU_ARRAY, - _create_array_map, - _delete_array_map, - NULL, - _find_array_map_entry, - NULL, - _update_array_map_entry, - NULL, - _update_entry_per_cpu, - _delete_array_map_entry, - _next_array_map_key, - false, // Zero length key. - false, // Zero length value. - true, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_PERCPU_ARRAY, + .create_map = _create_array_map, + .delete_map = _delete_array_map, + .find_entry = _find_array_map_entry, + .update_entry = _update_array_map_entry, + .update_entry_per_cpu = _update_entry_per_cpu, + .delete_entry = _delete_array_map_entry, + .next_key = _next_array_map_key, + .per_cpu = true, }, { - BPF_MAP_TYPE_HASH_OF_MAPS, - _create_object_hash_map, - _delete_object_hash_map, - NULL, - _find_hash_map_entry, - _get_object_from_hash_map_entry, - NULL, - _update_map_hash_map_entry_with_handle, - NULL, - _delete_map_hash_map_entry, - _next_array_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_HASH_OF_MAPS, + .create_map = _create_object_hash_map, + .delete_map = _delete_object_hash_map, + .find_entry = _find_hash_map_entry, + .get_object_from_entry = _get_object_from_hash_map_entry, + .update_entry_with_handle = _update_map_hash_map_entry_with_handle, + .delete_entry = _delete_map_hash_map_entry, + .next_key = _next_array_map_key, }, { - BPF_MAP_TYPE_ARRAY_OF_MAPS, - _create_object_array_map, - _delete_map_array_map, - NULL, - _find_array_map_entry, - _get_object_from_array_map_entry, - NULL, - _update_map_array_map_entry_with_handle, - NULL, - _delete_map_array_map_entry, - _next_array_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_ARRAY_OF_MAPS, + .create_map = _create_object_array_map, + .delete_map = _delete_map_array_map, + .find_entry = _find_array_map_entry, + .get_object_from_entry = _get_object_from_array_map_entry, + .update_entry_with_handle = _update_map_array_map_entry_with_handle, + .delete_entry = _delete_map_array_map_entry, + .next_key = _next_array_map_key, }, { - BPF_MAP_TYPE_LRU_HASH, - _create_lru_hash_map, - _delete_hash_map, - NULL, - _find_hash_map_entry, - NULL, - _update_hash_map_entry, - NULL, - NULL, - _delete_hash_map_entry, - _next_hash_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - true, // Key history, + .map_type = BPF_MAP_TYPE_LRU_HASH, + .create_map = _create_lru_hash_map, + .delete_map = _delete_hash_map, + .find_entry = _find_hash_map_entry, + .update_entry = _update_hash_map_entry, + .delete_entry = _delete_hash_map_entry, + .next_key = _next_hash_map_key, + .key_history = true, }, // LPM_TRIE is currently a hash-map with special behavior for find. { - BPF_MAP_TYPE_LPM_TRIE, - _create_lpm_map, - _delete_hash_map, - NULL, - _find_lpm_map_entry, - NULL, - _update_lpm_map_entry, - NULL, - NULL, - _delete_lpm_map_entry, - _next_hash_map_key, - false, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_LPM_TRIE, + .create_map = _create_lpm_map, + .delete_map = _delete_hash_map, + .find_entry = _find_lpm_map_entry, + .update_entry = _update_lpm_map_entry, + .delete_entry = _delete_lpm_map_entry, + .next_key = _next_hash_map_key, }, { - BPF_MAP_TYPE_QUEUE, - _create_queue_map, - _delete_circular_map, - NULL, - _find_circular_map_entry, - NULL, - _update_circular_map_entry, - NULL, - NULL, - NULL, - NULL, - true, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_QUEUE, + .create_map = _create_queue_map, + .delete_map = _delete_circular_map, + .find_entry = _find_circular_map_entry, + .update_entry = _update_circular_map_entry, + .zero_length_key = true, }, { - BPF_MAP_TYPE_LRU_PERCPU_HASH, - _create_lru_hash_map, - _delete_hash_map, - NULL, - _find_hash_map_entry, - NULL, - _update_hash_map_entry, - NULL, - _update_entry_per_cpu, - _delete_hash_map_entry, - _next_hash_map_key, - false, // Zero length key. - false, // Zero length value. - true, // Per-cpu. - true, // Key history, + .map_type = BPF_MAP_TYPE_LRU_PERCPU_HASH, + .create_map = _create_lru_hash_map, + .delete_map = _delete_hash_map, + .find_entry = _find_hash_map_entry, + .update_entry = _update_hash_map_entry, + .update_entry_per_cpu = _update_entry_per_cpu, + .delete_entry = _delete_hash_map_entry, + .next_key = _next_hash_map_key, + .per_cpu = true, + .key_history = true, }, { - BPF_MAP_TYPE_STACK, - _create_stack_map, - _delete_circular_map, - NULL, - _find_circular_map_entry, - NULL, - _update_circular_map_entry, - NULL, - NULL, - NULL, - NULL, - true, // Zero length key. - false, // Zero length value. - false, // Per-cpu. - false, // Key history, + .map_type = BPF_MAP_TYPE_STACK, + .create_map = _create_stack_map, + .delete_map = _delete_circular_map, + .find_entry = _find_circular_map_entry, + .update_entry = _update_circular_map_entry, + .zero_length_key = true, }, { BPF_MAP_TYPE_RINGBUF, - _create_ring_buffer_map, - _delete_ring_buffer_map, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - true, // Zero length key. - true, // Zero length value. - false, // Per-cpu. - false, // Key history, + .create_map = _create_ring_buffer_map, + .delete_map = _delete_ring_buffer_map, + .zero_length_key = true, + .zero_length_value = true, }, };