mirror of
https://github.com/mfontanini/libtins
synced 2026-01-23 02:35:57 +01:00
Fix IP fragment reassemble when packet has flags DF+MF
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include "ip_reassembler.h"
|
||||
#include "ethernetII.h"
|
||||
#include "udp.h"
|
||||
#include "ip.h"
|
||||
#include "rawpdu.h"
|
||||
|
||||
using namespace Tins;
|
||||
@@ -74,3 +75,30 @@ TEST_F(IPv4ReassemblerTest, Reassemble) {
|
||||
test_packets(vt);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(IPv4ReassemblerTest, PacketHasMFAndDF) {
|
||||
const uint8_t raw_packet1[] = {
|
||||
0, 80, 86, 173, 75, 110, 170, 0, 4, 0, 10, 4, 8, 0, 69, 0, 0, 124, 146,
|
||||
205, 96, 0, 64, 6, 107, 153, 7, 7, 7, 7, 7, 7, 7, 1, 152, 191, 0, 80,
|
||||
160, 119, 38, 106, 125, 14, 42, 154, 128, 24, 0, 115, 148, 65, 0, 0, 1,
|
||||
1, 8, 10, 4, 255, 180, 163, 4, 255, 176, 151, 71, 69, 84, 32, 47, 49, 46,
|
||||
104, 116, 109, 108, 63, 32, 72, 84, 84, 80, 47, 49, 46, 49, 13, 10, 85,
|
||||
115, 101, 114, 45, 65, 103, 101, 110, 116, 58, 32, 87, 103, 101, 116,
|
||||
47, 49, 46, 49, 51, 46, 52, 32, 40, 108, 105, 110, 117, 120, 45, 103,
|
||||
110, 117, 41, 13, 10, 65, 99, 99, 101, 112, 116, 58, 32, 42, 47, 42, 13
|
||||
};
|
||||
const uint8_t raw_packet2[] = {
|
||||
0, 80, 86, 173, 75, 110, 170, 0, 4, 0, 10, 4, 8, 0, 69, 0, 0, 62, 146,
|
||||
205, 64, 13, 64, 6, 139, 202, 7, 7, 7, 7, 7, 7, 7, 1, 10, 72, 111, 115,
|
||||
116, 58, 32, 55, 46, 55, 46, 55, 46, 49, 13, 10, 67, 111, 110, 110,
|
||||
101, 99, 116, 105, 111, 110, 58, 32, 75, 101, 101, 112, 45, 65, 108,
|
||||
105, 118, 101, 13, 10, 13, 10
|
||||
};
|
||||
EthernetII packet1(raw_packet1, sizeof(raw_packet1));
|
||||
EthernetII packet2(raw_packet2, sizeof(raw_packet2));
|
||||
EXPECT_TRUE(packet1.rfind_pdu<IP>().is_fragmented());
|
||||
EXPECT_TRUE(packet2.rfind_pdu<IP>().is_fragmented());
|
||||
IPv4Reassembler reassembler;
|
||||
EXPECT_EQ(IPv4Reassembler::FRAGMENTED, reassembler.process(packet1));
|
||||
EXPECT_EQ(IPv4Reassembler::REASSEMBLED, reassembler.process(packet2));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user