Skip to content

Commit

Permalink
Moving more files into the listener manager directory. (#24419)
Browse files Browse the repository at this point in the history
plus follow-ups from #24394

Commit Message: n/a
Additional Description: n/a
Risk Level: low
Testing: n/a
Docs Changes: n/a

Signed-off-by: Alyssa Wilk <alyssar@chromium.org>
  • Loading branch information
alyssawilk authored Dec 8, 2022
1 parent 752a00f commit a6b767e
Show file tree
Hide file tree
Showing 27 changed files with 318 additions and 276 deletions.
7 changes: 7 additions & 0 deletions envoy/server/factory_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,15 @@ class FilterChainFactoryContext : public virtual FactoryContext {
using FilterChainFactoryContextPtr = std::unique_ptr<FilterChainFactoryContext>;
using FilterChainsByName = absl::flat_hash_map<std::string, Network::DrainableFilterChainSharedPtr>;

// This allows matchers to select the correct filter chain for a route.
class FilterChainBaseAction : public Matcher::Action {
public:
/**
* Get the filter chain for this request
* @param filter_chains_by_name the configured filter chains
* @param info the stream info for this request
* @ return Network::FilterChain* a pointer to the filter chain for this request.
*/
virtual const Network::FilterChain* get(const FilterChainsByName& filter_chains_by_name,
const StreamInfo::StreamInfo& info) const PURE;
};
Expand Down
78 changes: 75 additions & 3 deletions source/extensions/listener_managers/listener_manager/BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
load(
"//bazel:envoy_build_system.bzl",
"envoy_cc_extension",
"envoy_cc_library",
"envoy_extension_package",
"envoy_select_enable_http3",
)
Expand Down Expand Up @@ -29,11 +30,11 @@ envoy_cc_extension(
deps = [
"//source/server:listener_manager_factory_lib",
"//source/server:api_listener_lib",
"//source/server:active_raw_udp_listener_config",
":active_raw_udp_listener_config",
"//source/server:configuration_lib",
"//source/server:drain_manager_lib",
"//source/server:filter_chain_manager_lib",
"//source/server:lds_api_lib",
":filter_chain_manager_lib",
":lds_api_lib",
"//source/server:transport_socket_config_lib",
"//envoy/access_log:access_log_interface",
"//envoy/config:typed_metadata_interface",
Expand Down Expand Up @@ -81,3 +82,74 @@ envoy_cc_extension(
"//source/extensions/udp_packet_writer/gso:config",
]),
)

envoy_cc_library(
name = "active_raw_udp_listener_config",
srcs = ["active_raw_udp_listener_config.cc"],
hdrs = ["active_raw_udp_listener_config.h"],
visibility = [
"//test:__subpackages__",
],
deps = [
"//envoy/registry",
"//source/server:connection_handler_lib",
],
)

envoy_cc_library(
name = "filter_chain_manager_lib",
srcs = ["filter_chain_manager_impl.cc"],
hdrs = ["filter_chain_manager_impl.h"],
deps = [
":filter_chain_factory_context_callback",
"//envoy/config:typed_metadata_interface",
"//envoy/matcher:matcher_interface",
"//envoy/network:filter_interface",
"//envoy/server:instance_interface",
"//envoy/server:listener_manager_interface",
"//envoy/server:transport_socket_config_interface",
"//source/common/common:empty_string",
"//source/common/config:utility_lib",
"//source/common/init:manager_lib",
"//source/common/matcher:matcher_lib",
"//source/common/network:cidr_range_lib",
"//source/common/network:lc_trie_lib",
"//source/common/network/matching:data_impl_lib",
"//source/common/network/matching:inputs_lib",
"//source/server:configuration_lib",
"//source/server:factory_context_lib",
"@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
],
)

envoy_cc_library(
name = "filter_chain_factory_context_callback",
hdrs = ["filter_chain_factory_context_callback.h"],
deps = [
"//envoy/server:filter_config_interface",
"@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
],
)

envoy_cc_library(
name = "lds_api_lib",
srcs = ["lds_api.cc"],
hdrs = ["lds_api.h"],
deps = [
"//envoy/config:subscription_factory_interface",
"//envoy/config:subscription_interface",
"//envoy/init:manager_interface",
"//envoy/server:listener_manager_interface",
"//source/common/common:cleanup_lib",
"//source/common/config:api_version_lib",
"//source/common/config:subscription_base_interface",
"//source/common/config:utility_lib",
"//source/common/init:target_lib",
"//source/common/protobuf:utility_lib",
"@envoy_api//envoy/admin/v3:pkg_cc_proto",
"@envoy_api//envoy/config/core/v3:pkg_cc_proto",
"@envoy_api//envoy/config/listener/v3:pkg_cc_proto",
"@envoy_api//envoy/config/route/v3:pkg_cc_proto",
"@envoy_api//envoy/service/discovery/v3:pkg_cc_proto",
],
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "source/server/active_raw_udp_listener_config.h"
#include "source/extensions/listener_managers/listener_manager/active_raw_udp_listener_config.h"

#include <memory>
#include <string>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "source/server/filter_chain_manager_impl.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_manager_impl.h"

#include "envoy/config/listener/v3/listener_components.pb.h"

Expand Down Expand Up @@ -849,63 +849,5 @@ Configuration::FilterChainFactoryContextPtr FilterChainManagerImpl::createFilter
return std::make_unique<PerFilterChainFactoryContextImpl>(parent_context_, init_manager_);
}

FactoryContextImpl::FactoryContextImpl(Server::Instance& server,
const envoy::config::listener::v3::Listener& config,
Network::DrainDecision& drain_decision,
Stats::Scope& global_scope, Stats::Scope& listener_scope,
bool is_quic)
: server_(server), config_(config), drain_decision_(drain_decision),
global_scope_(global_scope), listener_scope_(listener_scope), is_quic_(is_quic) {}

AccessLog::AccessLogManager& FactoryContextImpl::accessLogManager() {
return server_.accessLogManager();
}
Upstream::ClusterManager& FactoryContextImpl::clusterManager() { return server_.clusterManager(); }
Event::Dispatcher& FactoryContextImpl::mainThreadDispatcher() { return server_.dispatcher(); }
const Server::Options& FactoryContextImpl::options() { return server_.options(); }
Grpc::Context& FactoryContextImpl::grpcContext() { return server_.grpcContext(); }
Router::Context& FactoryContextImpl::routerContext() { return server_.routerContext(); }
bool FactoryContextImpl::healthCheckFailed() { return server_.healthCheckFailed(); }
Http::Context& FactoryContextImpl::httpContext() { return server_.httpContext(); }
Init::Manager& FactoryContextImpl::initManager() { return server_.initManager(); }
const LocalInfo::LocalInfo& FactoryContextImpl::localInfo() const { return server_.localInfo(); }
Envoy::Runtime::Loader& FactoryContextImpl::runtime() { return server_.runtime(); }
Stats::Scope& FactoryContextImpl::scope() { return global_scope_; }
Singleton::Manager& FactoryContextImpl::singletonManager() { return server_.singletonManager(); }
OverloadManager& FactoryContextImpl::overloadManager() { return server_.overloadManager(); }
ThreadLocal::SlotAllocator& FactoryContextImpl::threadLocal() { return server_.threadLocal(); }
OptRef<Admin> FactoryContextImpl::admin() { return server_.admin(); }
TimeSource& FactoryContextImpl::timeSource() { return server_.timeSource(); }
ProtobufMessage::ValidationContext& FactoryContextImpl::messageValidationContext() {
return server_.messageValidationContext();
}
ProtobufMessage::ValidationVisitor& FactoryContextImpl::messageValidationVisitor() {
return server_.messageValidationContext().staticValidationVisitor();
}
Api::Api& FactoryContextImpl::api() { return server_.api(); }
ServerLifecycleNotifier& FactoryContextImpl::lifecycleNotifier() {
return server_.lifecycleNotifier();
}
ProcessContextOptRef FactoryContextImpl::processContext() { return server_.processContext(); }
Configuration::ServerFactoryContext& FactoryContextImpl::getServerFactoryContext() const {
return server_.serverFactoryContext();
}
Configuration::TransportSocketFactoryContext&
FactoryContextImpl::getTransportSocketFactoryContext() const {
return server_.transportSocketFactoryContext();
}
const envoy::config::core::v3::Metadata& FactoryContextImpl::listenerMetadata() const {
return config_.metadata();
}
const Envoy::Config::TypedMetadata& FactoryContextImpl::listenerTypedMetadata() const {
// TODO(nareddyt): Needs an implementation for this context. Currently not used.
PANIC("not implemented");
}
envoy::config::core::v3::TrafficDirection FactoryContextImpl::direction() const {
return config_.traffic_direction();
}
Network::DrainDecision& FactoryContextImpl::drainDecision() { return drain_decision_; }
Stats::Scope& FactoryContextImpl::listenerScope() { return listener_scope_; }
bool FactoryContextImpl::isQuicListener() const { return is_quic_; }
} // namespace Server
} // namespace Envoy
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@
#include "source/common/init/manager_impl.h"
#include "source/common/network/cidr_range.h"
#include "source/common/network/lc_trie.h"
#include "source/server/filter_chain_factory_context_callback.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_factory_context_callback.h"
#include "source/server/factory_context_impl.h"

