10a5360886
path, but it is not possible to write constant of type path. It should be possible to print paths and match them.
105 lines
2.6 KiB
Text
105 lines
2.6 KiB
Text
/*
|
|
* This is an example configuration file.
|
|
*/
|
|
|
|
# Yet another comment
|
|
|
|
router id 62.168.0.1;
|
|
|
|
define xyzzy = 120+10;
|
|
|
|
function callme(int arg1; int arg2)
|
|
int local1;
|
|
int local2;
|
|
int i;
|
|
{
|
|
printn "Function callme called arguments ", arg1, " and ", arg2, ":" ;
|
|
i = arg2;
|
|
|
|
case arg1 {
|
|
2: print "dva"; print "jeste jednou dva";
|
|
3 .. 5: print "tri az pet";
|
|
else: print "neco jineho";
|
|
}
|
|
}
|
|
|
|
function fifteen()
|
|
{
|
|
print "fifteen called";
|
|
return 15;
|
|
}
|
|
|
|
function paths()
|
|
bgpmask p;
|
|
{
|
|
print "Testing paths";
|
|
p = / 1 2 3 4 /;
|
|
print p;
|
|
}
|
|
|
|
function startup()
|
|
int i;
|
|
prefix px;
|
|
ip p;
|
|
{
|
|
print "Testing filter language:";
|
|
i = 4;
|
|
i = 1230 + i;
|
|
i = ( i + 0 );
|
|
print " arithmetics: 1234 = ", i;
|
|
printn " if statements ";
|
|
print "what happens here?";
|
|
printn ".";
|
|
if (i = 4) then { print "*** FAIL: if 0"; quitbird; } else printn ".";
|
|
# if !(i = 3) then { print "*** FAIL: if 0"; quitbird; } else printn ".";
|
|
if 1234 = i then printn "."; else { print "*** FAIL: if 1 else"; }
|
|
# if 1 <= 1 then printn "."; else { print "*** FAIL: test 3"; }
|
|
if 1234 < 1234 then { print "*** FAIL: test 4"; quitbird; } else print "ok";
|
|
print " must be true: ", 1.2.0.0/16 ~ [ 1.0.0.0/8{ 15 , 17 } ];
|
|
print " data types; must be true: ", 1.2.3.4 = 1.2.3.4, ",", 1 ~ [1,2,3], ",", 5 ~ [1..20], ",", 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+ ];
|
|
|
|
# print " must be true: ", defined(1), ",", defined(1.2.3.4), ",", 1 != 2, ",", 1 <= 2;
|
|
print " data types: must be false: ", 1 ~ [ 2, 3, 4 ], ",", 5 ~ [ 2, 3, 4, 7..11 ], ",", 1.2.3.4 ~ [ 1.2.3.3, 1.2.3.5 ], ",", (1,2) > (2,2), ",", (1,1) > (1,1), ",", 1.0.0.0/8 ~ [ 1.0.0.0/8- ], ",", 1.2.0.0/17 ~ [ 1.0.0.0/8{ 15 , 16 } ];
|
|
|
|
px = 1.2.0.0/18;
|
|
print "Testing prefixes: 1.2.0.0/18 = ", px;
|
|
p = 127.1.2.3;
|
|
print "Testing mask : 127.0.0.0 = ", p.mask(8);
|
|
print "Testing pairs: (1,2) = ", (1,2);
|
|
print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC;
|
|
|
|
print "What will this do? ", [ 1, 2, 1, 1, 1, 3, 4, 1, 1, 1, 5 ];
|
|
|
|
print "Testing functions...";
|
|
# callme ( 1, 2 );
|
|
callme ( 2, 2 );
|
|
callme ( 2, 2 );
|
|
callme ( 3, 2 );
|
|
callme ( 4, 2 );
|
|
callme ( 7, 2 );
|
|
|
|
i = fifteen();
|
|
print "Testing function calls: 15 = ", i;
|
|
|
|
paths();
|
|
|
|
print "done";
|
|
quitbird;
|
|
# print "*** FAIL: this is unreachable";
|
|
}
|
|
|
|
filter testf
|
|
int j;
|
|
{
|
|
print "Heya, filtering route to ", net.ip, " prefixlen ", net.len, " source ", source;
|
|
print "This route was from ", from;
|
|
j = 7;
|
|
j = 17;
|
|
if rip_metric > 15 then {
|
|
reject "RIP Metric is more than infinity";
|
|
}
|
|
rip_metric = 14;
|
|
unset(rip_metric);
|
|
|
|
accept "ok I take that";
|
|
}
|