tools/testing/selftests/net/netfilter/nft_nat.sh

Source file repositories/reference/linux-study-clean/tools/testing/selftests/net/netfilter/nft_nat.sh

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/net/netfilter/nft_nat.sh
Extension
.sh
Size
31470 bytes
Lines
1228
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

#!/bin/bash
#
# This test is for basic NAT functionality: snat, dnat, redirect, masquerade.
#

source lib.sh

ret=0
test_inet_nat=true

checktool "nft --version" "run test without nft tool"
checktool "socat -h" "run test without socat"

cleanup()
{
	ip netns pids "$ns0" | xargs kill 2>/dev/null
	ip netns pids "$ns1" | xargs kill 2>/dev/null
	ip netns pids "$ns2" | xargs kill 2>/dev/null

	rm -f "$INFILE" "$OUTFILE"

	cleanup_all_ns
}

trap cleanup EXIT

INFILE=$(mktemp)
OUTFILE=$(mktemp)

setup_ns ns0 ns1 ns2

if ! ip link add veth0 netns "$ns0" type veth peer name eth0 netns "$ns1" > /dev/null 2>&1;then
    echo "SKIP: No virtual ethernet pair device support in kernel"
    exit $ksft_skip
fi
ip link add veth1 netns "$ns0" type veth peer name eth0 netns "$ns2"

ip -net "$ns0" link set veth0 up
ip -net "$ns0" addr add 10.0.1.1/24 dev veth0
ip -net "$ns0" addr add dead:1::1/64 dev veth0 nodad

ip -net "$ns0" link set veth1 up
ip -net "$ns0" addr add 10.0.2.1/24 dev veth1
ip -net "$ns0" addr add dead:2::1/64 dev veth1 nodad

do_config()
{
	ns="$1"
	subnet="$2"

	ip -net "$ns" link set eth0 up
	ip -net "$ns" addr add "10.0.$subnet.99/24" dev eth0
	ip -net "$ns" route add default via "10.0.$subnet.1"
	ip -net "$ns" addr add "dead:$subnet::99/64" dev eth0 nodad
	ip -net "$ns" route add default via "dead:$subnet::1"
}

do_config "$ns1" 1
do_config "$ns2" 2

bad_counter()
{
	local ns=$1
	local counter=$2
	local expect=$3
	local tag=$4

	echo "ERROR: $counter counter in $ns has unexpected value (expected $expect) at $tag" 1>&2
	ip netns exec "$ns" nft list counter inet filter "$counter" 1>&2
}

Annotation

Implementation Notes