Module envoy_sdk::extension::filter::network[][src]

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.