4
4
"bytes"
5
5
"encoding/binary"
6
6
"errors"
7
+ "fmt"
7
8
"math"
8
9
"net"
9
10
"testing"
@@ -61,37 +62,37 @@ func TestFirewall_AddRule(t *testing.T) {
61
62
assert .Nil (t , fw .AddRule (true , fwProtoTCP , 1 , 1 , []string {}, "" , nil , "" , "" ))
62
63
// Make sure an empty rule creates structure but doesn't allow anything to flow
63
64
//TODO: ideally an empty rule would return an error
64
- assert .False (t , fw .InRules .TCP [1 ].Any )
65
- assert .Empty (t , fw .InRules .TCP [1 ].Groups )
66
- assert .Empty (t , fw .InRules .TCP [1 ].Hosts )
67
- assert .Nil (t , fw .InRules .TCP [1 ].CIDR .root .left )
68
- assert .Nil (t , fw .InRules .TCP [1 ].CIDR .root .right )
69
- assert .Nil (t , fw .InRules .TCP [1 ].CIDR .root .value )
65
+ assert .False (t , fw .InRules .TCP [1 ].Any . Any )
66
+ assert .Empty (t , fw .InRules .TCP [1 ].Any . Groups )
67
+ assert .Empty (t , fw .InRules .TCP [1 ].Any . Hosts )
68
+ assert .Nil (t , fw .InRules .TCP [1 ].Any . CIDR .root .left )
69
+ assert .Nil (t , fw .InRules .TCP [1 ].Any . CIDR .root .right )
70
+ assert .Nil (t , fw .InRules .TCP [1 ].Any . CIDR .root .value )
70
71
71
72
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
72
73
assert .Nil (t , fw .AddRule (true , fwProtoUDP , 1 , 1 , []string {"g1" }, "" , nil , "" , "" ))
73
- assert .False (t , fw .InRules .UDP [1 ].Any )
74
- assert .Contains (t , fw .InRules .UDP [1 ].Groups [0 ], "g1" )
75
- assert .Empty (t , fw .InRules .UDP [1 ].Hosts )
76
- assert .Nil (t , fw .InRules .UDP [1 ].CIDR .root .left )
77
- assert .Nil (t , fw .InRules .UDP [1 ].CIDR .root .right )
78
- assert .Nil (t , fw .InRules .UDP [1 ].CIDR .root .value )
74
+ assert .False (t , fw .InRules .UDP [1 ].Any . Any )
75
+ assert .Contains (t , fw .InRules .UDP [1 ].Any . Groups [0 ], "g1" )
76
+ assert .Empty (t , fw .InRules .UDP [1 ].Any . Hosts )
77
+ assert .Nil (t , fw .InRules .UDP [1 ].Any . CIDR .root .left )
78
+ assert .Nil (t , fw .InRules .UDP [1 ].Any . CIDR .root .right )
79
+ assert .Nil (t , fw .InRules .UDP [1 ].Any . CIDR .root .value )
79
80
80
81
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
81
82
assert .Nil (t , fw .AddRule (true , fwProtoICMP , 1 , 1 , []string {}, "h1" , nil , "" , "" ))
82
- assert .False (t , fw .InRules .ICMP [1 ].Any )
83
- assert .Empty (t , fw .InRules .ICMP [1 ].Groups )
84
- assert .Contains (t , fw .InRules .ICMP [1 ].Hosts , "h1" )
85
- assert .Nil (t , fw .InRules .ICMP [1 ].CIDR .root .left )
86
- assert .Nil (t , fw .InRules .ICMP [1 ].CIDR .root .right )
87
- assert .Nil (t , fw .InRules .ICMP [1 ].CIDR .root .value )
83
+ assert .False (t , fw .InRules .ICMP [1 ].Any . Any )
84
+ assert .Empty (t , fw .InRules .ICMP [1 ].Any . Groups )
85
+ assert .Contains (t , fw .InRules .ICMP [1 ].Any . Hosts , "h1" )
86
+ assert .Nil (t , fw .InRules .ICMP [1 ].Any . CIDR .root .left )
87
+ assert .Nil (t , fw .InRules .ICMP [1 ].Any . CIDR .root .right )
88
+ assert .Nil (t , fw .InRules .ICMP [1 ].Any . CIDR .root .value )
88
89
89
90
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
90
91
assert .Nil (t , fw .AddRule (false , fwProtoAny , 1 , 1 , []string {}, "" , ti , "" , "" ))
91
- assert .False (t , fw .OutRules .AnyProto [1 ].Any )
92
- assert .Empty (t , fw .OutRules .AnyProto [1 ].Groups )
93
- assert .Empty (t , fw .OutRules .AnyProto [1 ].Hosts )
94
- assert .NotNil (t , fw .OutRules .AnyProto [1 ].CIDR .Match (ip2int (ti .IP )))
92
+ assert .False (t , fw .OutRules .AnyProto [1 ].Any . Any )
93
+ assert .Empty (t , fw .OutRules .AnyProto [1 ].Any . Groups )
94
+ assert .Empty (t , fw .OutRules .AnyProto [1 ].Any . Hosts )
95
+ assert .NotNil (t , fw .OutRules .AnyProto [1 ].Any . CIDR .Match (ip2int (ti .IP )))
95
96
96
97
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
97
98
assert .Nil (t , fw .AddRule (true , fwProtoUDP , 1 , 1 , []string {"g1" }, "" , nil , "ca-name" , "" ))
@@ -104,28 +105,30 @@ func TestFirewall_AddRule(t *testing.T) {
104
105
// Set any and clear fields
105
106
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
106
107
assert .Nil (t , fw .AddRule (false , fwProtoAny , 0 , 0 , []string {"g1" , "g2" }, "h1" , ti , "" , "" ))
107
- assert .Equal (t , []string {"g1" , "g2" }, fw .OutRules .AnyProto [0 ].Groups [0 ])
108
- assert .Contains (t , fw .OutRules .AnyProto [0 ].Hosts , "h1" )
109
- assert .NotNil (t , fw .OutRules .AnyProto [0 ].CIDR .Match (ip2int (ti .IP )))
108
+ assert .Equal (t , []string {"g1" , "g2" }, fw .OutRules .AnyProto [0 ].Any . Groups [0 ])
109
+ assert .Contains (t , fw .OutRules .AnyProto [0 ].Any . Hosts , "h1" )
110
+ assert .NotNil (t , fw .OutRules .AnyProto [0 ].Any . CIDR .Match (ip2int (ti .IP )))
110
111
111
112
// run twice just to make sure
113
+ //TODO: these ANY rules should clear the CA firewall portion
112
114
assert .Nil (t , fw .AddRule (false , fwProtoAny , 0 , 0 , []string {"any" }, "" , nil , "" , "" ))
113
115
assert .Nil (t , fw .AddRule (false , fwProtoAny , 0 , 0 , []string {}, "any" , nil , "" , "" ))
114
- assert .True (t , fw .OutRules .AnyProto [0 ].Any )
115
- assert .Empty (t , fw .OutRules .AnyProto [0 ].Groups )
116
- assert .Empty (t , fw .OutRules .AnyProto [0 ].Hosts )
117
- assert .Nil (t , fw .OutRules .AnyProto [0 ].CIDR .root .left )
118
- assert .Nil (t , fw .OutRules .AnyProto [0 ].CIDR .root .right )
119
- assert .Nil (t , fw .OutRules .AnyProto [0 ].CIDR .root .value )
116
+ assert .True (t , fw .OutRules .AnyProto [0 ].Any .Any )
117
+ assert .Empty (t , fw .OutRules .AnyProto [0 ].Any .Groups )
118
+ assert .Empty (t , fw .OutRules .AnyProto [0 ].Any .Hosts )
119
+ assert .Nil (t , fw .OutRules .AnyProto [0 ].Any .CIDR .root .left )
120
+ assert .Nil (t , fw .OutRules .AnyProto [0 ].Any .CIDR .root .right )
121
+ assert .Nil (t , fw .OutRules .AnyProto [0 ].Any .CIDR .root .value )
122
+ fmt .Printf ("%+v\n " , fw .OutRules .AnyProto [0 ])
120
123
121
124
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
122
125
assert .Nil (t , fw .AddRule (false , fwProtoAny , 0 , 0 , []string {}, "any" , nil , "" , "" ))
123
- assert .True (t , fw .OutRules .AnyProto [0 ].Any )
126
+ assert .True (t , fw .OutRules .AnyProto [0 ].Any . Any )
124
127
125
128
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
126
129
_ , anyIp , _ := net .ParseCIDR ("0.0.0.0/0" )
127
130
assert .Nil (t , fw .AddRule (false , fwProtoAny , 0 , 0 , []string {}, "" , anyIp , "" , "" ))
128
- assert .True (t , fw .OutRules .AnyProto [0 ].Any )
131
+ assert .True (t , fw .OutRules .AnyProto [0 ].Any . Any )
129
132
130
133
// Test error conditions
131
134
fw = NewFirewall (time .Second , time .Minute , time .Hour , c )
@@ -209,11 +212,11 @@ func BenchmarkFirewallTable_match(b *testing.B) {
209
212
}
210
213
211
214
_ , n , _ := net .ParseCIDR ("172.1.1.1/32" )
212
- ft .TCP .addRule (10 , 10 , []string {"good-group" }, "good-host" , n , "" , "" )
213
- ft .TCP .addRule (10 , 10 , []string {"good-group2" }, "good-host" , n , "" , "" )
214
- ft .TCP .addRule (10 , 10 , []string {"good-group3" }, "good-host" , n , "" , "" )
215
- ft .TCP .addRule (10 , 10 , []string {"good-group4" }, "good-host" , n , "" , "" )
216
- ft .TCP .addRule (10 , 10 , []string {"good-group, good-group1" }, "good-host" , n , "" , "" )
215
+ _ = ft .TCP .addRule (10 , 10 , []string {"good-group" }, "good-host" , n , "" , "" )
216
+ _ = ft .TCP .addRule (10 , 10 , []string {"good-group2" }, "good-host" , n , "" , "" )
217
+ _ = ft .TCP .addRule (10 , 10 , []string {"good-group3" }, "good-host" , n , "" , "" )
218
+ _ = ft .TCP .addRule (10 , 10 , []string {"good-group4" }, "good-host" , n , "" , "" )
219
+ _ = ft .TCP .addRule (10 , 10 , []string {"good-group, good-group1" }, "good-host" , n , "" , "" )
217
220
cp := cert .NewCAPool ()
218
221
219
222
b .Run ("fail on proto" , func (b * testing.B ) {
@@ -281,7 +284,7 @@ func BenchmarkFirewallTable_match(b *testing.B) {
281
284
}
282
285
})
283
286
284
- ft .TCP .addRule (0 , 0 , []string {"good-group" }, "good-host" , n , "" , "" )
287
+ _ = ft .TCP .addRule (0 , 0 , []string {"good-group" }, "good-host" , n , "" , "" )
285
288
286
289
b .Run ("pass on ip with any port" , func (b * testing.B ) {
287
290
ip := ip2int (net .IPv4 (172 , 1 , 1 , 1 ))
0 commit comments