1
#include "source/extensions/matching/network/common/inputs.h"
2

            
3
#include "envoy/http/filter.h"
4
#include "envoy/registry/registry.h"
5

            
6
#include "absl/strings/str_cat.h"
7

            
8
namespace Envoy {
9
namespace Network {
10
namespace Matching {
11

            
12
12
Matcher::DataInputGetResult TransportProtocolInput::get(const MatchingData& data) const {
13
12
  absl::string_view transport_protocol = data.socket().detectedTransportProtocol();
14
12
  if (!transport_protocol.empty()) {
15
11
    return Matcher::DataInputGetResult::CreateStringView(transport_protocol);
16
11
  }
17
1
  return Matcher::DataInputGetResult::NoData();
18
12
}
19

            
20
class DestinationIPInputFactory : public DestinationIPInputBaseFactory<MatchingData> {};
21
class UdpDestinationIPInputFactory : public DestinationIPInputBaseFactory<UdpMatchingData> {};
22
class HttpDestinationIPInputFactory : public DestinationIPInputBaseFactory<Http::HttpMatchingData> {
23
};
24
REGISTER_FACTORY(DestinationIPInputFactory, Matcher::DataInputFactory<MatchingData>);
25
REGISTER_FACTORY(UdpDestinationIPInputFactory, Matcher::DataInputFactory<UdpMatchingData>);
26
REGISTER_FACTORY(HttpDestinationIPInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
27

            
28
class DestinationPortInputFactory : public DestinationPortInputBaseFactory<MatchingData> {};
29
class UdpDestinationPortInputFactory : public DestinationPortInputBaseFactory<UdpMatchingData> {};
30
class HttpDestinationPortInputFactory
31
    : public DestinationPortInputBaseFactory<Http::HttpMatchingData> {};
32
REGISTER_FACTORY(DestinationPortInputFactory, Matcher::DataInputFactory<MatchingData>);
33
REGISTER_FACTORY(UdpDestinationPortInputFactory, Matcher::DataInputFactory<UdpMatchingData>);
34
REGISTER_FACTORY(HttpDestinationPortInputFactory,
35
                 Matcher::DataInputFactory<Http::HttpMatchingData>);
36

            
37
class SourceIPInputFactory : public SourceIPInputBaseFactory<MatchingData> {};
38
class UdpSourceIPInputFactory : public SourceIPInputBaseFactory<UdpMatchingData> {};
39
class HttpSourceIPInputFactory : public SourceIPInputBaseFactory<Http::HttpMatchingData> {};
40
REGISTER_FACTORY(SourceIPInputFactory, Matcher::DataInputFactory<MatchingData>);
41
REGISTER_FACTORY(UdpSourceIPInputFactory, Matcher::DataInputFactory<UdpMatchingData>);
42
REGISTER_FACTORY(HttpSourceIPInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
43

            
44
class SourcePortInputFactory : public SourcePortInputBaseFactory<MatchingData> {};
45
class UdpSourcePortInputFactory : public SourcePortInputBaseFactory<UdpMatchingData> {};
46
class HttpSourcePortInputFactory : public SourcePortInputBaseFactory<Http::HttpMatchingData> {};
47
REGISTER_FACTORY(SourcePortInputFactory, Matcher::DataInputFactory<MatchingData>);
48
REGISTER_FACTORY(UdpSourcePortInputFactory, Matcher::DataInputFactory<UdpMatchingData>);
49
REGISTER_FACTORY(HttpSourcePortInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
50

            
51
class DirectSourceIPInputFactory : public DirectSourceIPInputBaseFactory<MatchingData> {};
52
class HttpDirectSourceIPInputFactory
53
    : public DirectSourceIPInputBaseFactory<Http::HttpMatchingData> {};
54
REGISTER_FACTORY(DirectSourceIPInputFactory, Matcher::DataInputFactory<MatchingData>);
55
REGISTER_FACTORY(HttpDirectSourceIPInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
56

            
57
class ServerNameInputFactory : public ServerNameInputBaseFactory<MatchingData> {};
58
class HttpServerNameInputFactory : public ServerNameInputBaseFactory<Http::HttpMatchingData> {};
59
REGISTER_FACTORY(ServerNameInputFactory, Matcher::DataInputFactory<MatchingData>);
60
REGISTER_FACTORY(HttpServerNameInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
61

            
62
class SourceTypeInputFactory : public SourceTypeInputBaseFactory<MatchingData> {};
63
class HttpSourceTypeInputFactory : public SourceTypeInputBaseFactory<Http::HttpMatchingData> {};
64
REGISTER_FACTORY(SourceTypeInputFactory, Matcher::DataInputFactory<MatchingData>);
65
REGISTER_FACTORY(HttpSourceTypeInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
66

            
67
REGISTER_FACTORY(TransportProtocolInputFactory, Matcher::DataInputFactory<MatchingData>);
68

            
69
class FilterStateInputFactory : public FilterStateInputBaseFactory<MatchingData> {};
70
class HttpFilterStateInputFactory : public FilterStateInputBaseFactory<Http::HttpMatchingData> {};
71
REGISTER_FACTORY(FilterStateInputFactory, Matcher::DataInputFactory<MatchingData>);
72
REGISTER_FACTORY(HttpFilterStateInputFactory, Matcher::DataInputFactory<Http::HttpMatchingData>);
73

            
74
class NetworkNamespaceInputFactory : public NetworkNamespaceInputBaseFactory<MatchingData> {};
75
class UdpNetworkNamespaceInputFactory : public NetworkNamespaceInputBaseFactory<UdpMatchingData> {};
76
class HttpNetworkNamespaceInputFactory
77
    : public NetworkNamespaceInputBaseFactory<Http::HttpMatchingData> {};
78
REGISTER_FACTORY(NetworkNamespaceInputFactory, Matcher::DataInputFactory<MatchingData>);
79
REGISTER_FACTORY(UdpNetworkNamespaceInputFactory, Matcher::DataInputFactory<UdpMatchingData>);
80
REGISTER_FACTORY(HttpNetworkNamespaceInputFactory,
81
                 Matcher::DataInputFactory<Http::HttpMatchingData>);
82

            
83
} // namespace Matching
84
} // namespace Network
85
} // namespace Envoy