From 79365da15181db2e7d9622db834c4c0b84f1e060 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Fri, 17 Jan 2020 19:07:37 -0800 Subject: [PATCH] BpfMap/Utils - fix const-ness of key & value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When accessing maps keys are always const/read-only. Similarly for the value when it is being stored in the map. This eliminates four const_casts. Test: build, atest Signed-off-by: Maciej Żenczykowski Change-Id: Icc57b46a8e9e81b5b06264260bfbf34a4ba9105d --- libbpf_android/include/bpf/BpfMap.h | 8 ++++---- libbpf_android/include/bpf/BpfUtils.h | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libbpf_android/include/bpf/BpfMap.h b/libbpf_android/include/bpf/BpfMap.h index a894b57..80ae62b 100644 --- a/libbpf_android/include/bpf/BpfMap.h +++ b/libbpf_android/include/bpf/BpfMap.h @@ -79,7 +79,7 @@ class BpfMap { netdutils::StatusOr getNextKey(const Key& key) const { Key nextKey; - if (getNextMapKey(mMapFd, const_cast(&key), &nextKey)) { + if (getNextMapKey(mMapFd, &key, &nextKey)) { return netdutils::statusFromErrno( errno, base::StringPrintf("Get next key of map %d failed", mMapFd.get())); } @@ -87,7 +87,7 @@ class BpfMap { } netdutils::Status writeValue(const Key& key, const Value& value, uint64_t flags) { - if (writeToMapEntry(mMapFd, const_cast(&key), const_cast(&value), flags)) { + if (writeToMapEntry(mMapFd, &key, &value, flags)) { return netdutils::statusFromErrno( errno, base::StringPrintf("write to map %d failed", mMapFd.get())); } @@ -96,7 +96,7 @@ class BpfMap { netdutils::StatusOr readValue(const Key key) const { Value value; - if (findMapEntry(mMapFd, const_cast(&key), &value)) { + if (findMapEntry(mMapFd, &key, &value)) { return netdutils::statusFromErrno( errno, base::StringPrintf("read value of map %d failed", mMapFd.get())); } @@ -104,7 +104,7 @@ class BpfMap { } netdutils::Status deleteValue(const Key& key) { - if (deleteMapEntry(mMapFd, const_cast(&key))) { + if (deleteMapEntry(mMapFd, &key)) { return netdutils::statusFromErrno( errno, base::StringPrintf("delete entry from map %d failed", mMapFd.get())); } diff --git a/libbpf_android/include/bpf/BpfUtils.h b/libbpf_android/include/bpf/BpfUtils.h index 4d3e155..cf6e1ac 100644 --- a/libbpf_android/include/bpf/BpfUtils.h +++ b/libbpf_android/include/bpf/BpfUtils.h @@ -85,7 +85,7 @@ static inline int createMap(bpf_map_type map_type, uint32_t key_size, uint32_t v }); } -static inline int writeToMapEntry(const base::unique_fd& map_fd, void* key, void* value, +static inline int writeToMapEntry(const base::unique_fd& map_fd, const void* key, const void* value, uint64_t flags) { return bpf(BPF_MAP_UPDATE_ELEM, { .map_fd = static_cast<__u32>(map_fd.get()), @@ -95,7 +95,7 @@ static inline int writeToMapEntry(const base::unique_fd& map_fd, void* key, void }); } -static inline int findMapEntry(const base::unique_fd& map_fd, void* key, void* value) { +static inline int findMapEntry(const base::unique_fd& map_fd, const void* key, void* value) { return bpf(BPF_MAP_LOOKUP_ELEM, { .map_fd = static_cast<__u32>(map_fd.get()), .key = ptr_to_u64(key), @@ -103,14 +103,14 @@ static inline int findMapEntry(const base::unique_fd& map_fd, void* key, void* v }); } -static inline int deleteMapEntry(const base::unique_fd& map_fd, void* key) { +static inline int deleteMapEntry(const base::unique_fd& map_fd, const void* key) { return bpf(BPF_MAP_DELETE_ELEM, { .map_fd = static_cast<__u32>(map_fd.get()), .key = ptr_to_u64(key), }); } -static inline int getNextMapKey(const base::unique_fd& map_fd, void* key, void* next_key) { +static inline int getNextMapKey(const base::unique_fd& map_fd, const void* key, void* next_key) { return bpf(BPF_MAP_GET_NEXT_KEY, { .map_fd = static_cast<__u32>(map_fd.get()), .key = ptr_to_u64(key),