#!/bin/sh

################################################################################
##                                                                            ##
## Copyright (c) International Business Machines  Corp., 2005                 ##
##                                                                            ##
## This program is free software;  you can redistribute it and#or modify      ##
## it under the terms of the GNU General Public License as published by       ##
## the Free Software Foundation; either version 2 of the License, or          ##
## (at your option) any later version.                                        ##
##                                                                            ##
## 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.                                                          ##
##                                                                            ##
## You should have received a copy of the GNU General Public License          ##
## along with this program;  if not, write to the Free Software               ##
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    ##
##                                                                            ##
##                                                                            ##
################################################################################
#
# File:
#   tcp4-multi-diffnic02
#
# Description:
#   Verify that the kernel is not crashed with multiple connection to the
#   different NIC with the following condition:
#     - The version of IP is IPv4
#     - Network is not delayed
#     - IPsec(AH), transport mode
#
# Setup:
#   See ltp-yyyymmdd/testcases/network/stress/README
#
# Author:
#   Mitsuru Chinen <mitch@jp.ibm.com>
#
# History:
#	Oct 19 2005 - Created (Mitsuru Chinen)
#
#-----------------------------------------------------------------------
# Uncomment line below for debug output.
#trace_logic=${trace_logic:-"set -x"}
$trace_logic

#
# Variables -- Changed by each multi-diffnic testcase
# 

# The test case ID
TCID=tcp4-multi-diffnic02

# The version of IP
IP_VER=4

# true, if network is delayed
DO_NET_DELAY=false

# true, if ipsec is used
DO_IPSEC=true

# IPsec Protocol
IPSEC_PROTO=ah

# IPsec Mode
IPSEC_MODE=transport

. tcp4-multi-diffnic01
