diff options
author | Skylar Chang <chiaweic@codeaurora.org> | 2014-08-21 15:26:28 -0700 |
---|---|---|
committer | Skylar Chang <chiaweic@codeaurora.org> | 2014-08-21 17:10:06 -0700 |
commit | 2ace013add73003cfcc71646f4326be71420963c (patch) | |
tree | 8bfe33c67ef8686becc0fc560a8e06747dc38316 /ipanat | |
parent | 1630672628287f50639c60c7b57120bdf8dce324 (diff) | |
download | ipacfg-mgr-2ace013add73003cfcc71646f4326be71420963c.tar.gz |
ipanat: Add IPANT tests
The IPANAT kernel-tests suite tests IPA driver IPANAT functionality.
Change-Id: I11405f8a0efca33bd98dd1c0ff6ac2dd04f2942c
Diffstat (limited to 'ipanat')
29 files changed, 2998 insertions, 0 deletions
diff --git a/ipanat/inc/ipa_nat_drvi.h b/ipanat/inc/ipa_nat_drvi.h index d92d262..4c9f5f3 100644 --- a/ipanat/inc/ipa_nat_drvi.h +++ b/ipanat/inc/ipa_nat_drvi.h @@ -461,6 +461,8 @@ void ipa_nati_find_rule_pos(struct ipa_nat_ip4_table_cache *cache_ptr, del_type *rule_pos); void ipa_nati_del_dead_ipv4_head_nodes(uint8_t tbl_indx); +uint16_t Read16BitFieldValue(uint32_t param, + ipa_nat_rule_field_type fld_type); /* ======================================================== Debug functions diff --git a/ipanat/test/Android.mk b/ipanat/test/Android.mk new file mode 100644 index 0000000..c5336e4 --- /dev/null +++ b/ipanat/test/Android.mk @@ -0,0 +1,49 @@ +ifneq (,$(filter $(QCOM_BOARD_PLATFORMS),$(TARGET_BOARD_PLATFORM))) +ifneq (, $(filter aarch64 arm arm64, $(TARGET_ARCH))) + +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/ +LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../ipanat/inc + +LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include +LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr + +LOCAL_MODULE := ipa_nat_test +LOCAL_SRC_FILES := ipa_nat_test000.c \ + ipa_nat_test001.c \ + ipa_nat_test002.c \ + ipa_nat_test003.c \ + ipa_nat_test004.c \ + ipa_nat_test005.c \ + ipa_nat_test006.c \ + ipa_nat_test007.c \ + ipa_nat_test008.c \ + ipa_nat_test009.c \ + ipa_nat_test010.c \ + ipa_nat_test011.c \ + ipa_nat_test012.c \ + ipa_nat_test013.c \ + ipa_nat_test014.c \ + ipa_nat_test015.c \ + ipa_nat_test016.c \ + ipa_nat_test017.c \ + ipa_nat_test018.c \ + ipa_nat_test019.c \ + ipa_nat_test020.c \ + ipa_nat_test021.c \ + ipa_nat_test022.c \ + main.c + + +LOCAL_SHARED_LIBRARIES := libipanat + +LOCAL_MODULE_TAGS := debug +LOCAL_MODULE_PATH := $(TARGET_OUT_DATA)/kernel-tests/ip_accelerator + +include $(BUILD_EXECUTABLE) + +endif # $(TARGET_ARCH) +endif diff --git a/ipanat/test/Makefile.am b/ipanat/test/Makefile.am new file mode 100644 index 0000000..3aec070 --- /dev/null +++ b/ipanat/test/Makefile.am @@ -0,0 +1,42 @@ +AM_CPPFLAGS = -I./../inc \ + -I$(top_srcdir)/ipanat/inc + +AM_CPPFLAGS += -Wall -Wundef -Wno-trigraphs +AM_CPPFLAGS += -g + +ipanattest_SOURCES = ipa_nat_test000.c \ + ipa_nat_test001.c \ + ipa_nat_test002.c \ + ipa_nat_test003.c \ + ipa_nat_test004.c \ + ipa_nat_test005.c \ + ipa_nat_test006.c \ + ipa_nat_test007.c \ + ipa_nat_test008.c \ + ipa_nat_test009.c \ + ipa_nat_test010.c \ + ipa_nat_test011.c \ + ipa_nat_test012.c \ + ipa_nat_test013.c \ + ipa_nat_test014.c \ + ipa_nat_test015.c \ + ipa_nat_test016.c \ + ipa_nat_test017.c \ + ipa_nat_test018.c \ + ipa_nat_test019.c \ + ipa_nat_test020.c \ + ipa_nat_test021.c \ + ipa_nat_test022.c \ + main.c + + +bin_PROGRAMS = ipanattest + +requiredlibs = ../src/libipanat.la + +ipanattest_LDADD = $(requiredlibs) + +LOCAL_MODULE := libipanat +LOCAL_PRELINK_MODULE := false +include $(BUILD_SHARED_LIBRARY) + diff --git a/ipanat/test/README.txt b/ipanat/test/README.txt new file mode 100644 index 0000000..4e87121 --- /dev/null +++ b/ipanat/test/README.txt @@ -0,0 +1,18 @@ +1 To run this suite separately(each test case creates table and delete table) use below command + - To execute test suite nt times with n entries, command "ipanatest sep nt n" + + Example: To execute test suite 1 time with 100 entries, command "ipanattest sep 100" + + +2. To run test suite not separately(creates table and delete table only once) use below command + - To execute test suite nt times with n entries, command "ipanatest reg nt n" + + Example: To execute test suite 5 times with 32 entries, command "ipanattest reg 5 32" + + +3. To run inotify regression test use command, "ipanattest inotify nt" + + Example: To execute inotify 5 times, command "ipanattest inotify 5" + + +4. if we just give command "ipanattest", runs test suite 1 time with 100 entries (non separate) diff --git a/ipanat/test/ipa_nat_test.h b/ipanat/test/ipa_nat_test.h new file mode 100644 index 0000000..d5ac0d5 --- /dev/null +++ b/ipanat/test/ipa_nat_test.h @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================== + + INCLUDE FILES FOR MODULE + +===========================================================================*/ +#include "stdint.h" /* uint32_t */ +#include "stdio.h" +#include <netinet/in.h> /* for proto definitions */ + +#define u32 uint32_t +#define u16 uint16_t +#define u8 uint8_t + +/*============ Preconditions to run NAT Test cases =========*/ +#define IPA_NAT_TEST_PRE_COND_TE 20 + +#define CHECK_ERR1(x, tbl_hdl) \ + if(ipa_nat_validate_ipv4_table(tbl_hdl)) { \ + if(sep) {\ + ipa_nat_del_ipv4_tbl(tbl_hdl); \ + }\ + return -1;\ + }\ + if(x) { \ + IPAERR("%d\n", ret); \ + if(sep) {\ + ipa_nat_del_ipv4_tbl(tbl_hdl); \ + }\ + return -1; \ + } + +#define CHECK_ERR(x) if(x) { \ + IPAERR("%d\n", ret); \ + return -1;\ + } + +#if 0 +#define CHECK_ERR(x) if(x) { \ + IPAERR("%d\n", ret); \ + if(sep) {\ + ipa_nat_del_ipv4_tbl(tbl_hdl); \ + }\ + return -1;\ + } +#endif + +#define IPADBG(fmt, args...) printf(" %s:%d " fmt, __FUNCTION__, __LINE__, ## args) +#define IPAERR(fmt, args...) printf(" %s:%d " fmt, __FUNCTION__, __LINE__, ## args) + +#define NAT_DUMP +int ipa_nat_validate_ipv4_table(u32); + +int ipa_nat_test000(int, u32, u8); +int ipa_nat_test001(int, u32, u8); +int ipa_nat_test002(int, u32, u8); +int ipa_nat_test003(int, u32, u8); +int ipa_nat_test004(int, u32, u8); +int ipa_nat_test005(int, u32, u8); +int ipa_nat_test006(int, u32, u8); +int ipa_nat_test007(int, u32, u8); +int ipa_nat_test008(int, u32, u8); +int ipa_nat_test009(int, u32, u8); +int ipa_nat_test010(int, u32, u8); +int ipa_nat_test011(int, u32, u8); +int ipa_nat_test012(int, u32, u8); +int ipa_nat_test013(int, u32, u8); +int ipa_nat_test014(int, u32, u8); +int ipa_nat_test015(int, u32, u8); +int ipa_nat_test016(int, u32, u8); +int ipa_nat_test017(int, u32, u8); +int ipa_nat_test018(int, u32, u8); +int ipa_nat_test019(int, u32, u8); +int ipa_nat_test020(int, u32, u8); +int ipa_nat_test021(int, int); +int ipa_nat_test022(int, u32, u8); diff --git a/ipanat/test/ipa_nat_test000.c b/ipanat/test/ipa_nat_test000.c new file mode 100644 index 0000000..09914ea --- /dev/null +++ b/ipanat/test/ipa_nat_test000.c @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test000.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Delete ipv4 table +*/ +/*===========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test000(int total_entries, u32 tbl_hdl, u8 sep) +{ + + int ret; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + if (0 != ret) + { + IPAERR("unable to create ipv4 nat table and returning Error:%d\n", ret); + return -1; + } + IPADBG("create nat ipv4 table successfully() \n"); + + IPADBG("calling ipa_nat_del_ipv4_tbl() \n"); + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + if (0 != ret) + { + IPAERR("Unable to delete ipv4 nat table %d\n", ret); + return -1; + } + IPADBG("deleted ipv4 nat table successfully. Test passed \n"); + + return 0; +} diff --git a/ipanat/test/ipa_nat_test001.c b/ipanat/test/ipa_nat_test001.c new file mode 100644 index 0000000..8daef33 --- /dev/null +++ b/ipanat/test/ipa_nat_test001.c @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test001.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Add ipv4 rule + 3. Delete ipv4 table +*/ +/*===========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test001(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s()\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test002.c b/ipanat/test/ipa_nat_test002.c new file mode 100644 index 0000000..e6f5ae3 --- /dev/null +++ b/ipanat/test/ipa_nat_test002.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test002.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Add ipv4 rule + 3. delete ipv4 rule + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test002(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s()\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test003.c b/ipanat/test/ipa_nat_test003.c new file mode 100644 index 0000000..0634265 --- /dev/null +++ b/ipanat/test/ipa_nat_test003.c @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + IPA_NAT_ipa_nat_test003.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Add ipv4 rule + 3. Add ipv4 rule + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test003(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1; + ipa_nat_ipv4_rule ipv4_rule; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test004.c b/ipanat/test/ipa_nat_test004.c new file mode 100644 index 0000000..02378ff --- /dev/null +++ b/ipanat/test/ipa_nat_test004.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test004.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Query nat table handle + 3. Delete ipv4 table +*/ +/*===========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test004(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret = 0; + u32 tbl_hdl1 = 0; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_tbl(tbl_hdl1); + if(ret == 0) + { + IPAERR("able to delete table using invalid table handle\n"); + return -1; + } + } + return 0; +} diff --git a/ipanat/test/ipa_nat_test005.c b/ipanat/test/ipa_nat_test005.c new file mode 100644 index 0000000..12228d1 --- /dev/null +++ b/ipanat/test/ipa_nat_test005.c @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test005.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Add ipv4 rule + 3. Delete ipv4 rule + 4. Add ipv4 rule + 5. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test005(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret = 0; + u32 rule_hdl, rule_hdl1; + ipa_nat_ipv4_rule ipv4_rule; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + if (sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test006.c b/ipanat/test/ipa_nat_test006.c new file mode 100644 index 0000000..36f0171 --- /dev/null +++ b/ipanat/test/ipa_nat_test006.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test006.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same ipv rules + 3. delete first followed by second + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test006(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret=0; + u32 rule_hdl, rule_hdl1; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test007.c b/ipanat/test/ipa_nat_test007.c new file mode 100644 index 0000000..4160c02 --- /dev/null +++ b/ipanat/test/ipa_nat_test007.c @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test007.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same ipv rules + 3. delete second followed by first + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test007(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + return 0; +} diff --git a/ipanat/test/ipa_nat_test008.c b/ipanat/test/ipa_nat_test008.c new file mode 100644 index 0000000..d016055 --- /dev/null +++ b/ipanat/test/ipa_nat_test008.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test008.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add 2 distinct rules + 3. delete first followed by second + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test008(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule1; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + ipv4_rule1.target_ip = 0xC1171602; /* 193.23.22.2 */ + ipv4_rule1.target_port = 1234; + ipv4_rule1.private_ip = 0xC2171602; /* 194.23.22.2 */ + ipv4_rule1.private_port = 5678; + ipv4_rule1.protocol = IPPROTO_TCP; + ipv4_rule1.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule1, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + return 0; +} diff --git a/ipanat/test/ipa_nat_test009.c b/ipanat/test/ipa_nat_test009.c new file mode 100644 index 0000000..cf3c40f --- /dev/null +++ b/ipanat/test/ipa_nat_test009.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test009.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add 2 distinct rules + 3. delete second followed by first + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test009(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule1; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + ipv4_rule1.target_ip = 0xC1171602; /* 193.23.22.2 */ + ipv4_rule1.target_port = 1234; + ipv4_rule1.private_ip = 0xC2171602; /* 194.23.22.2 */ + ipv4_rule1.private_port = 5678; + ipv4_rule1.protocol = IPPROTO_TCP; + ipv4_rule1.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule1, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test010.c b/ipanat/test/ipa_nat_test010.c new file mode 100644 index 0000000..42d7fee --- /dev/null +++ b/ipanat/test/ipa_nat_test010.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test010.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add 3 distinct ipv4 rules + 3. delete first, second followed by last + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test010(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1, rule_hdl2; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule1, ipv4_rule2; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + ipv4_rule1.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule1.target_port = 1235; + ipv4_rule1.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule1.private_port = 5679; + ipv4_rule1.protocol = IPPROTO_TCP; + ipv4_rule1.public_port = 9051; + + ipv4_rule2.target_ip = 0xC1171602; /* 193.23.22.2 */ + ipv4_rule2.target_port = 1235; + ipv4_rule2.private_ip = 0xC2171602; /* 194.23.22.2 */ + ipv4_rule2.private_port = 5679; + ipv4_rule2.protocol = IPPROTO_TCP; + ipv4_rule2.public_port = 9051; + + IPADBG("%s():\n",__FUNCTION__); + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule1, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule2, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test011.c b/ipanat/test/ipa_nat_test011.c new file mode 100644 index 0000000..bcce76c --- /dev/null +++ b/ipanat/test/ipa_nat_test011.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test011.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add 3 distinct ipv4 rules + 3. delete second, first followed by last + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test011(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1, rule_hdl2; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule1, ipv4_rule2; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + ipv4_rule1.target_ip = 0xF1181601; + ipv4_rule1.target_port = 1555; + ipv4_rule1.private_ip = 0xF2151601; + ipv4_rule1.private_port = 5999; + ipv4_rule1.protocol = IPPROTO_TCP; + ipv4_rule1.public_port = 9111; + + ipv4_rule2.target_ip = 0xC1166602; + ipv4_rule2.target_port = 1555; + ipv4_rule2.private_ip = 0xC2155602; + ipv4_rule2.private_port = 5777; + ipv4_rule2.protocol = IPPROTO_TCP; + ipv4_rule2.public_port = 9000; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule1, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule2, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test012.c b/ipanat/test/ipa_nat_test012.c new file mode 100644 index 0000000..9d3c835 --- /dev/null +++ b/ipanat/test/ipa_nat_test012.c @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test012.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add 3 distinct ipv4 rules + 3. Delete third, second, first + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + + +int ipa_nat_test012(int totoal_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1, rule_hdl2; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule1, ipv4_rule2; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + ipv4_rule1.target_ip = 0xD1171601; + ipv4_rule1.target_port = 3512; + ipv4_rule1.private_ip = 0xD2471601; + ipv4_rule1.private_port = 9997; + ipv4_rule1.protocol = IPPROTO_TCP; + ipv4_rule1.public_port = 8881; + + ipv4_rule2.target_ip = 0xC1172452; + ipv4_rule2.target_port = 1895; + ipv4_rule2.private_ip = 0xC2172452; + ipv4_rule2.private_port = 6668; + ipv4_rule2.protocol = IPPROTO_TCP; + ipv4_rule2.public_port = 5551; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, totoal_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule1, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule2, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test013.c b/ipanat/test/ipa_nat_test013.c new file mode 100644 index 0000000..2b9b005 --- /dev/null +++ b/ipanat/test/ipa_nat_test013.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test013.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add 3 distinct ipv4 rules + 3. Delete third, first and second + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test013(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl, rule_hdl1, rule_hdl2; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule1, ipv4_rule2; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + ipv4_rule1.target_ip = 0xC1171609; /* 193.23.22.9 */ + ipv4_rule1.target_port = 1235; + ipv4_rule1.private_ip = 0xC2171609; /* 194.23.22.9 */ + ipv4_rule1.private_port = 6579; + ipv4_rule1.protocol = IPPROTO_TCP; + ipv4_rule1.public_port = 8951; + + ipv4_rule2.target_ip = 0xC1171606; /* 193.23.22.6 */ + ipv4_rule2.target_port = 1235; + ipv4_rule2.private_ip = 0xC2171606; /* 194.23.22.6 */ + ipv4_rule2.private_port = 7956; + ipv4_rule2.protocol = IPPROTO_TCP; + ipv4_rule2.public_port = 5109; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule1, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule2, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test014.c b/ipanat/test/ipa_nat_test014.c new file mode 100644 index 0000000..fd30317 --- /dev/null +++ b/ipanat/test/ipa_nat_test014.c @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test014.cpp + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete first, second and third + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test014(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s()\n", __FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test015.c b/ipanat/test/ipa_nat_test015.c new file mode 100644 index 0000000..eaef923 --- /dev/null +++ b/ipanat/test/ipa_nat_test015.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test015.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete first, third and second + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + + +int ipa_nat_test015(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test016.c b/ipanat/test/ipa_nat_test016.c new file mode 100644 index 0000000..23157e2 --- /dev/null +++ b/ipanat/test/ipa_nat_test016.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test016.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete second, first and third + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test016(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test017.c b/ipanat/test/ipa_nat_test017.c new file mode 100644 index 0000000..d88e611 --- /dev/null +++ b/ipanat/test/ipa_nat_test017.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test017.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete second, third and first + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test017(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test018.c b/ipanat/test/ipa_nat_test018.c new file mode 100644 index 0000000..c885d4d --- /dev/null +++ b/ipanat/test/ipa_nat_test018.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test018.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete third, second and first + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test018(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test019.c b/ipanat/test/ipa_nat_test019.c new file mode 100644 index 0000000..3ba3119 --- /dev/null +++ b/ipanat/test/ipa_nat_test019.c @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test019.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete third, first and second + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test019(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test020.c b/ipanat/test/ipa_nat_test020.c new file mode 100644 index 0000000..e6871b5 --- /dev/null +++ b/ipanat/test/ipa_nat_test020.c @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test020.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 4 ipv rules + 3. delete third, second, fourth and first + 4. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test020(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3, rule_hdl4; + ipa_nat_ipv4_rule ipv4_rule; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl4); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl2); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl4); + CHECK_ERR(ret); + + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR(ret); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + + return 0; +} diff --git a/ipanat/test/ipa_nat_test021.c b/ipanat/test/ipa_nat_test021.c new file mode 100644 index 0000000..48c4321 --- /dev/null +++ b/ipanat/test/ipa_nat_test021.c @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/*=========================================================================*/ +/*! + @file + ipa_nat_test021.c + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test021(int total_entries, int reg) +{ + + int ret, i; + u32 tbl_hdl; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + IPADBG("%s():\n",__FUNCTION__); + + for(i=0; i<reg; i++) + { + IPADBG("executing %d th time:\n",i); + + IPADBG("calling ipa_nat_add_ipv4_tbl() \n"); + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + if (0 != ret) + { + IPAERR("unable to create ipv4 nat table and returning Error:%d\n", ret); + IPADBG("executed %d times:\n",i); + return -1; + } + IPADBG("create nat ipv4 table successfully() \n"); + + IPADBG("calling ipa_nat_del_ipv4_tbl() \n"); + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + if (0 != ret) + { + IPAERR("Unable to delete ipv4 nat table %d\n", ret); + IPADBG("executed %d times:\n",i); + return -1; + } + IPADBG("deleted ipv4 nat table successfully. Test passed \n"); + } + + IPADBG("executed %d times:\n",(i+1)); + return 0; +} diff --git a/ipanat/test/ipa_nat_test022.c b/ipanat/test/ipa_nat_test022.c new file mode 100644 index 0000000..ebdd291 --- /dev/null +++ b/ipanat/test/ipa_nat_test022.c @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +/*=========================================================================*/ +/*! + @file + ipa_nat_test022.cpp + + @brief + Verify the following scenario: + 1. Add ipv4 table + 2. add same 3 ipv rules + 3. delete Head and last entry + 4. add 2 new same ip4 entries + 5. Add head entry again + 6. Delete ipv4 table +*/ +/*=========================================================================*/ + +#include "ipa_nat_test.h" +#include "ipa_nat_drv.h" + +int ipa_nat_test022(int total_entries, u32 tbl_hdl, u8 sep) +{ + int ret; + u32 rule_hdl1, rule_hdl2, rule_hdl3; + ipa_nat_ipv4_rule ipv4_rule, ipv4_rule2; + u32 rule_hdl21, rule_hdl22; + + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + /* Rule 1 */ + ipv4_rule.target_ip = 0xC1171601; /* 193.23.22.1 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171601; /* 194.23.22.1 */ + ipv4_rule.private_port = 5678; + ipv4_rule.protocol = IPPROTO_TCP; + ipv4_rule.public_port = 9050; + + /* Rule 2*/ + ipv4_rule.target_ip = 0xC1171604; /* 193.23.22.4 */ + ipv4_rule.target_port = 1234; + ipv4_rule.private_ip = 0xC2171603; /* 194.23.22.3 */ + ipv4_rule.private_port = 5680; + ipv4_rule.protocol = IPPROTO_UDP; + ipv4_rule.public_port = 9066; + + IPADBG("%s():\n",__FUNCTION__); + + if(sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR1(ret, tbl_hdl); + } + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl1); + CHECK_ERR1(ret, tbl_hdl); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl2); + CHECK_ERR1(ret, tbl_hdl); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR1(ret, tbl_hdl); + + /* Delete head entry */ + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl1); + CHECK_ERR1(ret, tbl_hdl); + + /* Delete Last Entry */ + ret = ipa_nat_del_ipv4_rule(tbl_hdl, rule_hdl3); + CHECK_ERR1(ret, tbl_hdl); + + /* Add 2 different Entries */ + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule2, &rule_hdl21); + CHECK_ERR1(ret, tbl_hdl); + + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule2, &rule_hdl22); + CHECK_ERR1(ret, tbl_hdl); + + /* Add first entry again */ + ret = ipa_nat_add_ipv4_rule(tbl_hdl, &ipv4_rule, &rule_hdl3); + CHECK_ERR1(ret, tbl_hdl); + + if(sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR1(ret, tbl_hdl); + } + + return 0; +} diff --git a/ipanat/test/main.c b/ipanat/test/main.c new file mode 100644 index 0000000..c49ce3b --- /dev/null +++ b/ipanat/test/main.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2014, The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <sys/stat.h> +#include <fcntl.h> + +#include "ipa_nat_drv.h" +#include "ipa_nat_drvi.h" +#include "ipa_nat_test.h" + +extern struct ipa_nat_cache ipv4_nat_cache; + +int chk_for_loop(u32 tbl_hdl) +{ + struct ipa_nat_rule *tbl_ptr; + struct ipa_nat_indx_tbl_rule *indx_tbl_ptr; + int cnt; + uint16_t cur_entry; + + if (IPA_NAT_INVALID_NAT_ENTRY == tbl_hdl || + tbl_hdl > IPA_NAT_MAX_IP4_TBLS) { + IPAERR("invalid table handle passed \n"); + return -EINVAL; + } + + IPADBG("checking ipv4 rules:\n"); + tbl_ptr = (struct ipa_nat_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].ipv4_rules_addr; + for (cnt = 0; + cnt < ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + cnt++) { + if (Read16BitFieldValue(tbl_ptr[cnt].ip_cksm_enbl,ENABLE_FIELD)) { + if(Read16BitFieldValue(tbl_ptr[cnt].nxt_indx_pub_port, + NEXT_INDEX_FIELD) == cnt) + { + IPAERR("Infinite loop detected, entry\n"); + ipa_nati_print_rule(&tbl_ptr[cnt], cnt); + return -EINVAL; + } + } + } + + /* Print ipv4 expansion rules */ + IPADBG("checking ipv4 active expansion rules:\n"); + tbl_ptr = (struct ipa_nat_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].ipv4_expn_rules_addr; + for (cnt = 0; + cnt <= ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].expn_table_entries; + cnt++) { + if (Read16BitFieldValue(tbl_ptr[cnt].ip_cksm_enbl, + ENABLE_FIELD)) { + cur_entry = + cnt + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + if (Read16BitFieldValue(tbl_ptr[cnt].nxt_indx_pub_port, + NEXT_INDEX_FIELD) == cur_entry) + { + IPAERR("Infinite loop detected\n"); + ipa_nati_print_rule(&tbl_ptr[cnt], + (cnt + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries)); + return -EINVAL; + } + } + } + + /* Print ipv4 index rules */ + IPADBG("checking ipv4 index active rules: \n"); + indx_tbl_ptr = (struct ipa_nat_indx_tbl_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_table_addr; + for (cnt = 0; + cnt < ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + cnt++) { + if (Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_TBL_ENTRY_FIELD)) { + if (Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_NEXT_INDEX_FILED) == cnt) + { + IPAERR("Infinite loop detected\n"); + ipa_nati_print_index_rule(&indx_tbl_ptr[cnt], cnt, 0); + return -EINVAL; + } + } + } + + /* Print ipv4 index expansion rules */ + IPADBG("Checking ipv4 index expansion active rules: \n"); + indx_tbl_ptr = (struct ipa_nat_indx_tbl_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_table_expn_addr; + for (cnt = 0; + cnt <= ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].expn_table_entries; + cnt++) { + if (Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_TBL_ENTRY_FIELD)) { + cur_entry = + cnt + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + if (Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_NEXT_INDEX_FILED) == cur_entry) + { + IPAERR("Infinite loop detected\n"); + ipa_nati_print_index_rule(&indx_tbl_ptr[cnt], + (cnt + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries), + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].index_expn_table_meta[cnt].prev_index); + return -EINVAL; + } + } + } + return 0; +} + +uint8_t is_base_entry_valid(u32 tbl_hdl, u16 entry) +{ + struct ipa_nat_rule *tbl_ptr; + + if (entry > + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries) + { + tbl_ptr = (struct ipa_nat_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].ipv4_expn_rules_addr; + entry -= + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + } + else + { + tbl_ptr = (struct ipa_nat_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].ipv4_rules_addr; + } + return (Read16BitFieldValue(tbl_ptr[entry].ip_cksm_enbl, + ENABLE_FIELD)); +} + +uint8_t is_index_entry_valid(u32 tbl_hdl, u16 entry) +{ + struct ipa_nat_indx_tbl_rule *tbl_ptr; + + if (entry > + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries) + { + tbl_ptr = (struct ipa_nat_indx_tbl_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_table_expn_addr; + entry -= + ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + } + else + { + tbl_ptr = (struct ipa_nat_indx_tbl_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_table_addr; + } + if (Read16BitFieldValue(tbl_ptr[entry].tbl_entry_nxt_indx, + INDX_TBL_TBL_ENTRY_FIELD)) { + return 1; + } + else + { + return 0; + } +} + +int chk_for_validity(u32 tbl_hdl) +{ + struct ipa_nat_rule *tbl_ptr; + struct ipa_nat_indx_tbl_rule *indx_tbl_ptr; + uint16_t nxt_index, prv_index; + int cnt; + + if (IPA_NAT_INVALID_NAT_ENTRY == tbl_hdl || + tbl_hdl > IPA_NAT_MAX_IP4_TBLS) { + IPAERR("invalid table handle passed \n"); + return -EINVAL; + } + + /* Validate base table next_indx and prev_indx values */ + IPADBG("Validating ipv4 active rules: \n"); + tbl_ptr = (struct ipa_nat_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].ipv4_rules_addr; + for (cnt = 0; + cnt < ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + cnt++) { + if (Read16BitFieldValue(tbl_ptr[cnt].ip_cksm_enbl, + ENABLE_FIELD)) { + nxt_index = + Read16BitFieldValue(tbl_ptr[cnt].nxt_indx_pub_port, + NEXT_INDEX_FIELD); + if (!is_base_entry_valid(tbl_hdl, nxt_index)) { + IPAERR("Invalid next index found, entry:%d\n", cnt); + } + } + } + + IPADBG("Validating ipv4 expansion active rules: \n"); + tbl_ptr = (struct ipa_nat_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].ipv4_expn_rules_addr; + for (cnt = 0; + cnt <= ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].expn_table_entries; + cnt++) { + if (Read16BitFieldValue(tbl_ptr[cnt].ip_cksm_enbl, + ENABLE_FIELD)) { + /* Validate next index */ + nxt_index = + Read16BitFieldValue(tbl_ptr[cnt].nxt_indx_pub_port, + NEXT_INDEX_FIELD); + if (!is_base_entry_valid(tbl_hdl, nxt_index)) { + IPAERR("Invalid next index found, entry:%d\n", cnt); + } + /* Validate previous index */ + prv_index = + Read16BitFieldValue(tbl_ptr[cnt].sw_spec_params, + SW_SPEC_PARAM_PREV_INDEX_FIELD); + if (!is_base_entry_valid(tbl_hdl, prv_index)) { + IPAERR("Invalid Previous index found, entry:%d\n", cnt); + } + } + } + + IPADBG("Validating ipv4 index active rules: \n"); + indx_tbl_ptr = (struct ipa_nat_indx_tbl_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_table_addr; + for (cnt = 0; + cnt < ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].table_entries; + cnt++) { + if (Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_TBL_ENTRY_FIELD)) { + nxt_index = + Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_NEXT_INDEX_FILED); + if (!is_index_entry_valid(tbl_hdl, nxt_index)) { + IPAERR("Invalid next index found, entry:%d\n", cnt); + } + } + } + + IPADBG("Validating ipv4 index expansion active rules: \n"); + indx_tbl_ptr = (struct ipa_nat_indx_tbl_rule *) + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_table_expn_addr; + for (cnt = 0; + cnt <= ipv4_nat_cache.ip4_tbl[tbl_hdl - 1].expn_table_entries; + cnt++) { + if (Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_TBL_ENTRY_FIELD)) { + /* Validate next index*/ + nxt_index = + Read16BitFieldValue(indx_tbl_ptr[cnt].tbl_entry_nxt_indx, + INDX_TBL_NEXT_INDEX_FILED); + if (!is_index_entry_valid(tbl_hdl, nxt_index)) { + IPAERR("Invalid next index found, entry:%d\n", cnt); + } + + /* Validate previous index*/ + prv_index = + ipv4_nat_cache.ip4_tbl[tbl_hdl-1].index_expn_table_meta[cnt].prev_index; + + if (!is_index_entry_valid(tbl_hdl, prv_index)) { + IPAERR("Invalid Previous index found, entry:%d\n", cnt); + } + } + } + + return 0; +} + +int ipa_nat_validate_ipv4_table(u32 tbl_hdl) +{ + int ret = 0; + + ret = chk_for_loop(tbl_hdl); + if (ret) + return ret; + ret = chk_for_validity(tbl_hdl); + + return ret; +} + +int main(int argc, char* argv[]) +{ + int exec = 0, pass = 0, ret; + int cnt, nt=1; + int total_entries = 100; + u8 sep = 0; + u32 tbl_hdl = 0; + u32 pub_ip_add = 0x011617c0; /* "192.23.22.1" */ + + IPADBG("ipa_nat_testing user space nat driver\n"); + + if (argc == 4) + { + if (!strncmp(argv[1], "reg", 3)) + { + nt = atoi(argv[2]); + total_entries = atoi(argv[3]); + IPADBG("Reg: %d, Nat Entries: %d\n", nt, total_entries); + } + else if (!strncmp(argv[1], "sep", 3)) + { + sep = 1; + nt = atoi(argv[2]); + total_entries = atoi(argv[3]); + } + } + else if (argc == 3) + { + if (!strncmp(argv[1], "inotify", 7)) + { + ipa_nat_test021(total_entries, atoi(argv[2])); + return 0; + } + else if (!strncmp(argv[1], "sep", 3)) + { + sep = 1; + total_entries = atoi(argv[2]); + } + } + else if (argc == 2) + { + total_entries = atoi(argv[1]); + IPADBG("Nat Entries: %d\n", total_entries); + } + + + for (cnt=0; cnt<nt; cnt++) + { + IPADBG("%s():Executing %d time \n",__FUNCTION__, cnt); + + if (!sep) + { + ret = ipa_nat_add_ipv4_tbl(pub_ip_add, total_entries, &tbl_hdl); + CHECK_ERR(ret); + } + + if (sep) + { + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test000(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test001(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + } + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test002(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + if (sep) + { + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test003(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test004(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test005(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + } + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test006(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test007(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test008(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test00%d\n", exec); + ret = ipa_nat_test009(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test00%d Fail\n", exec); + } + exec++; + + if (total_entries >= IPA_NAT_TEST_PRE_COND_TE) + { + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test010(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test011(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test012(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test013(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test014(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test015(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test016(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test017(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test018(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test019(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test020(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + + IPADBG("\n\nExecuting ipa_nat_test0%d\n", exec); + ret = ipa_nat_test022(total_entries, tbl_hdl, sep); + if (!ret) + { + pass++; + } + else + { + IPAERR("ipa_nat_test0%d Fail\n", exec); + } + exec++; + } + + if (!sep) + { + ret = ipa_nat_del_ipv4_tbl(tbl_hdl); + CHECK_ERR(ret); + } + } + /*======= Printing Results ==========*/ + IPADBG("Total ipa_nat Tests Run:%d, Pass:%d, Fail:%d\n",exec, pass, exec-pass); + return 0; +} |