// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/config/route/v3/scoped_route.proto

package envoy_config_route_v3

import (
	fmt "fmt"
	_ "github.com/cncf/udpa/go/udpa/annotations"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	proto "github.com/golang/protobuf/proto"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Specifies a routing scope, which associates a
// :ref:`Key<envoy_api_msg_config.route.v3.ScopedRouteConfiguration.Key>` to a
// :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` (identified by its resource name).
//
// The HTTP connection manager builds up a table consisting of these Key to
// RouteConfiguration mappings, and looks up the RouteConfiguration to use per
// request according to the algorithm specified in the
// :ref:`scope_key_builder<envoy_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>`
// assigned to the HttpConnectionManager.
//
// For example, with the following configurations (in YAML):
//
// HttpConnectionManager config:
//
// .. code::
//
//   ...
//   scoped_routes:
//     name: foo-scoped-routes
//     scope_key_builder:
//       fragments:
//         - header_value_extractor:
//             name: X-Route-Selector
//             element_separator: ,
//             element:
//               separator: =
//               key: vip
//
// ScopedRouteConfiguration resources (specified statically via
// :ref:`scoped_route_configurations_list<envoy_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scoped_route_configurations_list>`
// or obtained dynamically via SRDS):
//
// .. code::
//
//  (1)
//   name: route-scope1
//   route_configuration_name: route-config1
//   key:
//      fragments:
//        - string_key: 172.10.10.20
//
//  (2)
//   name: route-scope2
//   route_configuration_name: route-config2
//   key:
//     fragments:
//       - string_key: 172.20.20.30
//
// A request from a client such as:
//
// .. code::
//
//     GET / HTTP/1.1
//     Host: foo.com
//     X-Route-Selector: vip=172.10.10.20
//
// would result in the routing table defined by the `route-config1`
// RouteConfiguration being assigned to the HTTP request/stream.
//
type ScopedRouteConfiguration struct {
	// The name assigned to the routing scope.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The resource name to use for a :ref:`envoy_api_msg_service.discovery.v3.DiscoveryRequest` to an
	// RDS server to fetch the :ref:`envoy_api_msg_config.route.v3.RouteConfiguration` associated
	// with this scope.
	RouteConfigurationName string `protobuf:"bytes,2,opt,name=route_configuration_name,json=routeConfigurationName,proto3" json:"route_configuration_name,omitempty"`
	// The key to match against.
	Key                  *ScopedRouteConfiguration_Key `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
	XXX_unrecognized     []byte                        `json:"-"`
	XXX_sizecache        int32                         `json:"-"`
}

func (m *ScopedRouteConfiguration) Reset()         { *m = ScopedRouteConfiguration{} }
func (m *ScopedRouteConfiguration) String() string { return proto.CompactTextString(m) }
func (*ScopedRouteConfiguration) ProtoMessage()    {}
func (*ScopedRouteConfiguration) Descriptor() ([]byte, []int) {
	return fileDescriptor_3339c04c2fb0ae6d, []int{0}
}

func (m *ScopedRouteConfiguration) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ScopedRouteConfiguration.Unmarshal(m, b)
}
func (m *ScopedRouteConfiguration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ScopedRouteConfiguration.Marshal(b, m, deterministic)
}
func (m *ScopedRouteConfiguration) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ScopedRouteConfiguration.Merge(m, src)
}
func (m *ScopedRouteConfiguration) XXX_Size() int {
	return xxx_messageInfo_ScopedRouteConfiguration.Size(m)
}
func (m *ScopedRouteConfiguration) XXX_DiscardUnknown() {
	xxx_messageInfo_ScopedRouteConfiguration.DiscardUnknown(m)
}

var xxx_messageInfo_ScopedRouteConfiguration proto.InternalMessageInfo

func (m *ScopedRouteConfiguration) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *ScopedRouteConfiguration) GetRouteConfigurationName() string {
	if m != nil {
		return m.RouteConfigurationName
	}
	return ""
}

func (m *ScopedRouteConfiguration) GetKey() *ScopedRouteConfiguration_Key {
	if m != nil {
		return m.Key
	}
	return nil
}

// Specifies a key which is matched against the output of the
// :ref:`scope_key_builder<envoy_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>`
// specified in the HttpConnectionManager. The matching is done per HTTP
// request and is dependent on the order of the fragments contained in the
// Key.
type ScopedRouteConfiguration_Key struct {
	// The ordered set of fragments to match against. The order must match the
	// fragments in the corresponding
	// :ref:`scope_key_builder<envoy_api_field_extensions.filters.network.http_connection_manager.v3.ScopedRoutes.scope_key_builder>`.
	Fragments            []*ScopedRouteConfiguration_Key_Fragment `protobuf:"bytes,1,rep,name=fragments,proto3" json:"fragments,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                                 `json:"-"`
	XXX_unrecognized     []byte                                   `json:"-"`
	XXX_sizecache        int32                                    `json:"-"`
}

func (m *ScopedRouteConfiguration_Key) Reset()         { *m = ScopedRouteConfiguration_Key{} }
func (m *ScopedRouteConfiguration_Key) String() string { return proto.CompactTextString(m) }
func (*ScopedRouteConfiguration_Key) ProtoMessage()    {}
func (*ScopedRouteConfiguration_Key) Descriptor() ([]byte, []int) {
	return fileDescriptor_3339c04c2fb0ae6d, []int{0, 0}
}

func (m *ScopedRouteConfiguration_Key) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ScopedRouteConfiguration_Key.Unmarshal(m, b)
}
func (m *ScopedRouteConfiguration_Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ScopedRouteConfiguration_Key.Marshal(b, m, deterministic)
}
func (m *ScopedRouteConfiguration_Key) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ScopedRouteConfiguration_Key.Merge(m, src)
}
func (m *ScopedRouteConfiguration_Key) XXX_Size() int {
	return xxx_messageInfo_ScopedRouteConfiguration_Key.Size(m)
}
func (m *ScopedRouteConfiguration_Key) XXX_DiscardUnknown() {
	xxx_messageInfo_ScopedRouteConfiguration_Key.DiscardUnknown(m)
}

