@@ -60,7 +60,14 @@ pub mod listener_ip_allowlist;
6060pub mod listener_sni_router;
6161pub mod listener_tls_detector;
6262
63- declare_init_functions ! ( init, new_http_filter_config_fn) ;
63+ // DNS gateway filter examples.
64+ pub mod dns_gateway;
65+
66+ declare_all_init_functions ! ( init,
67+ http: new_http_filter_config_fn,
68+ network: new_network_filter_config_fn,
69+ udp_listener: new_udp_listener_filter_config_fn
70+ ) ;
6471
6572/// This implements the [`envoy_proxy_dynamic_modules_rust_sdk::ProgramInitFunction`].
6673///
@@ -102,3 +109,33 @@ fn new_http_filter_config_fn<EC: EnvoyHttpFilterConfig, EHF: EnvoyHttpFilter>(
102109 _ => panic ! ( "Unknown filter name: {filter_name}" ) ,
103110 }
104111}
112+
113+ fn new_network_filter_config_fn < EC : EnvoyNetworkFilterConfig , ENF : EnvoyNetworkFilter > (
114+ _envoy_filter_config : & mut EC ,
115+ filter_name : & str ,
116+ filter_config : & [ u8 ] ,
117+ ) -> Option < Box < dyn NetworkFilterConfig < ENF > > > {
118+ match filter_name {
119+ "cache_lookup" => Some ( Box :: new (
120+ dns_gateway:: cache_lookup:: CacheLookupFilterConfig :: new ( filter_config) ,
121+ ) ) ,
122+ _ => panic ! ( "Unknown network filter name: {filter_name}" ) ,
123+ }
124+ }
125+
126+ fn new_udp_listener_filter_config_fn <
127+ EC : EnvoyUdpListenerFilterConfig ,
128+ ELF : EnvoyUdpListenerFilter ,
129+ > (
130+ _envoy_filter_config : & mut EC ,
131+ filter_name : & str ,
132+ filter_config : & [ u8 ] ,
133+ ) -> Option < Box < dyn UdpListenerFilterConfig < ELF > > > {
134+ match filter_name {
135+ "dns_gateway" => {
136+ let config = dns_gateway:: DnsGatewayFilterConfig :: new ( filter_config) ?;
137+ Some ( Box :: new ( config) )
138+ }
139+ _ => panic ! ( "Unknown UDP listener filter name: {filter_name}" ) ,
140+ }
141+ }
0 commit comments