#include "absl/container/flat_hash_map.h"

Expand Down Expand Up @@ -141,57 +142,6 @@ class FilterChainImpl : public Network::DrainableFilterChain {
const std::string name_;
};

/**
* Implementation of FactoryContext wrapping a Server::Instance and some listener components.
*/
class FactoryContextImpl : public Configuration::FactoryContext {
public:
FactoryContextImpl(Server::Instance& server, const envoy::config::listener::v3::Listener& config,
Network::DrainDecision& drain_decision, Stats::Scope& global_scope,
Stats::Scope& listener_scope, bool is_quic);

// Configuration::FactoryContext
AccessLog::AccessLogManager& accessLogManager() override;
Upstream::ClusterManager& clusterManager() override;
Event::Dispatcher& mainThreadDispatcher() override;
const Server::Options& options() override;
Grpc::Context& grpcContext() override;
Router::Context& routerContext() override;
bool healthCheckFailed() override;
Http::Context& httpContext() override;
Init::Manager& initManager() override;
const LocalInfo::LocalInfo& localInfo() const override;
Envoy::Runtime::Loader& runtime() override;
Stats::Scope& scope() override;
Stats::Scope& serverScope() override { return server_.stats(); }
Singleton::Manager& singletonManager() override;
OverloadManager& overloadManager() override;
ThreadLocal::SlotAllocator& threadLocal() override;
OptRef<Admin> admin() override;
TimeSource& timeSource() override;
ProtobufMessage::ValidationContext& messageValidationContext() override;
ProtobufMessage::ValidationVisitor& messageValidationVisitor() override;
Api::Api& api() override;
ServerLifecycleNotifier& lifecycleNotifier() override;
ProcessContextOptRef processContext() override;
Configuration::ServerFactoryContext& getServerFactoryContext() const override;
Configuration::TransportSocketFactoryContext& getTransportSocketFactoryContext() const override;
const envoy::config::core::v3::Metadata& listenerMetadata() const override;
const Envoy::Config::TypedMetadata& listenerTypedMetadata() const override;
envoy::config::core::v3::TrafficDirection direction() const override;
Network::DrainDecision& drainDecision() override;
Stats::Scope& listenerScope() override;
bool isQuicListener() const override;

private:
Server::Instance& server_;
const envoy::config::listener::v3::Listener& config_;
Network::DrainDecision& drain_decision_;
Stats::Scope& global_scope_;
Stats::Scope& listener_scope_;
bool is_quic_;
};

