This VCL compiler thing...

Poul-Henning Kamp phk at phk.freebsd.dk
Fri Mar 10 11:04:16 CET 2006


... is moving nicely along.

I have made some changes to the syntax relative to what we talked
about at the meeting, mostly in order to be able to make the compiler
simpler and to give better error messages.

First of all, I have given all actions a trailing semi-colon.
In case of syntax errors, that will stop the compiler from trying to
make sense of subsequent tokens and that will hopefully limit the
amount of non-sense errors emitted in that case.

I have also decided that all assignments will start out with the
keyword "set".

Finally I have decided to enforce proper types and units throughout,
so if you compare a time variable, you must specify the units:

	if (obj.ttl < 10m)

etc.

I have added explicit backend declarations:

	backend vg {
		set backend.ip = 10.0.0.1, 10.0.0.2, 10.0.0.3;
		set backend.timeout = 4s;
		set backend.bandwidth = 2000Mb/s;
	}

because we need a data structure for each backend.

And this gets me to the something which is a sticky point right
now:  IP numbers and IP lists.

With respect to backends, I think we need to declare them individually
because things like response time etc is per backend and not shared
for the cluster of backends.  In the above example that would
restrict us to giving one IP#.  (We can later expand this to a
concept of backend clusters but I need time to think about data structures
before I make up my mind.

