ipa: Support ipanat and kernel-tests compilation in LA

Change-Id: I36ec8c36f88dbe4cd67bb3c340fa5187c22f7d13
Signed-off-by: Ilia Lin <quic_ilial@quicinc.com>
This commit is contained in:
Michael Adisumarta
2022-03-10 15:19:01 -08:00
committed by Ilia Lin
orang tua 441253fedb
melakukan 11eaa09da2
22 mengubah file dengan 638 tambahan dan 132 penghapusan

Melihat File

@@ -0,0 +1,3 @@
export CONFIG_IPA_DEBUG=y
export CONFIG_IPA_UT=y
export CONFIG_IPA_KERNEL_TESTS_MODULE=m

Melihat File

@@ -0,0 +1,4 @@
ifeq ($(CONFIG_LOCALVERSION), "-gki-consolidate")
PRODUCT_PACKAGES += ipa-kernel-tests
$(warning "added ipa-kernel-tests")
endif

Melihat File

@@ -7,5 +7,8 @@ BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/ipam.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/ipanetm.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/rndisipam.ko
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/ipa_clientsm.ko
ifeq ($(CONFIG_LOCALVERSION), "-gki-consolidate")
BOARD_VENDOR_KERNEL_MODULES += $(KERNEL_MODULES_OUT)/ipatestm.ko
endif
endif
endif

Melihat File

@@ -3,3 +3,6 @@ PRODUCT_PACKAGES += ipam.ko
PRODUCT_PACKAGES += ipanetm.ko
PRODUCT_PACKAGES += rndisipam.ko
PRODUCT_PACKAGES += ipa_clientsm.ko
ifeq ($(CONFIG_LOCALVERSION), "-gki-consolidate")
PRODUCT_PACKAGES += ipatestm.ko
endif

Melihat File

@@ -0,0 +1,34 @@
headers_src = [
"ipa/ipa_test_module/ipa_test_module.h",
]
ipa_test_headers_out = [
"ipa_test_module.h",
]
ipa_test_kernel_headers_verbose = "--verbose "
genrule {
name: "qti_generate_ipa_test_kernel_headers",
tools: ["headers_install.sh",
"unifdef"
],
tool_files: [
"ipa_test_kernel_headers.py",
],
srcs: headers_src,
cmd: "python3 -u $(location ipa_test_kernel_headers.py) " +
ipa_test_kernel_headers_verbose +
"--gen_dir $(genDir) " +
"--ipa_test_include_uapi $(locations ipa/ipa_test_module/ipa_test_module.h) " +
"--unifdef $(location unifdef) " +
"--headers_install $(location headers_install.sh)",
out: ipa_test_headers_out,
}
cc_library_headers {
name: "qti_ipa_test_kernel_headers",
generated_headers: ["qti_generate_ipa_test_kernel_headers"],
export_generated_headers: ["qti_generate_ipa_test_kernel_headers"],
vendor: true,
recovery_available: true
}

Melihat File

@@ -61,5 +61,16 @@ LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
$(warning $(DLKM_DIR))
include $(DLKM_DIR)/Build_external_kernelmodule.mk
include $(CLEAR_VARS)
KBUILD_OPTIONS += MODNAME=ipatestm
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*)
LOCAL_MODULE := ipatestm.ko
LOCAL_MODULE_KBUILD_NAME := ipa/ipatestm.ko
LOCAL_MODULE_DEBUG_ENABLE := true
LOCAL_HEADER_LIBRARIES := ipa_test_kernel_headers
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
$(warning $(DLKM_DIR))
include $(DLKM_DIR)/Build_external_kernelmodule.mk
endif #End of Check for target
endif #End of Check for qssi target

Melihat File

@@ -21,7 +21,7 @@ DATAIPADRVTOP = $(srctree)/../../vendor/qcom/opensource/dataipa/drivers/platform
LINUXINCLUDE += -include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_vendor.h
include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_GKI.conf
ifeq ($(CONFIG_LOCALVERSION), "-gki-consolidate")
include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_debug.conf
include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_GKI_consolidate.conf
LINUXINCLUDE += -include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_debug.h
endif
endif
@@ -31,7 +31,7 @@ DATAIPADRVTOP = $(srctree)/../../vendor/qcom/opensource/dataipa/drivers/platform
LINUXINCLUDE += -include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_vendor.h
include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_GKI.conf
ifeq ($(CONFIG_LOCALVERSION), "-gki-consolidate")
include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_debug.conf
include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_GKI_consolidate.conf
LINUXINCLUDE += -include $(srctree)/../../vendor/qcom/opensource/dataipa/config/dataipa_debug.h
endif
endif

