[master] a5f2da706 vtc: cp bin/varnishtest/tests/o0{0,2}001.vtc
Nils Goroll
nils.goroll at uplex.de
Fri Feb 21 13:48:09 UTC 2025
commit a5f2da706a7992b9bbc491d8a6d1c154ac736b6b
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Fri Feb 21 14:44:40 2025 +0100
vtc: cp bin/varnishtest/tests/o0{0,2}001.vtc
copy as separate commit to improve the git history (show edits)
diff --git a/bin/varnishtest/tests/o02001.vtc b/bin/varnishtest/tests/o02001.vtc
new file mode 100644
index 000000000..97209254c
--- /dev/null
+++ b/bin/varnishtest/tests/o02001.vtc
@@ -0,0 +1,215 @@
+varnishtest "PROXY v2 test"
+
+server s1 {
+ rxreq
+ expect req.url == "/1"
+ expect req.http.x-forwarded-for == "${localhost}"
+ txresp
+
+ rxreq
+ expect req.url == "/2"
+ expect req.http.x-forwarded-for == "${localhost}"
+ txresp
+
+ rxreq
+ expect req.url == "/3"
+ expect req.http.x-forwarded-for == "${localhost}"
+ txresp
+
+ rxreq
+ expect req.url == "/4"
+ expect req.http.x-forwarded-for == "${localhost}"
+ txresp
+
+ rxreq
+ expect req.url == "/5"
+ expect req.http.x-forwarded-for == "${localhost}"
+ txresp
+
+ rxreq
+ expect req.url == "/6"
+ expect req.http.x-forwarded-for == "1.2.3.4"
+ txresp
+
+ rxreq
+ expect req.url == "/7"
+ expect req.http.x-forwarded-for == "102:304:506::d0e:f10"
+ txresp
+} -start
+
+varnish v1 -proto "PROXY" -vcl+backend {
+ import std;
+
+ acl fwd_client {
+ "1.2.3.4";
+ "102:304:506::d0e:f10";
+ }
+
+ acl fwd_server {
+ "5.6.7.8";
+ "8182:8384:8586::8d8e:8f80";
+ }
+
+ sub vcl_deliver {
+ set resp.http.li = local.ip;
+ set resp.http.lp = std.port(local.ip);
+ set resp.http.ri = remote.ip;
+ set resp.http.rp = std.port(remote.ip);
+ set resp.http.ci = client.ip;
+ set resp.http.cp = std.port(client.ip);
+ set resp.http.si = server.ip;
+ set resp.http.sp = std.port(server.ip);
+ set resp.http.fc = (client.ip ~ fwd_client);
+ set resp.http.fs = (server.ip ~ fwd_server);
+ set resp.http.xport = req.transport;
+ }
+} -start
+
+logexpect l1 -v v1 -g raw {
+ expect * 1000 Proxy "2 local local local local"
+ expect * 1003 ProxyGarbage "PROXY2: bad command \\(2\\)"
+ expect * 1004 ProxyGarbage "PROXY2: Ignoring UNSPEC\\|UNSPEC addresses"
+ expect * 1007 ProxyGarbage "PROXY2: Ignoring unsupported protocol \\(0x99\\)"
+ expect * 1010 ProxyGarbage "PROXY2: Ignoring short IPv4 addresses \\(11\\)"
+ expect * 1013 ProxyGarbage "PROXY2: Ignoring short IPv6 addresses \\(35\\)"
+ expect * 1016 Proxy "2 1.2.3.4 2314 5.6.7.8 2828"
+ expect * 1019 Proxy "2 102:304:506::d0e:f10 2314 8182:8384:8586::8d8e:8f80 2828"
+ expect * 1022 Begin "^sess 0 PROXY"
+ expect * 1022 SessClose "^RX_OVERFLOW"
+} -start
+
+client c1 {
+ # LOCAL command
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ sendhex "20 00 00 00"
+ txreq -url /1
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+ # Transport is HTTP/1, even though proxy is used
+ expect resp.http.xport == HTTP/1
+} -run
+
+delay .1
+
+client c1 {
+ # unknown command
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ sendhex "22 00 00 00"
+ timeout 8
+ expect_close
+} -run
+
+delay .1
+
+client c1 {
+ # UNSPEC proto
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ sendhex "21 00 00 00"
+ txreq -url /2
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+} -run
+
+delay .1
+
+client c1 {
+ # unknown proto
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ sendhex "21 99 00 00"
+ txreq -url /3
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+} -run
+
+delay .1
+
+client c1 {
+ # short IPv4
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ sendhex "21 11 00 0b"
+ sendhex "01 02 03 04 05 06 07 08 09 0a 0b"
+ txreq -url /4
+ rxresp
+ expect resp.status == 200
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+} -run
+
+delay .1
+
+client c1 {
+ # short IPv6
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ sendhex "21 21 00 23"
+ sendhex "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f"
+ sendhex "00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f"
+ sendhex "01 02 03"
+ txreq -url /5
+ rxresp
+ expect resp.status == 200
+ expect resp.http.fs == false
+ expect resp.http.fc == false
+ expect resp.http.si == "${v1_addr}"
+ expect resp.http.sp == "${v1_port}"
+ expect resp.http.ci == "${localhost}"
+} -run
+delay .1
+
+# good IPv4
+client c1 -proxy2 "1.2.3.4:2314 5.6.7.8:2828" {
+ txreq -url /6
+ rxresp
+ expect resp.status == 200
+ expect resp.http.fs == true
+ expect resp.http.fc == true
+ expect resp.http.ci == "1.2.3.4"
+ expect resp.http.cp == "2314"
+ expect resp.http.si == "5.6.7.8"
+ expect resp.http.sp == "2828"
+ expect resp.http.li == "${v1_addr}"
+ expect resp.http.lp == "${v1_port}"
+ expect resp.http.ri != "1.2.3.4"
+} -run
+
+delay .1
+
+# good IPv6
+client c1 \
+ -proxy2 "[102:304:506::d0e:f10]:2314 [8182:8384:8586::8d8e:8f80]:2828" {
+ txreq -url /7
+ rxresp
+ expect resp.status == 200
+ expect resp.http.fs == true
+ expect resp.http.fc == true
+ expect resp.http.ci == "102:304:506::d0e:f10"
+ expect resp.http.cp == "2314"
+ expect resp.http.si == "8182:8384:8586::8d8e:8f80"
+ expect resp.http.sp == "2828"
+ expect resp.http.li == "${v1_addr}"
+ expect resp.http.lp == "${v1_port}"
+ expect resp.http.ri != "102:304:506::d0e:f10"
+} -run
+
+delay .1
+
+client c2 {
+ # max length with garbage
+ sendhex "0d 0a 0d 0a 00 0d 0a 51 55 49 54 0a"
+ # announce 1025 bytes > 1024 implicit limit
+ sendhex "20 00 04 01"
+ expect_close
+} -run
+
+delay .1
+
+logexpect l1 -wait
More information about the varnish-commit
mailing list