1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-26 12:01:34 +01:00

Removed IP, UDP and IP checksum setters. Added some checksum tests.

This commit is contained in:
Matias Fontanini
2013-04-22 20:06:35 -03:00
parent 66ff604580
commit 9be4f0ca37
8 changed files with 69 additions and 48 deletions

View File

@@ -4,6 +4,7 @@
#include <algorithm>
#include <stdint.h>
#include "tcp.h"
#include "ip.h"
#include "utils.h"
using namespace std;
@@ -11,7 +12,7 @@ using namespace Tins;
class TCPTest : public testing::Test {
public:
static const uint8_t expected_packet[];
static const uint8_t expected_packet[], checksum_packet[];
void test_equals(const TCP &tcp1, const TCP &tcp2);
};
@@ -22,6 +23,13 @@ const uint8_t TCPTest::expected_packet[] = {
18, 52, 3, 3, 122, 4, 2, 5, 10, 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0
};
// IP + TCP
const uint8_t TCPTest::checksum_packet[] = {
69, 0, 0, 40, 0, 0, 64, 0, 64, 6, 60, 206, 0, 0, 0, 0, 127, 0, 0, 1,
5, 57, 199, 49, 0, 0, 0, 0, 255, 216, 70, 222, 80, 20, 0, 0, 158, 172,
0, 0
};
TEST_F(TCPTest, DefaultConstructor) {
TCP tcp;
@@ -30,6 +38,19 @@ TEST_F(TCPTest, DefaultConstructor) {
EXPECT_EQ(tcp.pdu_type(), PDU::TCP);
}
TEST_F(TCPTest, ChecksumCheck) {
IP pkt1(checksum_packet, sizeof(checksum_packet));
const TCP &tcp1 = pkt1.rfind_pdu<TCP>();
uint16_t checksum = tcp1.checksum();
IP::serialization_type buffer = pkt1.serialize();
IP pkt2(&buffer[0], buffer.size());
const TCP &tcp2 = pkt2.rfind_pdu<TCP>();
EXPECT_EQ(checksum, tcp2.checksum());
EXPECT_EQ(tcp1.checksum(), tcp2.checksum());
}
TEST_F(TCPTest, CopyConstructor) {
TCP tcp1(0x6d1f, 0x78f2);
TCP tcp2(tcp1);
@@ -86,12 +107,6 @@ TEST_F(TCPTest, Window) {
EXPECT_EQ(tcp.window(), 0x5fad);
}
TEST_F(TCPTest, Check) {
TCP tcp;
tcp.check(0x5fad);
EXPECT_EQ(tcp.check(), 0x5fad);
}
TEST_F(TCPTest, UrgPtr) {
TCP tcp;
tcp.urg_ptr(0x5fad);
@@ -166,7 +181,7 @@ void TCPTest::test_equals(const TCP &tcp1, const TCP &tcp2) {
EXPECT_EQ(tcp1.seq(), tcp2.seq());
EXPECT_EQ(tcp1.ack_seq(), tcp2.ack_seq());
EXPECT_EQ(tcp1.window(), tcp2.window());
EXPECT_EQ(tcp1.check(), tcp2.check());
EXPECT_EQ(tcp1.checksum(), tcp2.checksum());
EXPECT_EQ(tcp1.urg_ptr(), tcp2.urg_ptr());
EXPECT_EQ(tcp1.data_offset(), tcp2.data_offset());
EXPECT_EQ((bool)tcp1.inner_pdu(), (bool)tcp2.inner_pdu());