cisco_acl_intp 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +2 -2
  4. data/.travis.yml +4 -2
  5. data/Gemfile +7 -6
  6. data/README.md +23 -18
  7. data/Rakefile +11 -13
  8. data/cisco_acl_intp.gemspec +7 -7
  9. data/lib/cisco_acl_intp/acc.rb +111 -0
  10. data/lib/cisco_acl_intp/{ace.rb → ace_base.rb} +9 -8
  11. data/lib/cisco_acl_intp/{extended_ace.rb → ace_extended.rb} +8 -10
  12. data/lib/cisco_acl_intp/{standard_ace.rb → ace_standard.rb} +5 -5
  13. data/lib/cisco_acl_intp/acespec_base.rb +15 -0
  14. data/lib/cisco_acl_intp/{ace_ip.rb → acespec_ip.rb} +14 -22
  15. data/lib/cisco_acl_intp/{ace_other_qualifiers.rb → acespec_other_qualifiers.rb} +7 -7
  16. data/lib/cisco_acl_intp/{ace_port.rb → acespec_port.rb} +10 -13
  17. data/lib/cisco_acl_intp/{ace_port_opr.rb → acespec_port_opr.rb} +75 -73
  18. data/lib/cisco_acl_intp/{ace_port_opr_base.rb → acespec_port_opr_base.rb} +49 -34
  19. data/lib/cisco_acl_intp/{ace_proto.rb → acespec_proto.rb} +4 -4
  20. data/lib/cisco_acl_intp/{ace_proto_base.rb → acespec_proto_base.rb} +8 -8
  21. data/lib/cisco_acl_intp/{ace_srcdst.rb → acespec_srcdst.rb} +9 -8
  22. data/lib/cisco_acl_intp/{ace_tcp_flags.rb → acespec_tcp_flags.rb} +4 -4
  23. data/lib/cisco_acl_intp/acl.rb +1 -1
  24. data/lib/cisco_acl_intp/acl_base.rb +108 -80
  25. data/lib/cisco_acl_intp/{mono_function_acl.rb → acl_category_base.rb} +5 -5
  26. data/lib/cisco_acl_intp/acl_utils.rb +1 -1
  27. data/lib/cisco_acl_intp/parser.rb +388 -406
  28. data/lib/cisco_acl_intp/parser.ry +8 -3
  29. data/lib/cisco_acl_intp/parser_api.rb +4 -4
  30. data/lib/cisco_acl_intp/scanner.rb +8 -10
  31. data/lib/cisco_acl_intp/scanner_special_token_handler.rb +3 -3
  32. data/lib/cisco_acl_intp/version.rb +1 -1
  33. data/spec/cisco_acl_intp/{extended_ace_spec.rb → ace_extended_spec.rb} +157 -128
  34. data/spec/cisco_acl_intp/ace_spec.rb +21 -19
  35. data/spec/cisco_acl_intp/{standard_ace_spec.rb → ace_standard_spec.rb} +7 -11
  36. data/spec/cisco_acl_intp/{ace_ip_spec.rb → acespec_ip_spec.rb} +34 -34
  37. data/spec/cisco_acl_intp/{ace_other_qualifier_spec.rb → acespec_other_qualifier_spec.rb} +18 -18
  38. data/spec/cisco_acl_intp/acespec_port_operator_spec.rb +331 -0
  39. data/spec/cisco_acl_intp/{ace_port_spec.rb → acespec_port_spec.rb} +33 -33
  40. data/spec/cisco_acl_intp/{ace_proto_spec.rb → acespec_proto_spec.rb} +61 -61
  41. data/spec/cisco_acl_intp/{ace_srcdst_spec.rb → acespec_srcdst_spec.rb} +113 -54
  42. data/spec/cisco_acl_intp/{ace_tcp_flags_spec.rb → acespec_tcp_flags_spec.rb} +10 -10
  43. data/spec/cisco_acl_intp/acl_base_spec.rb +14 -12
  44. data/spec/cisco_acl_intp/{extended_acl_spec.rb → acl_extended_spec.rb} +28 -28
  45. data/spec/cisco_acl_intp/{standard_acl_spec.rb → acl_standard_spec.rb} +24 -23
  46. data/spec/cisco_acl_intp/cisco_acl_intp_spec.rb +1 -1
  47. data/spec/cisco_acl_intp/parser_spec.rb +12 -12
  48. data/spec/cisco_acl_intp/scanner_spec.rb +31 -36
  49. data/spec/parser_fullfill_patterns.rb +6 -7
  50. data/spec/spec_helper.rb +6 -6
  51. data/tools/check_acl.rb +1 -1
  52. metadata +60 -59
  53. data/lib/cisco_acl_intp/single_acl_base.rb +0 -137
  54. data/spec/cisco_acl_intp/ace_port_operator_spec.rb +0 -340
