MySQL 8.0.39
Source Code Documentation
routing_config.h
Go to the documentation of this file.
1/*
2 Copyright (c) 2023, 2024, Oracle and/or its affiliates.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License, version 2.0,
6 as published by the Free Software Foundation.
7
8 This program is designed to work with certain software (including
9 but not limited to OpenSSL) that is licensed under separate terms,
10 as designated in a particular file or component or in included license
11 documentation. The authors of MySQL hereby grant you an additional
12 permission to link the program and your derivative works with the
13 separately licensed software that they have either included with
14 the program or referenced in the documentation.
15
16 This program is distributed in the hope that it will be useful,
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 GNU General Public License for more details.
20
21 You should have received a copy of the GNU General Public License
22 along with this program; if not, write to the Free Software
23 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24*/
25
26#ifndef ROUTING_CONFIG_INCLUDED
27#define ROUTING_CONFIG_INCLUDED
28
29#include <string>
30
31#include "mysql/harness/filesystem.h" // Path
32#include "mysqlrouter/routing.h" // RoutingStrategy, AccessMode
33#include "protocol/protocol.h" // Protocol::Type
34#include "ssl_mode.h"
35#include "tcp_address.h"
36
37/**
38 * route specific configuration.
39 */
41 public:
42 Protocol::Type protocol{}; //!< protocol (classic, x)
43 std::string destinations; //!< destinations
44 int bind_port{}; //!< TCP port to bind to
45 mysql_harness::TCPAddress bind_address; //!< IP address to bind to
46 mysql_harness::Path named_socket; //!< unix domain socket path to bind to
47 int connect_timeout{}; //!< connect-timeout in seconds
49 routing::AccessMode::kUndefined}; //!< read-only/read-write
51 routing::RoutingStrategy::kUndefined}; //!< routing strategy (next-avail,
52 //!< ...)
53 int max_connections{}; //!< max connections allowed
54 unsigned long long max_connect_errors{}; //!< max connect errors
55 unsigned int client_connect_timeout{}; //!< client connect timeout in seconds
56 unsigned int net_buffer_length{}; //!< Size of buffer to receive packets
57 unsigned int thread_stack_size{}; //!< thread stack size in kilobytes
58
59 SslMode source_ssl_mode{}; //!< SslMode of the client side connection.
60 std::string source_ssl_cert; //!< Cert file
61 std::string source_ssl_key; //!< Key file
62 std::string source_ssl_cipher; //!< allowed TLS ciphers
63 std::string source_ssl_curves; //!< allowed TLS curves
64 std::string source_ssl_dh_params; //!< DH params
65
66 SslMode dest_ssl_mode{}; //!< SslMode of the server side connection.
67 SslVerify dest_ssl_verify{}; //!< How to verify the server-side cert.
68 std::string dest_ssl_cipher; //!< allowed TLS ciphers
69 std::string
70 dest_ssl_ca_file; //!< CA file to used to verify destinations' identity
71 std::string dest_ssl_ca_dir; //!< directory of CA files used to verify
72 //!< destinations' identity
73 std::string
74 dest_ssl_crl_file; //!< CRL file used to check revoked certificates
75 std::string dest_ssl_crl_dir; //!< directory of CRL files
76 std::string dest_ssl_curves; //!< allowed TLS curves
77
78 bool connection_sharing{}; //!< if connection sharing is allowed.
79 std::chrono::milliseconds
80 connection_sharing_delay{}; //!< delay before an idling connection is
81 //!< moved to the pool and connection sharing
82 //!< is allowed.
83};
84
85#endif // ROUTING_CONFIG_INCLUDED
Type
supported protocols
Definition: base_protocol.h:32
route specific configuration.
Definition: routing_config.h:40
std::string source_ssl_key
Key file.
Definition: routing_config.h:61
std::string destinations
destinations
Definition: routing_config.h:43
mysql_harness::Path named_socket
unix domain socket path to bind to
Definition: routing_config.h:46
SslMode dest_ssl_mode
SslMode of the server side connection.
Definition: routing_config.h:66
routing::AccessMode mode
read-only/read-write
Definition: routing_config.h:48
unsigned int client_connect_timeout
client connect timeout in seconds
Definition: routing_config.h:55
unsigned long long max_connect_errors
max connect errors
Definition: routing_config.h:54
std::string dest_ssl_curves
allowed TLS curves
Definition: routing_config.h:76
std::string dest_ssl_ca_file
CA file to used to verify destinations' identity.
Definition: routing_config.h:70
SslMode source_ssl_mode
SslMode of the client side connection.
Definition: routing_config.h:59
std::string dest_ssl_crl_file
CRL file used to check revoked certificates.
Definition: routing_config.h:74
int connect_timeout
connect-timeout in seconds
Definition: routing_config.h:47
Protocol::Type protocol
protocol (classic, x)
Definition: routing_config.h:42
int bind_port
TCP port to bind to.
Definition: routing_config.h:44
std::string source_ssl_dh_params
DH params.
Definition: routing_config.h:64
std::string dest_ssl_cipher
allowed TLS ciphers
Definition: routing_config.h:68
routing::RoutingStrategy routing_strategy
routing strategy (next-avail, ...)
Definition: routing_config.h:50
unsigned int net_buffer_length
Size of buffer to receive packets.
Definition: routing_config.h:56
bool connection_sharing
if connection sharing is allowed.
Definition: routing_config.h:78
std::string source_ssl_cert
Cert file.
Definition: routing_config.h:60
mysql_harness::TCPAddress bind_address
IP address to bind to.
Definition: routing_config.h:45
std::string source_ssl_curves
allowed TLS curves
Definition: routing_config.h:63
int max_connections
max connections allowed
Definition: routing_config.h:53
std::string dest_ssl_crl_dir
directory of CRL files
Definition: routing_config.h:75
unsigned int thread_stack_size
thread stack size in kilobytes
Definition: routing_config.h:57
std::string source_ssl_cipher
allowed TLS ciphers
Definition: routing_config.h:62
std::chrono::milliseconds connection_sharing_delay
delay before an idling connection is moved to the pool and connection sharing is allowed.
Definition: routing_config.h:80
SslVerify dest_ssl_verify
How to verify the server-side cert.
Definition: routing_config.h:67
std::string dest_ssl_ca_dir
directory of CA files used to verify destinations' identity
Definition: routing_config.h:71
Class representing a path in a file system.
Definition: filesystem.h:63
Defines an IP address with port number
Definition: tcp_address.h:40
AccessMode
Modes supported by Routing plugin.
Definition: routing.h:104
RoutingStrategy
Routing strategies supported by Routing plugin.
Definition: routing.h:111
SslMode
Definition: ssl_mode.h:29
SslVerify
Definition: ssl_mode.h:38