@@ -94,6 +94,7 @@ func (h *filterChainTranslator) initFilterChain(ctx context.Context, fcc ir.Filt
94
94
95
95
return fc
96
96
}
97
+
97
98
func (h * filterChainTranslator ) computeHttpFilters (ctx context.Context , l ir.HttpFilterChainIR , reporter reports.ListenerReporter ) []* envoy_config_listener_v3.Filter {
98
99
log := contextutils .LoggerFrom (ctx ).Desugar ()
99
100
@@ -118,7 +119,7 @@ func (n *filterChainTranslator) computeNetworkFiltersForHttp(ctx context.Context
118
119
reporter : reporter ,
119
120
gateway : n .gateway , // corresponds to Gateway API listener
120
121
}
121
- networkFilters := sortNetworkFilters (n .computePreHCMFilters (ctx , l , reporter ))
122
+ networkFilters := sortNetworkFilters (n .computeCustomFilters (ctx , l . CustomNetworkFilters , reporter ))
122
123
networkFilter , err := hcm .computeNetworkFilters (ctx , l )
123
124
if err != nil {
124
125
return nil , err
@@ -127,7 +128,14 @@ func (n *filterChainTranslator) computeNetworkFiltersForHttp(ctx context.Context
127
128
return networkFilters , nil
128
129
}
129
130
130
- func (n * filterChainTranslator ) computePreHCMFilters (ctx context.Context , l ir.HttpFilterChainIR , reporter reports.ListenerReporter ) []plugins.StagedNetworkFilter {
131
+ // computeCustomFilters computes all custom filters, first from plugins, second
132
+ // from embedded filters on the FilterChain itself.
133
+ // For HTTP FilterChains these must be added before HCM.
134
+ func (n * filterChainTranslator ) computeCustomFilters (
135
+ ctx context.Context ,
136
+ customNetworkFilters []ir.CustomEnvoyFilter ,
137
+ reporter reports.ListenerReporter ,
138
+ ) []plugins.StagedNetworkFilter {
131
139
var networkFilters []plugins.StagedNetworkFilter
132
140
// Process the network filters.
133
141
for _ , plug := range n .PluginPass {
@@ -149,7 +157,7 @@ func (n *filterChainTranslator) computePreHCMFilters(ctx context.Context, l ir.H
149
157
networkFilters = append (networkFilters , nf )
150
158
}
151
159
}
152
- networkFilters = append (networkFilters , convertCustomNetworkFilters (l . CustomNetworkFilters )... )
160
+ networkFilters = append (networkFilters , convertCustomNetworkFilters (customNetworkFilters )... )
153
161
return networkFilters
154
162
}
155
163
@@ -341,7 +349,7 @@ func sortHttpFilters(filters plugins.StagedHttpFilterList) []*envoyhttp.HttpFilt
341
349
}
342
350
343
351
func (h * filterChainTranslator ) computeTcpFilters (ctx context.Context , l ir.TcpIR , reporter reports.ListenerReporter ) []* envoy_config_listener_v3.Filter {
344
- networkFilters := sortNetworkFilters (h .computeNetworkFiltersForTcp ( l ))
352
+ networkFilters := sortNetworkFilters (h .computeCustomFilters ( ctx , l . CustomNetworkFilters , reporter ))
345
353
346
354
cfg := & envoytcp.TcpProxy {
347
355
StatPrefix : l .FilterChainName ,
@@ -372,28 +380,6 @@ func (h *filterChainTranslator) computeTcpFilters(ctx context.Context, l ir.TcpI
372
380
return append (networkFilters , tcpFilter )
373
381
}
374
382
375
- func (t * filterChainTranslator ) computeNetworkFiltersForTcp (l ir.TcpIR ) []plugins.StagedNetworkFilter {
376
- var networkFilters []plugins.StagedNetworkFilter
377
- // Process the network filters.
378
- //for _, plug := range t.networkPlugins {
379
- // stagedFilters, err := plug.NetworkFiltersTCP(params, t.listener)
380
- // if err != nil {
381
- // validation.AppendTCPListenerError(t.report, validationapi.TcpListenerReport_Error_ProcessingError, err.Error())
382
- // }
383
- //
384
- // for _, nf := range stagedFilters {
385
- // if nf.Filter == nil {
386
- // log.Warnf("plugin %v implements NetworkFilters() but returned nil", plug.Name())
387
- // continue
388
- // }
389
- // networkFilters = append(networkFilters, nf)
390
- // }
391
- //}
392
-
393
- networkFilters = append (networkFilters , convertCustomNetworkFilters (l .CustomNetworkFilters )... )
394
- return networkFilters
395
- }
396
-
397
383
func NewFilterWithTypedConfig (name string , config proto.Message ) (* envoy_config_listener_v3.Filter , error ) {
398
384
s := & envoy_config_listener_v3.Filter {
399
385
Name : name ,
@@ -488,6 +474,7 @@ func (info *FilterChainInfo) toTransportSocket() *envoy_config_core_v3.Transport
488
474
ConfigType : & envoy_config_core_v3.TransportSocket_TypedConfig {TypedConfig : typedConfig },
489
475
}
490
476
}
477
+
491
478
func bytesDataSource (s []byte ) * envoy_config_core_v3.DataSource {
492
479
return & envoy_config_core_v3.DataSource {
493
480
Specifier : & envoy_config_core_v3.DataSource_InlineBytes {
0 commit comments