// incoming protocol
dnsdist::Protocol protocol;
#if defined(DNSDIST_RINGS_WITH_MACADDRESS)
- char macaddress[6];
+ dnsdist::MacAddress macaddress;
bool hasmac{false};
#endif
};
void insertQuery(const struct timespec& when, const ComboAddress& requestor, const DNSName& name, uint16_t qtype, uint16_t size, const struct dnsheader& dh, dnsdist::Protocol protocol)
{
#if defined(DNSDIST_RINGS_WITH_MACADDRESS)
- char macaddress[6];
+ dnsdist::MacAddress macaddress;
bool hasmac{false};
- if (dnsdist::MacAddressesCache::get(requestor, macaddress, sizeof(macaddress)) == 0) {
+ if (dnsdist::MacAddressesCache::get(requestor, macaddress.data(), macaddress.size()) == 0) {
hasmac = true;
}
#endif
auto lock = shard->queryRing.try_lock();
if (lock.owns_lock()) {
#if defined(DNSDIST_RINGS_WITH_MACADDRESS)
- insertQueryLocked(*lock, when, requestor, name, qtype, size, dh, protocol, macaddress, sizeof(macaddress), hasmac);
+ insertQueryLocked(*lock, when, requestor, name, qtype, size, dh, protocol, macaddress, hasmac);
#else
insertQueryLocked(*lock, when, requestor, name, qtype, size, dh, protocol);
#endif
auto& shard = getOneShard();
auto lock = shard->queryRing.lock();
#if defined(DNSDIST_RINGS_WITH_MACADDRESS)
- insertQueryLocked(*lock, when, requestor, name, qtype, size, dh, protocol, macaddress, sizeof(macaddress), hasmac);
+ insertQueryLocked(*lock, when, requestor, name, qtype, size, dh, protocol, macaddress, hasmac);
#else
insertQueryLocked(*lock, when, requestor, name, qtype, size, dh, protocol);
#endif
}
#if defined(DNSDIST_RINGS_WITH_MACADDRESS)
- void insertQueryLocked(boost::circular_buffer<Query>& ring, const struct timespec& when, const ComboAddress& requestor, const DNSName& name, uint16_t qtype, uint16_t size, const struct dnsheader& dh, dnsdist::Protocol protocol, const char* macaddress, size_t maclen, const bool hasmac)
+ void insertQueryLocked(boost::circular_buffer<Query>& ring, const struct timespec& when, const ComboAddress& requestor, const DNSName& name, uint16_t qtype, uint16_t size, const struct dnsheader& dh, dnsdist::Protocol protocol, const dnsdist::MacAddress& macaddress, const bool hasmac)
#else
void insertQueryLocked(boost::circular_buffer<Query>& ring, const struct timespec& when, const ComboAddress& requestor, const DNSName& name, uint16_t qtype, uint16_t size, const struct dnsheader& dh, dnsdist::Protocol protocol)
#endif
d_nbQueryEntries++;
}
#if defined(DNSDIST_RINGS_WITH_MACADDRESS)
- Rings::Query query{requestor, name, when, dh, size, qtype, protocol, "", hasmac};
+ Rings::Query query{requestor, name, when, dh, size, qtype, protocol, dnsdist::MacAddress{""}, hasmac};
if (hasmac) {
- memcpy(query.macaddress, macaddress, maclen);
+ memcpy(query.macaddress.data(), macaddress.data(), macaddress.size());
}
ring.push_back(std::move(query));
#else
{
LockGuarded<boost::circular_buffer<MacAddressesCache::Entry>> MacAddressesCache::s_cache;
-int MacAddressesCache::get(const ComboAddress& ca, char* dest, size_t destLen)
+int MacAddressesCache::get(const ComboAddress& ca, unsigned char* dest, size_t destLen)
{
if (dest == nullptr || destLen < sizeof(Entry::mac)) {
return EINVAL;
// negative entry
return ENOENT;
}
- memcpy(dest, entry.mac, sizeof(entry.mac));
+ memcpy(dest, entry.mac.data(), entry.mac.size());
return 0;
}
}
}
- auto res = getMACAddress(ca, dest, destLen);
+ auto res = getMACAddress(ca, reinterpret_cast<char*>(dest), destLen);
{
auto cache = s_cache.lock();
if (cache->capacity() == 0) {
Entry entry;
entry.ca = ca;
if (res == 0) {
- memcpy(entry.mac, dest, sizeof(entry.mac));
+ memcpy(entry.mac.data(), dest, entry.mac.size());
entry.found = true;
}
else {
- memset(entry.mac, 0, sizeof(entry.mac));
+ memset(entry.mac.data(), 0, entry.mac.size());
entry.found = false;
}
entry.ttd = now + MacAddressesCache::s_cacheValiditySeconds;