16    : m_client_interface(client_interface), m_ban_db(std::move(ban_file)), m_default_ban_time(default_ban_time)
 
   24        LogPrint(
BCLog::NET, 
"Loaded %d banned node addresses/subnets  %dms\n", m_banned.size(),
 
   27        LogPrintf(
"Recreating the banlist database\n");
 
   54    LogPrint(
BCLog::NET, 
"Flushed %d banned node addresses/subnets to disk  %dms\n", banmap.size(),
 
   79    for (
const auto& it : m_banned) {
 
   83        if (current_time < ban_entry.
nBanUntil && sub_net.
Match(net_addr)) {
 
   94    banmap_t::iterator i = m_banned.find(sub_net);
 
   95    if (i != m_banned.end()) {
 
  107    Ban(sub_net, ban_time_offset, since_unix_epoch);
 
  120    int64_t normalized_ban_time_offset = ban_time_offset;
 
  121    bool normalized_since_unix_epoch = since_unix_epoch;
 
  122    if (ban_time_offset <= 0) {
 
  124        normalized_since_unix_epoch = 
false;
 
  126    ban_entry.
nBanUntil = (normalized_since_unix_epoch ? 0 : 
GetTime()) + normalized_ban_time_offset;
 
  130        if (m_banned[sub_net].nBanUntil < ban_entry.
nBanUntil) {
 
  131            m_banned[sub_net] = ban_entry;
 
  145    return Unban(sub_net);
 
  152        if (m_banned.erase(sub_net) == 0) 
return false;
 
  171    bool notify_ui = 
false;
 
  174        banmap_t::iterator it = m_banned.begin();
 
  175        while (it != m_banned.end()) {
 
  179                m_banned.erase(it++);
 
BanMan(fs::path ban_file, CClientUIInterface *client_interface, int64_t default_ban_time)
void Discourage(const CNetAddr &net_addr)
void Ban(const CNetAddr &net_addr, int64_t ban_time_offset=0, bool since_unix_epoch=false)
const int64_t m_default_ban_time
void GetBanned(banmap_t &banmap)
bool IsBanned(const CNetAddr &net_addr)
Return whether net_addr is banned.
RecursiveMutex m_cs_banned
CClientUIInterface * m_client_interface
bool Unban(const CNetAddr &net_addr)
void SetBannedSetDirty(bool dirty=true)
set the "dirty" flag for the banlist
void SweepBanned()
clean unused entries (if bantime has expired)
bool IsDiscouraged(const CNetAddr &net_addr)
Return whether net_addr is discouraged.
bool Write(const banmap_t &banSet)
bool Read(banmap_t &banSet)
Read the banlist from disk.
Signals for UI communication.
std::vector< unsigned char > GetAddrBytes() const
std::string ToString() const
bool Match(const CNetAddr &addr) const
Path class wrapper to prepare application code for transition from boost::filesystem library to std::...
#define LogPrint(category,...)
std::map< CSubNet, CBanEntry > banmap_t
int64_t GetTimeMillis()
Returns the system time (not mockable)
int64_t GetTime()
DEPRECATED Use either GetTimeSeconds (not mockable) or GetTime<T> (mockable)
bilingual_str _(const char *psz)
Translation function.