diff --git a/src/ethernetII.cpp b/src/ethernetII.cpp index 8a10ba2..a4c71cb 100644 --- a/src/ethernetII.cpp +++ b/src/ethernetII.cpp @@ -154,7 +154,7 @@ void EthernetII::write_serialization(uint8_t *buffer, uint32_t total_sz, const P #endif /* Inner type defaults to IP */ - if ((_eth.payload_type == 0) && inner_pdu()) { + if (inner_pdu()) { Constants::Ethernet::e flag = Internals::pdu_flag_to_ether_type( inner_pdu()->pdu_type() ); diff --git a/src/internals.cpp b/src/internals.cpp index df2c36d..982c7a5 100644 --- a/src/internals.cpp +++ b/src/internals.cpp @@ -193,7 +193,7 @@ Constants::Ethernet::e pdu_flag_to_ether_type(PDU::PDUType flag) { case PDU::PPPOE: return Constants::Ethernet::PPPOED; default: - if(Internals::pdu_type_registered(flag)) + if(Internals::pdu_type_registered(flag)) return static_cast( Internals::pdu_type_to_id(flag) ); diff --git a/tests/src/allocators.cpp b/tests/src/allocators.cpp index 6d05674..0292fde 100644 --- a/tests/src/allocators.cpp +++ b/tests/src/allocators.cpp @@ -43,12 +43,13 @@ const uint8_t AllocatorsTest::ipv6_data_buffer[] = { 65 }; +template class DummyPDU : public PDU { public: static const PDU::PDUType pdu_flag; DummyPDU(const uint8_t* data, uint32_t sz) : buffer(data, data + sz) { } - DummyPDU *clone() const { return new DummyPDU(*this); } + DummyPDU *clone() const { return new DummyPDU(*this); } uint32_t header_size() const { return buffer.size(); } PDUType pdu_type() const { return pdu_flag; } void write_serialization(uint8_t *data, uint32_t, const PDU *) @@ -59,35 +60,38 @@ public: std::vector buffer; }; -const PDU::PDUType DummyPDU::pdu_flag = USER_DEFINED_PDU; +template +const PDU::PDUType DummyPDU::pdu_flag = static_cast( + USER_DEFINED_PDU + n +); TEST_F(AllocatorsTest, LinkLayerPDUs) { - Allocators::register_allocator(1638); - Allocators::register_allocator(25); - Allocators::register_allocator(4562); - Allocators::register_allocator(16705); + Allocators::register_allocator >(1638); + Allocators::register_allocator >(25); + Allocators::register_allocator >(4562); + Allocators::register_allocator >(16705); std::vector link_layer_data( link_layer_data_buffer, link_layer_data_buffer + sizeof(link_layer_data_buffer) ); { EthernetII pkt(&link_layer_data[0], link_layer_data.size()); - EXPECT_TRUE(pkt.find_pdu()); + EXPECT_TRUE(pkt.find_pdu >()); EXPECT_EQ(pkt.serialize(), link_layer_data); } { SNAP pkt(&link_layer_data[0], link_layer_data.size()); - EXPECT_TRUE(pkt.find_pdu()); + EXPECT_TRUE(pkt.find_pdu >()); EXPECT_EQ(pkt.serialize(), link_layer_data); } { SLL pkt(&link_layer_data[0], link_layer_data.size()); - EXPECT_TRUE(pkt.find_pdu()); + EXPECT_TRUE(pkt.find_pdu >()); EXPECT_EQ(pkt.serialize(), link_layer_data); } { Dot1Q pkt(&link_layer_data[0], link_layer_data.size()); - EXPECT_TRUE(pkt.find_pdu()); + EXPECT_TRUE(pkt.find_pdu >()); EXPECT_EQ(pkt.serialize(), link_layer_data); } } @@ -97,10 +101,10 @@ TEST_F(AllocatorsTest, IP) { ipv4_data_buffer, ipv4_data_buffer + sizeof(ipv4_data_buffer) ); - Allocators::register_allocator(255); + Allocators::register_allocator >(255); EthernetII pkt(&ipv4_data[0], ipv4_data.size()); EXPECT_TRUE(pkt.find_pdu()); - EXPECT_TRUE(pkt.find_pdu()); + EXPECT_TRUE(pkt.find_pdu >()); EXPECT_EQ(pkt.serialize(), ipv4_data); } @@ -109,11 +113,11 @@ TEST_F(AllocatorsTest, IPv6) { ipv6_data_buffer, ipv6_data_buffer + sizeof(ipv6_data_buffer) ); - Allocators::register_allocator(250); + Allocators::register_allocator >(250); { EthernetII pkt(&ipv6_data[0], ipv6_data.size()); EXPECT_TRUE(pkt.find_pdu()); - EXPECT_TRUE(pkt.find_pdu()); + EXPECT_TRUE(pkt.find_pdu >()); EXPECT_EQ(pkt.serialize(), ipv6_data); } }