From 7ccc027de589e87e9401df6b0e12751d70957941 Mon Sep 17 00:00:00 2001 From: Michal Rostecki Date: Thu, 2 Feb 2023 10:46:31 +0800 Subject: [PATCH] Revert "Add ability to iterate over LpmTrie keys and matches" --- aya/src/maps/lpm_trie.rs | 80 ++++------------------------------------ 1 file changed, 7 insertions(+), 73 deletions(-) diff --git a/aya/src/maps/lpm_trie.rs b/aya/src/maps/lpm_trie.rs index 4a6cc94f..fb70f5ac 100644 --- a/aya/src/maps/lpm_trie.rs +++ b/aya/src/maps/lpm_trie.rs @@ -3,11 +3,12 @@ use std::{ borrow::Borrow, convert::{AsMut, AsRef}, marker::PhantomData, + mem, }; use crate::{ - maps::{check_kv_size, IterableMap, MapData, MapError, MapIter, MapKeys}, - sys::{bpf_map_delete_elem, bpf_map_get_next_key, bpf_map_lookup_elem, bpf_map_update_elem}, + maps::{check_kv_size, IterableMap, MapData, MapError}, + sys::{bpf_map_delete_elem, bpf_map_lookup_elem, bpf_map_update_elem}, Pod, }; @@ -124,24 +125,6 @@ impl, K: Pod, V: Pod> LpmTrie { })?; value.ok_or(MapError::KeyNotFound) } - - /// An iterator visiting all key-value pairs in arbitrary order. The - /// iterator item type is `Result<(K, V), MapError>`. - pub fn iter(&self) -> MapIter<'_, Key, V, Self> { - MapIter::new(self) - } - - /// An iterator visiting all keys in arbitrary order. The iterator element - /// type is `Result, MapError>`. - pub fn keys(&self) -> MapKeys<'_, Key> { - MapKeys::new(self.inner.as_ref()) - } - - /// An iterator visiting all keys matching key. The - /// iterator item type is `Result, MapError>`. - pub fn iter_key(&self, key: Key) -> LpmTrieKeys<'_, K> { - LpmTrieKeys::new(self.inner.as_ref(), key) - } } impl, K: Pod, V: Pod> LpmTrie { @@ -177,63 +160,14 @@ impl, K: Pod, V: Pod> LpmTrie { } } -impl, K: Pod, V: Pod> IterableMap, V> for LpmTrie { +impl, K: Pod, V: Pod> IterableMap for LpmTrie { fn map(&self) -> &MapData { self.inner.as_ref() } - fn get(&self, key: &Key) -> Result { - self.get(key, 0) - } -} - -/// Iterator returned by `LpmTrie::iter_key()`. -pub struct LpmTrieKeys<'coll, K: Pod> { - map: &'coll MapData, - err: bool, - key: Key, -} - -impl<'coll, K: Pod> LpmTrieKeys<'coll, K> { - fn new(map: &'coll MapData, key: Key) -> LpmTrieKeys<'coll, K> { - LpmTrieKeys { - map, - err: false, - key, - } - } -} - -impl Iterator for LpmTrieKeys<'_, K> { - type Item = Result, MapError>; - - fn next(&mut self) -> Option, MapError>> { - if self.err { - return None; - } - - let fd = match self.map.fd_or_err() { - Ok(fd) => fd, - Err(e) => { - self.err = true; - return Some(Err(e)); - } - }; - - match bpf_map_get_next_key(fd, Some(&self.key)) { - Ok(Some(key)) => { - self.key = key; - Some(Ok(key)) - } - Ok(None) => None, - Err((_, io_error)) => { - self.err = true; - Some(Err(MapError::SyscallError { - call: "bpf_map_get_next_key".to_owned(), - io_error, - })) - } - } + fn get(&self, key: &K) -> Result { + let lookup = Key::new(mem::size_of::() as u32, *key); + self.get(&lookup, 0) } }