@@ -254,44 +254,49 @@ func getAndValidateListenerSupportedKinds(listener v1.Listener) (
254
254
var conds []conditions.Condition
255
255
var supportedKinds []v1.RouteGroupKind
256
256
257
- ngfSupportedKinds := map [v1.Kind ]struct {}{
258
- kinds .TLSRoute : {},
259
- kinds .HTTPRoute : {},
260
- kinds .GRPCRoute : {},
261
- }
262
-
263
- validRouteKind := func (kind v1.RouteGroupKind ) bool {
264
- if _ , ok := ngfSupportedKinds [kind .Kind ]; ! ok {
257
+ validProtocolRouteKind := func (kind v1.RouteGroupKind , validKinds []v1.RouteGroupKind ) bool {
258
+ matchedKind := false
259
+ for _ , k := range validKinds {
260
+ if k .Kind == kind .Kind {
261
+ matchedKind = true
262
+ break
263
+ }
264
+ }
265
+ if ! matchedKind {
265
266
return false
266
267
}
267
- if kind .Group == nil || * kind .Group != v1 .GroupName {
268
+ if kind .Group != nil && * kind .Group != v1 .GroupName {
268
269
return false
269
270
}
270
271
return true
271
272
}
272
273
274
+ var validKinds []v1.RouteGroupKind
275
+
276
+ switch listener .Protocol {
277
+ case v1 .HTTPProtocolType , v1 .HTTPSProtocolType :
278
+ validKinds = []v1.RouteGroupKind {
279
+ {Kind : v1 .Kind (kinds .HTTPRoute ), Group : helpers.GetPointer [v1.Group ](v1 .GroupName )},
280
+ {Kind : v1 .Kind (kinds .GRPCRoute ), Group : helpers.GetPointer [v1.Group ](v1 .GroupName )},
281
+ }
282
+ case v1 .TLSProtocolType :
283
+ validKinds = []v1.RouteGroupKind {
284
+ {Kind : v1 .Kind (kinds .TLSRoute ), Group : helpers.GetPointer [v1.Group ](v1 .GroupName )},
285
+ }
286
+ }
287
+
273
288
if listener .AllowedRoutes != nil && listener .AllowedRoutes .Kinds != nil {
274
289
supportedKinds = make ([]v1.RouteGroupKind , 0 , len (listener .AllowedRoutes .Kinds ))
275
290
for _ , kind := range listener .AllowedRoutes .Kinds {
276
- if ! validRouteKind (kind ) {
291
+ if ! validProtocolRouteKind (kind , validKinds ) {
277
292
msg := fmt .Sprintf ("Unsupported route kind \" %s/%s\" " , * kind .Group , kind .Kind )
278
293
conds = append (conds , staticConds .NewListenerInvalidRouteKinds (msg )... )
279
294
continue
280
295
}
281
296
supportedKinds = append (supportedKinds , kind )
282
297
}
283
298
} else {
284
- switch listener .Protocol {
285
- case v1 .HTTPProtocolType , v1 .HTTPSProtocolType :
286
- supportedKinds = []v1.RouteGroupKind {
287
- {Kind : v1 .Kind (kinds .HTTPRoute ), Group : helpers.GetPointer [v1.Group ](v1 .GroupName )},
288
- {Kind : v1 .Kind (kinds .GRPCRoute ), Group : helpers.GetPointer [v1.Group ](v1 .GroupName )},
289
- }
290
- case v1 .TLSProtocolType :
291
- supportedKinds = []v1.RouteGroupKind {
292
- {Kind : v1 .Kind (kinds .TLSRoute ), Group : helpers.GetPointer [v1.Group ](v1 .GroupName )},
293
- }
294
- }
299
+ supportedKinds = validKinds
295
300
}
296
301
297
302
return conds , supportedKinds
0 commit comments