in grpc-xds/control-plane-go/pkg/xds/rds/route_grpc_server.go [31:72]
func CreateRouteConfigurationForGRPCServerListener(enableRBAC bool) (*routev3.RouteConfiguration, error) {
name := lds.GRPCServerListenerRouteConfigurationName
routeConfiguration := routev3.RouteConfiguration{
Name: name,
VirtualHosts: []*routev3.VirtualHost{
{
// The VirtualHost name _doesn't_ have to match the RouteConfiguration name.
Name: name,
Domains: []string{"*"},
Routes: []*routev3.Route{
{
Match: &routev3.RouteMatch{
PathSpecifier: &routev3.RouteMatch_Prefix{
Prefix: "/",
},
},
Action: &routev3.Route_NonForwardingAction{
NonForwardingAction: &routev3.NonForwardingAction{},
},
Decorator: &routev3.Decorator{
Operation: name + "/*",
},
},
},
},
},
}
if enableRBAC {
rbacPerRouteConfig, err := createRBACPerRouteConfig("xds", "host-certs")
if err != nil {
return nil, fmt.Errorf("could not marshall RBACPerRoute typedConfig into Any instance: %w", err)
}
for _, virtualHost := range routeConfiguration.VirtualHosts {
for _, route := range virtualHost.Routes {
route.TypedPerFilterConfig = map[string]*anypb.Any{
lds.EnvoyFilterHTTPRBACName: rbacPerRouteConfig,
}
}
}
}
return &routeConfiguration, nil
}