summaryrefslogtreecommitdiffstats
path: root/tests/shell/testcases/maps/named_ct_objects
blob: 61b87c1ab14a9e846a523e92e3eec9493aea9017 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash

# NFT_TEST_REQUIRES(NFT_TEST_HAVE_cttimeout)

$NFT -f /dev/stdin <<EOF || exit 1
table inet t {
	ct expectation exp1 {
		protocol tcp
		dport 9876
		timeout 1m
		size 12
		l3proto ip
	}

	ct expectation exp2 {
		protocol tcp
		dport 9876
		timeout 3s
		size 13
		l3proto ip6
	}

	ct helper myftp {
		type "ftp" protocol tcp
	}

	ct timeout dns {
		protocol tcp
		l3proto ip
		policy = { established : 3, close : 1 }
	}

	map exp {
		typeof ip saddr : ct expectation
		elements = { 192.168.2.2 : "exp1" }
	}

	map exp6 {
		typeof ip6 saddr : ct expectation
		flags interval
		elements = { dead:beef::/64 : "exp2" }
	}

	map helpobj {
		typeof ip6 saddr : ct helper
		flags interval
		elements = { dead:beef::/64 : "myftp" }
	}

	map timeoutmap {
		typeof ip daddr : ct timeout
		elements = { 192.168.0.1 : "dns" }
	}

	set helpname {
		typeof ct helper
		elements = { "ftp", "sip" }
	}

	chain y {
		ct expectation set ip saddr map @exp
		ct expectation set ip6 saddr map { dead::beef : "exp2" }
		ct expectation set ip6 daddr map { dead::beef : "exp2", feed::17 : "exp2" }
		ct expectation set ip6 daddr . tcp dport map { dead::beef . 123 : "exp2", feed::17 . 512 : "exp2" }
		ct helper set ip6 saddr map { dead::beef : "myftp", 1c3::c01d : "myftp" }
		ct helper set ip6 saddr map @helpobj
		ct timeout set ip daddr map @timeoutmap
		ct timeout set ip daddr map { 1.2.3.4 : "dns", 5.6.7.8 : "dns", 192.168.8.0/24 : "dns" }
		ct timeout set ip daddr map { 1.2.3.4-1.2.3.8 : "dns" }
		ct timeout set ip6 daddr map { dead::beef : "dns", 1ce::/64 : "dns" }
		ct helper @helpname accept
	}
}
EOF

must_fail()
{
	echo "Command should have failed: $1"
	exit 111
}


must_work()
{
	echo "Command should have succeeded: $1"
	exit 111
}

$NFT 'add rule inet t y ip saddr 192.168.1.1 ct timeout set "dns"' || must_work "dns timeout"

$NFT 'add rule inet t y ct helper set ip saddr map @helpobj' && must_fail "helper assignment, map key is ipv6_addr"
$NFT 'add rule inet t y ct helper set ip6 saddr map @helpname' && must_fail "helper assignment, not a map with objects"

exit 0