tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

test_proto_haproxy.c (1618B)


      1 /* Copyright (c) 2019-2021, The Tor Project, Inc. */
      2 /* See LICENSE for licensing information */
      3 
      4 /**
      5 * \file test_proto_haproxy.c
      6 * \brief Tests for our HAProxy protocol parser code
      7 */
      8 
      9 #define PROTO_HAPROXY_PRIVATE
     10 
     11 #include "test/test.h"
     12 #include "core/proto/proto_haproxy.h"
     13 #include "test/log_test_helpers.h"
     14 
     15 static void
     16 test_format_proxy_header_line(void *arg)
     17 {
     18  tor_addr_t addr;
     19  tor_addr_port_t *addr_port = NULL;
     20  char *output = NULL;
     21 
     22  (void) arg;
     23 
     24  /* IPv4 address. */
     25  tor_addr_parse(&addr, "192.168.1.2");
     26  addr_port = tor_addr_port_new(&addr, 8000);
     27  output = haproxy_format_proxy_header_line(addr_port);
     28 
     29  tt_str_op(output, OP_EQ, "PROXY TCP4 0.0.0.0 192.168.1.2 0 8000\r\n");
     30 
     31  tor_free(addr_port);
     32  tor_free(output);
     33 
     34  /* IPv6 address. */
     35  tor_addr_parse(&addr, "123:45:6789::5005:11");
     36  addr_port = tor_addr_port_new(&addr, 8000);
     37  output = haproxy_format_proxy_header_line(addr_port);
     38 
     39  tt_str_op(output, OP_EQ, "PROXY TCP6 :: 123:45:6789::5005:11 0 8000\r\n");
     40 
     41  tor_free(addr_port);
     42  tor_free(output);
     43 
     44  /* UNIX socket address. */
     45  memset(&addr, 0, sizeof(addr));
     46  addr.family = AF_UNIX;
     47  addr_port = tor_addr_port_new(&addr, 8000);
     48  output = haproxy_format_proxy_header_line(addr_port);
     49 
     50  /* If it's not an IPv4 or IPv6 address, haproxy_format_proxy_header_line
     51   * must return NULL. */
     52  tt_ptr_op(output, OP_EQ, NULL);
     53 
     54  tor_free(addr_port);
     55  tor_free(output);
     56 
     57 done:
     58  tor_free(addr_port);
     59  tor_free(output);
     60 }
     61 
     62 struct testcase_t proto_haproxy_tests[] = {
     63  { "format_proxy_header_line", test_format_proxy_header_line, 0, NULL, NULL },
     64 
     65  END_OF_TESTCASES
     66 };