@@ -1,340 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require 'spec_helper'
3
-
4
- describe 'AcePortOpAny' do
5
- describe '#contains' do
6
- before(:all) do
7
- @aclop = AcePortOpAny.new
8
- @port1 = AceTcpProtoSpec.new(10)
9
- @port2 = AceTcpProtoSpec.new('www')
10
- end
11
-
12
- it 'should be true all conditions' do
13
- @aclop.contains?(AcePortOpAny.new).should be_true
14
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
15
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
16
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_true
17
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_true
18
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_true
19
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_true
20
- end
21
- end
22
- end
23
-
24
- describe 'AcePortOpStrictAny' do
25
- describe '#contains' do
26
- before(:all) do
27
- @aclop = AcePortOpStrictAny.new
28
- @port1 = AceTcpProtoSpec.new(10)
29
- @port2 = AceTcpProtoSpec.new('www')
30
- end
31
-
32
- it 'should be true when only ANY conditions' do
33
- @aclop.contains?(AcePortOpAny.new).should be_true
34
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
35
- end
36
-
37
- it 'should be false with other operators' do
38
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_false
39
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
40
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
41
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
42
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
43
- end
44
- end
45
- end
46
-
47
- describe 'AcePortOpEq' do
48
- describe '#contains' do
49
- before(:all) do
50
- @port1 = AceTcpProtoSpec.new(10)
51
- @port2 = AceTcpProtoSpec.new('www')
52
- @aclop = AcePortOpEq.new(@port1)
53
- end
54
-
55
- it 'should be true with ANY' do
56
- @aclop.contains?(AcePortOpAny.new).should be_true
57
- end
58
-
59
- it 'should be false with STRICT_ANY' do
60
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
61
- end
62
-
63
- it 'should be true when same eq/port operator' do
64
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
65
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
66
- end
67
-
68
- it 'should be false with other operator' do
69
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
70
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
71
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
72
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
73
- end
74
- end
75
- end
76
-
77
- describe 'AcePortOpNeq' do
78
- describe '#contains' do
79
- before(:all) do
80
- @port1 = AceTcpProtoSpec.new(10)
81
- @port2 = AceTcpProtoSpec.new('www')
82
- @port3 = AceTcpProtoSpec.new(443)
83
- @aclop = AcePortOpNeq.new(@port2)
84
- end
85
-
86
- it 'should be true with ANY' do
87
- @aclop.contains?(AcePortOpAny.new).should be_true
88
- end
89
-
90
- it 'should be false with STRICT_ANY' do
91
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
92
- end
93
-
94
- it 'should be checked with EQUAL' do
95
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
96
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
97
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_true
98
- end
99
-
100
- it 'should be checked with NOT_EQUAL' do
101
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
102
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_true
103
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
104
- end
105
-
106
- it 'should be checked with LOWER_THAN' do
107
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_true
108
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_true
109
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
110
- end
111
-
112
- it 'should be checked with GRATER_THAN' do
113
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
114
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_true
115
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_true
116
- end
117
-
118
- it 'should be checked with RANGE' do
119
- port2a = AceTcpProtoSpec.new(79)
120
- port2b = AceTcpProtoSpec.new(81)
121
- @aclop.contains?(AcePortOpRange.new(@port1, port2a)).should be_true
122
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
123
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_false
124
- @aclop.contains?(AcePortOpRange.new(port2b, @port3)).should be_true
125
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
126
- end
127
- end
128
- end
129
-
130
- describe 'AcePortOpLt' do
131
- describe '#contains' do
132
- before(:all) do
133
- @port1 = AceTcpProtoSpec.new(10)
134
- @port2 = AceTcpProtoSpec.new('www')
135
- @port3 = AceTcpProtoSpec.new(443)
136
- @port_max = AceTcpProtoSpec.new(65_535)
137
- @aclop = AcePortOpLt.new(@port2)
138
- end
139
-
140
- it 'should be true with ANY' do
141
- @aclop.contains?(AcePortOpAny.new).should be_true
142
- end
143
-
144
- it 'should be false with STRICT_ANY' do
145
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
146
- end
147
-
148
- it 'should be checked with EQUAL' do
149
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_true
150
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
151
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_false
152
- end
153
-
154
- it 'should be checked with NOT_EQUAL(1)' do
155
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
156
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_false
157
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
158
- end
159
-
160
- it 'should be checked with NOT_EQUAL(2)' do
161
- aclop = AcePortOpLt.new(@port_max)
162
- aclop.contains?(AcePortOpNeq.new(@port_max)).should be_true
163
- end
164
-
165
- it 'should be checked with LOWER_THAN' do
166
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_true
167
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_true
168
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
169
- end
170
-
171
- it 'should be checked with GRATER_THAN' do
172
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
173
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_false
174
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_false
175
- end
176
-
177
- it 'should be checked with RANGE' do
178
- port2a = AceTcpProtoSpec.new(79)
179
- port2b = AceTcpProtoSpec.new(81)
180
- @aclop.contains?(AcePortOpRange.new(@port1, port2a)).should be_true
181
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
182
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_false
183
- @aclop.contains?(AcePortOpRange.new(port2b, @port3)).should be_false
184
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
185
- end
186
- end
187
- end
188
-
189
- describe 'AcePortOpGt' do
190
- describe '#contains' do
191
- before(:all) do
192
- @port1 = AceTcpProtoSpec.new(10)
193
- @port2 = AceTcpProtoSpec.new('www')
194
- @port3 = AceTcpProtoSpec.new(443)
195
- @port_min = AceTcpProtoSpec.new(0)
196
- @aclop = AcePortOpGt.new(@port2)
197
- end
198
-
199
- it 'should be true with ANY' do
200
- @aclop.contains?(AcePortOpAny.new).should be_true
201
- end
202
-
203
- it 'should be false with STRICT_ANY' do
204
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
205
- end
206
-
207
- it 'should be checked with EQUAL' do
208
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_false
209
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_false
210
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_true
211
- end
212
-
213
- it 'should be checked with NOT_EQUAL(1)' do
214
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
215
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_false
216
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
217
- end
218
-
219
- it 'should be checked with NOT_EQUAL(2)' do
220
- aclop = AcePortOpGt.new(@port_min)
221
- aclop.contains?(AcePortOpNeq.new(@port_min)).should be_true
222
- end
223
-
224
- it 'should be checked with LOWER_THAN' do
225
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
226
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_false
227
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
228
- end
229
-
230
- it 'should be checked with GRATER_THAN' do
231
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
232
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_true
233
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_true
234
- end
235
-
236
- it 'should be checked with RANGE' do
237
- port2a = AceTcpProtoSpec.new(79)
238
- port2b = AceTcpProtoSpec.new(81)
239
- @aclop.contains?(AcePortOpRange.new(@port1, port2a)).should be_false
240
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
241
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_false
242
- @aclop.contains?(AcePortOpRange.new(port2b, @port3)).should be_true
243
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
244
- end
245
- end
246
- end
247
-
248
- describe 'AcePortOpRange' do
249
- describe '#contains' do
250
- before(:all) do
251
- @port1 = AceTcpProtoSpec.new(10)
252
- @port2 = AceTcpProtoSpec.new('www')
253
- @port3 = AceTcpProtoSpec.new(443)
254
- @port4 = AceTcpProtoSpec.new(8080)
255
-
256
- @port2a = AceTcpProtoSpec.new(79)
257
- @port2b = AceTcpProtoSpec.new(81)
258
- @port3a = AceTcpProtoSpec.new(442)
259
- @port3b = AceTcpProtoSpec.new(444)
260
-
261
- @port_max = AceTcpProtoSpec.new(65_535)
262
- @port_min = AceTcpProtoSpec.new(0)
263
-
264
- @aclop = AcePortOpRange.new(@port2, @port3)
265
- end
266
-
267
- it 'should be true with ANY' do
268
- @aclop.contains?(AcePortOpAny.new).should be_true
269
- end
270
-
271
- it 'should be false with STRICT_ANY' do
272
- @aclop.contains?(AcePortOpStrictAny.new).should be_true
273
- end
274
-
275
- it 'should be checked with EQUAL' do
276
- @aclop.contains?(AcePortOpEq.new(@port1)).should be_false
277
- @aclop.contains?(AcePortOpEq.new(@port2)).should be_true
278
- @aclop.contains?(AcePortOpEq.new(@port3)).should be_true
279
- @aclop.contains?(AcePortOpEq.new(@port4)).should be_false
280
- end
281
-
282
- it 'should be checked with NOT_EQUAL(1)' do
283
- @aclop.contains?(AcePortOpNeq.new(@port1)).should be_false
284
- @aclop.contains?(AcePortOpNeq.new(@port2)).should be_false
285
- @aclop.contains?(AcePortOpNeq.new(@port3)).should be_false
286
- @aclop.contains?(AcePortOpNeq.new(@port4)).should be_false
287
- end
288
-
289
- it 'should be checked with NOT_EQUAL(2)' do
290
- aclop = AcePortOpRange.new(@port_min, @port_max)
291
- aclop.contains?(AcePortOpNeq.new(@port_min)).should be_true
292
- aclop.contains?(AcePortOpNeq.new(@port_max)).should be_true
293
- end
294
-
295
- it 'should be checked with LOWER_THAN(1)' do
296
- @aclop.contains?(AcePortOpLt.new(@port1)).should be_false
297
- @aclop.contains?(AcePortOpLt.new(@port2)).should be_false
298
- @aclop.contains?(AcePortOpLt.new(@port3)).should be_false
299
- @aclop.contains?(AcePortOpLt.new(@port4)).should be_false
300
- end
301
-
302
- it 'should be checked with LOWER_THAN(2)' do
303
- aclop = AcePortOpRange.new(@port_min, @port3)
304
- aclop.contains?(AcePortOpLt.new(@port3a)).should be_true
305
- aclop.contains?(AcePortOpLt.new(@port3)).should be_false
306
- aclop.contains?(AcePortOpLt.new(@port3b)).should be_false
307
- end
308
-
309
- it 'should be checked with GRATER_THAN(1)' do
310
- @aclop.contains?(AcePortOpGt.new(@port1)).should be_false
311
- @aclop.contains?(AcePortOpGt.new(@port2)).should be_false
312
- @aclop.contains?(AcePortOpGt.new(@port3)).should be_false
313
- @aclop.contains?(AcePortOpGt.new(@port4)).should be_false
314
- end
315
-
316
- it 'should be checked with GRATER_THAN(2)' do
317
- aclop = AcePortOpRange.new(@port2, @port_max)
318
- aclop.contains?(AcePortOpGt.new(@port2a)).should be_false
319
- aclop.contains?(AcePortOpGt.new(@port2)).should be_false
320
- aclop.contains?(AcePortOpGt.new(@port2b)).should be_true
321
- end
322
-
323
- it 'should be checked with RANGE' do
324
- @aclop.contains?(AcePortOpRange.new(@port1, @port2a)).should be_false
325
- @aclop.contains?(AcePortOpRange.new(@port1, @port2)).should be_false
326
- @aclop.contains?(AcePortOpRange.new(@port2, @port3a)).should be_true
327
- @aclop.contains?(AcePortOpRange.new(@port2, @port3)).should be_true
328
- @aclop.contains?(AcePortOpRange.new(@port2, @port3b)).should be_false
329
- @aclop.contains?(AcePortOpRange.new(@port1, @port3)).should be_false
330
- @aclop.contains?(AcePortOpRange.new(@port2, @port4)).should be_false
331
- @aclop.contains?(AcePortOpRange.new(@port1, @port4)).should be_false
332
- end
333
- end
334
- end
335
-
336
- ### Local variables:
337
- ### mode: Ruby
338
- ### coding: utf-8-unix
339
- ### indent-tabs-mode: nil
340
- ### End: