IPv4Layer::IPv4Layer(const IPv4Address& srcIP, const IPv4Address& dstIP) { initLayer(); iphdr* ipHdr = getIPv4Header(); ipHdr->ipSrc = srcIP.toInt(); ipHdr->ipDst = dstIP.toInt(); }
ArpLayer::ArpLayer(ArpOpcode opCode, const MacAddress& senderMacAddr, const MacAddress& targetMacAddr, const IPv4Address senderIpAddr, const IPv4Address& targetIpAddr) { m_DataLen = sizeof(arphdr); m_Data = new uint8_t[m_DataLen]; memset(m_Data, 0, sizeof(m_DataLen)); m_Protocol = ARP; arphdr* arpHeader = getArpHeader(); arpHeader->opcode = htons(opCode); targetMacAddr.copyTo(arpHeader->targetMacAddr); senderMacAddr.copyTo(arpHeader->senderMacAddr); arpHeader->targetIpAddr = targetIpAddr.toInt(); arpHeader->senderIpAddr = senderIpAddr.toInt(); }
uint32_t IPReassemblyHashBy3Tuple(const IPv4Address& ipSrc, const IPv4Address& ipDst, uint16_t ipID) { ScalarBuffer<uint8_t> vec[3]; uint16_t ipIdNetworkOrder = htons(ipID); uint32_t ipSrcAsInt = ipSrc.toInt(); uint32_t ipDstAsInt = ipDst.toInt(); vec[0].buffer = (uint8_t*)&ipSrcAsInt; vec[0].len = 4; vec[1].buffer = (uint8_t*)&ipDstAsInt; vec[1].len = 4; vec[2].buffer = (uint8_t*)&ipIdNetworkOrder; vec[2].len = 2; return pcpp::fnv_hash(vec, 3); }
void icmp_router_address_structure::setRouterAddress(IPv4Address addr, uint32_t preference) { routerAddress = addr.toInt(); preferenceLevel = htonl(preference); }