func (*Session) Descriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{3}
}
Deprecated: Use Session.ProtoReflect.Descriptor instead.
package grpctunnel
import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)
const (
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type TargetType int32
const (
	TargetType_UNKNOWN TargetType = 0
	TargetType_SSH TargetType = 22
	TargetType_OPENFLOW TargetType = 6653
	TargetType_GNMI_GNOI TargetType = 9339
	TargetType_P4_RUNTIME TargetType = 9559
)
var (
	TargetType_name = map[int32]string{
		0:    "UNKNOWN",
		22:   "SSH",
		6653: "OPENFLOW",
		9339: "GNMI_GNOI",
		9559: "P4_RUNTIME",
	}
	TargetType_value = map[string]int32{
		"UNKNOWN":    0,
		"SSH":        22,
		"OPENFLOW":   6653,
		"GNMI_GNOI":  9339,
		"P4_RUNTIME": 9559,
	}
)
func (x TargetType) Enum() *TargetType {
	p := new(TargetType)
	*p = x
	return p
}
func (x TargetType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (TargetType) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_tunnel_tunnel_proto_enumTypes[0].Descriptor()
}
func (TargetType) Type() protoreflect.EnumType {
	return &file_proto_tunnel_tunnel_proto_enumTypes[0]
}
func (x TargetType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}
func (TargetType) EnumDescriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{0}
}
type Target_TargetOp int32
const (
	Target_UNKNOWN Target_TargetOp = 0
	Target_ADD     Target_TargetOp = 1
	Target_REMOVE  Target_TargetOp = 2
)
var (
	Target_TargetOp_name = map[int32]string{
		0: "UNKNOWN",
		1: "ADD",
		2: "REMOVE",
	}
	Target_TargetOp_value = map[string]int32{
		"UNKNOWN": 0,
		"ADD":     1,
		"REMOVE":  2,
	}
)
func (x Target_TargetOp) Enum() *Target_TargetOp {
	p := new(Target_TargetOp)
	*p = x
	return p
}
func (x Target_TargetOp) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Target_TargetOp) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_tunnel_tunnel_proto_enumTypes[1].Descriptor()
}
func (Target_TargetOp) Type() protoreflect.EnumType {
	return &file_proto_tunnel_tunnel_proto_enumTypes[1]
}
func (x Target_TargetOp) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}
func (Target_TargetOp) EnumDescriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{2, 0}
}
type Subscription_SubscriptionOp int32
const (
	Subscription_UNKNOWN    Subscription_SubscriptionOp = 0
	Subscription_SUBCRIBE   Subscription_SubscriptionOp = 1
	Subscription_UNSUBCRIBE Subscription_SubscriptionOp = 2
)
var (
	Subscription_SubscriptionOp_name = map[int32]string{
		0: "UNKNOWN",
		1: "SUBCRIBE",
		2: "UNSUBCRIBE",
	}
	Subscription_SubscriptionOp_value = map[string]int32{
		"UNKNOWN":    0,
		"SUBCRIBE":   1,
		"UNSUBCRIBE": 2,
	}
)
func (x Subscription_SubscriptionOp) Enum() *Subscription_SubscriptionOp {
	p := new(Subscription_SubscriptionOp)
	*p = x
	return p
}
func (x Subscription_SubscriptionOp) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Subscription_SubscriptionOp) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_tunnel_tunnel_proto_enumTypes[2].Descriptor()
}
func (Subscription_SubscriptionOp) Type() protoreflect.EnumType {
	return &file_proto_tunnel_tunnel_proto_enumTypes[2]
}
func (x Subscription_SubscriptionOp) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}
func (Subscription_SubscriptionOp) EnumDescriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{4, 0}
}
type Data struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	Tag   int32  `protobuf:"varint,1,opt,name=tag,proto3" json:"tag,omitempty"`      
	Data  []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`     
	Close bool   `protobuf:"varint,3,opt,name=close,proto3" json:"close,omitempty"`  
}
func (x *Data) Reset() {
	*x = Data{}
	if protoimpl.UnsafeEnabled {
		mi := &file_proto_tunnel_tunnel_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *Data) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*Data) ProtoMessage() {}
func (x *Data) ProtoReflect() protoreflect.Message {
	mi := &file_proto_tunnel_tunnel_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}
func (*Data) Descriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{0}
}
func (x *Data) GetTag() int32 {
	if x != nil {
		return x.Tag
	}
	return 0
}
func (x *Data) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}
func (x *Data) GetClose() bool {
	if x != nil {
		return x.Close
	}
	return false
}
type RegisterOp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	Registration isRegisterOp_Registration `protobuf_oneof:"Registration"`
}
func (x *RegisterOp) Reset() {
	*x = RegisterOp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_proto_tunnel_tunnel_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *RegisterOp) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*RegisterOp) ProtoMessage() {}
func (x *RegisterOp) ProtoReflect() protoreflect.Message {
	mi := &file_proto_tunnel_tunnel_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}
func (*RegisterOp) Descriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{1}
}
func (m *RegisterOp) GetRegistration() isRegisterOp_Registration {
	if m != nil {
		return m.Registration
	}
	return nil
}
func (x *RegisterOp) GetTarget() *Target {
	if x, ok := x.GetRegistration().(*RegisterOp_Target); ok {
		return x.Target
	}
	return nil
}
func (x *RegisterOp) GetSession() *Session {
	if x, ok := x.GetRegistration().(*RegisterOp_Session); ok {
		return x.Session
	}
	return nil
}
func (x *RegisterOp) GetSubscription() *Subscription {
	if x, ok := x.GetRegistration().(*RegisterOp_Subscription); ok {
		return x.Subscription
	}
	return nil
}
type isRegisterOp_Registration interface {
	isRegisterOp_Registration()
}
type RegisterOp_Target struct {
	Target *Target `protobuf:"bytes,1,opt,name=target,proto3,oneof"`
}
type RegisterOp_Session struct {
	Session *Session `protobuf:"bytes,2,opt,name=session,proto3,oneof"`
}
type RegisterOp_Subscription struct {
	Subscription *Subscription `protobuf:"bytes,3,opt,name=subscription,proto3,oneof"`
}
func (*RegisterOp_Target) isRegisterOp_Registration() {}
func (*RegisterOp_Session) isRegisterOp_Registration() {}
func (*RegisterOp_Subscription) isRegisterOp_Registration() {}
type Target struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	Op Target_TargetOp `protobuf:"varint,1,opt,name=op,proto3,enum=grpctunnel.Target_TargetOp" json:"op,omitempty"`
	Accept bool `protobuf:"varint,2,opt,name=accept,proto3" json:"accept,omitempty"`
	Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
	TargetType string `protobuf:"bytes,4,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"`
	Error      string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
}
func (x *Target) Reset() {
	*x = Target{}
	if protoimpl.UnsafeEnabled {
		mi := &file_proto_tunnel_tunnel_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *Target) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*Target) ProtoMessage() {}
func (x *Target) ProtoReflect() protoreflect.Message {
	mi := &file_proto_tunnel_tunnel_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}
func (*Target) Descriptor() ([]byte, []int) {
	return file_proto_tunnel_tunnel_proto_rawDescGZIP(), []int{2}
}
func (x *Target) GetOp() Target_TargetOp {
	if x != nil {
		return x.Op
	}
	return Target_UNKNOWN
}
func (x *Target) GetAccept() bool {
	if x != nil {
		return x.Accept
	}
	return false
}
func (x *Target) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}
func (x *Target) GetTargetType() string {
	if x != nil {
		return x.TargetType
	}
	return ""
}
func (x *Target) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}
type Session struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
	Tag int32 `protobuf:"varint,1,opt,name=tag,proto3" json:"tag,omitempty"`
	Accept bool `protobuf:"varint,2,opt,name=accept,proto3" json:"accept,omitempty"`
	Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
	TargetType string `protobuf:"bytes,4,opt,name=target_type,json=targetType,proto3" json:"target_type,omitempty"`
	Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
}
func (x *Session) Reset() {
	*x = Session{}
	if protoimpl.UnsafeEnabled {
		mi := &file_proto_tunnel_tunnel_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}
func (x *Session) String() string {
	return protoimpl.X.MessageStringOf(x)
}
func (*Session) ProtoMessage() {}
func (x *Session) ProtoReflect() protoreflect.Message {
	mi := &file_proto_tunnel_tunnel_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}