test6.conf 4.92 KB
Newer Older
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
/*
 *	This is an example configuration file.
 *	FIXME: add all examples from docs here.
 */

# 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 pm1;
bgpmask pm2;
bgppath p2;
clist l;
{
	pm1 =  / 4 3 2 1 /;
	pm2 = [= 4 3 2 1 =];
	print "Testing path masks: ", pm1, " ", pm2;
	p2 = prepend( + empty +, 1 );
	p2 = prepend( p2, 2 );
	p2 = prepend( p2, 3 );
	p2 = prepend( p2, 4 );
	print "Testing paths: ", p2;
	print "Should be true: ", p2 ~ pm1, " ", p2 ~ pm2;
	print "4 = ", p2.len;
	p2 = prepend( p2, 5 );
	print "Should be false: ", p2 ~ pm1, " ", p2 ~ pm2;
	print "Should be true: ", p2 ~  / ? 4 3 2 1 /,  " ", p2, " ",  / ? 4 3 2 1 /;
	print "Should be true: ", p2 ~ [= * 4 3 * 1 =], " ", p2, " ", [= * 4 3 * 1 =];
	print "5 = ", p2.len;
	
	pm1 = [= 1 2 * 3 4 5 =];
	p2 = prepend( + empty +, 5 );
	p2 = prepend( p2, 4 );
	p2 = prepend( p2, 3 );
	p2 = prepend( p2, 3 );
	p2 = prepend( p2, 2 );
	p2 = prepend( p2, 1 );
	print "Should be true: ", p2 ~ pm1, " ", p2, " ", pm1;

	l = - empty -;
	l = add( l, (1,2) );
	l = add( l, (2,3) );
	print "Community list (1,2) (2,3) ", l;
	print "Should be true: ", (2,3) ~ l;
	l = delete( l, (2,3) );
	print "Community list (1,2) ", l;
	print "Should be false: ", (2,3) ~ l;
}

function bla()
{
	print "fifteen called";
	return 15;
}

define four=4;

function test_pxset(prefix set pxs)
{
	print "  must be true:  ",	1000::/8  ~ pxs, ",", 1000::/10  ~ pxs, ",", 1000::/12 ~ pxs, ",",
					2000::/24 ~ pxs, ",", 2000:4000::/24 ~ pxs, ",", 2000::/26 ~ pxs, ",",
					2000:8000::/26 ~ pxs, ",", 2000::/28 ~ pxs, ",", 2000:FFF0::/28 ~ pxs;
	print "  must be false: ",	1000::/7 ~ pxs,  ",", 1000::/13 ~ pxs, ",", 1000::/16 ~ pxs, ",",
					2000::/16 ~ pxs, ",", 2000::/23 ~ pxs, ",", 2000::/29 ~ pxs, ",",
					1100::/10 ~ pxs, ",", 2010::/26 ~ pxs;
}

function __startup() 
int i;
bool b;
prefix px;
ip p;
pair pp;
int set is;
prefix set pxs;
string s;
{ 
	print "Testing filter language:";
	i = four; 
	i = 12*100 + 60/2 + 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";
	is = [ 2, 3, 4, 7..11 ];
	print "  must be true: ", 1180::/16 ~ [ 1100::/8{ 15 , 17 } ];
	print "  data types; must be true: ", 12::34 = 12::34, ",", 1 ~ [1,2,3], ",", 5 ~ [1..20], ",", 10 ~ is, ",", 2 ~ [ 1, 2, 3 ], ",", 5 ~ [ 4 .. 7 ], ",", 12::34 ~ [ 12::33..12::35 ], ",", 1020::34 ~ 1000::/8, ",", 1000::/8 ~ 1000::/8, ",", 1000::/8 ~ [ 1000::/8+ ];
	print "  must be true: ", true && true, ",", true || false;

#	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 ~ is, ",", 12::34 ~ [ 12::33, 12::35 ], ",", (1,2) > (2,2), ",", (1,1) > (1,1), ",", 1000::/9 ~ [ 1000::/8- ], ",", 1000::/17 ~ [ 1000::/8{ 15 , 16 } ], ",", true && false;

	px = 1020::/18;
	print "Testing prefixes: 1020::/18 = ", px;
	p = 1234:5678::;
	print "Testing mask : 1200:: = ", p.mask(8);
	
	pp = (1, 2);
	print "Testing pairs: (1,2) = ", (1,2), " = ", pp;
	print "Testing enums: ", RTS_DUMMY, " ", RTS_STATIC;

	s = "Hello";
	print "Testing string: ", s, " true: ", s ~ "Hell*", " false: ", s ~ "ell*";
	
	b = true;
	print "Testing bool: ", b, ", ", !b;
	
	pxs = [ 1102::/16, 1104::/16+];
	print "Testing prefix sets: ";
	print pxs;
	print "  must be true:  ",	1102::/16 ~ pxs, ",", 1104::/16 ~ pxs, ",", 1104::/18 ~ pxs, ",", 1104::/32 ~ pxs;
	print "  must be false: ",	1101::/16 ~ pxs, ",", 1103::/16 ~ pxs, ",", 1102::/15 ~ pxs, ",", 1102::/17 ~ pxs, ",",
					1102::/32 ~ pxs, ",", 1104::/15 ~ pxs;

	test_pxset([ 1000::/16{8,12}, 2000::/16{24,28} ]);
	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";
}

eval __startup();