1
#pragma once
2

            
3
#include <memory>
4
#include <string>
5
#include <utility>
6
#include <vector>
7

            
8
#include "envoy/network/address.h"
9
#include "envoy/network/listen_socket.h"
10
#include "envoy/server/factory_context.h"
11

            
12
#include "absl/types/optional.h"
13
#include "cilium/bpf_metadata.h"
14
#include "cilium/host_map.h"
15
#include "cilium/network_policy.h"
16
#include "tests/bpf_metadata.pb.h"
17

            
18
namespace Envoy {
19

            
20
extern std::string host_map_config;
21
extern std::shared_ptr<const Cilium::PolicyHostMap> hostmap;
22

            
23
extern Network::Address::InstanceConstSharedPtr original_dst_address;
24
extern std::shared_ptr<const Cilium::NetworkPolicyMap> npmap;
25

            
26
extern std::string policy_config;
27
extern std::string policy_path;
28
extern std::vector<std::pair<std::string, std::string>> sds_configs;
29

            
30
extern void initTestMaps(Server::Configuration::ListenerFactoryContext& context);
31

            
32
namespace Cilium {
33
namespace BpfMetadata {
34

            
35
class TestConfig : public Config {
36
public:
37
  TestConfig(const ::cilium::TestBpfMetadata& config,
38
             Server::Configuration::ListenerFactoryContext& context);
39
  ~TestConfig() override;
40

            
41
  absl::optional<Cilium::BpfMetadata::SocketMetadata>
42
  extractSocketMetadata(Network::ConnectionSocket& socket) override;
43

            
44
  // Prevent socket options that require NET_ADMIN privileges from being applied during test
45
  // execution.
46
238
  bool addPrivilegedSocketOptions() override { return false; };
47
};
48

            
49
} // namespace BpfMetadata
50
} // namespace Cilium
51
} // namespace Envoy