Line data Source code
1 : #include "source/extensions/transport_sockets/proxy_protocol/config.h" 2 : 3 : #include "envoy/extensions/transport_sockets/proxy_protocol/v3/upstream_proxy_protocol.pb.h" 4 : #include "envoy/extensions/transport_sockets/proxy_protocol/v3/upstream_proxy_protocol.pb.validate.h" 5 : #include "envoy/registry/registry.h" 6 : 7 : #include "source/common/config/utility.h" 8 : #include "source/extensions/transport_sockets/proxy_protocol/proxy_protocol.h" 9 : 10 : namespace Envoy { 11 : namespace Extensions { 12 : namespace TransportSockets { 13 : namespace ProxyProtocol { 14 : 15 : Network::UpstreamTransportSocketFactoryPtr 16 : UpstreamProxyProtocolSocketConfigFactory::createTransportSocketFactory( 17 : const Protobuf::Message& message, 18 0 : Server::Configuration::TransportSocketFactoryContext& context) { 19 0 : const auto& outer_config = 20 0 : MessageUtil::downcastAndValidate<const envoy::extensions::transport_sockets::proxy_protocol:: 21 0 : v3::ProxyProtocolUpstreamTransport&>( 22 0 : message, context.messageValidationVisitor()); 23 0 : auto& inner_config_factory = Config::Utility::getAndCheckFactory< 24 0 : Server::Configuration::UpstreamTransportSocketConfigFactory>(outer_config.transport_socket()); 25 0 : ProtobufTypes::MessagePtr inner_factory_config = Config::Utility::translateToFactoryConfig( 26 0 : outer_config.transport_socket(), context.messageValidationVisitor(), inner_config_factory); 27 0 : auto inner_transport_factory = 28 0 : inner_config_factory.createTransportSocketFactory(*inner_factory_config, context); 29 0 : return std::make_unique<UpstreamProxyProtocolSocketFactory>( 30 0 : std::move(inner_transport_factory), outer_config.config(), context.statsScope()); 31 0 : } 32 : 33 1 : ProtobufTypes::MessagePtr UpstreamProxyProtocolSocketConfigFactory::createEmptyConfigProto() { 34 1 : return std::make_unique< 35 1 : envoy::extensions::transport_sockets::proxy_protocol::v3::ProxyProtocolUpstreamTransport>(); 36 0 : ; 37 0 : } 38 : 39 : REGISTER_FACTORY(UpstreamProxyProtocolSocketConfigFactory, 40 : Server::Configuration::UpstreamTransportSocketConfigFactory); 41 : 42 : } // namespace ProxyProtocol 43 : } // namespace TransportSockets 44 : } // namespace Extensions 45 : } // namespace Envoy