Module network

Source
Expand description

Envoy Network Filter extension.

Creating a new Network Filter extension using Envoy SDK consists of the following steps:

  1. Implement NetworkFilter trait to define core logic of your extension
  2. Implement ExtensionFactory trait to create new instances of your extension
  3. Register your extension on WebAssembly module start up

§Examples

§Basic NetworkFilter:
use envoy::extension::NetworkFilter;

/// My very own `NetworkFilter`.
struct MyNetworkFilter;

impl NetworkFilter for MyNetworkFilter {}
§ExtensionFactory for MyNetworkFilter instances:
use envoy::extension::{ExtensionFactory, InstanceId, Result};

/// `ExtensionFactory` for `MyNetworkFilter`.
struct MyNetworkFilterFactory;

impl ExtensionFactory for MyNetworkFilterFactory {
    type Extension = MyNetworkFilter;

    fn name() -> &'static str { "my_network_filter" }

    fn new_extension(&mut self, _instance_id: InstanceId) -> Result<Self::Extension> {
        Ok(MyNetworkFilter)
    }
}
§Registration of MyNetworkFilter on start up:
use envoy::extension::{entrypoint, Module, Result};

entrypoint! { initialize } // put initialization logic into a function to make it unit testable

fn initialize() -> Result<Module> {
    Module::new()
        .add_network_filter(|_instance_id| Ok(MyNetworkFilterFactory))
}

Enums§

FilterStatus
Return codes for on_downstream_data and on_upstream_data filter invocations.

Traits§

ConnectionCompleteOps
An interface for operations available in the context of on_connection_complete filter invocation.
DownstreamCloseOps
An interface for operations available in the context of on_downstream_close filter invocation.
DownstreamDataOps
An interface for manipulating data in the read buffer from Downstream.
NetworkFilter
An interface of the Envoy Network Filter extension.
Ops
An interface for manipulating data in both read and write buffers.
UpstreamCloseOps
An interface for operations available in the context of on_upstream_close filter invocation.
UpstreamDataOps
An interface for manipulating data received from Upstream before they reach the write buffer for Downstream.