1
#pragma once
2

            
3
#include "envoy/stream_info/filter_state.h"
4

            
5
#include "absl/strings/str_join.h"
6

            
7
namespace Envoy {
8
namespace Network {
9

            
10
/**
11
 * SANs to validate certificate to set in the upstream connection. Filters can use this one to
12
 * override the SAN in TLS context.
13
 */
14
class UpstreamSubjectAltNames : public StreamInfo::FilterState::Object {
15
public:
16
  explicit UpstreamSubjectAltNames(const std::vector<std::string>& upstream_subject_alt_names)
17
159
      : upstream_subject_alt_names_(upstream_subject_alt_names) {}
18
167
  const std::vector<std::string>& value() const { return upstream_subject_alt_names_; }
19
1
  absl::optional<std::string> serializeAsString() const override {
20
1
    return absl::StrJoin(upstream_subject_alt_names_, ",");
21
1
  }
22
  static const std::string& key();
23

            
24
private:
25
  const std::vector<std::string> upstream_subject_alt_names_;
26
};
27

            
28
} // namespace Network
29
} // namespace Envoy