mirror of
https://github.com/mfontanini/libtins
synced 2026-01-27 20:24:26 +01:00
Refactored TCP's interface.
This commit is contained in:
@@ -121,58 +121,43 @@ TEST_F(TCPTest, SetFlag) {
|
||||
|
||||
TEST_F(TCPTest, MSS) {
|
||||
TCP tcp;
|
||||
uint16_t mss = 0x456f, found_mss;
|
||||
tcp.add_mss_option(mss);
|
||||
ASSERT_TRUE(tcp.search_mss_option(&found_mss));
|
||||
EXPECT_EQ(mss, found_mss);
|
||||
tcp.mss(0x456f);
|
||||
EXPECT_EQ(0x456f, tcp.mss());
|
||||
}
|
||||
|
||||
TEST_F(TCPTest, WindowScale) {
|
||||
TCP tcp;
|
||||
uint8_t scale = 0x4f, found_scale;
|
||||
tcp.add_winscale_option(scale);
|
||||
ASSERT_TRUE(tcp.search_winscale_option(&found_scale));
|
||||
EXPECT_EQ(scale, found_scale);
|
||||
tcp.winscale(0x4f);
|
||||
EXPECT_EQ(0x4f, tcp.winscale());
|
||||
}
|
||||
|
||||
TEST_F(TCPTest, SackPermitted) {
|
||||
TCP tcp;
|
||||
tcp.add_sack_permitted_option();
|
||||
ASSERT_TRUE(tcp.search_sack_permitted_option());
|
||||
tcp.sack_permitted();
|
||||
ASSERT_TRUE(tcp.has_sack_permitted());
|
||||
}
|
||||
|
||||
TEST_F(TCPTest, Sack) {
|
||||
TCP tcp;
|
||||
list<uint32_t> edges, edges_found;
|
||||
TCP::sack_type edges;
|
||||
edges.push_back(0x13);
|
||||
edges.push_back(0x63fa1d7a);
|
||||
edges.push_back(0xff1c);
|
||||
tcp.add_sack_option(edges);
|
||||
ASSERT_TRUE(tcp.search_sack_option(&edges_found));
|
||||
ASSERT_EQ(edges.size(), edges_found.size());
|
||||
while(edges.size()) {
|
||||
EXPECT_EQ(edges.front(), edges_found.front());
|
||||
edges.pop_front();
|
||||
edges_found.pop_front();
|
||||
}
|
||||
tcp.sack(edges);
|
||||
ASSERT_EQ(edges, tcp.sack());
|
||||
}
|
||||
|
||||
TEST_F(TCPTest, AlternateChecksum) {
|
||||
TCP tcp;
|
||||
uint8_t found;
|
||||
tcp.add_altchecksum_option(TCP::CHK_16FLETCHER);
|
||||
ASSERT_TRUE(tcp.search_altchecksum_option(&found));
|
||||
EXPECT_EQ(found, TCP::CHK_16FLETCHER);
|
||||
tcp.altchecksum(TCP::CHK_16FLETCHER);
|
||||
EXPECT_EQ(TCP::CHK_16FLETCHER, tcp.altchecksum());
|
||||
}
|
||||
|
||||
TEST_F(TCPTest, Timestamp) {
|
||||
TCP tcp;
|
||||
uint32_t value = 0x456fa23d, found_value;
|
||||
uint32_t reply = 0xfa12d345, found_reply;
|
||||
tcp.add_timestamp_option(value, reply);
|
||||
ASSERT_TRUE(tcp.search_timestamp_option(&found_value, &found_reply));
|
||||
EXPECT_EQ(value, found_value);
|
||||
EXPECT_EQ(reply, found_reply);
|
||||
std::pair<uint32_t, uint32_t> data(0x456fa23d, 0xfa12d345);
|
||||
tcp.timestamp(data.first, data.second);
|
||||
EXPECT_EQ(tcp.timestamp(), data);
|
||||
}
|
||||
|
||||
void TCPTest::test_equals(const TCP &tcp1, const TCP &tcp2) {
|
||||
@@ -190,9 +175,6 @@ void TCPTest::test_equals(const TCP &tcp1, const TCP &tcp2) {
|
||||
// This is not working, but i don't want to fix it right now.
|
||||
TEST_F(TCPTest, ConstructorFromBuffer) {
|
||||
TCP tcp1(expected_packet, sizeof(expected_packet));
|
||||
uint32_t value32, ovalue32;
|
||||
uint16_t value16;
|
||||
uint8_t value8;
|
||||
|
||||
EXPECT_EQ(tcp1.dport(), 0x4f1d);
|
||||
EXPECT_EQ(tcp1.sport(), 0x7f4d);
|
||||
@@ -202,23 +184,19 @@ TEST_F(TCPTest, ConstructorFromBuffer) {
|
||||
EXPECT_EQ(tcp1.urg_ptr(), 0x1fae);
|
||||
EXPECT_EQ(tcp1.data_offset(), 0xd);
|
||||
|
||||
ASSERT_TRUE(tcp1.search_timestamp_option(&value32, &ovalue32));
|
||||
EXPECT_EQ(value32, 0x4fd23acb);
|
||||
EXPECT_EQ(ovalue32, 0x89fe1234);
|
||||
EXPECT_EQ(tcp1.timestamp(), (std::pair<uint32_t, uint32_t>(0x4fd23acb, 0x89fe1234)));
|
||||
|
||||
EXPECT_TRUE(tcp1.search_sack_permitted_option());
|
||||
EXPECT_TRUE(tcp1.has_sack_permitted());
|
||||
|
||||
ASSERT_TRUE(tcp1.search_winscale_option(&value8));
|
||||
EXPECT_EQ(value8, 0x7a);
|
||||
EXPECT_EQ(tcp1.winscale(), 0x7a);
|
||||
|
||||
ASSERT_TRUE(tcp1.search_mss_option(&value16));
|
||||
EXPECT_EQ(value16, 0x98fa);
|
||||
EXPECT_EQ(tcp1.mss(), 0x98fa);
|
||||
|
||||
list<uint32_t> edges;
|
||||
ASSERT_TRUE(tcp1.search_sack_option(&edges));
|
||||
TCP::sack_type edges = tcp1.sack();
|
||||
TCP::sack_type::const_iterator iter = edges.begin();
|
||||
ASSERT_EQ(edges.size(), 2);
|
||||
EXPECT_EQ(edges.front(), 0x00010203); edges.pop_front();
|
||||
EXPECT_EQ(edges.front(), 0x04050607);
|
||||
EXPECT_EQ(*iter++, 0x00010203);
|
||||
EXPECT_EQ(*iter++, 0x04050607);
|
||||
|
||||
PDU::serialization_type buffer = tcp1.serialize();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user