The other thing is matching against IP lists, I think from both a code
and configuration point of view it makes sense to declare IP access lists
explicitly, so that instead of

	if (client.ip ~ {10.0.0.0/8,172.16.0,0/12,192.168.0.0/16}) { ...

it would be written

	Acl Rfc1918 {
		10.0.0.0/8
		172.16.0.0/12
		192.168.0.0/16
	}
	...

	if (client.ip ~ rfc1918) { ...

But I would still allow comparison to a single IP:

	if (client.ip = 10.0.1.2) { ...

Still thinking about this though...

The compiler so far is 900 lines of C-code and a 170 line tcl script
to generate some C-code for keyword recognition.

Attached a sample config file and the compiled output as it
looks right now:

begin 664 sample.vcl
M"G-U8B!R97%U97-T7W!O;&EC>2!["@H):68@*&-L:65N="YI<"!^(#$P+C`N
M,"XP+S at I('L*"0EN;U]C86-H93L*"0EF:6YI<V@["@E]"@H):68@*')E<2YU
M<FPN:&]S="!^(")C;FXN;F\D(BD@>PH)"7)E=W)I=&4@(F-N;BYN;R0B(")V
M9RYN;R(["@E]"@H):68@*')E<2YU<FPN<&%T:"!^(")C9VDM8FEN(BD@>PH)
M"6YO7V-A8VAE.PH)?0H*"6EF("AR97$N=7-E<F%G96YT('X@(G-P:61E<B(I
M('L*"0EN;U]N97=?8V%C:&4["@E]"@HC(&-O;6UE;G0*"@EI9B`H8F%C:V5N
M9"YR97-P;VYS95]T:6UE(#X@,"XX<RD@>PH)"7-E="!R97$N='1L9F%C=&]R
M(#T@,2XU.PH)?2!E;'-E:68@*&)A8VME;F0N<F5S<&]N<V5?=&EM92`^(#$N
M-7,I('L*"0ES970@<F5Q+G1T;&9A8W1O<B`](#(N,#L*"7T at 96QS96EF("AB
M86-K96YD+G)E<W!O;G-E7W1I;64@/B`R+C5M*2!["@D)<V5T(')E<2YT=&QF
M86-T;W(@/2`U+C`["@E]"@H)+RH*"2`J('1H92!P<F]G<F%M(&-O;G1A:6YS
M(&YO(')E9F5R96YC97,@=&\*"2`J(&UA>&%G92P@<RUM87AA9V4 at 86YD(&5X
M<&ER97,L('-O('1H90H)("H at 9&5F875L="!H86YD;&EN9R`H4D9#,C8Q-BD@
M87!P;&EE<PH)("HO"GT*"F)A8VME;F0@=F<@>PH)<V5T(&)A8VME;F0N:7`@
M/2`Q,"XP+C`N,2P@,3`N,"XP+C(L(#$P+C`N,"XS.PH)<V5T(&)A8VME;F0N
M=&EM96]U="`](#1S.PH)<V5T(&)A8VME;F0N8F%N9'=I9'1H(#T@,C`P,$UB
M+W,["GT*"F)A8VME;F0 at 8VAA="!["@ES970 at 8F%C:V5N9"YI<"`](#$P+C`N
M,"XT+#$P+C`N,"XU.PH)<V5T(&)A8VME;F0N=&EM96]U="`](#1S.PH)<V5T
M(&)A8VME;F0N8F%N9'=I9'1H(#T@,C`P,$UB+W,["GT*"G-U8B!B86EL('L*
M"65R<F]R(#0P-"`B0F%I;&EN9R!O=70B.PH)9FEN:7-H.PI]"@IS=6(@9F5T
M8VA?<&]L:6-Y('L*"@EI9B`H<F5Q+G5R;"YH;W-T('X@(B]V9RYN;R0O(BD@
M>PH)"7-E="!R97$N8F%C:V5N9"`]('9G.PH)?2!E;'-E('L*"0DO*B!86%@Z
M('-P96-I9GD at -#`T('!A9V4@=7)L(#\@*B\*"0EE<G)O<B`T,#0["@E]"@H)
M:68@*&)A8VME;F0N<F5S<&]N<V5?=&EM92`^(#(N,',I('L*"0EI9B`H<F5Q
M+G5R;"YP871H('X@(B]L86YD8G)U9W-P<FES97(O(BD@>PH)"0EC86QL(&)A
M:6P["@D)?0H)?0H)9F5T8V@["@EI9B`H8F%C:V5N9"YD;W=N*2!["@D):68@
M*&]B:BYE>&ES="D@>PH)"0ES970@;V)J+G1T;"`K/2`Q,&T["@D)"69I;FES
M:#L*"0E]"@D)<W=I=&-H7V-O;F9I9R!O:&AS:&ET.PH)?0H):68@*&]B:BYR
M97-U;'0@/3T at -#`T*2!["@D)97)R;W(@,S`P(")H='1P.B\O=W=W+G9G+FYO
M(CL*"7T*"6EF("AO8FHN<F5S=6QT("$](#(P,"D@>PH)"69I;FES:#L*"7T*
M"6EF("AO8FHN<VEZ92`^(#(U-FMB*2!["@D);F]?8V%C:&4["@E](&5L<V4@
M:68@*&]B:BYS:7IE(#X@,S)K8B`F)B!O8FHN='1L(#P@,FTI('L*"0ES970@
M;V)J+G1T;"`](#5M.PH)?0H):68@*&)A8VME;F0N<F5S<&]N<V5?=&EM92`^
M(#(N,',I('L*"0ES970@;V)J+G1T;"`J/2`R+C`["@E]"GT*"G-U8B!P<F5F
M971C:%]P;VQI8WD@>PH*"6EF("AO8FHN=7-A9V4@/"`Q,"`F)B!O8FHN='1L
7(#P at -6TI('L*"0EF971C:#L*"7T*?0H`
`
end

begin 664 sample.c
M+B]V<&, at +VUN="]P:&LO5F%R;FES:"]60TPO<V%M<&QE+G9P"BTM+0HO*B!&
M=6YC=&EO;B`@("`J+R!S=&%T:6,@=F]I9"!60TQ?9G5N8W1I;VY?<F5Q=65S
M=%]P;VQI8WD@*'9O:60I"B\J($-O;7!O=6YD("`@("HO("`@>PHO*B!)9E-T
M;70@("`@("`J+R`@(&EF(`HO*B!#;VYD:71I;VYA;"`J+R`@("`@*`HO*B!#
M;VYD7S`@("`@("`J+R`@("`@("`H"B\J($-O;F1?,2`@("`@("HO("`@("`@
M("`@*`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@*`I)4$P at 6PI=($E0
M3`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@*0HO*B!#;VYD7S$@("`@
M("`J+R`@("`@("`@("D*+RH at 0V]N9%\P("`@("`@*B\@("`@("`@*0HO*B!#
M;VYD:71I;VYA;"`J+R`@("`@*0HO*B!#;VUP;W5N9"`@("`J+R`@("`@>PHO
M*B!!8W1I;VX@("`@("`J+R`@("`@5D-,7VYO7V-A8VAE*"D["B\J($%C=&EO
M;B`@("`@("HO("`@("!R971U<FX["B\J($-O;7!O=6YD("`@("HO("`@("!]
M"B\J($EF4W1M="`@("`@("HO("`@:68@"B\J($-O;F1I=&EO;F%L("HO("`@
M("`H"B\J($-O;F1?,"`@("`@("HO("`@("`@("@*+RH at 0V]N9%\Q("`@("`@
M*B\@("`@("`@("`H"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`H"B\J
M($-O;F1?4W1R:6YG("HO("`@("`@("`@("`@('-T<FEN9U]M871C:"AR97$N
M=7)L+FAO<W0L(")C;FXN;F\D(BD*+RH at 0V]N9%\R("`@("`@*B\@("`@("`@
M("`@("D*+RH at 0V]N9%\Q("`@("`@*B\@("`@("`@("`I"B\J($-O;F1?,"`@
M("`@("HO("`@("`@("D*+RH at 0V]N9&ET:6]N86P@*B\@("`@("D*+RH at 0V]M
M<&]U;F0@("`@*B\@("`@('L*+RH at 06-T:6]N("`@("`@*B\@("`@(%9#3%]R
M97=R:71E*")C;FXN;F\D(BPL(")V9RYN;R(I.PHO*B!#;VUP;W5N9"`@("`J
M+R`@("`@?0HO*B!)9E-T;70@("`@("`J+R`@(&EF(`HO*B!#;VYD:71I;VYA
M;"`J+R`@("`@*`HO*B!#;VYD7S`@("`@("`J+R`@("`@("`H"B\J($-O;F1?
M,2`@("`@("HO("`@("`@("`@*`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@
M("`@*`HO*B!#;VYD7U-T<FEN9R`J+R`@("`@("`@("`@("!S=')I;F=?;6%T
M8V at H<F5Q+G5R;"YP871H+"`B8V=I+6)I;B(I"B\J($-O;F1?,B`@("`@("HO
M("`@("`@("`@("`I"B\J($-O;F1?,2`@("`@("HO("`@("`@("`@*0HO*B!#
M;VYD7S`@("`@("`J+R`@("`@("`I"B\J($-O;F1I=&EO;F%L("HO("`@("`I
M"B\J($-O;7!O=6YD("`@("HO("`@("!["B\J($%C=&EO;B`@("`@("HO("`@
M("!60TQ?;F]?8V%C:&4H*3L*+RH at 0V]M<&]U;F0@("`@*B\@("`@('T*+RH@
M2693=&UT("`@("`@*B\@("!I9B`*+RH at 0V]N9&ET:6]N86P@*B\@("`@("@*
M+RH at 0V]N9%\P("`@("`@*B\@("`@("`@*`HO*B!#;VYD7S$@("`@("`J+R`@
M("`@("`@("@*+RH at 0V]N9%\R("`@("`@*B\@("`@("`@("`@("@*+RH at 0V]N
M9%]3=')I;F<@*B\@("`@("`@("`@("`@<W1R:6YG7VUA=&-H*')E<2YU<V5R
M86=E;G0L(")S<&ED97(B*0HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@
M*0HO*B!#;VYD7S$@("`@("`J+R`@("`@("`@("D*+RH at 0V]N9%\P("`@("`@
M*B\@("`@("`@*0HO*B!#;VYD:71I;VYA;"`J+R`@("`@*0HO*B!#;VUP;W5N
M9"`@("`J+R`@("`@>PHO*B!!8W1I;VX@("`@("`J+R`@("`@5D-,7VYO7VYE
M=U]C86-H92 at I.PHO*B!#;VUP;W5N9"`@("`J+R`@("`@?0HO*B!)9E-T;70@
M("`@("`J+R`@(&EF(`HO*B!#;VYD:71I;VYA;"`J+R`@("`@*`HO*B!#;VYD
M7S`@("`@("`J+R`@("`@("`H"B\J($-O;F1?,2`@("`@("HO("`@("`@("`@
M*`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@*`HO*B!#;VYD7TEN="`@
M("`J+R`@("`@("`@("`@("!B86-K96YD+G)E<W!O;G-E7W1I;64@/B`H,"XX
M("H@,2D*+RH at 0V]N9%\R("`@("`@*B\@("`@("`@("`@("D*+RH at 0V]N9%\Q
M("`@("`@*B\@("`@("`@("`I"B\J($-O;F1?,"`@("`@("HO("`@("`@("D*
M+RH at 0V]N9&ET:6]N86P@*B\@("`@("D*+RH at 0V]M<&]U;F0@("`@*B\@("`@
M('L*+RH at 06-T:6]N("`@("`@*B\@("`@(')E<2YT=&QF86-T;W(@/2`Q+C4[
M"B\J($-O;7!O=6YD("`@("HO("`@("!]"B\J($EF4W1M="`@("`@("HO("`@
M96QS92!I9B`*+RH at 0V]N9&ET:6]N86P@*B\@("`@("@*+RH at 0V]N9%\P("`@
M("`@*B\@("`@("`@*`HO*B!#;VYD7S$@("`@("`J+R`@("`@("`@("@*+RH@
M0V]N9%\R("`@("`@*B\@("`@("`@("`@("@*+RH at 0V]N9%]);G0@("`@*B\@
M("`@("`@("`@("`@8F%C:V5N9"YR97-P;VYS95]T:6UE(#X@*#$N-2`J(#$I
M"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`I"B\J($-O;F1?,2`@("`@
M("HO("`@("`@("`@*0HO*B!#;VYD7S`@("`@("`J+R`@("`@("`I"B\J($-O
M;F1I=&EO;F%L("HO("`@("`I"B\J($-O;7!O=6YD("`@("HO("`@("!["B\J
M($%C=&EO;B`@("`@("HO("`@("!R97$N='1L9F%C=&]R(#T@,CL*+RH at 0V]M
M<&]U;F0@("`@*B\@("`@('T*+RH at 2693=&UT("`@("`@*B\@("!E;'-E(&EF
M(`HO*B!#;VYD:71I;VYA;"`J+R`@("`@*`HO*B!#;VYD7S`@("`@("`J+R`@
M("`@("`H"B\J($-O;F1?,2`@("`@("HO("`@("`@("`@*`HO*B!#;VYD7S(@
M("`@("`J+R`@("`@("`@("`@*`HO*B!#;VYD7TEN="`@("`J+R`@("`@("`@
M("`@("!B86-K96YD+G)E<W!O;G-E7W1I;64@/B`H,BXU("H at -C`I"B\J($-O
M;F1?,B`@("`@("HO("`@("`@("`@("`I"B\J($-O;F1?,2`@("`@("HO("`@
M("`@("`@*0HO*B!#;VYD7S`@("`@("`J+R`@("`@("`I"B\J($-O;F1I=&EO
M;F%L("HO("`@("`I"B\J($-O;7!O=6YD("`@("HO("`@("!["B\J($%C=&EO
M;B`@("`@("HO("`@("!R97$N='1L9F%C=&]R(#T at -3L*+RH at 0V]M<&]U;F0@
M("`@*B\@("`@('T*+RH at 0V]M<&]U;F0@("`@*B\@("!]"B\J($)A8VME;F0@
M("`@("HO('-T871I8R!V;VED(%9#3%]B86-K96YD7W9G("AV;VED*0HO*B!#
M;VUP;W5N9"`@("`J+R`@('L*+RH at 06-T:6]N("`@("`@*B\@("!B86-K96YD
M+FEP($E03"!;"ET at 25!,"@HO*B!!8W1I;VX@("`@("`J+R`@(&)A8VME;F0N
M=&EM96]U="`]("@T("H@,2D["B\J($%C=&EO;B`@("`@("HO("`@8F%C:V5N
M9"YB86YD=VED=&@@/2`H,C`P,"`J(#$N,#0X-3AE*S`V*3L*+RH at 0V]M<&]U
M;F0@("`@*B\@("!]"B\J($)A8VME;F0@("`@("HO('-T871I8R!V;VED(%9#
M3%]B86-K96YD7V-H870@*'9O:60I"B\J($-O;7!O=6YD("`@("HO("`@>PHO
M*B!!8W1I;VX@("`@("`J+R`@(&)A8VME;F0N:7`@25!,(%L*72!)4$P*"B\J
M($%C=&EO;B`@("`@("HO("`@8F%C:V5N9"YT:6UE;W5T(#T@*#0@*B`Q*3L*
M+RH at 06-T:6]N("`@("`@*B\@("!B86-K96YD+F)A;F1W:61T:"`]("@R,#`P
M("H@,2XP-#@U.&4K,#8I.PHO*B!#;VUP;W5N9"`@("`J+R`@('T*+RH at 1G5N
M8W1I;VX@("`@*B\@<W1A=&EC('9O:60 at 5D-,7V9U;F-T:6]N7V)A:6P@*'9O
M:60I"B\J($-O;7!O=6YD("`@("HO("`@>PHO*B!!8W1I;VX@("`@("`J+R`@
M(%9#3%]E<G)O<B at T,#0L(")"86EL:6YG(&]U="(I.PHO*B!!8W1I;VX@("`@
M("`J+R`@(')E='5R;CL*+RH at 0V]M<&]U;F0@("`@*B\@("!]"B\J($9U;F-T
M:6]N("`@("HO('-T871I8R!V;VED(%9#3%]F=6YC=&EO;E]F971C:%]P;VQI
M8WD@*'9O:60I"B\J($-O;7!O=6YD("`@("HO("`@>PHO*B!)9E-T;70@("`@
M("`J+R`@(&EF(`HO*B!#;VYD:71I;VYA;"`J+R`@("`@*`HO*B!#;VYD7S`@
M("`@("`J+R`@("`@("`H"B\J($-O;F1?,2`@("`@("HO("`@("`@("`@*`HO
M*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@*`HO*B!#;VYD7U-T<FEN9R`J
M+R`@("`@("`@("`@("!S=')I;F=?;6%T8V at H<F5Q+G5R;"YH;W-T+"`B+W9G
M+FYO)"\B*0HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@*0HO*B!#;VYD
M7S$@("`@("`J+R`@("`@("`@("D*+RH at 0V]N9%\P("`@("`@*B\@("`@("`@
M*0HO*B!#;VYD:71I;VYA;"`J+R`@("`@*0HO*B!#;VUP;W5N9"`@("`J+R`@
M("`@>PHO*B!!8W1I;VX@("`@("`J+R`@("`@<F5Q+F)A8VME;F0@"B\J($-O
M;7!O=6YD("`@("HO("`@("!]"B\J($EF4W1M="`@("`@("HO("`@96QS92`*
M+RH at 0V]M<&]U;F0@("`@*B\@("`@('L*+RH at 06-T:6]N("`@("`@*B\@("`@
M(%9#3%]E<G)O<B at T,#0L($Y53$PI.PHO*B!#;VUP;W5N9"`@("`J+R`@("`@
M?0HO*B!)9E-T;70@("`@("`J+R`@(&EF(`HO*B!#;VYD:71I;VYA;"`J+R`@
M("`@*`HO*B!#;VYD7S`@("`@("`J+R`@("`@("`H"B\J($-O;F1?,2`@("`@
M("HO("`@("`@("`@*`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@*`HO
M*B!#;VYD7TEN="`@("`J+R`@("`@("`@("`@("!B86-K96YD+G)E<W!O;G-E
M7W1I;64@/B`H,B`J(#$I"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`I
M"B\J($-O;F1?,2`@("`@("HO("`@("`@("`@*0HO*B!#;VYD7S`@("`@("`J
M+R`@("`@("`I"B\J($-O;F1I=&EO;F%L("HO("`@("`I"B\J($-O;7!O=6YD
M("`@("HO("`@("!["B\J($EF4W1M="`@("`@("HO("`@("!I9B`*+RH at 0V]N
M9&ET:6]N86P@*B\@("`@("`@*`HO*B!#;VYD7S`@("`@("`J+R`@("`@("`@
M("@*+RH at 0V]N9%\Q("`@("`@*B\@("`@("`@("`@("@*+RH at 0V]N9%\R("`@
M("`@*B\@("`@("`@("`@("`@*`HO*B!#;VYD7U-T<FEN9R`J+R`@("`@("`@
M("`@("`@('-T<FEN9U]M871C:"AR97$N=7)L+G!A=&@L("(O;&%N9&)R=6=S
M<')I<V5R+R(I"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`@("D*+RH@
M0V]N9%\Q("`@("`@*B\@("`@("`@("`@("D*+RH at 0V]N9%\P("`@("`@*B\@
M("`@("`@("`I"B\J($-O;F1I=&EO;F%L("HO("`@("`@("D*+RH at 0V]M<&]U
M;F0@("`@*B\@("`@("`@>PHO*B!!8W1I;VX@("`@("`J+R`@("`@("!60TQ?
M9G5N8W1I;VY?8F%I;"@I.PHO*B!#;VUP;W5N9"`@("`J+R`@("`@("!]"B\J
M($-O;7!O=6YD("`@("HO("`@("!]"B\J($%C=&EO;B`@("`@("HO("`@5D-,
M7V9E=&-H*"D["B\J($EF4W1M="`@("`@("HO("`@:68@"B\J($-O;F1I=&EO
M;F%L("HO("`@("`H"B\J($-O;F1?,"`@("`@("HO("`@("`@("@*+RH at 0V]N
M9%\Q("`@("`@*B\@("`@("`@("`H"B\J($-O;F1?,B`@("`@("HO("`@("`@
M("`@("`H"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`I"B\J($-O;F1?
M,2`@("`@("HO("`@("`@("`@*0HO*B!#;VYD7S`@("`@("`J+R`@("`@("`I
M"B\J($-O;F1I=&EO;F%L("HO("`@("`I"B\J($-O;7!O=6YD("`@("HO("`@
M("!["B\J($EF4W1M="`@("`@("HO("`@("!I9B`*+RH at 0V]N9&ET:6]N86P@
M*B\@("`@("`@*`HO*B!#;VYD7S`@("`@("`J+R`@("`@("`@("@*+RH at 0V]N
M9%\Q("`@("`@*B\@("`@("`@("`@("@*+RH at 0V]N9%\R("`@("`@*B\@("`@
M("`@("`@("`@*`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@("`@("`I"B\J
M($-O;F1?,2`@("`@("HO("`@("`@("`@("`I"B\J($-O;F1?,"`@("`@("HO
M("`@("`@("`@*0HO*B!#;VYD:71I;VYA;"`J+R`@("`@("`I"B\J($-O;7!O
M=6YD("`@("HO("`@("`@('L*+RH at 06-T:6]N("`@("`@*B\@("`@("`@;V)J
M+G1T;"`K/2`H,3`@*B`V,"D["B\J($%C=&EO;B`@("`@("HO("`@("`@(')E
M='5R;CL*+RH at 0V]M<&]U;F0@("`@*B\@("`@("`@?0HO*B!!8W1I;VX@("`@
M("`J+R`@("`@5D-,7W-W:71C:%]C;VYF:6<H(F]H:'-H:70B*3L*+RH at 0V]M
M<&]U;F0@("`@*B\@("`@('T*+RH at 2693=&UT("`@("`@*B\@("!I9B`*+RH@
M0V]N9&ET:6]N86P@*B\@("`@("@*+RH at 0V]N9%\P("`@("`@*B\@("`@("`@
M*`HO*B!#;VYD7S$@("`@("`J+R`@("`@("`@("@*+RH at 0V]N9%\R("`@("`@
M*B\@("`@("`@("`@("@*+RH at 0V]N9%]);G0@("`@*B\@("`@("`@("`@("`@
M;V)J+G)E<W5L="`]/2`T,#0@"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@
M("`I"B\J($-O;F1?,2`@("`@("HO("`@("`@("`@*0HO*B!#;VYD7S`@("`@
M("`J+R`@("`@("`I"B\J($-O;F1I=&EO;F%L("HO("`@("`I"B\J($-O;7!O
M=6YD("`@("HO("`@("!["B\J($%C=&EO;B`@("`@("HO("`@("!60TQ?97)R
M;W(H,S`P+"`B:'1T<#HO+W=W=RYV9RYN;R(I.PHO*B!#;VUP;W5N9"`@("`J
M+R`@("`@?0HO*B!)9E-T;70@("`@("`J+R`@(&EF(`HO*B!#;VYD:71I;VYA
M;"`J+R`@("`@*`HO*B!#;VYD7S`@("`@("`J+R`@("`@("`H"B\J($-O;F1?
M,2`@("`@("HO("`@("`@("`@*`HO*B!#;VYD7S(@("`@("`J+R`@("`@("`@
M("`@*`HO*B!#;VYD7TEN="`@("`J+R`@("`@("`@("`@("!O8FHN<F5S=6QT
M("$](#(P,"`*+RH at 0V]N9%\R("`@("`@*B\@("`@("`@("`@("D*+RH at 0V]N
M9%\Q("`@("`@*B\@("`@("`@("`I"B\J($-O;F1?,"`@("`@("HO("`@("`@
M("D*+RH at 0V]N9&ET:6]N86P@*B\@("`@("D*+RH at 0V]M<&]U;F0@("`@*B\@
M("`@('L*+RH at 06-T:6]N("`@("`@*B\@("`@(')E='5R;CL*+RH at 0V]M<&]U
M;F0@("`@*B\@("`@('T*+RH at 2693=&UT("`@("`@*B\@("!I9B`*+RH at 0V]N
M9&ET:6]N86P@*B\@("`@("@*+RH at 0V]N9%\P("`@("`@*B\@("`@("`@*`HO
M*B!#;VYD7S$@("`@("`J+R`@("`@("`@("@*+RH at 0V]N9%\R("`@("`@*B\@
M("`@("`@("`@("@*+RH at 0V]N9%]);G0@("`@*B\@("`@("`@("`@("`@;V)J
M+G-I>F4@/B`H,C4V("H@,3`R-"D*+RH at 0V]N9%\R("`@("`@*B\@("`@("`@
M("`@("D*+RH at 0V]N9%\Q("`@("`@*B\@("`@("`@("`I"B\J($-O;F1?,"`@
M("`@("HO("`@("`@("D*+RH at 0V]N9&ET:6]N86P@*B\@("`@("D*+RH at 0V]M
M<&]U;F0@("`@*B\@("`@('L*+RH at 06-T:6]N("`@("`@*B\@("`@(%9#3%]N
M;U]C86-H92 at I.PHO*B!#;VUP;W5N9"`@("`J+R`@("`@?0HO*B!)9E-T;70@
M("`@("`J+R`@(&5L<V4@:68@"B\J($-O;F1I=&EO;F%L("HO("`@("`H"B\J
M($-O;F1?,"`@("`@("HO("`@("`@("@*+RH at 0V]N9%\Q("`@("`@*B\@("`@
M("`@("`H"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`H"B\J($-O;F1?
M26YT("`@("HO("`@("`@("`@("`@(&]B:BYS:7IE(#X@*#,R("H@,3`R-"D*
M+RH at 0V]N9%\R("`@("`@*B\@("`@("`@("`@("D*+RH at 0V]N9%\Q("`@("`@
M*B\@("`@("`@("`I("8F("@*+RH at 0V]N9%\R("`@("`@*B\@("`@("`@("`@
M("@*+RH at 0V]N9%]);G0@("`@*B\@("`@("`@("`@("`@;V)J+G1T;"`\("@R
M("H at -C`I"B\J($-O;F1?,B`@("`@("HO("`@("`@("`@("`I"B\J($-O;F1?
M,2`@("`@("HO("`@("`@("`@*0HO*B!#;VYD7S`@("`@("`J+R`@("`@("`I
M"B\J($-O;F1I=&EO;F%L("HO("`@("`I"B\J($-O;7!O=6YD("`@("HO("`@
M("!["B\J($%C=&EO;B`@("`@("HO("`@("!O8FHN='1L(#T@*#4@*B`V,"D[
M"B\J($-O;7!O=6YD("`@("HO("`@("!]"B\J($EF4W1M="`@("`@("HO("`@
M:68@"B\J($-O;F1I=&EO;F%L("HO("`@("`H"B\J($-O;F1?,"`@("`@("HO
M("`@("`@("@*+RH at 0V]N9%\Q("`@("`@*B\@("`@("`@("`H"B\J($-O;F1?
M,B`@("`@("HO("`@("`@("`@("`H"B\J($-O;F1?26YT("`@("HO("`@("`@
M("`@("`@(&)A8VME;F0N<F5S<&]N<V5?=&EM92`^("@R("H@,2D*+RH at 0V]N
M9%\R("`@("`@*B\@("`@("`@("`@("D*+RH at 0V]N9%\Q("`@("`@*B\@("`@
M("`@("`I"B\J($-O;F1?,"`@("`@("HO("`@("`@("D*+RH at 0V]N9&ET:6]N
M86P@*B\@("`@("D*+RH at 0V]M<&]U;F0@("`@*B\@("`@('L*+RH at 06-T:6]N
M("`@("`@*B\@("`@(&]B:BYT=&P@*CT at .PHO*B!#;VUP;W5N9"`@("`J+R`@
M("`@?0HO*B!#;VUP;W5N9"`@("`J+R`@('T*+RH at 1G5N8W1I;VX@("`@*B\@
M<W1A=&EC('9O:60 at 5D-,7V9U;F-T:6]N7W!R969E=&-H7W!O;&EC>2`H=F]I
M9"D*+RH at 0V]M<&]U;F0@("`@*B\@("!["B\J($EF4W1M="`@("`@("HO("`@
M:68@"B\J($-O;F1I=&EO;F%L("HO("`@("`H"B\J($-O;F1?,"`@("`@("HO
M("`@("`@("@*+RH at 0V]N9%\Q("`@("`@*B\@("`@("`@("`H"B\J($-O;F1?
M,B`@("`@("HO("`@("`@("`@("`H"B\J($-O;F1?26YT("`@("HO("`@("`@
M("`@("`@(&]B:BYU<V%G92`\(#$P(`HO*B!#;VYD7S(@("`@("`J+R`@("`@
M("`@("`@*0HO*B!#;VYD7S$@("`@("`J+R`@("`@("`@("D@)B8@*`HO*B!#
M;VYD7S(@("`@("`J+R`@("`@("`@("`@*`HO*B!#;VYD7TEN="`@("`J+R`@
M("`@("`@("`@("!O8FHN='1L(#P@*#4@*B`V,"D*+RH at 0V]N9%\R("`@("`@
M*B\@("`@("`@("`@("D*+RH at 0V]N9%\Q("`@("`@*B\@("`@("`@("`I"B\J
M($-O;F1?,"`@("`@("HO("`@("`@("D*+RH at 0V]N9&ET:6]N86P@*B\@("`@
M("D*+RH at 0V]M<&]U;F0@("`@*B\@("`@('L*+RH at 06-T:6]N("`@("`@*B\@
M("`@(%9#3%]F971C:"@I.PHO*B!#;VUP;W5N9"`@("`J+R`@("`@?0HO*B!#
2;VUP;W5N9"`@("`J+R`@('T*
`
end


-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe    
Never attribute to malice what can adequately be explained by incompetence.



More information about the varnish-dev mailing list