var xxx_messageInfo_ScopedRouteConfiguration_Key proto.InternalMessageInfo

func (m *ScopedRouteConfiguration_Key) GetFragments() []*ScopedRouteConfiguration_Key_Fragment {
	if m != nil {
		return m.Fragments
	}
	return nil
}

type ScopedRouteConfiguration_Key_Fragment struct {
	// Types that are valid to be assigned to Type:
	//	*ScopedRouteConfiguration_Key_Fragment_StringKey
	Type                 isScopedRouteConfiguration_Key_Fragment_Type `protobuf_oneof:"type"`
	XXX_NoUnkeyedLiteral struct{}                                     `json:"-"`
	XXX_unrecognized     []byte                                       `json:"-"`
	XXX_sizecache        int32                                        `json:"-"`
}

func (m *ScopedRouteConfiguration_Key_Fragment) Reset()         { *m = ScopedRouteConfiguration_Key_Fragment{} }
func (m *ScopedRouteConfiguration_Key_Fragment) String() string { return proto.CompactTextString(m) }
func (*ScopedRouteConfiguration_Key_Fragment) ProtoMessage()    {}
func (*ScopedRouteConfiguration_Key_Fragment) Descriptor() ([]byte, []int) {
	return fileDescriptor_3339c04c2fb0ae6d, []int{0, 0, 0}
}

