1
#pragma once
2

            
3
#include <string>
4
#include <vector>
5

            
6
#include "envoy/network/transport_socket.h"
7
#include "envoy/registry/registry.h"
8
#include "envoy/server/transport_socket_config.h"
9
#include "envoy/stats/stats_macros.h" // IWYU pragma: keep
10

            
11
#include "source/common/protobuf/protobuf.h"
12

            
13
#include "absl/status/statusor.h"
14

            
15
namespace Envoy {
16
namespace Cilium {
17

            
18
/**
19
 * Config registration for the Cilium TLS wrapper transport socket factory.
20
 * @see TransportSocketConfigFactory.
21
 */
22
class TlsWrapperConfigFactory : public virtual Server::Configuration::TransportSocketConfigFactory {
23
public:
24
  ~TlsWrapperConfigFactory() override = default;
25
42
  std::string name() const override { return name_; }
26

            
27
  const std::string name_ = "cilium.tls_wrapper";
28
};
29

            
30
class UpstreamTlsWrapperFactory
31
    : public Server::Configuration::UpstreamTransportSocketConfigFactory,
32
      public TlsWrapperConfigFactory {
33
public:
34
  absl::StatusOr<Network::UpstreamTransportSocketFactoryPtr> createTransportSocketFactory(
35
      const Protobuf::Message& config,
36
      Server::Configuration::TransportSocketFactoryContext& context) override;
37
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
38
};
39

            
40
DECLARE_FACTORY(UpstreamTlsWrapperFactory);
41

            
42
class DownstreamTlsWrapperFactory
43
    : public Server::Configuration::DownstreamTransportSocketConfigFactory,
44
      public TlsWrapperConfigFactory {
45
public:
46
  absl::StatusOr<Network::DownstreamTransportSocketFactoryPtr>
47
  createTransportSocketFactory(const Protobuf::Message& config,
48
                               Server::Configuration::TransportSocketFactoryContext& context,
49
                               const std::vector<std::string>& server_names) override;
50
  ProtobufTypes::MessagePtr createEmptyConfigProto() override;
51
};
52

            
53
DECLARE_FACTORY(DownstreamTlsWrapperFactory);
54
} // namespace Cilium
55
} // namespace Envoy