add natrange
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
#include "nattest.h"
|
||||
#include "../src/map/NatRange.h"
|
||||
#include <iostream>
|
||||
|
||||
CPPUNIT_TEST_SUITE_REGISTRATION(nattest);
|
||||
@@ -13,9 +14,11 @@ CPPUNIT_TEST_SUITE_REGISTRATION(nattest);
|
||||
nattest::nattest() {
|
||||
Tins::NetworkInterface net1("vboxnet0");
|
||||
Tins::NetworkInterface net2("vboxnet1");
|
||||
otonat::NatMap::NetworkInterfaceList list;
|
||||
list.push_back(net1);
|
||||
list.push_back(net2);
|
||||
otonat::NatRange range1(net1, "10.0.0.0", "255.255.240.0");
|
||||
otonat::NatRange range2(net2, "172.27.0.0", "255.255.0.0");
|
||||
otonat::NatMap::NatRangeList list;
|
||||
list.push_back(range1);
|
||||
list.push_back(range2);
|
||||
natMap = otonat::NatMap(list);
|
||||
}
|
||||
|
||||
@@ -30,59 +33,65 @@ void nattest::tearDown() {
|
||||
|
||||
void nattest::testIpCalcEth0() {
|
||||
Tins::IPv4Address expetedIp = deviceIpEth0;
|
||||
Tins::IPv4Address resultIp = natMap.mapIPv4Address(deviceIpEth0, eth0Info);
|
||||
Tins::IPv4Address resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth0, eth0Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
|
||||
expetedIp = Tins::IPv4Address("10.168.23.42");
|
||||
resultIp = natMap.mapIPv4Address(deviceIpEth1, eth0Info);
|
||||
resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth1, eth0Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
|
||||
expetedIp = Tins::IPv4Address("10.27.123.4");
|
||||
resultIp = natMap.mapIPv4Address(deviceIpEth2, eth0Info);
|
||||
resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth2, eth0Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
}
|
||||
|
||||
void nattest::testIpCalcEth1() {
|
||||
Tins::IPv4Address expetedIp = Tins::IPv4Address("192.168.23.40");
|
||||
Tins::IPv4Address resultIp = natMap.mapIPv4Address(deviceIpEth0, eth1Info);
|
||||
Tins::IPv4Address resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth0, eth1Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
|
||||
expetedIp = deviceIpEth1;
|
||||
resultIp = natMap.mapIPv4Address(deviceIpEth1, eth1Info);
|
||||
resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth1, eth1Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
|
||||
expetedIp = Tins::IPv4Address("192.168.23.4");
|
||||
resultIp = natMap.mapIPv4Address(deviceIpEth2, eth1Info);
|
||||
resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth2, eth1Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
}
|
||||
|
||||
void nattest::testIpCalcEth2() {
|
||||
Tins::IPv4Address expetedIp = Tins::IPv4Address("172.16.3.40");
|
||||
Tins::IPv4Address resultIp = natMap.mapIPv4Address(deviceIpEth0, eth2Info);
|
||||
Tins::IPv4Address resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth0, eth2Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
|
||||
expetedIp = Tins::IPv4Address("172.24.23.42");
|
||||
resultIp = natMap.mapIPv4Address(deviceIpEth1, eth2Info);
|
||||
resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth1, eth2Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
|
||||
expetedIp = deviceIpEth2;
|
||||
resultIp = natMap.mapIPv4Address(deviceIpEth2, eth2Info);
|
||||
resultIp = otonat::NatRange::mapIPv4Address(deviceIpEth2, eth2Info);
|
||||
CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp);
|
||||
}
|
||||
|
||||
void nattest::testTranslateIp() {
|
||||
Tins::EthernetII ethW = Tins::EthernetII("00:00:00:00:00:01", "00:00:00:00:00:02") / Tins::IP("172.17.0.20", "172.16.3.55") / Tins::TCP();
|
||||
Tins::EthernetII eth = Tins::EthernetII("00:00:00:00:00:01", "00:00:00:00:00:02") / Tins::IP("172.27.0.20", "172.16.3.55") / Tins::TCP();
|
||||
Tins::EthernetII ethAck = Tins::EthernetII("00:00:00:00:00:02", "00:00:00:00:00:01") / Tins::IP("10.0.3.55", "10.0.0.20") / Tins::TCP();
|
||||
Tins::EthernetII eth2 = Tins::EthernetII("00:00:00:00:00:01", "00:00:00:00:00:03") / Tins::IP("172.27.0.20", "172.17.3.55") / Tins::TCP();
|
||||
Tins::EthernetII eth2Ack = Tins::EthernetII("00:00:00:00:00:03", "00:00:00:00:00:01") / Tins::IP("10.0.3.55", "10.0.0.20") / Tins::TCP();
|
||||
Tins::EthernetII eth3 = Tins::EthernetII("00:00:00:00:00:01", "00:00:00:00:00:04") / Tins::IP("172.27.0.20", "172.18.1.40") / Tins::TCP();
|
||||
Tins::EthernetII eth3Ack = Tins::EthernetII("00:00:00:00:00:04", "00:00:00:00:00:01") / Tins::IP("10.0.1.40", "10.0.0.20") / Tins::TCP();
|
||||
Tins::EthernetII eth4 = Tins::EthernetII("00:00:00:00:00:02", "00:00:00:00:00:05") / Tins::IP("10.0.3.55", "10.0.1.41") / Tins::TCP();
|
||||
Tins::EthernetII eth4Ack = Tins::EthernetII("00:00:00:00:00:05", "00:00:00:00:00:02") / Tins::IP("172.27.1.41", "172.17.3.55") / Tins::TCP();
|
||||
|
||||
natMap.handlePdu(ð);
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.empty());
|
||||
|
||||
natMap.transMap.insert(otonat::NatMap::IPv4AddressEntry(Tins::IPv4Address("172.27.0.20"), Tins::IPv4Address("10.0.0.20")));
|
||||
|
||||
natMap.handlePdu(ðW);
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.empty());
|
||||
|
||||
natMap.handlePdu(ð);
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.size() == 1);
|
||||
const Tins::PDU * result = natMap.outgoingPduQueue.front();
|
||||
@@ -121,7 +130,21 @@ void nattest::testTranslateIp() {
|
||||
natMap.handlePdu(ð3Ack);
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.size() == 1);
|
||||
const Tins::PDU * result3Ack = natMap.outgoingPduQueue.front();
|
||||
checkEth(result3Ack->rfind_pdu<Tins::EthernetII>(), "00:00:00:00:00:04", "00:00:00:00:00:01", "172.18.4.40", "172.27.0.20");
|
||||
checkEth(result3Ack->rfind_pdu<Tins::EthernetII>(), "00:00:00:00:00:04", "00:00:00:00:00:01", "172.18.1.40", "172.27.0.20");
|
||||
natMap.outgoingPduQueue.pop();
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.empty());
|
||||
|
||||
natMap.handlePdu(ð4);
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.size() == 1);
|
||||
const Tins::PDU * result4 = natMap.outgoingPduQueue.front();
|
||||
checkEth(result4->rfind_pdu<Tins::EthernetII>(), "00:00:00:00:00:02", "00:00:00:00:00:05", "172.17.3.55", "172.27.1.41");
|
||||
natMap.outgoingPduQueue.pop();
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.empty());
|
||||
|
||||
natMap.handlePdu(ð4Ack);
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.size() == 1);
|
||||
const Tins::PDU * result4Ack = natMap.outgoingPduQueue.front();
|
||||
checkEth(result4Ack->rfind_pdu<Tins::EthernetII>(), "00:00:00:00:00:05", "00:00:00:00:00:02", "10.0.1.41", "10.0.3.55");
|
||||
natMap.outgoingPduQueue.pop();
|
||||
CPPUNIT_ASSERT(natMap.outgoingPduQueue.empty());
|
||||
}
|
||||
@@ -139,7 +162,7 @@ void nattest::testForMeFromMe() {
|
||||
}
|
||||
|
||||
void nattest::testNatInterfaces() {
|
||||
CPPUNIT_ASSERT(!natMap.interfaces.empty());
|
||||
CPPUNIT_ASSERT(!natMap.ranges.empty());
|
||||
}
|
||||
|
||||
void nattest::printIp(const Tins::IP & ip) {
|
||||
@@ -157,7 +180,7 @@ void nattest::printEth(const Tins::EthernetII & eth) {
|
||||
std::cout << "++++++++++++++++++++++" << std::endl;
|
||||
}
|
||||
|
||||
void nattest::checkAndPrintIp(const Tins::IP & ip, const Tins::IPv4Address & targetSrcIp, const Tins::IPv4Address & targetDstIp) {
|
||||
void nattest::checkAndPrintIp(const Tins::IP & ip, const Tins::IPv4Address & targetDstIp, const Tins::IPv4Address & targetSrcIp) {
|
||||
printIp(ip);
|
||||
checkIp(ip, targetDstIp, targetSrcIp);
|
||||
}
|
||||
@@ -167,7 +190,7 @@ void nattest::checkAndPrintEth(const Tins::EthernetII & eth, const Tins::HWAddre
|
||||
checkEth(eth, targetDstMac, targetSrcMac, targetDstIp, targetSrcIp);
|
||||
}
|
||||
|
||||
void nattest::checkIp(const Tins::IP & ip, const Tins::IPv4Address & targetSrcIp, const Tins::IPv4Address & targetDstIp) {
|
||||
void nattest::checkIp(const Tins::IP & ip, const Tins::IPv4Address & targetDstIp, const Tins::IPv4Address & targetSrcIp) {
|
||||
const Tins::IPv4Address & packetSrcIp = ip.src_addr();
|
||||
const Tins::IPv4Address & packetDstIp = ip.dst_addr();
|
||||
CPPUNIT_ASSERT_EQUAL(targetSrcIp, packetSrcIp);
|
||||
@@ -179,5 +202,6 @@ void nattest::checkEth(const Tins::EthernetII & eth, const Tins::HWAddress<6> &
|
||||
const Tins::HWAddress<6> & frameDstMac = eth.dst_addr();
|
||||
CPPUNIT_ASSERT_EQUAL(targetSrcMac, frameSrcMac);
|
||||
CPPUNIT_ASSERT_EQUAL(targetDstMac, frameDstMac);
|
||||
checkIp(eth.rfind_pdu<Tins::IP>(), targetDstIp, targetSrcIp);
|
||||
}
|
||||
|
||||
|
||||
@@ -67,9 +67,9 @@ private:
|
||||
|
||||
void printIp(const Tins::IP & ip);
|
||||
void printEth(const Tins::EthernetII & eth);
|
||||
void checkAndPrintIp(const Tins::IP & ip, const Tins::IPv4Address & targetSrcIp, const Tins::IPv4Address & targetDstIp);
|
||||
void checkAndPrintIp(const Tins::IP & ip, const Tins::IPv4Address & targetDstIp, const Tins::IPv4Address & targetSrcIp);
|
||||
void checkAndPrintEth(const Tins::EthernetII & eth, const Tins::HWAddress<6> & targetDstMac, const Tins::HWAddress<6> & targetSrcMac, const Tins::IPv4Address & targetDstIp, const Tins::IPv4Address & targetSrcIp);
|
||||
void checkIp(const Tins::IP & ip, const Tins::IPv4Address & targetSrcIp, const Tins::IPv4Address & targetDstIp);
|
||||
void checkIp(const Tins::IP & ip, const Tins::IPv4Address & targetDstIp, const Tins::IPv4Address & targetSrcIp);
|
||||
void checkEth(const Tins::EthernetII & eth, const Tins::HWAddress<6> & targetDstMac, const Tins::HWAddress<6> & targetSrcMac, const Tins::IPv4Address & targetDstIp, const Tins::IPv4Address & targetSrcIp);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user