func (m *ScopedRouteConfiguration_Key_Fragment) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ScopedRouteConfiguration_Key_Fragment.Unmarshal(m, b)
}
func (m *ScopedRouteConfiguration_Key_Fragment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ScopedRouteConfiguration_Key_Fragment.Marshal(b, m, deterministic)
}
func (m *ScopedRouteConfiguration_Key_Fragment) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ScopedRouteConfiguration_Key_Fragment.Merge(m, src)
}
func (m *ScopedRouteConfiguration_Key_Fragment) XXX_Size() int {
	return xxx_messageInfo_ScopedRouteConfiguration_Key_Fragment.Size(m)
}
func (m *ScopedRouteConfiguration_Key_Fragment) XXX_DiscardUnknown() {
	xxx_messageInfo_ScopedRouteConfiguration_Key_Fragment.DiscardUnknown(m)
}

var xxx_messageInfo_ScopedRouteConfiguration_Key_Fragment proto.InternalMessageInfo

type isScopedRouteConfiguration_Key_Fragment_Type interface {
	isScopedRouteConfiguration_Key_Fragment_Type()
}

type ScopedRouteConfiguration_Key_Fragment_StringKey struct {
	StringKey string `protobuf:"bytes,1,opt,name=string_key,json=stringKey,proto3,oneof"`
}

func (*ScopedRouteConfiguration_Key_Fragment_StringKey) isScopedRouteConfiguration_Key_Fragment_Type() {
}

func (m *ScopedRouteConfiguration_Key_Fragment) GetType() isScopedRouteConfiguration_Key_Fragment_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (m *ScopedRouteConfiguration_Key_Fragment) GetStringKey() string {
	if x, ok := m.GetType().(*ScopedRouteConfiguration_Key_Fragment_StringKey); ok {
		return x.StringKey
	}
	return ""
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*ScopedRouteConfiguration_Key_Fragment) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*ScopedRouteConfiguration_Key_Fragment_StringKey)(nil),
	}
}

func init() {
	proto.RegisterType((*ScopedRouteConfiguration)(nil), "envoy.config.route.v3.ScopedRouteConfiguration")
	proto.RegisterType((*ScopedRouteConfiguration_Key)(nil), "envoy.config.route.v3.ScopedRouteConfiguration.Key")
	proto.RegisterType((*ScopedRouteConfiguration_Key_Fragment)(nil), "envoy.config.route.v3.ScopedRouteConfiguration.Key.Fragment")
}

func init() {
	proto.RegisterFile("envoy/config/route/v3/scoped_route.proto", fileDescriptor_3339c04c2fb0ae6d)
}