Melihat File

@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
// SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note
/*
* Copyright (c) 2017-2018,2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _IPA_TEST_MODULE_H_

Melihat File

@@ -693,7 +693,9 @@ static struct sk_buff *datapath_create_skb(const char *buf, size_t size)
{
struct sk_buff *skb;
unsigned char *data;
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0)
int err = 0;
#endif
IPATEST_DBG("allocating SKB, len=%zu", size);
skb = alloc_skb(size, GFP_KERNEL);
@@ -706,10 +708,13 @@ static struct sk_buff *datapath_create_skb(const char *buf, size_t size)
return NULL;
}
IPATEST_DBG("skb put finish, skb->len=%d", skb->len);
skb->csum = csum_and_copy_from_user(
buf, data,
size, 0, &err);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,0)
skb->csum = csum_and_copy_from_user(buf, data, size);
if (!skb->csum) {
#else
skb->csum = csum_and_copy_from_user(buf, data, size, 0, &err);
if (err) {
#endif
kfree_skb(skb);
return NULL;
}
@@ -1212,7 +1217,7 @@ int connect_apps_to_ipa(struct test_endpoint_sys *tx_ep,
tx_ep->gsi_channel_props.low_weight = 1;
tx_ep->gsi_channel_props.chan_user_data = tx_ep;
if (ipa_get_hw_type() >= IPA_HW_v4_9)
tx_ep->gsi_channel_props.db_in_bytes = 1;
tx_ep->gsi_channel_props.db_in_bytes = 1;
tx_ep->gsi_channel_props.err_cb = ipa_test_gsi_chan_err_cb;
tx_ep->gsi_channel_props.xfer_cb = ipa_test_gsi_irq_notify_cb;

Melihat File

@@ -0,0 +1,88 @@
# Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 and
# only version 2 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
import argparse
import filecmp
import os
import re
import subprocess
import sys
def run_headers_install(verbose, gen_dir, headers_install, unifdef, prefix, h):
if not h.startswith(prefix):
print('error: expected prefix [%s] on header [%s]' % (prefix, h))
return False
out_h = os.path.join(gen_dir, h[len(prefix):])
(out_h_dirname, out_h_basename) = os.path.split(out_h)
env = os.environ.copy()
env["LOC_UNIFDEF"] = unifdef
cmd = ["sh", headers_install, h, out_h]
if verbose:
print('run_headers_install: cmd is %s' % cmd)
result = subprocess.call(cmd, env=env)
if result != 0:
print('error: run_headers_install: cmd %s failed %d' % (cmd, result))
return False
return True
def gen_ipa_test_headers(verbose, gen_dir, headers_install, unifdef, ipa_test_include_uapi):
error_count = 0
for h in ipa_test_include_uapi:
ipa_test_uapi_include_prefix = os.path.join(h.split('/ipa/ipa_test_module/')[0],
'ipa',
'ipa_test_module') + os.sep
if not run_headers_install(
verbose, gen_dir, headers_install, unifdef,
ipa_test_uapi_include_prefix, h): error_count += 1
return error_count
def main():
"""Parse command line arguments and perform top level control."""
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
# Arguments that apply to every invocation of this script.
parser.add_argument(
'--verbose', action='store_true',
help='Print output that describes the workings of this script.')
parser.add_argument(
'--gen_dir', required=True,
help='Where to place the generated files.')
parser.add_argument(
'--ipa_test_include_uapi', required=True, nargs='*',
help='The list of header files.')
parser.add_argument(
'--headers_install', required=True,
help='The headers_install tool to process input headers.')
parser.add_argument(
'--unifdef',
required=True,
help='The unifdef tool used by headers_install.')
args = parser.parse_args()
if args.verbose:
print('gen_dir [%s]' % args.gen_dir)
print('ipa_test_include_uapi [%s]' % args.ipa_test_include_uapi)
print('headers_install [%s]' % args.headers_install)
print('unifdef [%s]' % args.unifdef)
return gen_ipa_test_headers(args.verbose, args.gen_dir,
args.headers_install, args.unifdef, args.ipa_test_include_uapi)
if __name__ == '__main__':
sys.exit(main())

33
ipanat/Android.bp Normal file
Melihat File

@@ -0,0 +1,33 @@
cc_library_shared {
name: "libipanat",
header_libs: ["device_kernel_headers"]+["qti_kernel_headers"],
srcs: [
"src/ipa_nat_map.cpp",
"src/ipa_table.c",
"src/ipa_nat_statemach.c",
"src/ipa_nat_drvi.c",
"src/ipa_nat_drv.c",
"src/ipa_mem_descriptor.c",
"src/ipa_nat_utils.c",
"src/ipa_ipv6ct.c",
],
shared_libs:
["libcutils",
"libdl",
"libbase",
"libutils",
],
export_include_dirs: ["inc"],
vendor: true,
clang: true,
clang_cflags: [
"-DDEBUG",
"-DFEATURE_IPA_ANDROID",
"-Wno-int-conversion",
],
}

Melihat File

@@ -25,10 +25,45 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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
*/
#ifndef IPA_NAT_UTILS_H
#define IPA_NAT_UTILS_H
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <syslog.h>

