• Home
Name
Date
Size
#Lines
LOC

..--

rootfs/03-May-2024-1,231794

.gitignoreD03-May-202424 32

Android.bpD03-May-2024501 2523

OWNERSD03-May-2024150 64

READMED03-May-20242.6 KiB7851

TEST_MAPPINGD03-May-2024152 1312

all_tests.pyD03-May-20242 KiB7345

all_tests.shD03-May-20242.7 KiB12180

anycast_test.pyD03-May-20243.4 KiB12370

bpf.pyD03-May-20249.7 KiB369256

bpf_test.pyD03-May-202422.2 KiB613421

build_rootfs.shD03-May-202419.7 KiB552431

csocket.pyD03-May-202411.1 KiB374255

csocket_test.pyD03-May-20242.7 KiB9558

cstruct.pyD03-May-202410.7 KiB304211

cstruct_test.pyD03-May-20247.7 KiB197144

genetlink.pyD03-May-20243.9 KiB12571

iproute.pyD03-May-202427 KiB781601

leak_test.pyD03-May-20242.7 KiB8641

multinetwork_base.pyD03-May-202426.2 KiB772544

multinetwork_test.pyD03-May-202448.8 KiB1,311910

namespace.pyD03-May-20246.9 KiB201123

neighbour_test.pyD03-May-202413.5 KiB384264

net_test.pyD03-May-202415.4 KiB545388

net_test.shD03-May-20245.5 KiB193111

netlink.pyD03-May-20249.6 KiB312202

netlink_test.pyD03-May-20241.3 KiB4319

nf_test.pyD03-May-20242.8 KiB8844

no_testD03-May-202412 20

packets.pyD03-May-20247.1 KiB204155

parallel_tests.shD03-May-20241.4 KiB6344

parameterization_test.pyD03-May-20242.5 KiB8444

pf_key.pyD03-May-202410.6 KiB338249

pf_key_test.pyD03-May-20244.5 KiB11777

ping6_test.pyD03-May-202431.9 KiB919671

ping6_test.shD03-May-2024266 175

policy_crash_test.pyD03-May-20244.9 KiB13745

removed_feature_test.pyD03-May-20243.4 KiB10264

resilient_rs_test.pyD03-May-20245.6 KiB178108

run_net_test.shD03-May-202417.5 KiB496339

sock_diag.pyD03-May-202414.5 KiB433328

sock_diag_test.pyD03-May-202444.2 KiB1,144853

srcaddr_selection_test.pyD03-May-202414.6 KiB359206

sysctls_test.pyD03-May-20241.7 KiB4822

tcp_fastopen_test.pyD03-May-20244.8 KiB14392

tcp_metrics.pyD03-May-20244.5 KiB13993

tcp_nuke_addr_test.pyD03-May-20243.4 KiB11273

tcp_repair_test.pyD03-May-202411.8 KiB342245

tcp_test.pyD03-May-20244.6 KiB13889

tun_twister.pyD03-May-20247.3 KiB215159

util.pyD03-May-20242.7 KiB7237

vts_kernel_net_tests.xmlD03-May-20241.4 KiB3114

xfrm.pyD03-May-202427.5 KiB772554

xfrm_algorithm_test.pyD03-May-202415.1 KiB397283

xfrm_base.pyD03-May-202411.2 KiB331222

xfrm_test.pyD03-May-202441.3 KiB1,011682

xfrm_tunnel_test.pyD03-May-202444.6 KiB1,149769

README

1                                 net_test v0.1
2                                 =============
3 
4 A simple framework for blackbox testing of kernel networking code.
5 
6 
7 Why use it?
8 ===========
9 
10 - Fast test / boot cycle.
11 - Access to host filesystem and networking via L2 bridging.
12 - Full Linux userland including Python, etc.
13 - Kernel bugs don't crash the system.
14 
15 
16 How to use it
17 =============
18 
19 cd <kerneldir>
20 path/to/net_test/run_net_test.sh <test>
21 
22 where <test> is the name of a test binary in the net_test directory. This can
23 be an x86 binary, a shell script, a Python script. etc.
24 
25 
26 How it works
27 ============
28 
29 net_test compiles the kernel to a user-mode linux binary, which runs as a
30 process on the host machine. It runs the binary to start a Linux "virtual
31 machine" whose root filesystem is the supplied Debian disk image. The machine
32 boots, mounts the root filesystem read-only, runs the specified test from init, and then drops to a shell.
33 
34 
35 Access to host filesystem
36 =========================
37 
38 The VM mounts the host filesystem at /host, so the test can be modified and
39 re-run without rebooting the VM.
40 
41 
42 Access to host networking
43 =========================
44 
45 Access to host networking is provided by tap interfaces. On the host, the
46 interfaces are named <user>TAP0, <user>TAP1, etc., where <user> is the first
47 10 characters of the username running net_test. (10 characters because
48 IFNAMSIZ = 16). On the guest, they are named eth0, eth1, etc.
49 
50 net_test does not do any networking setup beyond creating the tap interfaces.
51 IP connectivity can be provided on the host side by setting up a DHCP server
52 and NAT, sending IPv6 router advertisements, etc. By default, the VM has IPv6
53 privacy addresses disabled, so its IPv6 addresses can be predicted using a tool
54 such as ipv6calc.
55 
56 The provided filesystem contains a DHCPv4 client and simple networking
57 utilities such as ping[6], traceroute[6], and wget.
58 
59 The number of tap interfaces is currently hardcoded to two. To change this
60 number, modify run_net_test.sh.
61 
62 
63 Logging into the VM, installing packages, etc.
64 ==============================================
65 
66 net_test mounts the root filesystem read-only, and runs the test from init, but
67 since the filesystem contains a full Linux userland, it's possible to boot into
68 userland and modify the filesystem, for example to install packages using
69 apt-get install. Log in as root with no password. By default, the filesystem is
70 configured to perform DHCPv4 on eth0 and listen to RAs.
71 
72 
73 Bugs
74 ====
75 
76 Since the test mounts the filesystem read-only, tests cannot modify
77 /etc/resolv.conf and the system resolver is hardcoded to 8.8.8.8.
78