var fileDescriptor_3339c04c2fb0ae6d = []byte{
	// 399 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0x41, 0x8b, 0xd3, 0x40,
	0x1c, 0xc5, 0x9d, 0x24, 0xd6, 0x76, 0x7a, 0x29, 0x01, 0x35, 0x44, 0xd4, 0xa8, 0x88, 0x11, 0x65,
	0x22, 0x89, 0x17, 0x8b, 0x97, 0x46, 0x10, 0xa1, 0xa0, 0x25, 0x7e, 0x80, 0x30, 0x36, 0xd3, 0x30,
	0x68, 0x67, 0xc2, 0xcc, 0x24, 0x98, 0x9b, 0x47, 0xf1, 0xe0, 0xa1, 0xc7, 0xfd, 0x28, 0x7b, 0x5f,
	0xd8, 0xeb, 0x7e, 0x9b, 0xa5, 0xa7, 0x65, 0x26, 0x5d, 0xb6, 0x4b, 0xbb, 0x50, 0xf6, 0x96, 0xcc,
	0xff, 0xbd, 0xdf, 0x7b, 0xf3, 0x67, 0x60, 0x48, 0x58, 0xc3, 0xdb, 0x68, 0xce, 0xd9, 0x82, 0x96,
	0x91, 0xe0, 0xb5, 0x22, 0x51, 0x93, 0x44, 0x72, 0xce, 0x2b, 0x52, 0xe4, 0xe6, 0x1f, 0x55, 0x82,
	0x2b, 0xee, 0xde, 0x37, 0x4a, 0xd4, 0x29, 0x51, 0x37, 0x69, 0x12, 0xff, 0x71, 0x5d, 0x54, 0x38,
	0xc2, 0x8c, 0x71, 0x85, 0x15, 0xe5, 0x4c, 0x46, 0x52, 0x61, 0x55, 0xcb, 0xce, 0xe5, 0x3f, 0xdb,
	0x19, 0x37, 0x44, 0x48, 0xca, 0x19, 0x65, 0xe5, 0x46, 0xf2, 0xb0, 0xc1, 0xbf, 0x68, 0x81, 0x75,
	0xf0, 0xe6, 0xa3, 0x1b, 0x3c, 0xff, 0xef, 0x40, 0xef, 0xbb, 0x29, 0x92, 0xe9, 0xb4, 0x4f, 0x26,
	0xb9, 0x16, 0x86, 0xe3, 0x3e, 0x82, 0x0e, 0xc3, 0x4b, 0xe2, 0x81, 0x00, 0x84, 0x83, 0xf4, 0xde,
	0x3a, 0x75, 0x84, 0x15, 0x80, 0xcc, 0x1c, 0xba, 0x13, 0xe8, 0x99, 0x82, 0xf9, 0x7c, 0xdb, 0x93,
	0x1b, 0x83, 0x75, 0xdd, 0xf0, 0x40, 0xec, 0xb0, 0xbf, 0x6a, 0xc4, 0x37, 0x68, 0xff, 0x24, 0xad,
	0x67, 0x07, 0x20, 0x1c, 0xc6, 0x09, 0xda, 0x7b, 0x79, 0x74, 0x53, 0x3b, 0x34, 0x25, 0x6d, 0xda,
	0x5f, 0xa7, 0x77, 0xff, 0x01, 0x6b, 0x04, 0x32, 0x4d, 0xf2, 0x57, 0x16, 0xb4, 0xa7, 0xa4, 0x75,
	0x0b, 0x38, 0x58, 0x08, 0x5c, 0x2e, 0x09, 0x53, 0xd2, 0x03, 0x81, 0x1d, 0x0e, 0xe3, 0x8f, 0xb7,
	0xc0, 0xa3, 0xcf, 0x1b, 0x88, 0xc9, 0x59, 0x01, 0xab, 0x0f, 0xb2, 0x2b, 0xb0, 0x2f, 0x61, 0xff,
	0x52, 0xe0, 0x3e, 0x85, 0x50, 0x2a, 0x41, 0x59, 0x99, 0xeb, 0x1b, 0x99, 0x85, 0x7d, 0xb9, 0x93,
	0x0d, 0xba, 0xb3, 0x29, 0x69, 0xc7, 0x1f, 0x8e, 0x4e, 0xfe, 0x3e, 0x79, 0x0f, 0xe3, 0xae, 0x05,
	0xae, 0x28, 0x6a, 0xe2, 0x03, 0xc3, 0x87, 0xd0, 0x51, 0x6d, 0x45, 0x5c, 0xfb, 0x3c, 0x05, 0xe3,
	0x77, 0x9a, 0xf3, 0x06, 0xbe, 0x3e, 0x98, 0x33, 0x7e, 0xab, 0x1d, 0xaf, 0xe0, 0xcb, 0x83, 0x1c,
	0xe9, 0xe4, 0xf8, 0xcf, 0xe9, 0x59, 0xcf, 0x1a, 0x59, 0xf0, 0x05, 0xe5, 0xdd, 0xce, 0x2a, 0xc1,
	0x7f, 0xb7, 0xfb, 0xd7, 0x97, 0x8e, 0xb6, 0x40, 0x33, 0xfd, 0xa2, 0x66, 0xe0, 0x47, 0xcf, 0x3c,
	0xad, 0xe4, 0x22, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x0d, 0x2b, 0xcd, 0xf8, 0x02, 0x00, 0x00,
}
