add IpFragmentation

This commit is contained in:
stubbfel
2017-06-09 00:47:02 +02:00
parent c0b8a1b5e0
commit 1345a8013c
5 changed files with 174 additions and 2 deletions

View File

@@ -0,0 +1,27 @@
#ifndef IPPACKETFRAGMENTATION_H
#define IPPACKETFRAGMENTATION_H
#include "IpPacketFragmentation_t.h"
#include "Ip6Packet_t.h"
#include "AbstractPacketHandler.h"
class IpPacketFragmentation : public AbstractPacketHandler
{
public:
IpPacketFragmentation(const size_t newMtu);
virtual ~IpPacketFragmentation();
virtual bool handle(IN const Tins::PDU & pdu, IN IPacketHandler * callBackHandler = nullptr) override;
private:
const size_t mtu;
uint32_t idCounter;
static const size_t fragmentionHeadersize = sizeof (FragmentionHeaderUnion) - 1;
static void addExtensionHeader(IN const uint8_t NextHeader, IN const uint8_t *startPtr, IN Tins::IPv6 & ipFragmentPdu);
bool createAndForwardFragmend(IN const Tins::PDU & pdu, IN const ByteVector::iterator & fragmentStart, IN const ByteVector::iterator & fragmentPosIt, IN FragmentionHeaderStruct * ptrFragmentionHeaderStruct, IN uint8_t * ptrStartFragmentionHeader, IN IPacketHandler * callBackHandler);
void initFragmentationHeader(FragmentionHeaderStruct* ptrFragmentionHeaderStruct);
};
#endif // IPPACKETFRAGMENTATION_H