24#ifndef NETWORK_PROVIDER_H 
   25#define NETWORK_PROVIDER_H 
   27#ifndef XCOM_WITHOUT_OPENSSL 
   32#include <openssl/err.h> 
   33#include <openssl/ssl.h> 
  122    static std::vector<const char *> m_running_protocol_to_string = {
"XCom",
 
  126               ? m_running_protocol_to_string[protocol]
 
  127               : 
"Invalid Protocol";
 
  204#ifndef XCOM_WITHOUT_OPENSSL
 
  214#ifndef XCOM_WITHOUT_OPENSSL
 
  215        ssl_fd(static_cast<SSL *>(parameter_ssl_fd)),
 
  221#ifndef XCOM_WITHOUT_OPENSSL
 
  222                     SSL *parameter_ssl_fd,
 
  224                     bool parameter_has_error)
 
  226#ifndef XCOM_WITHOUT_OPENSSL
 
  233#ifndef XCOM_WITHOUT_OPENSSL 
  321  virtual std::pair<bool, int> 
start() = 0;
 
  336  virtual std::pair<bool, int> 
stop() = 0;
 
  372    std::function<void()> retval = []() {
 
  373#ifndef XCOM_WITHOUT_OPENSSL 
  374#if OPENSSL_VERSION_NUMBER < 0x10100000L 
  375      ERR_remove_thread_state(
nullptr);
 
  400      const std::string &address, 
const unsigned short port,
 
  426      null_desired_value = 
nullptr;
 
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:251
 
This class is a helper to translate a Communication Stack to a string.
Definition: network_provider.h:119
 
static const char * to_string(enum_transport_protocol protocol)
Definition: network_provider.h:121
 
Class that provides Network Namespace services.
Definition: network_provider.h:242
 
virtual bool set_network_namespace(const std::string &network_namespace)=0
Set active network namespace specified by a name.
 
virtual ~Network_namespace_manager()
Definition: network_provider.h:244
 
virtual bool restore_original_network_namespace()=0
Restore original network namespace used to be active before a new network namespace has been set.
 
virtual int channel_get_network_namespace(std::string &net_ns)=0
Method to get the network namespace configured for a channel.
 
Base class for External Network Providers.
Definition: network_provider.h:295
 
void reset_new_connection()
Definition: network_provider.h:447
 
virtual int close_connection(const Network_connection &connection)=0
Closes an open connection to another XCom endpoint served by the same Network provider.
 
virtual bool finalize_secure_connections_context()=0
 
Network_connection * get_new_connection()
Get the new connection object.
Definition: network_provider.h:437
 
virtual std::function< void()> get_secure_connections_context_cleaner()
Definition: network_provider.h:371
 
virtual std::pair< bool, int > start()=0
Starts the network provider.
 
virtual std::pair< bool, int > stop()=0
Stops the network provider.
 
static constexpr int default_connection_timeout()
Definition: network_provider.h:457
 
Network_provider()
Definition: network_provider.h:297
 
virtual bool configure_secure_connections(const Network_configuration_parameters ¶ms)=0
Configures the active provider with all things needed to establish SSL connections.
 
std::atomic< Network_connection * > m_shared_connection
Definition: network_provider.h:460
 
virtual ~Network_provider()
Definition: network_provider.h:306
 
Network_provider & operator=(Network_provider ¶m)=delete
 
virtual enum_transport_protocol get_communication_stack() const =0
Get the communication stack implemented by this provider.
 
virtual void cleanup_secure_connections_context()=0
 
virtual bool configure(const Network_configuration_parameters ¶ms)=0
Configures a network provider.
 
void set_new_connection(Network_connection *connection)
Lock-free Set connection.
Definition: network_provider.h:423
 
Network_provider(Network_provider &¶m)
Definition: network_provider.h:300
 
Network_provider(Network_provider ¶m)=delete
 
virtual std::unique_ptr< Network_connection > open_connection(const std::string &address, const unsigned short port, const Network_security_credentials &security_credentials, int connection_timeout=default_connection_timeout(), network_provider_dynamic_log_level log_level=network_provider_dynamic_log_level::PROVIDED)=0
Opens a new connection to another XCom endpoint served by the same Network provider.
 
bool load(THD *, const dd::String_type &fname, dd::String_type *buf)
Read an sdi file from disk and store in a buffer.
Definition: sdi_file.cc:308
 
static loglevel log_level(const Sql_condition *condition)
Definition: histogram.cc:1643
 
ssl_enum_fips_mode_options
Definition: network_provider.h:69
 
@ INVALID_SSL_FIPS_MODE
Definition: network_provider.h:70
 
@ FIPS_MODE_ON
Definition: network_provider.h:72
 
@ FIPS_MODE_OFF
Definition: network_provider.h:71
 
@ FIPS_MODE_STRICT
Definition: network_provider.h:73
 
@ LAST_SSL_FIPS_MODE
Definition: network_provider.h:74
 
enum_transport_protocol
Enum that describes the available XCom Communication Stacks.
Definition: network_provider.h:45
 
@ INVALID_PROTOCOL
Definition: network_provider.h:46
 
@ MYSQL_PROTOCOL
Definition: network_provider.h:48
 
@ XCOM_PROTOCOL
Definition: network_provider.h:47
 
ssl_enum_mode_options
Definition: network_provider.h:55
 
@ LAST_SSL_MODE
Definition: network_provider.h:62
 
@ SSL_VERIFY_CA
Definition: network_provider.h:60
 
@ SSL_VERIFY_IDENTITY
Definition: network_provider.h:61
 
@ SSL_REQUIRED
Definition: network_provider.h:59
 
@ SSL_PREFERRED
Definition: network_provider.h:58
 
@ INVALID_SSL_MODE
Definition: network_provider.h:56
 
@ SSL_DISABLED
Definition: network_provider.h:57
 
network_provider_dynamic_log_level
Dynamic log level enum values.
Definition: network_provider.h:103
 
@ LAST_NETWORK_PROVIDER_DYNAMIC_LOG_LEVEL
 
static connection_descriptor * new_connection(int fd, SSL *ssl_fd)
Definition: node_connection.h:61
 
required string network_namespace
Definition: replication_asynchronous_connection_failover.proto:34
 
required uint64 port
Definition: replication_asynchronous_connection_failover.proto:33
 
Possible configuration parameters.
Definition: network_provider.h:191
 
struct ssl_parameters ssl_params
Definition: network_provider.h:194
 
struct tls_parameters tls_params
Definition: network_provider.h:195
 
unsigned short port
Definition: network_provider.h:192
 
Represents an open connection.
Definition: network_provider.h:201
 
Network_connection(int parameter_fd, SSL *parameter_ssl_fd, bool parameter_has_error)
Definition: network_provider.h:220
 
int fd
Definition: network_provider.h:232
 
Network_connection(int parameter_fd, void *parameter_ssl_fd)
Definition: network_provider.h:212
 
Network_connection(int parameter_fd)
Definition: network_provider.h:202
 
SSL * ssl_fd
Definition: network_provider.h:234
 
bool has_error
Definition: network_provider.h:236
 
Security credentials to establish a connection.
Definition: network_provider.h:134
 
std::string user
Definition: network_provider.h:135
 
bool use_ssl
Definition: network_provider.h:137
 
std::string pass
Definition: network_provider.h:136
 
Definition: network_provider.h:171
 
const char * server_key_file
Definition: network_provider.h:173
 
const char * client_key_file
Definition: network_provider.h:175
 
const char * ca_path
Definition: network_provider.h:178
 
const char * cipher
Definition: network_provider.h:181
 
const char * crl_file
Definition: network_provider.h:179
 
const char * client_cert_file
Definition: network_provider.h:176
 
const char * crl_path
Definition: network_provider.h:180
 
int ssl_mode
Definition: network_provider.h:172
 
const char * server_cert_file
Definition: network_provider.h:174
 
const char * ca_file
Definition: network_provider.h:177
 
Definition: network_provider.h:183
 
const char * tls_ciphersuites
Definition: network_provider.h:185
 
const char * tls_version
Definition: network_provider.h:184