iof-bird-daemon / filter / test.conf @ 04632fd7
History | View | Annotate | Download (15.9 KB)
1 |
|
---|---|
2 |
/* |
3 |
* This is an example configuration file. |
4 |
* FIXME: add all examples from docs here. |
5 |
*/ |
6 |
|
7 |
# Yet another comment |
8 |
|
9 |
router id 62.168.0.1; |
10 |
|
11 |
define xyzzy = (120+10); |
12 |
define '1a-a1' = (20+10); |
13 |
define one = 1; |
14 |
define ten = 10; |
15 |
|
16 |
define p23 = (2, 3); |
17 |
define ip1222 = 1.2.2.2; |
18 |
|
19 |
define net10 = 10.0.0.0/8; |
20 |
define netdoc = 2001:db8::/32; |
21 |
|
22 |
|
23 |
function onef(int a) |
24 |
{ |
25 |
return 1; |
26 |
} |
27 |
|
28 |
|
29 |
function 'mkpair-a'(int a) |
30 |
{ |
31 |
return (1, a); |
32 |
} |
33 |
|
34 |
function mkpath(int a; int b) |
35 |
{ |
36 |
return [= a b 3 2 1 =]; |
37 |
} |
38 |
|
39 |
function callme(int arg1; int arg2) |
40 |
int local1; |
41 |
int local2; |
42 |
int i; |
43 |
{ |
44 |
printn "Function callme called arguments ", arg1, " and ", arg2, ": " ; |
45 |
i = arg2; |
46 |
|
47 |
case arg1 { |
48 |
11, 1, 111: printn "jedna, "; printn "jedna"; |
49 |
(one+onef(2)): printn "dva, "; printn "jeste jednou dva"; |
50 |
(2+one) .. 5: if arg2 < 3 then printn "tri az pet"; |
51 |
else: printn "neco jineho"; |
52 |
} |
53 |
print; |
54 |
} |
55 |
|
56 |
function fifteen() |
57 |
{ |
58 |
print "fifteen called"; |
59 |
return 15; |
60 |
} |
61 |
|
62 |
/* |
63 |
roa table rl |
64 |
{ |
65 |
roa 10.110.0.0/16 max 16 as 1000; |
66 |
roa 10.120.0.0/16 max 24 as 1000; |
67 |
roa 10.130.0.0/16 max 24 as 2000; |
68 |
roa 10.130.128.0/18 max 24 as 3000; |
69 |
} |
70 |
|
71 |
function test_roa() |
72 |
{ |
73 |
# cannot be tested in __startup(), sorry |
74 |
print "Testing ROA"; |
75 |
print "Should be true: ", roa_check(rl, 10.10.0.0/16, 1000) = ROA_UNKNOWN, |
76 |
" ", roa_check(rl, 10.0.0.0/8, 1000) = ROA_UNKNOWN, |
77 |
" ", roa_check(rl, 10.110.0.0/16, 1000) = ROA_VALID, |
78 |
" ", roa_check(rl, 10.110.0.0/16, 2000) = ROA_INVALID, |
79 |
" ", roa_check(rl, 10.110.32.0/20, 1000) = ROA_INVALID, |
80 |
" ", roa_check(rl, 10.120.32.0/20, 1000) = ROA_VALID; |
81 |
print "Should be true: ", roa_check(rl, 10.120.32.0/20, 2000) = ROA_INVALID, |
82 |
" ", roa_check(rl, 10.120.32.32/28, 1000) = ROA_INVALID, |
83 |
" ", roa_check(rl, 10.130.130.0/24, 1000) = ROA_INVALID, |
84 |
" ", roa_check(rl, 10.130.130.0/24, 2000) = ROA_VALID, |
85 |
" ", roa_check(rl, 10.130.30.0/24, 3000) = ROA_INVALID, |
86 |
" ", roa_check(rl, 10.130.130.0/24, 3000) = ROA_VALID; |
87 |
} |
88 |
*/ |
89 |
|
90 |
function path_test() |
91 |
bgpmask pm1; |
92 |
bgpmask pm2; |
93 |
bgppath p2; |
94 |
clist l; |
95 |
clist l2; |
96 |
eclist el; |
97 |
eclist el2; |
98 |
{ |
99 |
pm1 = / 4 3 2 1 /; |
100 |
pm2 = [= 4 3 2 1 =]; |
101 |
print "Testing path masks: ", pm1, " ", pm2; |
102 |
p2 = prepend( + empty +, 1 ); |
103 |
p2 = prepend( p2, 2 ); |
104 |
p2 = prepend( p2, 3 ); |
105 |
p2 = prepend( p2, 4 ); |
106 |
print "Testing paths: ", p2; |
107 |
print "Should be true: ", p2 ~ pm1, " ", p2 ~ pm2, " ", 3 ~ p2, " ", p2 ~ [2, 10..20], " ", p2 ~ [4, 10..20]; |
108 |
print "4 = ", p2.len; |
109 |
p2 = prepend( p2, 5 ); |
110 |
print "Should be false: ", p2 ~ pm1, " ", p2 ~ pm2, " ", 10 ~ p2, " ", p2 ~ [8, ten..(2*ten)]; |
111 |
print "Should be true: ", p2 ~ / ? 4 3 2 1 /, " ", p2, " ", / ? 4 3 2 1 /; |
112 |
print "Should be true: ", p2 ~ [= * 4 3 * 1 =], " ", p2, " ", [= * 4 3 * 1 =]; |
113 |
print "Should be true: ", p2 ~ [= (3+2) (2*2) 3 2 1 =], " ", p2 ~ mkpath(5, 4); |
114 |
print "Should be true: ", p2.len = 5, " ", p2.first = 5, " ", p2.last = 1; |
115 |
print "5 = ", p2.len; |
116 |
print "Delete 3: ", delete(p2, 3); |
117 |
print "Filter 1-3: ", filter(p2, [1..3]); |
118 |
|
119 |
pm1 = [= 1 2 * 3 4 5 =]; |
120 |
p2 = prepend( + empty +, 5 ); |
121 |
p2 = prepend( p2, 4 ); |
122 |
p2 = prepend( p2, 3 ); |
123 |
p2 = prepend( p2, 3 ); |
124 |
p2 = prepend( p2, 2 ); |
125 |
p2 = prepend( p2, 1 ); |
126 |
print "Should be true: ", p2 ~ pm1, " ", p2, " ", pm1; |
127 |
print "Delete 3: ", delete(p2, 3); |
128 |
print "Delete 4-5: ", delete(p2, [4..5]); |
129 |
|
130 |
l = - empty -; |
131 |
print "Should be false in this special case: ", l ~ [(*,*)]; |
132 |
l = add( l, (one,2) ); |
133 |
print "Should be always true: ", l ~ [(*,*)]; |
134 |
l = add( l, (2,one+2) ); |
135 |
print "Community list (1,2) (2,3) ", l; |
136 |
print "Should be true: ", (2,3) ~ l, " ", l ~ [(1,*)], " ", l ~ [p23]," ", l ~ [(2,2..3)], " ", l ~ [(1,1..2)], " ", l ~ [(1,1)..(1,2)]; |
137 |
l = add( l, (2,5) ); |
138 |
l = add( l, (5,one) ); |
139 |
l = add( l, (6,one) ); |
140 |
l = add( l, (one,one) ); |
141 |
l = delete( l, [(5,1),(6,one),(one,1)] ); |
142 |
l = delete( l, [(5,one),(6,one)] ); |
143 |
l = filter( l, [(1,*)] ); |
144 |
print "Community list (1,2) ", l; |
145 |
print "Should be false: ", (2,3) ~ l, " ", l ~ [(2,*)], " ", l ~ [(one,3..6)]; |
146 |
print "Should be always true: ", l ~ [(*,*)]; |
147 |
l = add( l, (3,one) ); |
148 |
l = add( l, (one+one+one,one+one) ); |
149 |
l = add( l, (3,3) ); |
150 |
l = add( l, (3,4) ); |
151 |
l = add( l, (3,5) ); |
152 |
l2 = filter( l, [(3,*)] ); |
153 |
l = delete( l, [(3,2..4)] ); |
154 |
print "Community list (1,2) (3,1) (3,5) ", l, " len: ", l.len; |
155 |
l = add( l, (3,2) ); |
156 |
l = add( l, (4,5) ); |
157 |
print "Community list (1,2) (3,1) (3,2) (3,5) (4,5) ", l, " len: ", l.len; |
158 |
print "Should be true: ", l ~ [(*,2)], " ", l ~ [(*,5)], " ", l ~ [(*, one)]; |
159 |
print "Should be false: ", l ~ [(*,3)], " ", l ~ [(*,(one+6))], " ", l ~ [(*, (one+one+one))]; |
160 |
l = delete( l, [(*,(one+onef(3)))] ); |
161 |
l = delete( l, [(*,(4+one))] ); |
162 |
print "Community list (3,1) ", l; |
163 |
l = delete( l, [(*,(onef(5)))] ); |
164 |
print "Community list empty ", l; |
165 |
l2 = add( l2, (3,6) ); |
166 |
l = filter( l2, [(3,1..4)] ); |
167 |
l2 = filter( l2, [(3,3..6)] ); |
168 |
print "clist A (1..4): ", l; |
169 |
print "clist B (3..6): ", l2; |
170 |
print "clist A union B: ", add( l2, l ); |
171 |
print "clist A isect B: ", filter( l, l2 ); |
172 |
print "clist A \ B: ", delete( l, l2 ); |
173 |
|
174 |
el = -- empty --; |
175 |
el = add(el, (rt, 10, 20)); |
176 |
el = add(el, (ro, 10.20.30.40, 100)); |
177 |
el = add(el, (ro, 11.21.31.41.mask(16), 200)); |
178 |
print "EC list (rt, 10, 20) (ro, 10.20.30.40, 100) (ro, 11.21.0.0, 200):"; |
179 |
print el; |
180 |
print "EC len: ", el.len; |
181 |
el = delete(el, (rt, 10, 20)); |
182 |
el = delete(el, (rt, 10, 30)); |
183 |
el = add(el, (unknown 2, ten, 1)); |
184 |
el = add(el, (unknown 5, ten, 1)); |
185 |
el = add(el, (rt, ten, one+one)); |
186 |
el = add(el, (rt, 10, 3)); |
187 |
el = add(el, (rt, 10, 4)); |
188 |
el = add(el, (rt, 10, 5)); |
189 |
el = add(el, (generic, 0x2000a, 3*ten)); |
190 |
el = delete(el, [(rt, 10, 2..ten)]); |
191 |
print "EC list (ro, 10.20.30.40, 100) (ro, 11.21.0.0, 200) (rt, 10, 1) (unknown 0x5, 10, 1) (rt, 10, 30):"; |
192 |
print el; |
193 |
el = filter(el, [(rt, 10, *)]); |
194 |
print "EC list (rt, 10, 1) (rt, 10, 30): ", el; |
195 |
print "Testing EC list, true: ", (rt, 10, 1) ~ el, " ", el ~ [(rt, 10, ten..40)]; |
196 |
print "Testing EC list, false: ", (rt, 10, 20) ~ el, " ", (ro, 10.20.30.40, 100) ~ el, " ", el ~ [(rt, 10, 35..40)], " ", el ~ [(ro, 10, *)]; |
197 |
el = add(el, (rt, 10, 40)); |
198 |
el2 = filter(el, [(rt, 10, 20..40)] ); |
199 |
el2 = add(el2, (rt, 10, 50)); |
200 |
print "eclist A (1,30,40): ", el; |
201 |
print "eclist B (30,40,50): ", el2; |
202 |
print "eclist A union B: ", add( el2, el ); |
203 |
print "eclist A isect B: ", filter( el, el2 ); |
204 |
print "eclist A \ B: ", delete( el, el2 ); |
205 |
|
206 |
# test_roa(); |
207 |
} |
208 |
|
209 |
function bla() |
210 |
{ |
211 |
print "fifteen called"; |
212 |
return 15; |
213 |
} |
214 |
|
215 |
define four=4; |
216 |
define onetwo=1.2.3.4; |
217 |
|
218 |
function __test1() |
219 |
{ |
220 |
if source ~ [ RTS_BGP, RTS_STATIC ] then { |
221 |
# ospf_metric1 = 65535; |
222 |
# ospf_metric2 = 1000; |
223 |
ospf_tag = 0x12345678; |
224 |
accept; |
225 |
} reject; |
226 |
} |
227 |
|
228 |
function __test2() |
229 |
{ |
230 |
if source ~ [ RTS_BGP, RTS_STATIC ] then { |
231 |
# ospf_metric1 = 65535; |
232 |
# ospf_metric2 = 1000; |
233 |
ospf_tag = 0x12345678; |
234 |
accept; |
235 |
} reject; |
236 |
} |
237 |
|
238 |
function test_pxset(prefix set pxs) |
239 |
{ |
240 |
print pxs; |
241 |
print " must be true: ", net10 ~ pxs, ",", 10.0.0.0/10 ~ pxs, ",", 10.0.0.0/12 ~ pxs, ",", |
242 |
20.0.0.0/24 ~ pxs, ",", 20.0.40.0/24 ~ pxs, ",", 20.0.0.0/26 ~ pxs, ",", |
243 |
20.0.100.0/26 ~ pxs, ",", 20.0.0.0/28 ~ pxs, ",", 20.0.255.0/28 ~ pxs; |
244 |
print " must be false: ", 10.0.0.0/7 ~ pxs, ",", 10.0.0.0/13 ~ pxs, ",", 10.0.0.0/16 ~ pxs, ",", |
245 |
20.0.0.0/16 ~ pxs, ",", 20.0.0.0/23 ~ pxs, ",", 20.0.0.0/29 ~ pxs, ",", |
246 |
11.0.0.0/10 ~ pxs, ",", 20.1.0.0/26 ~ pxs; |
247 |
} |
248 |
|
249 |
function test_undef(int a) |
250 |
int b; |
251 |
{ |
252 |
if a = 3 |
253 |
then b = 4; |
254 |
print "Defined: ", a, " ", b, " ", defined(b); |
255 |
} |
256 |
|
257 |
define is1 = [ one, (2+1), (6-one), 8, 11, 15, 17, 19]; |
258 |
define is2 = [(17+2), 17, 15, 11, 8, 5, 3, 2]; |
259 |
define is3 = [5, 17, 2, 11, 8, 15, 3, 19]; |
260 |
|
261 |
define pxs2 = [ 10.0.0.0/16{8,12}, 20.0.0.0/16{24,28} ]; |
262 |
|
263 |
define ecs2 = [(rt, ten, (one+onef(0))*10), (ro, 100000, 100..200), (rt, 12345, *)]; |
264 |
|
265 |
|
266 |
function __startup() |
267 |
int i; |
268 |
bool b; |
269 |
prefix px; |
270 |
ip p; |
271 |
pair pp; |
272 |
quad qq; |
273 |
ec cc; |
274 |
int set is; |
275 |
pair set ps; |
276 |
ec set ecs; |
277 |
ip set ips; |
278 |
prefix set pxs; |
279 |
string st; |
280 |
{ |
281 |
print "1a-a1 = 30: ", '1a-a1'; |
282 |
print "Testing filter language:"; |
283 |
i = four; |
284 |
i = 12*100 + 60/2 + i; |
285 |
i = ( i + 0 ); |
286 |
print " arithmetics: 1234 = ", i; |
287 |
printn " if statements "; |
288 |
print "what happens here?"; |
289 |
printn "."; |
290 |
if (i = 4) then { print "*** FAIL: if 0"; quitbird; } else printn "."; |
291 |
# if !(i = 3) then { print "*** FAIL: if 0"; quitbird; } else printn "."; |
292 |
if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; } |
293 |
# if 1 <= 1 then printn "."; else { print "*** FAIL: test 3"; } |
294 |
if 1234 < 1234 then { print "*** FAIL: test 4"; quitbird; } else print "ok"; |
295 |
is = [ 2, 3, 4, 7..11 ]; |
296 |
|
297 |
print "must be true: ", 1 = 1, " ", 1 != (0,1), " ", 1 != "a", " ", +empty+ = +empty+, " ", -empty- = -empty-, " ", --empty-- = --empty-- , |
298 |
" ", [1,4..10,20] = [1,4..10,20] , " ", [ 10.0.0.0/8{ 15 , 17 } ] = [ 10.0.0.0/8{ 15 , 17 } ]; |
299 |
print "must be false: ", 1 != 1, " ", 1 = (0,1), " ", 1 = "a", " ", +empty+ = -empty-, " ", -empty- = --empty--, " ", --empty-- = +empty+ , |
300 |
" ", [1,2] = [1,3], " ", [ 10.0.0.0/8{ 15 , 17 } ] = [ 11.0.0.0/8{ 15 , 17 } ]; |
301 |
|
302 |
print " must be true: ", 1.2.0.0/16 ~ [ 1.0.0.0/8{ 15 , 17 } ]; |
303 |
print " data types; must be true: ", 1.2.3.4 = 1.2.3.4, ",", 1 ~ [1,2,3], ",", 5 ~ [1..20], ",", 10 ~ is, ",", 2 ~ [ 1, 2, 3 ], ",", 5 ~ [ 4 .. 7 ], ",", 1.2.3.4 ~ [ 1.2.3.3..1.2.3.5 ], ",", 1.2.3.4 ~ 1.0.0.0/8, ",", 1.0.0.0/8 ~ 1.0.0.0/8, ",", 1.0.0.0/8 ~ [ 1.0.0.0/8+ ]; |
304 |
print " must be true: ", true && true, ",", true || false, ",", ! false && ! false && true, ",", 1 < 2 && 1 != 3, ",", true && true && ! false, ",", true || 1+"a", ",", !(false && 1+"a"); |
305 |
|
306 |
print " must be true: ", defined(1), ",", defined(1.2.3.4), ",", 1 != 2, ",", 1 <= 2; |
307 |
print " data types: must be false: ", 1 ~ [ 2, 3, 4 ], ",", 5 ~ is, ",", 1.2.3.4 ~ [ 1.2.3.3, 1.2.3.5 ], ",", (1,2) > (2,2), ",", (1,1) > (1,1), ",", 1.0.0.0/9 ~ [ 1.0.0.0/8- ], ",", 1.2.0.0/17 ~ [ 1.0.0.0/8{ 15 , 16 } ], ",", true && false; |
308 |
|
309 |
|
310 |
print " must be true: ", 1 ~ is1, " ", 3 ~ is1, " ", 5 ~ is1; |
311 |
print " must be true: ", (one+2) ~ is1, " ", 2 ~ is2, " ", 2 ~ is3; |
312 |
print " must be false: ", 4 ~ is1, " ", 4 ~ is2, " ", 4 ~ is3; |
313 |
print " must be false: ", 10 ~ is1, " ", 10 ~ is2, " ", 10 ~ is3; |
314 |
print " must be true: ", 15 ~ is1, " ", 15 ~ is2, " ", 15 ~ is3; |
315 |
print " must be false: ", 18 ~ is1, " ", 18 ~ is2, " ", 18 ~ is3; |
316 |
print " must be true: ", 19 ~ is1, " ", 19 ~ is2, " ", 19 ~ is3; |
317 |
print " must be false: ", 20 ~ is1, " ", 20 ~ is2, " ", 20 ~ is3; |
318 |
|
319 |
px = 1.2.0.0/18; |
320 |
print "Testing prefixes: 1.2.0.0/18 = ", px; |
321 |
print " must be true: ", 192.168.0.0/16 ~ 192.168.0.0/16, " ", 192.168.0.0/17 ~ 192.168.0.0/16, " ", 192.168.254.0/24 ~ 192.168.0.0/16, " ", netdoc ~ 2001::/16; |
322 |
print " must be false: ", 192.168.0.0/15 ~ 192.168.0.0/16, " ", 192.160.0.0/17 ~ 192.168.0.0/16, " ", px ~ netdoc; |
323 |
|
324 |
p = 127.1.2.3; |
325 |
print "Testing mask : 127.0.0.0 = ", p.mask(8); |
326 |
|
327 |
pp = (1, 2); |
328 |
print "Testing pairs: (1,2) = ", (1,2), " = ", pp, " = ", (1,1+1), " = ", 'mkpair-a'(2); |
329 |
print " must be true: ", (1,2) = (1,1+1); |
330 |
print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC, " ", |
331 |
", true: ", RTS_STATIC ~ [RTS_STATIC, RTS_DEVICE], |
332 |
", false: ", RTS_BGP ~ [RTS_STATIC, RTS_DEVICE]; |
333 |
|
334 |
ps = [(1,(one+one)), (3,4)..(4,8), (5,*), (6,3..6)]; |
335 |
print "Pair set: ", ps; |
336 |
print "Testing pair set, true: ", pp ~ ps, " ", (3,5) ~ ps, " ", (4,1) ~ ps, " ", (5,4) ~ ps, " ", (5,65535) ~ ps, " ", (6,4) ~ ps, " ", (3, 10000) ~ ps; |
337 |
print "Testing pair set, false: ", (3,3) ~ ps, " ", (4,9) ~ ps, " ", (4,65535) ~ ps, " ", (6,2) ~ ps, " ", (6,6+one) ~ ps, " ", ((one+6),2) ~ ps, " ", (1,1) ~ ps; |
338 |
|
339 |
ps = [(20..150, 200..300), (50100..50200, 1000..50000), (*, 5+5)]; |
340 |
print "Pair set: .. too long .."; |
341 |
print "Testing pair set, true: ", (100,200) ~ ps, " ", (150,300) ~ ps, " ", (50180,1200) ~ ps, " ", (50110,49000) ~ ps, " ", (0,10) ~ ps, " ", (64000,10) ~ ps; |
342 |
print "Testing pair set, false: ", (20,199) ~ ps, " ", (151,250) ~ ps, " ", (50050,2000) ~ ps, " ", (50150,50050) ~ ps, " ", (10,9) ~ ps, " ", (65535,11) ~ ps ; |
343 |
|
344 |
qq = 1.2.3.4; |
345 |
print "Testinq quad: 1.2.3.4 = ", qq, |
346 |
", true: ", qq = 1.2.3.4, " ", qq ~ [1.2.3.4, 5.6.7.8], |
347 |
", false: ", qq = 4.3.2.1, " ", qq ~ [1.2.1.1, 1.2.3.5]; |
348 |
|
349 |
cc = (rt, 12345, 200000); |
350 |
print "Testing EC: (rt, 12345, 200000) = ", cc; |
351 |
print "Testing EC: (ro, 100000, 20000) = ", (ro, 100000, 20000); |
352 |
print "Testing EC: (rt, 10.20.30.40, 20000) = ", (rt, 10.20.30.40, 20000); |
353 |
print " true: ", cc = (rt, 12345, 200000), " ", cc < (rt, 12345, 200010), |
354 |
", false: ", cc = (rt, 12346, 200000), " ", cc = (ro, 12345, 200000), " ", cc > (rt, 12345, 200010); |
355 |
|
356 |
ecs = [(rt, ten, (one+onef(0))*10), (ro, 100000, 100..200), (rt, 12345, *)]; |
357 |
print "EC set: ", ecs; |
358 |
print "EC set: ", ecs2; |
359 |
print "Testing EC set, true: ", (rt, 10, 20) ~ ecs, " ", (ro, 100000, 100) ~ ecs, " ", (ro, 100000, 200) ~ ecs, |
360 |
" ", (rt, 12345, 0) ~ ecs, " ", cc ~ ecs, " ", (rt, 12345, 4000000) ~ ecs; |
361 |
print "Testing EC set, false: ", (ro, 10, 20) ~ ecs, " ", (rt, 10, 21) ~ ecs, " ", (ro, 100000, 99) ~ ecs, |
362 |
" ", (ro, 12345, 10) ~ ecs, " ", (rt, 12346, 0) ~ ecs, " ", (ro, 0.1.134.160, 150) ~ ecs; |
363 |
|
364 |
st = "Hello"; |
365 |
print "Testing string: ", st, " true: ", st ~ "Hell*", " false: ", st ~ "ell*"; |
366 |
|
367 |
b = true; |
368 |
print "Testing bool: ", b, ", ", !b; |
369 |
|
370 |
if ( b = true ) then print "Testing bool comparison b = true: ", b; |
371 |
else { print "*** FAIL: TRUE test failed" ; quitbird; } |
372 |
|
373 |
ips = [ 1.1.1.0 .. 1.1.1.255, ip1222]; |
374 |
print "Testing IP sets: "; |
375 |
print ips; |
376 |
print " must be true: ", 1.1.1.0 ~ ips, ",", 1.1.1.100 ~ ips, ",", 1.2.2.2 ~ ips; |
377 |
print " must be false: ", 1.1.0.255 ~ ips, ",", 1.1.2.0 ~ ips, ",", 1.2.2.3 ~ ips, ",", 192.168.1.1 ~ ips; |
378 |
|
379 |
pxs = [ 1.2.0.0/16, 1.4.0.0/16+]; |
380 |
print "Testing prefix sets: "; |
381 |
print pxs; |
382 |
print " must be true: ", 1.2.0.0/16 ~ pxs, ",", 1.4.0.0/16 ~ pxs, ",", 1.4.0.0/18 ~ pxs, ",", 1.4.0.0/32 ~ pxs; |
383 |
print " must be false: ", 1.1.0.0/16 ~ pxs, ",", 1.3.0.0/16 ~ pxs, ",", 1.2.0.0/15 ~ pxs, ",", 1.2.0.0/17 ~ pxs, ",", |
384 |
1.2.0.0/32 ~ pxs, ",", 1.4.0.0/15 ~ pxs; |
385 |
|
386 |
test_pxset(pxs2); |
387 |
test_pxset([ 10.0.0.0/16{8,12}, 20.0.0.0/16{24,28} ]); |
388 |
print "What will this do? ", [ 1, 2, 1, 1, 1, 3, 4, 1, 1, 1, 5 ]; |
389 |
|
390 |
print "Testing functions..."; |
391 |
callme ( 1, 2 ); |
392 |
callme ( 2, 2 ); |
393 |
callme ( 2, 2 ); |
394 |
callme ( 3, 2 ); |
395 |
callme ( 4, 4 ); |
396 |
callme ( 7, 2 ); |
397 |
|
398 |
i = fifteen(); |
399 |
print "Testing function calls: 15 = ", i; |
400 |
|
401 |
path_test(); |
402 |
|
403 |
print "1.2.3.4 = ", onetwo; |
404 |
|
405 |
i = 4200000000; |
406 |
print "4200000000 = ", i, " true: ", i = 4200000000, " ", i > 4100000000, " false: ", i > 4250000000; |
407 |
|
408 |
test_undef(2); |
409 |
test_undef(3); |
410 |
test_undef(2); |
411 |
|
412 |
print "Testing include"; |
413 |
include "test.conf.inc"; |
414 |
|
415 |
print "done"; |
416 |
quitbird; |
417 |
# print "*** FAIL: this is unreachable"; |
418 |
} |
419 |
|
420 |
filter testf |
421 |
int j; |
422 |
{ |
423 |
print "Heya, filtering route to ", net.ip, " prefixlen ", net.len, " source ", source; |
424 |
print "This route was from ", from; |
425 |
j = 7; |
426 |
j = 17; |
427 |
if rip_metric > 15 then { |
428 |
reject "RIP Metric is more than infinity"; |
429 |
} |
430 |
rip_metric = 14; |
431 |
unset(rip_metric); |
432 |
|
433 |
accept "ok I take that"; |
434 |
} |
435 |
|
436 |
eval __startup(); |