]> git.ipfire.org Git - thirdparty/pdns.git/blame - pdns/test-proxy_protocol_cc.cc
sdig: add basic TCP support to stdin packet parsing
[thirdparty/pdns.git] / pdns / test-proxy_protocol_cc.cc
CommitLineData
530e3e1a
PD
1#define BOOST_TEST_DYN_LINK
2#define BOOST_TEST_NO_MAIN
3#include <boost/test/unit_test.hpp>
4
5#include "iputils.hh"
6#include "proxy-protocol.hh"
7
8using namespace boost;
9using std::string;
10
11
12BOOST_AUTO_TEST_SUITE(test_proxy_protocol_cc)
13
14#define BINARY(s) (std::string(s, sizeof(s) - 1))
15
16#define PROXYMAGIC "\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"
17#define PROXYMAGICLEN sizeof(PROXYMAGIC)-1
18
19static string proxymagic(PROXYMAGIC, PROXYMAGICLEN);
20
21BOOST_AUTO_TEST_CASE(test_roundtrip) {
22 string proxyheader;
23
24 bool ptcp = true;
25 ComboAddress src("65.66.67.68:18762"); // 18762 = 0x494a = "IJ"
26 ComboAddress dest("69.70.71.72:19276"); // 19276 = 0x4b4c = "KL"
27 proxyheader = makeProxyHeader(ptcp, src, dest);
28
29 BOOST_CHECK_EQUAL(proxyheader, BINARY(
30 PROXYMAGIC
31 "\x21" // version | command
32 "\x11" // ipv4=0x10 | TCP=0x1
33 "\x00\x0c" // 4 bytes IPv4 * 2 + 2 port numbers = 8 + 2 * 2 =12 = 0xc
34 "ABCD" // 65.66.67.68
35 "EFGH" // 69.70.71.72
36 "IJ" // src port
37 "KL" // dst port
38 ));
39
40 bool ptcp2;
41 ComboAddress src2, dest2;
42
43 BOOST_CHECK_EQUAL(parseProxyHeader(proxyheader.c_str(), proxyheader.size(), src2, dest2, ptcp2), 28);
44
45 BOOST_CHECK_EQUAL(ptcp2, true);
46 BOOST_CHECK(src2 == ComboAddress("65.66.67.68:18762"));
47 BOOST_CHECK(dest2 == ComboAddress("69.70.71.72:19276"));
48}
49
50BOOST_AUTO_TEST_SUITE_END()