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

Fixed endiannes buf in ARP.

This commit is contained in:
Matias Fontanini
2011-09-15 11:41:34 -03:00
parent 28f064b1c7
commit 7bc143e290
2 changed files with 44 additions and 28 deletions

View File

@@ -122,7 +122,7 @@ namespace Tins {
*
* \return Returns the ARP opcode in an uint16_t.
*/
inline uint16_t opcode() { return this->_arp.ar_op; }
inline uint16_t opcode() { return Utils::net_to_host_s(this->_arp.ar_op); }
/** \brief Getter for the header size.
* \return Returns the ARP header size.

View File

@@ -1,4 +1,5 @@
#include <gtest/gtest.h>
#include <cstring>
#include <stdint.h>
#include "udp.h"
#include "pdu.h"
@@ -8,41 +9,56 @@ using namespace std;
using namespace Tins;
class UDPTest : public testing::Test {
public:
static const uint8_t expected_packet[];
};
TEST(UDP, DefaultContructor) {
const uint8_t UDPTest::expected_packet[] = {'\xf5', '\x1a', 'G', '\xf1', '\x04', 'S', '\x00', '\x00'};
TEST_F(UDPTest, DefaultContructor) {
UDP udp;
EXPECT_EQ(udp.dport(), 0);
EXPECT_EQ(udp.sport(), 0);
EXPECT_FALSE(udp.inner_pdu());
}
TEST(UDP, DPort) {
TEST_F(UDPTest, CompleteConstructor) {
UDP *inner = new UDP(0x48fa, 0x716b);
UDP udp(0x1234, 0x4321, inner);
EXPECT_EQ(udp.dport(), 0x1234);
EXPECT_EQ(udp.sport(), 0x4321);
EXPECT_TRUE(udp.inner_pdu() == inner);
}
TEST_F(UDPTest, DPort) {
UDP udp;
uint16_t port = 0x1234;
udp.dport(port);
ASSERT_EQ(udp.dport(), port);
}
TEST(UDP, SPort) {
TEST_F(UDPTest, SPort) {
UDP udp;
uint16_t port = 0x1234;
udp.sport(port);
ASSERT_EQ(udp.sport(), port);
}
TEST(UDP, Length) {
TEST_F(UDPTest, Length) {
UDP udp;
uint16_t length = 0x1234;
udp.length(length);
ASSERT_EQ(udp.length(), length);
}
TEST(UDP, PDUType) {
TEST_F(UDPTest, PDUType) {
UDP udp;
EXPECT_EQ(udp.pdu_type(), PDU::UDP);
}
TEST(UDP, CopyConstructor) {
TEST_F(UDPTest, CopyConstructor) {
UDP udp1;
udp1.dport(0x1234);
udp1.sport(0x4321);
@@ -52,9 +68,11 @@ TEST(UDP, CopyConstructor) {
EXPECT_EQ(udp2.sport(), udp1.sport());
EXPECT_EQ(udp2.dport(), udp1.dport());
EXPECT_EQ(udp2.length(), udp1.length());
EXPECT_EQ(udp2.size(), udp1.size());
EXPECT_EQ(udp2.header_size(), udp1.header_size());
}
TEST(UDP, CopyAssignmentOperator) {
TEST_F(UDPTest, CopyAssignmentOperator) {
UDP udp1;
udp1.dport(0x1234);
udp1.sport(0x4321);
@@ -64,9 +82,11 @@ TEST(UDP, CopyAssignmentOperator) {
EXPECT_EQ(udp2.sport(), udp1.sport());
EXPECT_EQ(udp2.dport(), udp1.dport());
EXPECT_EQ(udp2.length(), udp1.length());
EXPECT_EQ(udp2.size(), udp1.size());
EXPECT_EQ(udp2.header_size(), udp1.header_size());
}
TEST(UDP, Clone) {
TEST_F(UDPTest, ClonePDU) {
UDP udp1;
uint16_t sport = 0x1234, dport = 0x4321, length = 0xdead;
udp1.dport(dport);
@@ -82,7 +102,7 @@ TEST(UDP, Clone) {
delete udp2;
}
TEST(UDP, Serialize) {
TEST_F(UDPTest, Serialize) {
UDP udp1;
uint16_t sport = 0x1234, dport = 0x4321, length = 0xdead;
udp1.dport(dport);
@@ -92,29 +112,25 @@ TEST(UDP, Serialize) {
uint32_t size;
uint8_t *buffer = udp1.serialize(size);
ASSERT_TRUE(buffer);
UDP udp2(udp1);
uint32_t size2;
uint8_t *buffer2 = udp2.serialize(size2);
ASSERT_EQ(size, size2);
EXPECT_TRUE(memcmp(buffer, buffer2, size) == 0);
delete[] buffer;
}
TEST(UDP, BufferClone) {
UDP udp1;
uint16_t sport = 0x1234, dport = 0x4321, length = 0xdead;
udp1.dport(dport);
udp1.sport(sport);
udp1.length(length);
TEST_F(UDPTest, ConstructorFromBuffer) {
UDP udp1(expected_packet, sizeof(expected_packet));
uint32_t size;
uint8_t *buffer = udp1.serialize(size);
ASSERT_TRUE(buffer);
EXPECT_EQ(size, sizeof(expected_packet));
UDP udp2(buffer, size);
EXPECT_EQ(udp2.sport(), udp1.sport());
EXPECT_EQ(udp2.dport(), udp1.dport());
EXPECT_EQ(udp2.length(), udp1.length());
EXPECT_EQ(udp2.pdu_type(), PDU::UDP);
delete[] buffer;
EXPECT_EQ(udp1.dport(), udp2.dport());
EXPECT_EQ(udp1.sport(), udp2.sport());
EXPECT_EQ(udp1.length(), udp2.length());
EXPECT_EQ(udp1.size(), udp2.size());
EXPECT_EQ(udp1.header_size(), udp2.header_size());
}