add hw adress translator, add solicitedNodeAddress traslation , finisched arp to ndp handler

This commit is contained in:
stubbfel
2017-02-16 00:47:27 +01:00
parent 7e7e66f0b7
commit 9b65fca64a
9 changed files with 140 additions and 123 deletions

View File

@@ -2,7 +2,28 @@
#include <tins/ip_address.h>
#include <tins/ipv6_address.h>
#ifndef NdpPrefixValueString
#define NdpPrefixValueString "FF02:0:0:0:0:1:FF00:0"
#endif
#ifndef NdpMaskValueString
#define NdpMaskValueString "::FF:FFFF"
#endif
const size_t IpAddressTranslator::lastAddressByteIndex = Tins::IPv4Address::address_size - 1;
const UPtrIPv6Address IpAddressTranslator::ndpPrefix = std::make_unique<Tins::IPv6Address>(NdpPrefixValueString);
const UPtrIPv6Address IpAddressTranslator::ndpMask = std::make_unique<Tins::IPv6Address>(NdpMaskValueString);
void IpAddressTranslator::toSolicitedNodeAddress(const Tins::IPv4Address &ipv4Address, Tins::IPv6Address &resultIpv6Address)
{
toIpv6Address(ipv4Address, resultIpv6Address);
toSolicitedNodeAddress(resultIpv6Address, resultIpv6Address);
}
void IpAddressTranslator::toSolicitedNodeAddress(const Tins::IPv6Address &ipv6Address, Tins::IPv6Address &resultIpv6Address)
{
resultIpv6Address = (*ndpMask & ipv6Address)| *ndpPrefix;
}
uint32_t IpAddressTranslator::toIpv4AddressBytes(IN const Tins::IPv6Address & ipv6Address)
{