#include <ipcache.h>

Public Types | |
| typedef std::vector< CachedIp > | Storage |
Public Member Functions | |
| bool | have (const Ip::Address &ip, size_t *position=nullptr) const |
| const Ip::Address & | current () const |
| bool | empty () const noexcept |
| whether we cached no IPs at all More... | |
| size_t | size () const noexcept |
| all cached IPs More... | |
| size_t | badCount () const noexcept |
| bad IPs More... | |
| IpsSelector< GoodIpsIterator > | good () const |
| good IPs More... | |
| IpsSelector< IpsIterator > | goodAndBad () const |
| all IPs More... | |
| const Storage & | raw () const |
| all cached entries More... | |
| void | markAsBad (const char *name, const Ip::Address &ip) |
| void | forgetMarking (const char *name, const Ip::Address &ip) |
| undo successful markAsBad() More... | |
| void | pushUnique (const Ip::Address &ip) |
| void | reset (const Ip::Address &ip) |
| replace all info with the given (presumed good) IP address More... | |
| void | reportCurrent (std::ostream &os) const |
| prints current IP and other debugging information More... | |
Private Member Functions | |
| bool | seekNewGood (const char *name) |
| void | restoreGoodness (const char *name) |
| makes current() calls possible after a successful markAsBad() More... | |
Private Attributes | |
| Storage | ips |
| good and bad IPs More... | |
| size_t | goodPosition = 0 |
| position of the IP returned by current() More... | |
| size_t | badCount_ = 0 |
| number of IPs that are currently marked as bad More... | |
Friends | |
| template<class Iterator > | |
| class | IpsSelector |
Detailed Description
A small container of IP addresses with a "current good address" getter API. Ignores Ip::Address port.
Member Typedef Documentation
◆ Storage
| typedef std::vector<CachedIp> Dns::CachedIps::Storage |
Member Function Documentation
◆ badCount()
|
inlinenoexcept |
◆ current()
|
inline |
- Returns
- a good address does not auto-rotate IPs but calling markAsBad() may change the answer
Definition at line 59 of file ipcache.h.
References goodPosition, and ips.
Referenced by icapLookupDnsResults(), netdbClosestParent(), and netdbSendPing().
◆ empty()
|
inlinenoexcept |
Definition at line 61 of file ipcache.h.
References ips.
Referenced by IpCacheLookupForwarder::finalCallback(), ipcacheExpiredEntry(), ipcacheHandleReply(), and peerDNSConfigure().
◆ forgetMarking()
| void Dns::CachedIps::forgetMarking | ( | const char * | name, |
| const Ip::Address & | ip | ||
| ) |
Definition at line 1039 of file ipcache.cc.
◆ good()
|
inline |
Definition at line 243 of file ipcache.h.
Referenced by IpCacheLookupForwarder::forwardHits().
◆ goodAndBad()
|
inline |
Definition at line 249 of file ipcache.h.
Referenced by Acl::DestinationAsnCheck::match(), ACLDestinationIP::match(), mcastJoinGroups(), and peerDNSConfigure().
◆ have()
| bool Dns::CachedIps::have | ( | const Ip::Address & | ip, |
| size_t * | position = nullptr |
||
| ) | const |
whether we have at least one of the given IP addresses (ignoring ports) upon success, also sets *position if the position is not nil
Definition at line 982 of file ipcache.cc.
References debugs.
Referenced by ipcache_entry::addGood(), and ClientRequestContext::hostHeaderIpVerify().
◆ markAsBad()
| void Dns::CachedIps::markAsBad | ( | const char * | name, |
| const Ip::Address & | ip | ||
| ) |
Finds and marks the given address as bad, adjusting current() if needed. Has no effect if the search fails or the found address is already bad. XXX: An attempt to mark the last good address erases all marks instead. XXX: It is impossible to successfully mark a single address as bad.
Definition at line 1019 of file ipcache.cc.
References debugs.
◆ pushUnique()
| void Dns::CachedIps::pushUnique | ( | const Ip::Address & | ip | ) |
appends an IP address if we do not have() it already invalidates all iterators
Definition at line 1000 of file ipcache.cc.
References assert.
Referenced by ipcache_entry::addGood(), and ipcacheAddEntryFromHosts().
◆ raw()
|
inline |
Definition at line 69 of file ipcache.h.
References ips.
Referenced by ipcache_entry::addGood(), Dns::IpsSelector< Iterator >::cbegin(), Dns::IpsSelector< Iterator >::cend(), and ipcacheStatPrint().
◆ reportCurrent()
| void Dns::CachedIps::reportCurrent | ( | std::ostream & | os | ) | const |
◆ reset()
| void Dns::CachedIps::reset | ( | const Ip::Address & | ip | ) |
Definition at line 956 of file ipcache.cc.
Referenced by ipcacheCheckNumeric().
◆ restoreGoodness()
|
private |
Definition at line 968 of file ipcache.cc.
◆ seekNewGood()
|
private |
find the next good IP, wrapping if needed
- Returns
- whether the search was successful
Definition at line 939 of file ipcache.cc.
References debugs, goodPosition, and ips.
◆ size()
|
inlinenoexcept |
Definition at line 62 of file ipcache.h.
References ips.
Referenced by ipcache_entry::addGood(), ipcacheStatPrint(), peerDNSConfigure(), and ipcache_entry::updateTtl().
Friends And Related Function Documentation
◆ IpsSelector
|
friend |
Member Data Documentation
◆ badCount_
|
private |
Definition at line 101 of file ipcache.h.
Referenced by badCount().
◆ goodPosition
|
private |
Definition at line 100 of file ipcache.h.
Referenced by Dns::IpsSelector< Iterator >::cbegin(), current(), and seekNewGood().
◆ ips
|
private |
The documentation for this class was generated from the following files:
- src/ipcache.h
- src/ipcache.cc
