From d88274f9b5ef05000dc34d5f311c4b5a12b85d3f Mon Sep 17 00:00:00 2001 From: stubbfel Date: Wed, 19 Aug 2015 22:10:07 +0200 Subject: [PATCH] add netbeans project --- .dep.inc | 5 + Makefile | 128 +++++++++++++++++++++ nbproject/Makefile-Debug.mk | 150 ++++++++++++++++++++++++ nbproject/Makefile-Release.mk | 150 ++++++++++++++++++++++++ nbproject/Makefile-Unitest.mk | 150 ++++++++++++++++++++++++ nbproject/Makefile-impl.mk | 133 ++++++++++++++++++++++ nbproject/Makefile-variables.mk | 43 +++++++ nbproject/Package-Debug.bash | 76 +++++++++++++ nbproject/Package-Release.bash | 76 +++++++++++++ nbproject/Package-Unitest.bash | 76 +++++++++++++ nbproject/configurations.xml | 194 ++++++++++++++++++++++++++++++++ nbproject/project.xml | 32 ++++++ src/main.cpp | 118 +++++++++++++++++++ tests/nattest.cpp | 76 +++++++++++++ tests/nattest.h | 70 ++++++++++++ tests/nattestrunner.cpp | 37 ++++++ 16 files changed, 1514 insertions(+) create mode 100644 .dep.inc create mode 100644 Makefile create mode 100644 nbproject/Makefile-Debug.mk create mode 100644 nbproject/Makefile-Release.mk create mode 100644 nbproject/Makefile-Unitest.mk create mode 100644 nbproject/Makefile-impl.mk create mode 100644 nbproject/Makefile-variables.mk create mode 100644 nbproject/Package-Debug.bash create mode 100644 nbproject/Package-Release.bash create mode 100644 nbproject/Package-Unitest.bash create mode 100644 nbproject/configurations.xml create mode 100644 nbproject/project.xml create mode 100644 src/main.cpp create mode 100644 tests/nattest.cpp create mode 100644 tests/nattest.h create mode 100644 tests/nattestrunner.cpp diff --git a/.dep.inc b/.dep.inc new file mode 100644 index 0000000..4560e55 --- /dev/null +++ b/.dep.inc @@ -0,0 +1,5 @@ +# This code depends on make tool being used +DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES})) +ifneq (${DEPFILES},) +include ${DEPFILES} +endif diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..05de621 --- /dev/null +++ b/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: build-tests +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/nbproject/Makefile-Debug.mk b/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..51dd62c --- /dev/null +++ b/nbproject/Makefile-Debug.mk @@ -0,0 +1,150 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/src/main.o \ + ${OBJECTDIR}/src/map/natmap.o + +# Test Directory +TESTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tests + +# Test Files +TESTFILES= \ + ${TESTDIR}/TestFiles/f1 + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-ltins -lpthread + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/src/main.o: src/main.cpp + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} "$@.d" + $(COMPILE.cc) -g -Wall -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main.o src/main.cpp + +${OBJECTDIR}/src/map/natmap.o: src/map/natmap.cpp + ${MKDIR} -p ${OBJECTDIR}/src/map + ${RM} "$@.d" + $(COMPILE.cc) -g -Wall -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/map/natmap.o src/map/natmap.cpp + +# Subprojects +.build-subprojects: + +# Build Test Targets +.build-tests-conf: .build-conf ${TESTFILES} +${TESTDIR}/TestFiles/f1: ${TESTDIR}/tests/nattest.o ${TESTDIR}/tests/nattestrunner.o ${OBJECTFILES:%.o=%_nomain.o} + ${MKDIR} -p ${TESTDIR}/TestFiles + ${LINK.cc} -o ${TESTDIR}/TestFiles/f1 $^ ${LDLIBSOPTIONS} `cppunit-config --libs` + + +${TESTDIR}/tests/nattest.o: tests/nattest.cpp + ${MKDIR} -p ${TESTDIR}/tests + ${RM} "$@.d" + $(COMPILE.cc) -g -Wall -I. -std=c++11 `cppunit-config --cflags` -MMD -MP -MF "$@.d" -o ${TESTDIR}/tests/nattest.o tests/nattest.cpp + + +${TESTDIR}/tests/nattestrunner.o: tests/nattestrunner.cpp + ${MKDIR} -p ${TESTDIR}/tests + ${RM} "$@.d" + $(COMPILE.cc) -g -Wall -I. -std=c++11 `cppunit-config --cflags` -MMD -MP -MF "$@.d" -o ${TESTDIR}/tests/nattestrunner.o tests/nattestrunner.cpp + + +${OBJECTDIR}/src/main_nomain.o: ${OBJECTDIR}/src/main.o src/main.cpp + ${MKDIR} -p ${OBJECTDIR}/src + @NMOUTPUT=`${NM} ${OBJECTDIR}/src/main.o`; \ + if (echo "$$NMOUTPUT" | ${GREP} '|main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \ + then \ + ${RM} "$@.d";\ + $(COMPILE.cc) -g -Wall -std=c++11 -Dmain=__nomain -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main_nomain.o src/main.cpp;\ + else \ + ${CP} ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/main_nomain.o;\ + fi + +${OBJECTDIR}/src/map/natmap_nomain.o: ${OBJECTDIR}/src/map/natmap.o src/map/natmap.cpp + ${MKDIR} -p ${OBJECTDIR}/src/map + @NMOUTPUT=`${NM} ${OBJECTDIR}/src/map/natmap.o`; \ + if (echo "$$NMOUTPUT" | ${GREP} '|main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \ + then \ + ${RM} "$@.d";\ + $(COMPILE.cc) -g -Wall -std=c++11 -Dmain=__nomain -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/map/natmap_nomain.o src/map/natmap.cpp;\ + else \ + ${CP} ${OBJECTDIR}/src/map/natmap.o ${OBJECTDIR}/src/map/natmap_nomain.o;\ + fi + +# Run Test Targets +.test-conf: + @if [ "${TEST}" = "" ]; \ + then \ + ${TESTDIR}/TestFiles/f1 || true; \ + else \ + ./${TEST} || true; \ + fi + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-Release.mk b/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..98c1a4e --- /dev/null +++ b/nbproject/Makefile-Release.mk @@ -0,0 +1,150 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/src/main.o \ + ${OBJECTDIR}/src/map/natmap.o + +# Test Directory +TESTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tests + +# Test Files +TESTFILES= \ + ${TESTDIR}/TestFiles/f1 + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/src/main.o: src/main.cpp + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} "$@.d" + $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main.o src/main.cpp + +${OBJECTDIR}/src/map/natmap.o: src/map/natmap.cpp + ${MKDIR} -p ${OBJECTDIR}/src/map + ${RM} "$@.d" + $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/map/natmap.o src/map/natmap.cpp + +# Subprojects +.build-subprojects: + +# Build Test Targets +.build-tests-conf: .build-conf ${TESTFILES} +${TESTDIR}/TestFiles/f1: ${TESTDIR}/tests/nattest.o ${TESTDIR}/tests/nattestrunner.o ${OBJECTFILES:%.o=%_nomain.o} + ${MKDIR} -p ${TESTDIR}/TestFiles + ${LINK.cc} -o ${TESTDIR}/TestFiles/f1 $^ ${LDLIBSOPTIONS} `cppunit-config --libs` + + +${TESTDIR}/tests/nattest.o: tests/nattest.cpp + ${MKDIR} -p ${TESTDIR}/tests + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I. `cppunit-config --cflags` -MMD -MP -MF "$@.d" -o ${TESTDIR}/tests/nattest.o tests/nattest.cpp + + +${TESTDIR}/tests/nattestrunner.o: tests/nattestrunner.cpp + ${MKDIR} -p ${TESTDIR}/tests + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I. `cppunit-config --cflags` -MMD -MP -MF "$@.d" -o ${TESTDIR}/tests/nattestrunner.o tests/nattestrunner.cpp + + +${OBJECTDIR}/src/main_nomain.o: ${OBJECTDIR}/src/main.o src/main.cpp + ${MKDIR} -p ${OBJECTDIR}/src + @NMOUTPUT=`${NM} ${OBJECTDIR}/src/main.o`; \ + if (echo "$$NMOUTPUT" | ${GREP} '|main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \ + then \ + ${RM} "$@.d";\ + $(COMPILE.cc) -O2 -Dmain=__nomain -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main_nomain.o src/main.cpp;\ + else \ + ${CP} ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/main_nomain.o;\ + fi + +${OBJECTDIR}/src/map/natmap_nomain.o: ${OBJECTDIR}/src/map/natmap.o src/map/natmap.cpp + ${MKDIR} -p ${OBJECTDIR}/src/map + @NMOUTPUT=`${NM} ${OBJECTDIR}/src/map/natmap.o`; \ + if (echo "$$NMOUTPUT" | ${GREP} '|main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \ + then \ + ${RM} "$@.d";\ + $(COMPILE.cc) -O2 -Dmain=__nomain -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/map/natmap_nomain.o src/map/natmap.cpp;\ + else \ + ${CP} ${OBJECTDIR}/src/map/natmap.o ${OBJECTDIR}/src/map/natmap_nomain.o;\ + fi + +# Run Test Targets +.test-conf: + @if [ "${TEST}" = "" ]; \ + then \ + ${TESTDIR}/TestFiles/f1 || true; \ + else \ + ./${TEST} || true; \ + fi + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-Unitest.mk b/nbproject/Makefile-Unitest.mk new file mode 100644 index 0000000..8c633ca --- /dev/null +++ b/nbproject/Makefile-Unitest.mk @@ -0,0 +1,150 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux-x86 +CND_DLIB_EXT=so +CND_CONF=Unitest +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/src/main.o \ + ${OBJECTDIR}/src/map/natmap.o + +# Test Directory +TESTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tests + +# Test Files +TESTFILES= \ + ${TESTDIR}/TestFiles/f1 + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS= + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat ${OBJECTFILES} ${LDLIBSOPTIONS} + +${OBJECTDIR}/src/main.o: src/main.cpp + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} "$@.d" + $(COMPILE.cc) -g -Itest -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main.o src/main.cpp + +${OBJECTDIR}/src/map/natmap.o: src/map/natmap.cpp + ${MKDIR} -p ${OBJECTDIR}/src/map + ${RM} "$@.d" + $(COMPILE.cc) -g -Itest -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/map/natmap.o src/map/natmap.cpp + +# Subprojects +.build-subprojects: + +# Build Test Targets +.build-tests-conf: .build-conf ${TESTFILES} +${TESTDIR}/TestFiles/f1: ${TESTDIR}/tests/nattest.o ${TESTDIR}/tests/nattestrunner.o ${OBJECTFILES:%.o=%_nomain.o} + ${MKDIR} -p ${TESTDIR}/TestFiles + ${LINK.cc} -o ${TESTDIR}/TestFiles/f1 $^ ${LDLIBSOPTIONS} `cppunit-config --libs` + + +${TESTDIR}/tests/nattest.o: tests/nattest.cpp + ${MKDIR} -p ${TESTDIR}/tests + ${RM} "$@.d" + $(COMPILE.cc) -g -Itest -I. -std=c++11 `cppunit-config --cflags` -MMD -MP -MF "$@.d" -o ${TESTDIR}/tests/nattest.o tests/nattest.cpp + + +${TESTDIR}/tests/nattestrunner.o: tests/nattestrunner.cpp + ${MKDIR} -p ${TESTDIR}/tests + ${RM} "$@.d" + $(COMPILE.cc) -g -Itest -I. -std=c++11 `cppunit-config --cflags` -MMD -MP -MF "$@.d" -o ${TESTDIR}/tests/nattestrunner.o tests/nattestrunner.cpp + + +${OBJECTDIR}/src/main_nomain.o: ${OBJECTDIR}/src/main.o src/main.cpp + ${MKDIR} -p ${OBJECTDIR}/src + @NMOUTPUT=`${NM} ${OBJECTDIR}/src/main.o`; \ + if (echo "$$NMOUTPUT" | ${GREP} '|main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \ + then \ + ${RM} "$@.d";\ + $(COMPILE.cc) -g -Itest -std=c++11 -Dmain=__nomain -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main_nomain.o src/main.cpp;\ + else \ + ${CP} ${OBJECTDIR}/src/main.o ${OBJECTDIR}/src/main_nomain.o;\ + fi + +${OBJECTDIR}/src/map/natmap_nomain.o: ${OBJECTDIR}/src/map/natmap.o src/map/natmap.cpp + ${MKDIR} -p ${OBJECTDIR}/src/map + @NMOUTPUT=`${NM} ${OBJECTDIR}/src/map/natmap.o`; \ + if (echo "$$NMOUTPUT" | ${GREP} '|main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T main$$') || \ + (echo "$$NMOUTPUT" | ${GREP} 'T _main$$'); \ + then \ + ${RM} "$@.d";\ + $(COMPILE.cc) -g -Itest -std=c++11 -Dmain=__nomain -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/map/natmap_nomain.o src/map/natmap.cpp;\ + else \ + ${CP} ${OBJECTDIR}/src/map/natmap.o ${OBJECTDIR}/src/map/natmap_nomain.o;\ + fi + +# Run Test Targets +.test-conf: + @if [ "${TEST}" = "" ]; \ + then \ + ${TESTDIR}/TestFiles/f1 || true; \ + else \ + ./${TEST} || true; \ + fi + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-impl.mk b/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..69be870 --- /dev/null +++ b/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=1T1NAT + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release Unitest + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/nbproject/Makefile-variables.mk b/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..82ad315 --- /dev/null +++ b/nbproject/Makefile-variables.mk @@ -0,0 +1,43 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux-x86 +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86 +CND_ARTIFACT_NAME_Debug=1t1nat +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/1t1nat +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package +CND_PACKAGE_NAME_Debug=1t1nat.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/1t1nat.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux-x86 +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86 +CND_ARTIFACT_NAME_Release=1t1nat +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/1t1nat +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package +CND_PACKAGE_NAME_Release=1t1nat.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/1t1nat.tar +# Unitest configuration +CND_PLATFORM_Unitest=GNU-Linux-x86 +CND_ARTIFACT_DIR_Unitest=dist/Unitest/GNU-Linux-x86 +CND_ARTIFACT_NAME_Unitest=1t1nat +CND_ARTIFACT_PATH_Unitest=dist/Unitest/GNU-Linux-x86/1t1nat +CND_PACKAGE_DIR_Unitest=dist/Unitest/GNU-Linux-x86/package +CND_PACKAGE_NAME_Unitest=1t1nat.tar +CND_PACKAGE_PATH_Unitest=dist/Unitest/GNU-Linux-x86/package/1t1nat.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/nbproject/Package-Debug.bash b/nbproject/Package-Debug.bash new file mode 100644 index 0000000..cf4e434 --- /dev/null +++ b/nbproject/Package-Debug.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat +OUTPUT_BASENAME=1t1nat +PACKAGE_TOP_DIR=1t1nat/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/1t1nat/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/1t1nat.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/1t1nat.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/Package-Release.bash b/nbproject/Package-Release.bash new file mode 100644 index 0000000..d3456b5 --- /dev/null +++ b/nbproject/Package-Release.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat +OUTPUT_BASENAME=1t1nat +PACKAGE_TOP_DIR=1t1nat/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/1t1nat/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/1t1nat.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/1t1nat.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/Package-Unitest.bash b/nbproject/Package-Unitest.bash new file mode 100644 index 0000000..5a4cfdd --- /dev/null +++ b/nbproject/Package-Unitest.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux-x86 +CND_CONF=Unitest +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/1t1nat +OUTPUT_BASENAME=1t1nat +PACKAGE_TOP_DIR=1t1nat/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/1t1nat/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/1t1nat.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/1t1nat.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml new file mode 100644 index 0000000..8800267 --- /dev/null +++ b/nbproject/configurations.xml @@ -0,0 +1,194 @@ + + + + + + src/map/natmap.h + + + + + + + src/map/natmap.cpp + + src/main.cpp + + + + tests/nattest.cpp + tests/nattest.h + tests/nattestrunner.cpp + + + + Makefile + + + Makefile + + + + default + true + false + + + + 8 + 2 + + + + tins + pthread + + + + + + + . + + `cppunit-config --cflags` + + + + . + + `cppunit-config --cflags` + + + ${TESTDIR}/TestFiles/f1 + + `cppunit-config --libs` + + + + + + + + + + + + + + + + + + + default + true + false + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + . + + `cppunit-config --cflags` + + + + . + + `cppunit-config --cflags` + + + ${TESTDIR}/TestFiles/f1 + + `cppunit-config --libs` + + + + + + + + + + + + + + + + + + + default + true + false + + + + 8 + + test + + + + + + + . + + `cppunit-config --cflags` + + + + . + + `cppunit-config --cflags` + + + ${TESTDIR}/TestFiles/f1 + + `cppunit-config --libs` + + + + + + + + + + + + + + + + + + diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..fc3047f --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,32 @@ + + + org.netbeans.modules.cnd.makeproject + + + 1T1NAT + + cpp + h + UTF-8 + + + + + Debug + 1 + + + Release + 1 + + + Unitest + 1 + + + + false + + + + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..0b0ecc6 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,118 @@ +#include +#include +#include + +using namespace std; +using namespace Tins; + +const IPv4Address calcAdress(const IPv4Address & ip) +{ + IPv4Address incommingIp = IPv4Address(ip); + IPv4Address networkStartIp = IPv4Address("10.0.0.0"); + IPv4Address subnetp = IPv4Address("255.255.240.0"); + + uint32_t ipInt = (incommingIp & ~subnetp) | networkStartIp; + IPv4Address result = IPv4Address(ipInt); + std::cout << "Destination address: " << incommingIp << std::endl; + std::cout << "new Destination address: " << result<< std::endl; + std::cout << "####"<< std::endl; + return result; +} + +bool arpm(const PDU &pdu) +{ + // Retrieve the ARP layer + const ARP &arp = pdu.rfind_pdu(); + std::cout << arp.opcode()<< std::endl; + if (arp.opcode() == ARP::REQUEST) + { + PacketSender sender; + const NetworkInterface iface("vboxnet0"); + EthernetII req = ARP::make_arp_request(calcAdress(arp.target_ip_addr()),"10.0.3.42","08:00:27:d3:ef:1e"); + sender.send(req, iface); + } + + return true; +} + +bool arpm2(const PDU &pdu) +{ + // Retrieve the ARP layer + const ARP &arp = pdu.rfind_pdu(); + + std::cout << arp.opcode()<< std::endl; + if (arp.opcode() == ARP::REPLY) + { + PacketSender sender; + const NetworkInterface iface("vboxnet1"); + EthernetII rep = ARP::make_arp_reply("172.16.3.42","172.17.0.20","08:00:27:d3:ef:1e","08:00:27:29:f2:55"); + sender.send(rep, iface); + } else if (arp.target_ip_addr().to_string() == "10.0.3.42") + { + PacketSender sender; + const NetworkInterface iface("vboxnet0"); + EthernetII rep = ARP::make_arp_reply("10.0.0.20","10.0.3.42","08:00:27:29:f2:55","08:00:27:d3:ef:1e"); + sender.send(rep, iface); + } + + return true; +} + +bool doo(PDU &some_pdu) +{ + //PacketWriter writer("before.pcap", PacketWriter::ETH2); + //writer.write(some_pdu); + + IP &ip = some_pdu.rfind_pdu(); + ip.dst_addr(calcAdress(ip.dst_addr())); + ip.src_addr("10.0.3.42"); + //writer = PacketWriter("after.pcap", PacketWriter::ETH2); + //writer.write(some_pdu); + PacketSender sender; + some_pdu.send(sender,"vboxnet0"); + return true; +} + + + +void test1() +{ + SnifferConfiguration config; + config.set_promisc_mode(true); + config.set_immediate_mode(true); + //config.set_filter("ip src 192.168.0.100"); + Sniffer sniffer("vboxnet1", config); + sniffer.sniff_loop(arpm); +} + +void test2() +{ + SnifferConfiguration config; + config.set_promisc_mode(true); + config.set_immediate_mode(true); + //config.set_filter("ip src 192.168.0.100"); + Sniffer sniffer("vboxnet0", config); + sniffer.sniff_loop(arpm2); +} + +void test3() +{ + SnifferConfiguration config; + config.set_promisc_mode(true); + config.set_immediate_mode(true); + //config.set_filter("ip src 192.168.0.100"); + Sniffer sniffer("vboxnet1", config); + sniffer.sniff_loop(doo); +} + +int main() +{ + thread t1(test1); + thread t2(test2); + thread t3(test3); + t1.join(); + t2.join(); + t3.join(); + return 0; +} + diff --git a/tests/nattest.cpp b/tests/nattest.cpp new file mode 100644 index 0000000..8cd4751 --- /dev/null +++ b/tests/nattest.cpp @@ -0,0 +1,76 @@ +/* + * File: nattest.cpp + * Author: dev + * + * Created on 19.08.2015, 21:39:53 + */ + +#include "nattest.h" + + +CPPUNIT_TEST_SUITE_REGISTRATION(nattest); + +nattest::nattest() { +} + +nattest::~nattest() { +} + +void nattest::setUp() { +} + +void nattest::tearDown() { +} + +void nattest::testIpCalcEth0() { + Tins::IPv4Address expetedIp = deviceIpEth0; + Tins::IPv4Address resultIp = natMap.mapIPv4Address(deviceIpEth0, eth0Info); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); + + expetedIp = Tins::IPv4Address("10.168.23.42"); + resultIp = natMap.mapIPv4Address(deviceIpEth1, eth0Info); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); + + expetedIp = Tins::IPv4Address("10.27.123.4"); + resultIp = natMap.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); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); + + expetedIp = deviceIpEth1; + resultIp = natMap.mapIPv4Address(deviceIpEth1, eth1Info); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); + + expetedIp = Tins::IPv4Address("192.168.23.4"); + resultIp = natMap.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); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); + + expetedIp = Tins::IPv4Address("172.24.23.42"); + resultIp = natMap.mapIPv4Address(deviceIpEth1, eth2Info); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); + + expetedIp = deviceIpEth2; + resultIp = natMap.mapIPv4Address(deviceIpEth2, eth2Info); + CPPUNIT_ASSERT_EQUAL(expetedIp, resultIp); +} + +void nattest::testTranslateIp() { + Tins::EthernetII eth = Tins::EthernetII() / Tins::IP() / Tins::TCP(); + otonat::NatMap natMap = otonat::NatMap(); + natMap.handlePdu(ð); +} + +void nattest::testNatInterfaces() { + CPPUNIT_ASSERT(!natMap.interfaces.empty()); +} + diff --git a/tests/nattest.h b/tests/nattest.h new file mode 100644 index 0000000..9064f44 --- /dev/null +++ b/tests/nattest.h @@ -0,0 +1,70 @@ +/* + * File: nattest.h + * Author: dev + * + * Created on 19.08.2015, 21:39:53 + */ + +#ifndef NATTEST_H +#define NATTEST_H + +#include +#include "../src/map/natmap.h" +#include +#include + +class nattest : public CPPUNIT_NS::TestFixture { + CPPUNIT_TEST_SUITE(nattest); + + CPPUNIT_TEST(testNatInterfaces); + CPPUNIT_TEST(testIpCalcEth0); + CPPUNIT_TEST(testIpCalcEth1); + CPPUNIT_TEST(testIpCalcEth2); + CPPUNIT_TEST(testTranslateIp); + + CPPUNIT_TEST_SUITE_END(); + +public: + nattest(); + virtual ~nattest(); + void setUp(); + void tearDown(); + +private: + otonat::NatMap natMap = otonat::NatMap(); + Tins::IPv4Address deviceIpEth0 = Tins::IPv4Address("10.0.3.40"); + Tins::IPv4Address deviceIpEth1 = Tins::IPv4Address("192.168.23.42"); + Tins::IPv4Address deviceIpEth2 = Tins::IPv4Address("172.27.123.4"); + Tins::NetworkInterface::Info eth0Info = { + .ip_addr = Tins::IPv4Address("10.0.0.2"), + .netmask = Tins::IPv4Address("255.0.0.0"), + .bcast_addr = Tins::IPv4Address("10.255.255.255"), + .hw_addr = Tins::HWAddress<6>("00:00:00:00:00:01"), + .is_up = true + }; + + Tins::NetworkInterface::Info eth1Info = { + .ip_addr = Tins::IPv4Address("192.168.23.42"), + .netmask = Tins::IPv4Address("255.255.255.0"), + .bcast_addr = Tins::IPv4Address("192.168.23.255"), + .hw_addr = Tins::HWAddress<6>("00:00:00:00:00:02"), + .is_up = true + }; + + Tins::NetworkInterface::Info eth2Info = { + .ip_addr = Tins::IPv4Address("172.16.47.11"), + .netmask = Tins::IPv4Address("255.240.0.0"), + .bcast_addr = Tins::IPv4Address("172.31.255.255"), + .hw_addr = Tins::HWAddress<6>("00:00:00:00:00:03"), + .is_up = true + }; + + void testNatInterfaces(); + void testIpCalcEth0(); + void testIpCalcEth1(); + void testIpCalcEth2(); + void testTranslateIp(); +}; + +#endif /* NATTEST_H */ + diff --git a/tests/nattestrunner.cpp b/tests/nattestrunner.cpp new file mode 100644 index 0000000..0c35c35 --- /dev/null +++ b/tests/nattestrunner.cpp @@ -0,0 +1,37 @@ +/* + * File: nattestrunner.cpp + * Author: dev + * + * Created on 19.08.2015, 21:39:53 + */ + +#include +#include +#include +#include +#include +#include + +int main() { + // Create the event manager and test controller + CPPUNIT_NS::TestResult controller; + + // Add a listener that colllects test result + CPPUNIT_NS::TestResultCollector result; + controller.addListener(&result); + + // Add a listener that print dots as test run. + CPPUNIT_NS::BriefTestProgressListener progress; + controller.addListener(&progress); + + // Add the top suite to the test runner + CPPUNIT_NS::TestRunner runner; + runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest()); + runner.run(controller); + + // Print test in a compiler compatible format. + CPPUNIT_NS::CompilerOutputter outputter(&result, CPPUNIT_NS::stdCOut()); + outputter.write(); + + return result.wasSuccessful() ? 0 : 1; +}