1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-23 02:35:57 +01:00

Set protocol to 0 if no inner_pdu on IP

This commit is contained in:
Matias Fontanini
2016-09-29 07:24:44 -07:00
parent 838a4a5cb9
commit 8dcfd6aae0
2 changed files with 13 additions and 0 deletions

View File

@@ -439,6 +439,9 @@ void IP::write_serialization(uint8_t* buffer, uint32_t total_sz, const PDU* pare
protocol(new_flag); protocol(new_flag);
} }
} }
else {
protocol(0);
}
uint16_t original_frag_off = header_.frag_off; uint16_t original_frag_off = header_.frag_off;

View File

@@ -845,3 +845,13 @@ TEST_F(IPTest, SerializePacketHavingICMPExtensionsWithoutLengthAndShortPayload)
ASSERT_EQ(1UL, serialized.rfind_pdu<ICMP>().extensions().extensions().size()); ASSERT_EQ(1UL, serialized.rfind_pdu<ICMP>().extensions().extensions().size());
EXPECT_EQ(ext_payload, serialized.rfind_pdu<ICMP>().extensions().extensions().begin()->payload()); EXPECT_EQ(ext_payload, serialized.rfind_pdu<ICMP>().extensions().extensions().begin()->payload());
} }
TEST_F(IPTest, SerializeAfterInnerPduRemoved) {
EthernetII eth1 = EthernetII() / IP() / TCP();
eth1.serialize();
eth1.rfind_pdu<IP>().inner_pdu(0);
PDU::serialization_type buffer = eth1.serialize();
EthernetII eth2(&buffer[0], buffer.size());
EXPECT_EQ(eth1.size(), eth2.size());
}