Melihat File

@@ -25,6 +25,40 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 "ipa_ipv6ct.h"
#include "ipa_ipv6cti.h"
@@ -34,6 +68,7 @@
#include <errno.h>
#include <pthread.h>
#include <unistd.h>
#include <linux/msm_ipa.h>
#define IPA_IPV6CT_DEBUG_FILE_PATH "/sys/kernel/debug/ipa/ipv6ct"
#define IPA_UC_ACT_DEBUG_FILE_PATH "/sys/kernel/debug/ipa/uc_act_table"

Melihat File

@@ -25,6 +25,40 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 <errno.h>
#include <pthread.h>
@@ -249,8 +283,8 @@ int ipa_nati_add_ipv4_tbl(
uint32_t* tbl_hdl)
{
arb_t* args[] = {
(arb_t*) public_ip_addr,
(arb_t*) number_of_entries,
(arb_t*)(arb_t)public_ip_addr,
(arb_t*)(arb_t)number_of_entries,
(arb_t*) tbl_hdl,
(arb_t*) mem_type_ptr,
};
@@ -275,7 +309,7 @@ int ipa_nati_del_ipv4_table(
uint32_t tbl_hdl)
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*)(arb_t)tbl_hdl,
};
int ret;
@@ -293,7 +327,7 @@ int ipa_nati_clear_ipv4_tbl(
uint32_t tbl_hdl )
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*)(arb_t)tbl_hdl,
};
int ret;
@@ -314,8 +348,8 @@ int ipa_nati_walk_ipv4_tbl(
void* arb_data_ptr )
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*) which,
(arb_t*)(arb_t)tbl_hdl,
(arb_t*)(arb_t)which,
(arb_t*) walk_cb,
(arb_t*) arb_data_ptr,
};
@@ -337,7 +371,7 @@ int ipa_nati_ipv4_tbl_stats(
ipa_nati_tbl_stats* idx_stats_ptr )
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*)(arb_t)tbl_hdl,
(arb_t*) nat_stats_ptr,
(arb_t*) idx_stats_ptr,
};
@@ -359,7 +393,7 @@ int ipa_nati_add_ipv4_rule(
uint32_t* rule_hdl )
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*)(arb_t)tbl_hdl,
(arb_t*) clnt_rule,
(arb_t*) rule_hdl,
};
@@ -385,8 +419,8 @@ int ipa_nati_del_ipv4_rule(
uint32_t rule_hdl )
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*) rule_hdl,
(arb_t*)(arb_t)tbl_hdl,
(arb_t*)(arb_t)rule_hdl,
};
int ret;
@@ -406,8 +440,8 @@ int ipa_nati_query_timestamp(
uint32_t* time_stamp)
{
arb_t* args[] = {
(arb_t*) tbl_hdl,
(arb_t*) rule_hdl,
(arb_t*)(arb_t)tbl_hdl,
(arb_t*)(arb_t)rule_hdl,
(arb_t*) time_stamp,
};
@@ -1108,8 +1142,8 @@ static int _smAddSramAndDdrTbl(
* table...
*/
arb_t* new_args[] = {
(arb_t*) public_ip_addr,
(arb_t*) number_of_entries,
(arb_t*)(arb_t)public_ip_addr,
(arb_t*)(arb_t)number_of_entries,
(arb_t*) &tbl_hdl, /* to protect app's table handle above */
};
@@ -1187,7 +1221,7 @@ static int _smDelSramAndDdrTbl(
if ( ret == 0 )
{
arb_t* new_args[] = {
(arb_t*) nati_obj_ptr->ddr_tbl_hdl,
(arb_t*)(arb_t)nati_obj_ptr->ddr_tbl_hdl,
};
ret = _smDelTbl(nati_obj_ptr, trigger, new_args);
@@ -1299,7 +1333,7 @@ static int _smClrTblHybrid(
uint32_t tbl_hdl = (uint32_t) args[0];
arb_t* new_args[] = {
(arb_t*) (nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
(arb_t*)(arb_t)(nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
tbl_hdl :
nati_obj_ptr->ddr_tbl_hdl,
};
@@ -1394,7 +1428,7 @@ static int _smWalkTblHybrid(
arb_t* wadp = (arb_t*) args[3];
arb_t* new_args[] = {
(arb_t*) (nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
(arb_t*)(arb_t)(nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
tbl_hdl :
nati_obj_ptr->ddr_tbl_hdl,
(arb_t*) which,
@@ -1490,7 +1524,7 @@ static int _smStatTblHybrid(
ipa_nati_tbl_stats* idx_stats_ptr = (ipa_nati_tbl_stats*) args[2];
arb_t* new_args[] = {
(arb_t*) (nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
(arb_t*)(arb_t)(nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
tbl_hdl :
nati_obj_ptr->ddr_tbl_hdl,
(arb_t*) nat_stats_ptr,
@@ -1659,7 +1693,7 @@ static int _smAddRuleHybrid(
uint32_t* rule_hdl = (uint32_t*) args[2];
arb_t* new_args[] = {
(arb_t*) (nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
(arb_t*)(arb_t)(nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
tbl_hdl :
nati_obj_ptr->ddr_tbl_hdl,
(arb_t*) clnt_rule,
@@ -1814,10 +1848,10 @@ static int _smDelRuleHybrid(
if ( ret == 0 )
{
arb_t* new_args[] = {
(arb_t*) (nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
(arb_t*)(arb_t)(nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
tbl_hdl :
nati_obj_ptr->ddr_tbl_hdl,
(arb_t*) new_rule_hdl,
(arb_t*)(arb_t)new_rule_hdl,
};
IPADBG("orig_rule_hdl(0x%08X) -> new_rule_hdl(0x%08X)\n",
@@ -2398,10 +2432,10 @@ static int _smGetTmStmpHybrid(
if ( ret == 0 )
{
arb_t* new_args[] = {
(arb_t*) (nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
(arb_t*)(arb_t)(nati_obj_ptr->curr_state == NATI_STATE_HYBRID) ?
tbl_hdl :
nati_obj_ptr->ddr_tbl_hdl,
(arb_t*) new_rule_hdl,
(arb_t*)(arb_t)new_rule_hdl,
(arb_t*) time_stamp,
};

71
kernel-tests/Android.bp Normal file
Melihat File

@@ -0,0 +1,71 @@
cc_binary {
name: "ipa-kernel-tests",
clang_cflags: [
"-Wno-missing-field-initializers",
"-Wno-int-to-pointer-cast",
"-Wno-int-conversion",
],
header_libs: ["device_kernel_headers"]+["qti_kernel_headers"]+["qti_ipa_test_kernel_headers"],
srcs: [
"DataPathTestFixture.cpp",
"DataPathTests.cpp",
"ExceptionsTestFixture.cpp",
"ExceptionsTests.cpp",
"ExceptionTests.cpp",
"Feature.cpp",
"Filtering.cpp",
"FilteringEthernetBridgingTestFixture.cpp",
"FilteringEthernetBridgingTests.cpp",
"FilteringTest.cpp",
"HeaderInsertion.cpp",
"HeaderInsertionTests.cpp",
"HeaderProcessingContextTestFixture.cpp",
"HeaderProcessingContextTests.cpp",
"HeaderRemovalTestFixture.cpp",
"HeaderRemovalTests.cpp",
"InterfaceAbstraction.cpp",
"IPAFilteringTable.cpp",
"IPAInterruptsTestFixture.cpp",
"IPAInterruptsTests.cpp",
"IPv4Packet.cpp",
"IPv6CTTest.cpp",
"Logger.cpp",
"main.cpp",
"MBIMAggregationTestFixtureConf11.cpp",
"MBIMAggregationTests.cpp",
"NatTest.cpp",
"Pipe.cpp",
"PipeTestFixture.cpp",
"PipeTests.cpp",
"RNDISAggregationTestFixture.cpp",
"RNDISAggregationTests.cpp",
"RoutingDriverWrapper.cpp",
"RoutingTests.cpp",
"TestBase.cpp",
"TestManager.cpp",
"TestsUtils.cpp",
"TLPAggregationTestFixture.cpp",
"TLPAggregationTests.cpp",
],
clang: true,
vendor: true,
rtti: true,
shared_libs:
["libc++",
"libipanat"],
relative_install_path: "ipa-kernel-tests",
}
IPA_KERNEL_TESTS_FILE_LIST = [
"README.txt",
"run.sh",
]

Melihat File

@@ -25,6 +25,40 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 "TestsUtils.h"
@@ -32,6 +66,7 @@
#include "HeaderInsertion.h"
#include "Filtering.h"
#include "IPAFilteringTable.h"
#include "IPv4Packet.h"
#include <string.h>
using namespace IPA;
@@ -371,7 +406,7 @@ private:
class IPAExceptionPacketTest006: public IPAExceptionTestFixture {
public:
IPAExceptionPacketTest006() {
m_name = "IPAExceptionPacketTest006"
m_name = "IPAExceptionPacketTest006";
m_description = "\
IPA Exception Test 006 - Test that when a packet with Internet Header Length < 5 Arrives, an exception packet is created and received & exception_pipe \
Test Generates a Packet with Internet Header Length (IHL == 4). \
@@ -466,7 +501,6 @@ private:
};
static IPAExceptionPacketTest001 ipaExceptionPacketTest001;
static IPAExceptionPacketTest002 ipaExceptionPacketTest002;
static IPAExceptionPacketTest003 ipaExceptionPacketTest003;
static IPAExceptionPacketTest006 ipaExceptionPacketTest006;

Melihat File

@@ -25,9 +25,43 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 "Routing.h"
#include "RoutingDriverWrapper.h"
#include "HeaderInsertion.h"
#include "Filtering.h"
#include "IPAFilteringTable.h"

Melihat File

@@ -25,6 +25,40 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 "RoutingDriverWrapper.h"

Melihat File

@@ -7938,14 +7938,6 @@ public:
virtual bool ModifyPackets()
{
uint32_t vlan_802_1Q_tag;
if (
(NULL == m_sendBuffer) ||
(NULL == m_sendBuffer2) ||
(NULL == m_sendBuffer3)
) {
printf("Error : %s was called with NULL Buffers\n", __FUNCTION__);
return false;
}
vlan_802_1Q_tag = ntohl(0x81002005); //VLAN ID == 5
memcpy(&m_sendBuffer[TAG_802_1Q_OFFSET], &vlan_802_1Q_tag, sizeof(vlan_802_1Q_tag));
@@ -8232,11 +8224,6 @@ private:
bool __ModifyPackets(int i)
{
int address;
if (NULL == m_sendBuffer)
{
printf ("Error : %s was called with NULL Buffer\n", __FUNCTION__);
return false;
}
address = ntohl(0xC0A80101 + i); // 192.168.1.(1+i)
memcpy(&m_sendBuffer[IPV4_DST_ADDR_OFFSET], &address, sizeof(address));
@@ -8365,14 +8352,6 @@ public:
virtual bool ModifyPackets()
{
int address;
if (
(NULL == m_sendBuffer) ||
(NULL == m_sendBuffer2) ||
(NULL == m_sendBuffer3)
) {
printf("Error : %s was called with NULL Buffers\n", __FUNCTION__);
return false;
}
address = ntohl(0x7F000001);//127.0.0.1
memcpy(&m_sendBuffer[IPV4_DST_ADDR_OFFSET], &address, sizeof(address));
@@ -8777,14 +8756,6 @@ public:
virtual bool ModifyPackets()
{
if (
(NULL == m_sendBuffer) ||
(NULL == m_sendBuffer2) ||
(NULL == m_sendBuffer3)
) {
printf("Error : %s was called with NULL Buffers\n", __FUNCTION__);
return false;
}
m_sendBuffer[DST_ADDR_LSB_OFFSET_IPV6] = 0xAA;
m_sendBuffer2[DST_ADDR_LSB_OFFSET_IPV6] = 0xAA;
m_sendBuffer3[DST_ADDR_LSB_OFFSET_IPV6] = 0xCC;

Melihat File

@@ -25,6 +25,40 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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 "RoutingDriverWrapper.h"
@@ -38,6 +72,7 @@
#include <errno.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <typeinfo>
#define IPV4_DST_ADDR_OFFSET (16)

Melihat File

@@ -25,6 +25,40 @@
* 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.
*
* Changes from Qualcomm Innovation Center are provided under the following license:
*
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted (subject to the limitations in the
* disclaimer below) 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 Qualcomm Innovation Center, Inc. nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE COPYRIGHT HOLDER 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
*/
#ifndef __IPA_TESTS_IPV4_PACKET__H__
@@ -48,7 +82,9 @@ public:
IPv4Packet(unsigned int size);
virtual ~IPv4Packet(void) = 0;
virtual ~IPv4Packet(void);
void FromByteStream(unsigned char *buffer, unsigned int length);
void ToNetworkByteStream(unsigned char *addr);
@@ -109,7 +145,7 @@ public:
TCPPacket(void);
~TCPPacket(void) {}
virtual ~TCPPacket(void) {}
protected:
@@ -128,7 +164,7 @@ class UDPPacket:public IPv4Packet
public:
UDPPacket(void);
~UDPPacket(void) {}
virtual ~UDPPacket(void) {}
protected:
@@ -147,7 +183,7 @@ class ICMPPacket:public IPv4Packet
public:
ICMPPacket(void);
~ICMPPacket(void) {}
virtual ~ICMPPacket(void) {}
virtual unsigned short GetSrcPort(void);

Melihat File

@@ -5170,7 +5170,73 @@ public:
Register(*this);
}
bool Run()
bool Setup()
{
return IpaRoutingBlockTestFixture:: Setup(true);
}
bool AddRules()
{
struct ipa_ioc_add_rt_rule_v2 *rt_rule;
struct ipa_rt_rule_add_v2 *rt_rule_entry;
const int NUM_RULES = 3;
rt_rule = (struct ipa_ioc_add_rt_rule_v2 *)
calloc(1, sizeof(struct ipa_ioc_add_rt_rule_v2));
if(!rt_rule) {
printf("fail\n");
return false;
}
rt_rule->rules = (uint64_t)calloc(3, sizeof(struct ipa_rt_rule_add_v2));
if(!rt_rule->rules) {
printf("fail\n");
return false;
}
rt_rule->commit = 1;
rt_rule->num_rules = NUM_RULES;
rt_rule->ip = IPA_IP_v4;
strlcpy(rt_rule->rt_tbl_name, "LAN", sizeof(rt_rule->rt_tbl_name));
rt_rule_entry = &(((struct ipa_rt_rule_add_v2 *)rt_rule->rules)[0]);
rt_rule_entry->at_rear = 0;
rt_rule_entry->rule.dst = IPA_CLIENT_TEST2_CONS;
rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
rt_rule_entry->rule.attrib.u.v4.dst_addr = 0xC0A802FF;
rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
rt_rule_entry->rule.ttl_update = 1;
rt_rule_entry = &(((struct ipa_rt_rule_add_v2 *)rt_rule->rules)[1]);
rt_rule_entry->at_rear = 0;
rt_rule_entry->rule.dst = IPA_CLIENT_TEST3_CONS;
rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
rt_rule_entry->rule.attrib.u.v4.dst_addr = 0xC0A802AA;
rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
rt_rule_entry->rule.ttl_update = 1;
rt_rule_entry = &(((struct ipa_rt_rule_add_v2 *)rt_rule->rules)[2]);
rt_rule_entry->at_rear = 1;
rt_rule_entry->rule.ttl_update = 0;
rt_rule_entry->rule.dst = IPA_CLIENT_TEST4_CONS;
if (false == m_routing.AddRoutingRule(rt_rule))
{
printf("Routing rule addition failed!\n");
return false;
}
printf("rt rule hdl1=%x\n", rt_rule_entry->rt_rule_hdl);
free(rt_rule);
InitFilteringBlock();
return true;
}
virtual bool Run()
{
bool res = false;
bool isSuccess = false;
@@ -5326,70 +5392,6 @@ public:
return pkt1_cmp_succ && pkt2_cmp_succ && pkt3_cmp_succ;
}
bool AddRules()
{
struct ipa_ioc_add_rt_rule_v2 *rt_rule;
struct ipa_rt_rule_add_v2 *rt_rule_entry;
const int NUM_RULES = 3;
rt_rule = (struct ipa_ioc_add_rt_rule_v2 *)
calloc(1, sizeof(struct ipa_ioc_add_rt_rule_v2));
if(!rt_rule) {
printf("fail\n");
return false;
}
rt_rule->rules = (uint64_t)calloc(3, sizeof(struct ipa_rt_rule_add_v2));
if(!rt_rule->rules) {
printf("fail\n");
return false;
}
rt_rule->commit = 1;
rt_rule->num_rules = NUM_RULES;
rt_rule->ip = IPA_IP_v4;
strlcpy(rt_rule->rt_tbl_name, "LAN", sizeof(rt_rule->rt_tbl_name));
rt_rule_entry = &(((struct ipa_rt_rule_add_v2 *)rt_rule->rules)[0]);
rt_rule_entry->at_rear = 0;
rt_rule_entry->rule.dst = IPA_CLIENT_TEST2_CONS;
// rt_rule_entry->rule.hdr_hdl = hdr_entry->hdr_hdl; // gidons, there is no support for header insertion / removal yet.
rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
rt_rule_entry->rule.attrib.u.v4.dst_addr = 0xC0A802FF;
rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
rt_rule_entry->rule.ttl_update = 1;
rt_rule_entry = &(((struct ipa_rt_rule_add_v2 *)rt_rule->rules)[1]);
rt_rule_entry->at_rear = 0;
rt_rule_entry->rule.dst = IPA_CLIENT_TEST3_CONS;
// rt_rule_entry->rule.hdr_hdl = hdr_entry->hdr_hdl; // gidons, there is no support for header insertion / removal yet.
rt_rule_entry->rule.attrib.attrib_mask = IPA_FLT_DST_ADDR;
rt_rule_entry->rule.attrib.u.v4.dst_addr = 0xC0A802AA;
rt_rule_entry->rule.attrib.u.v4.dst_addr_mask = 0xFFFFFFFF;
rt_rule_entry->rule.ttl_update = 1;
rt_rule_entry = &(((struct ipa_rt_rule_add_v2 *)rt_rule->rules)[2]);
rt_rule_entry->at_rear = 1;
rt_rule_entry->rule.ttl_update = 0;
rt_rule_entry->rule.dst = IPA_CLIENT_TEST4_CONS;
if (false == m_routing.AddRoutingRule(rt_rule))
{
printf("Routing rule addition failed!\n");
return false;
}
printf("rt rule hdl1=%x\n", rt_rule_entry->rt_rule_hdl);
free(rt_rule);
InitFilteringBlock();
return true;
}
};
/*--------------------------------------------------------------------------*/
@@ -6176,4 +6178,4 @@ static class IpaRoutingBlockTest040 ipaRoutingBlockTest040;
static class IpaRoutingBlockTest050 ipaRoutingBlockTest050;
static class IpaRoutingBlockTest051 ipaRoutingBlockTest051;
static class IpaRoutingBlockTest052 ipaRoutingBlockTest052;
static class IpaRoutingBlockTest053 ipaRoutingBlockTest053;
static class IpaRoutingBlockTest053 ipaRoutingBlockTest053;