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
|