1
#pragma once
2

            
3
#include <vector>
4

            
5
#include "envoy/matcher/matcher.h"
6

            
7
#include "source/common/matcher/matcher.h"
8

            
9
namespace Envoy {
10
namespace Http {
11

            
12
// Forward declarations - actual types are defined in conn_manager_config.h.
13
enum class ForwardClientCertType;
14
enum class ClientCertDetailsType;
15

            
16
/**
17
 * Interface for forward client cert matcher actions. This allows the conn_manager_utility
18
 * to access the config from the matched action without depending on the HCM extension.
19
 * Inherits from Matcher::Action to support getTyped<> without dynamic_cast.
20
 */
21
class ForwardClientCertActionConfig : public Matcher::Action {
22
public:
23
  /**
24
   * @return the forward client cert type from this action config.
25
   */
26
  virtual ForwardClientCertType forwardClientCertType() const PURE;
27

            
28
  /**
29
   * @return the set of client cert details to include.
30
   */
31
  virtual const std::vector<ClientCertDetailsType>& setCurrentClientCertDetails() const PURE;
32
};
33

            
34
} // namespace Http
35
} // namespace Envoy