/**
* Implementation of FilterChainManager. It owns and exchange filter chains.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "source/server/lds_api.h"
#include "source/extensions/listener_managers/listener_manager/lds_api.h"

#include "envoy/admin/v3/config_dump.pb.h"
#include "envoy/config/core/v3/config_source.pb.h"
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
#include "source/common/network/utility.h"
#include "source/common/protobuf/utility.h"
#include "source/common/runtime/runtime_features.h"
#include "source/extensions/listener_managers/listener_manager/active_raw_udp_listener_config.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_manager_impl.h"
#include "source/extensions/listener_managers/listener_manager/listener_manager_impl.h"
#include "source/server/active_raw_udp_listener_config.h"
#include "source/server/configuration_impl.h"
#include "source/server/drain_manager_impl.h"
#include "source/server/filter_chain_manager_impl.h"
#include "source/server/transport_socket_config_impl.h"

#ifdef ENVOY_ENABLE_QUIC
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include "source/common/init/manager_impl.h"
#include "source/common/init/target_impl.h"
#include "source/common/quic/quic_stat_names.h"
#include "source/server/filter_chain_manager_impl.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_manager_impl.h"
#include "source/server/transport_socket_config_impl.h"

namespace Envoy {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
#include "source/server/api_listener_impl.h"
#include "source/server/configuration_impl.h"
#include "source/server/drain_manager_impl.h"
#include "source/server/filter_chain_manager_impl.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_manager_impl.h"
#include "source/server/transport_socket_config_impl.h"

namespace Envoy {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@
#include "source/common/config/well_known_names.h"
#include "source/common/filter/config_discovery_impl.h"
#include "source/common/quic/quic_stat_names.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_factory_context_callback.h"
#include "source/extensions/listener_managers/listener_manager/filter_chain_manager_impl.h"
#include "source/extensions/listener_managers/listener_manager/lds_api.h"
#include "source/extensions/listener_managers/listener_manager/listener_impl.h"
#include "source/server/filter_chain_factory_context_callback.h"
#include "source/server/filter_chain_manager_impl.h"
#include "source/server/lds_api.h"
#include "source/server/listener_manager_factory.h"

namespace Envoy {
Expand Down
Loading

0 comments on commit a6b767e

Please sign in to comment.