add Ip6toipv4Handler

This commit is contained in:
stubbfel
2016-12-02 01:04:42 +01:00
parent 71cb07ea9a
commit 41f8c9243f
19 changed files with 283 additions and 95 deletions

View File

@@ -0,0 +1,30 @@
#include "IpAddressTranslator.h"
#include <tins/ip_address.h>
#include <tins/ipv6_address.h>
const size_t IpAddressTranslator::lastAddressByteIndex = Tins::IPv4Address::address_size - 1;
uint32_t IpAddressTranslator::toIpv4AddressBytes(IN const Tins::IPv6Address & ipv6Address)
{
uint32_t ipBytesNetworkOrder = 0;
uint8_t * ptrIpByte = reinterpret_cast<uint8_t *>( &ipBytesNetworkOrder );
Tins::IPv6Address::const_iterator it = ipv6Address.end();
for (int i = lastAddressByteIndex; i > -1; i--)
{
it--;
ptrIpByte[i] = *it;
}
return ipBytesNetworkOrder;
}
void IpAddressTranslator::toIpv6Address(IN const Tins::IPv4Address & ipv4Address, INOUT Tins::IPv6Address & resultIpv6Address)
{
Tins::IPv6Address::iterator it = resultIpv6Address.end();
uint32_t ipBytesNetworkOrder = ipv4Address;
uint8_t * ptrIpByte = reinterpret_cast<uint8_t *>( &ipBytesNetworkOrder );
for (int i = lastAddressByteIndex; i > -1; i--)
{
it--;
*it = ptrIpByte[i];
}
}