diff options
author | Davide Garberi <dade.garberi@gmail.com> | 2019-01-19 20:33:01 +0100 |
---|---|---|
committer | Davide Garberi <dade.garberi@gmail.com> | 2019-01-26 13:56:25 +0100 |
commit | 53a1ffbf112cf677a1fa6168d34d47b39a59aa1b (patch) | |
tree | 80c9ff5fc08f59cb4feb2f11bd0f1c1540cab354 /data-ipa-cfg-mgr/ipanat/test/main.c | |
parent | 5e5938dad03868d1fc1615f809ec1dda2aaf55ee (diff) |
msm8996-common: Use common data-ipa-cfg-mgr
* Located at vendor/qcom/opensource/data-ipa-cfg-mgr
Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Change-Id: I6b1f1a034b8e4cafe5ae28a16327cc4e2ec6afa3
Signed-off-by: Davide Garberi <dade.garberi@gmail.com>
Diffstat (limited to 'data-ipa-cfg-mgr/ipanat/test/main.c')
-rw-r--r-- | data-ipa-cfg-mgr/ipanat/test/main.c | 640 |
1 files changed, 0 insertions, 640 deletions
diff --git a/data-ipa-cfg-mgr/ipanat/test/main.c b/data-ipa-cfg-mgr/ipanat/test/main.c deleted file mode 100644 index c49ce3b..0000000 --- a/data-ipa-cfg-mgr/ipanat/test/main.c +++ /dev/null @@ -1,640 +0,0 @@ -/* - * 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; -} |