diff --git a/internal/gatewayapi/backendtrafficpolicy.go b/internal/gatewayapi/backendtrafficpolicy.go index a339d3b8c8d..b42b4f7d283 100644 --- a/internal/gatewayapi/backendtrafficpolicy.go +++ b/internal/gatewayapi/backendtrafficpolicy.go @@ -281,7 +281,11 @@ func (t *Translator) processBackendTrafficPolicyForRoute( ancestorRef := getAncestorRefForPolicy(mapKey.NamespacedName, p.SectionName) ancestorRefs = append(ancestorRefs, &ancestorRef) - parentRefCtxs = append(parentRefCtxs, GetRouteParentContext(targetedRoute, p, t.GatewayControllerName)) + // Only process parentRefs that were handled by this translator + // (skip those referencing Gateways with different GatewayClasses) + if parentRefCtx := targetedRoute.GetRouteParentContext(p); parentRefCtx != nil { + parentRefCtxs = append(parentRefCtxs, parentRefCtx) + } } } diff --git a/internal/gatewayapi/envoyextensionpolicy.go b/internal/gatewayapi/envoyextensionpolicy.go index c0322b943e5..2284e5d3c5b 100644 --- a/internal/gatewayapi/envoyextensionpolicy.go +++ b/internal/gatewayapi/envoyextensionpolicy.go @@ -475,7 +475,12 @@ func (t *Translator) translateEnvoyExtensionPolicyForRoute( parentRefs := GetParentReferences(route) routesWithDirectResponse := sets.New[string]() for _, p := range parentRefs { - parentRefCtx := GetRouteParentContext(route, p, t.GatewayControllerName) + // Skip if this parentRef was not processed by this translator + // (e.g., references a Gateway with a different GatewayClass) + parentRefCtx := route.GetRouteParentContext(p) + if parentRefCtx == nil { + continue + } gtwCtx := parentRefCtx.GetGateway() if gtwCtx == nil { continue diff --git a/internal/gatewayapi/securitypolicy.go b/internal/gatewayapi/securitypolicy.go index 4dca669f882..f39b408ddf6 100644 --- a/internal/gatewayapi/securitypolicy.go +++ b/internal/gatewayapi/securitypolicy.go @@ -647,7 +647,12 @@ func (t *Translator) translateSecurityPolicyForRoute( parentRefs := GetParentReferences(route) routesWithDirectResponse := sets.New[string]() for _, p := range parentRefs { - parentRefCtx := GetRouteParentContext(route, p, t.GatewayControllerName) + // Skip if this parentRef was not processed by this translator + // (e.g., references a Gateway with a different GatewayClass) + parentRefCtx := route.GetRouteParentContext(p) + if parentRefCtx == nil { + continue + } gtwCtx := parentRefCtx.GetGateway() if gtwCtx == nil { continue