From 312af0c43717afa03f242cec27802cac37f784b6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 12 Jun 2018 11:44:36 -0500 Subject: [PATCH] osd/OSDMap: is_blacklisted() for addrvecs Signed-off-by: Sage Weil --- src/osd/OSDMap.cc | 24 ++++++++++++++++++++++++ src/osd/OSDMap.h | 1 + 2 files changed, 25 insertions(+) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 01b623318687d..e64e6edaf3ab6 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1204,6 +1204,30 @@ bool OSDMap::is_blacklisted(const entity_addr_t& a) const return false; } +bool OSDMap::is_blacklisted(const entity_addrvec_t& av) const +{ + if (blacklist.empty()) + return false; + + for (auto& a : av.v) { + // this specific instance? + if (blacklist.count(a)) + return true; + + // is entire ip blacklisted? + if (a.is_ip()) { + entity_addr_t b = a; + b.set_port(0); + b.set_nonce(0); + if (blacklist.count(b)) { + return true; + } + } + } + + return false; +} + void OSDMap::get_blacklist(list > *bl) const { std::copy(blacklist.begin(), blacklist.end(), std::back_inserter(*bl)); diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 753094d769fe8..29715e73479fe 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -656,6 +656,7 @@ public: const utime_t& get_modified() const { return modified; } bool is_blacklisted(const entity_addr_t& a) const; + bool is_blacklisted(const entity_addrvec_t& a) const; void get_blacklist(list > *bl) const; void get_blacklist(std::set *bl) const; -- 2.39.5