add IpFragmentation
This commit is contained in:
27
src/IpPacketFragmentation.h
Normal file
27
src/IpPacketFragmentation.h
Normal 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
|
||||
Reference in New Issue
Block a user