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

HWAddress class is working. EthernetII now uses this classes instead of raw uint8_t*

This commit is contained in:
Matias Fontanini
2012-08-07 16:12:40 -03:00
parent b8f39f1291
commit e64eb11f1c
5 changed files with 97 additions and 56 deletions

View File

@@ -5,12 +5,14 @@
using namespace Tins;
typedef EthernetII::address_type address_type;
class EthernetIITest : public ::testing::Test {
public:
static const uint8_t expected_packet[];
static const uint8_t s_addr[];
static const uint8_t d_addr[];
static const uint8_t empty_addr[6];
static address_type s_addr;
static address_type d_addr;
static address_type empty_addr;
static const uint16_t p_type;
static const uint32_t iface;
@@ -24,23 +26,19 @@ const uint8_t EthernetIITest::expected_packet[] = {
'\xd0', '\xab'
};
const uint8_t EthernetIITest::s_addr[] = {
'\x8a', '\x8b', '\x8c', '\x8d', '\x8e', '\x8f'
};
address_type EthernetIITest::s_addr("8a:8b:8c:8d:8e:8f");
const uint8_t EthernetIITest::d_addr[] = {
'\xaa', '\xbb', '\xcc', '\xdd', '\xee', '\xff'
};
address_type EthernetIITest::d_addr("aa:bb:cc:dd:ee:ff");
const uint8_t EthernetIITest::empty_addr[6] = {0};
address_type EthernetIITest::empty_addr;
const uint16_t EthernetIITest::p_type = 0xd0ab;
const uint32_t EthernetIITest::iface = 0x12345678;
void EthernetIITest::test_equals(const EthernetII &eth1, const EthernetII &eth2) {
EXPECT_TRUE(std::equal(eth1.dst_addr(), eth1.dst_addr() + EthernetII::ADDR_SIZE, eth2.dst_addr()));
EXPECT_TRUE(std::equal(eth1.src_addr(), eth1.src_addr() + EthernetII::ADDR_SIZE, eth2.src_addr()));
EXPECT_EQ(eth1.dst_addr(), eth2.dst_addr());
EXPECT_EQ(eth1.src_addr(), eth2.src_addr());
EXPECT_EQ(eth1.payload_type(), eth2.payload_type());
EXPECT_EQ(eth1.iface(), eth2.iface());
EXPECT_EQ((bool)eth1.inner_pdu(), (bool)eth2.inner_pdu());
@@ -49,8 +47,8 @@ void EthernetIITest::test_equals(const EthernetII &eth1, const EthernetII &eth2)
TEST_F(EthernetIITest, DefaultConstructor) {
EthernetII eth(0);
EXPECT_EQ(eth.iface(), 0);
EXPECT_TRUE(memcmp(eth.dst_addr(), empty_addr, 6) == 0);
EXPECT_TRUE(memcmp(eth.src_addr(), empty_addr, 6) == 0);
EXPECT_EQ(eth.dst_addr(), empty_addr);
EXPECT_EQ(eth.src_addr(), empty_addr);
EXPECT_EQ(eth.payload_type(), 0);
EXPECT_FALSE(eth.inner_pdu());
EXPECT_EQ(eth.pdu_type(), PDU::ETHERNET_II);
@@ -84,13 +82,13 @@ TEST_F(EthernetIITest, NestedCopy) {
TEST_F(EthernetIITest, SourceAddress) {
EthernetII eth(0);
eth.src_addr(s_addr);
ASSERT_TRUE(memcmp(eth.src_addr(), s_addr, 6) == 0);
ASSERT_EQ(eth.src_addr(), s_addr);
}
TEST_F(EthernetIITest, DestinationAddress) {
EthernetII eth(0);
eth.dst_addr(d_addr);
ASSERT_TRUE(memcmp(eth.dst_addr(), d_addr, 6) == 0);
ASSERT_EQ(eth.dst_addr(), d_addr);
}
TEST_F(EthernetIITest, PayloadType) {
@@ -110,8 +108,8 @@ TEST_F(EthernetIITest, Interface) {
TEST_F(EthernetIITest, CompleteConstructor) {
EthernetII* eth2 = new EthernetII(0);
EthernetII eth(iface, d_addr, s_addr, eth2);
EXPECT_TRUE(memcmp(eth.dst_addr(), d_addr, 6) == 0);
EXPECT_TRUE(memcmp(eth.src_addr(), s_addr, 6) == 0);
EXPECT_EQ(eth.dst_addr(), d_addr);
EXPECT_EQ(eth.src_addr(), s_addr);
EXPECT_TRUE(eth.inner_pdu() == eth2);
EXPECT_EQ(eth.payload_type(), 0);
EXPECT_EQ(eth.iface(), iface);
@@ -130,8 +128,8 @@ TEST_F(EthernetIITest, Serialize) {
TEST_F(EthernetIITest, ConstructorFromBuffer) {
EthernetII eth(expected_packet, sizeof(expected_packet));
EXPECT_TRUE(memcmp(eth.src_addr(), s_addr, sizeof(s_addr)) == 0);
EXPECT_TRUE(memcmp(eth.dst_addr(), d_addr, sizeof(d_addr)) == 0);
EXPECT_EQ(eth.src_addr(), s_addr);
EXPECT_EQ(eth.dst_addr(), d_addr);
EXPECT_EQ(eth.payload_type(), p_type);
}