add Ip6toipv4Handler
This commit is contained in:
30
src/IpAddressTranslator.cpp
Normal file
30
src/IpAddressTranslator.cpp
Normal 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];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user