if (d_pos + sizeof(ret) > d_content.size()) {
throw std::out_of_range("Attempt to read 64 bit value outside of packet");
}
- memcpy(&ret, &d_content.at(d_pos), sizeof(ret));
+ memcpy(&ret.content, &d_content.at(d_pos), sizeof(ret.content));
d_pos += sizeof(ret);
}
d_content.insert(d_content.end(), bytes, bytes + sizeof(bytes));
}
-template <typename Container> void GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID(NodeOrLocatorID val)
+template <typename Container> void GenericDNSPacketWriter<Container>::xfrNodeOrLocatorID(const NodeOrLocatorID& val)
{
d_content.insert(d_content.end(), val.content, val.content + sizeof(val.content));
}
void truncate();
void xfr48BitInt(uint64_t val);
- void xfrNodeOrLocatorID(NodeOrLocatorID val);
+ void xfrNodeOrLocatorID(const NodeOrLocatorID& val);
void xfr32BitInt(uint32_t val);
void xfr16BitInt(uint16_t val);
void xfrType(uint16_t val)
throw RecordTextException("while parsing colon-delimited 64-bit field: '" + d_string.substr(d_pos, len) + "' is invalid");
}
- std::memcpy(&val, tmpbuf.s6_addr, sizeof(val));
+ std::memcpy(&val.content, tmpbuf.s6_addr, sizeof(val.content));
d_pos += len;
}