finish ipv6 fragmentation
This commit is contained in:
@@ -3,11 +3,13 @@
|
||||
#include <tins/ip.h>
|
||||
#include <tins/ipv6.h>
|
||||
#include "INetworkInterfaceCard.h"
|
||||
#include "IpPacketFragmentation.h"
|
||||
|
||||
IpVersionRouter::IpVersionRouter(SPtrINetworkInterfaceCard netv4Card, SPtrINetworkInterfaceCard netv6Card)
|
||||
{
|
||||
ipv4Card = netv4Card;
|
||||
ipv6Card = netv6Card;
|
||||
ipv6Fragmentation = std::make_unique<IpPacketFragmentation>(ipv6Card->getMtu());
|
||||
}
|
||||
|
||||
IpVersionRouter::~IpVersionRouter()
|
||||
@@ -19,8 +21,13 @@ bool IpVersionRouter::handle(IN const Tins::PDU & pdu, IN IPacketHandler * /* ca
|
||||
const Tins::IPv6 * ipv6Pdu = pdu.find_pdu<Tins::IPv6>();
|
||||
if(ipv6Pdu != nullptr)
|
||||
{
|
||||
ipv6Card->sendPacket(pdu);
|
||||
return true;
|
||||
if (pdu.size() < ipv6Card->getMtu())
|
||||
{
|
||||
ipv6Card->sendPacket(pdu);
|
||||
return true;
|
||||
}
|
||||
|
||||
return ipv6Fragmentation->handle(pdu, this);
|
||||
}
|
||||
|
||||
const Tins::IP * ipv4Pdu = pdu.find_pdu<Tins::IP>();
|
||||
|
||||
Reference in New Issue
Block a user