// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v3.5.0
// source: felixbackend.proto

package proto

import (
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"

	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type IPVersion int32

const (
	IPVersion_ANY  IPVersion = 0
	IPVersion_IPV4 IPVersion = 4
	IPVersion_IPV6 IPVersion = 6
)

// Enum value maps for IPVersion.
var (
	IPVersion_name = map[int32]string{
		0: "ANY",
		4: "IPV4",
		6: "IPV6",
	}
	IPVersion_value = map[string]int32{
		"ANY":  0,
		"IPV4": 4,
		"IPV6": 6,
	}
)

func (x IPVersion) Enum() *IPVersion {
	p := new(IPVersion)
	*p = x
	return p
}

func (x IPVersion) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (IPVersion) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[0].Descriptor()
}

func (IPVersion) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[0]
}

func (x IPVersion) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use IPVersion.Descriptor instead.
func (IPVersion) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{0}
}

type WorkloadType int32

const (
	WorkloadType_REGULAR WorkloadType = 0
	WorkloadType_VM      WorkloadType = 1
)

// Enum value maps for WorkloadType.
var (
	WorkloadType_name = map[int32]string{
		0: "REGULAR",
		1: "VM",
	}
	WorkloadType_value = map[string]int32{
		"REGULAR": 0,
		"VM":      1,
	}
)

func (x WorkloadType) Enum() *WorkloadType {
	p := new(WorkloadType)
	*p = x
	return p
}

func (x WorkloadType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (WorkloadType) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[1].Descriptor()
}

func (WorkloadType) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[1]
}

func (x WorkloadType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use WorkloadType.Descriptor instead.
func (WorkloadType) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{1}
}

// RouteTYpe defines a type of route. Each is a power of 2, so that theye can be used as
// unique bits within a bitmap.
type RouteType int32

const (
	// CIDR_INFO gives information about a CIDR without establishing a route.  For example,
	// it is emitted for IP pools with no blocks.
	RouteType_CIDR_INFO       RouteType = 0
	RouteType_REMOTE_WORKLOAD RouteType = 1
	RouteType_REMOTE_HOST     RouteType = 2
	RouteType_LOCAL_WORKLOAD  RouteType = 4
	RouteType_LOCAL_HOST      RouteType = 8
	RouteType_REMOTE_TUNNEL   RouteType = 16
	RouteType_LOCAL_TUNNEL    RouteType = 32
)

// Enum value maps for RouteType.
var (
	RouteType_name = map[int32]string{
		0:  "CIDR_INFO",
		1:  "REMOTE_WORKLOAD",
		2:  "REMOTE_HOST",
		4:  "LOCAL_WORKLOAD",
		8:  "LOCAL_HOST",
		16: "REMOTE_TUNNEL",
		32: "LOCAL_TUNNEL",
	}
	RouteType_value = map[string]int32{
		"CIDR_INFO":       0,
		"REMOTE_WORKLOAD": 1,
		"REMOTE_HOST":     2,
		"LOCAL_WORKLOAD":  4,
		"LOCAL_HOST":      8,
		"REMOTE_TUNNEL":   16,
		"LOCAL_TUNNEL":    32,
	}
)

func (x RouteType) Enum() *RouteType {
	p := new(RouteType)
	*p = x
	return p
}

func (x RouteType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (RouteType) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[2].Descriptor()
}

func (RouteType) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[2]
}

func (x RouteType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use RouteType.Descriptor instead.
func (RouteType) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{2}
}

type IPPoolType int32

const (
	IPPoolType_NONE     IPPoolType = 0
	IPPoolType_NO_ENCAP IPPoolType = 1
	IPPoolType_VXLAN    IPPoolType = 2
	IPPoolType_IPIP     IPPoolType = 3
)

// Enum value maps for IPPoolType.
var (
	IPPoolType_name = map[int32]string{
		0: "NONE",
		1: "NO_ENCAP",
		2: "VXLAN",
		3: "IPIP",
	}
	IPPoolType_value = map[string]int32{
		"NONE":     0,
		"NO_ENCAP": 1,
		"VXLAN":    2,
		"IPIP":     3,
	}
)

func (x IPPoolType) Enum() *IPPoolType {
	p := new(IPPoolType)
	*p = x
	return p
}

func (x IPPoolType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (IPPoolType) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[3].Descriptor()
}

func (IPPoolType) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[3]
}

func (x IPPoolType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use IPPoolType.Descriptor instead.
func (IPPoolType) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{3}
}

// Action represents an action taken by a policy or rule.
type Action int32

const (
	Action_ALLOWED Action = 0
	Action_DENIED  Action = 1
)

// Enum value maps for Action.
var (
	Action_name = map[int32]string{
		0: "ALLOWED",
		1: "DENIED",
	}
	Action_value = map[string]int32{
		"ALLOWED": 0,
		"DENIED":  1,
	}
)

func (x Action) Enum() *Action {
	p := new(Action)
	*p = x
	return p
}

func (x Action) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Action) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[4].Descriptor()
}

func (Action) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[4]
}

func (x Action) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Action.Descriptor instead.
func (Action) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{4}
}

type IPSetUpdate_IPSetType int32

const (
	IPSetUpdate_IP          IPSetUpdate_IPSetType = 0 // Each member is an IP address in dotted-decimal or IPv6 format.
	IPSetUpdate_IP_AND_PORT IPSetUpdate_IPSetType = 1 // Each member is "<IP>,(tcp|udp):port".
	IPSetUpdate_NET         IPSetUpdate_IPSetType = 2 // Each member is a CIDR in dotted-decimal or IPv6 format.
)

// Enum value maps for IPSetUpdate_IPSetType.
var (
	IPSetUpdate_IPSetType_name = map[int32]string{
		0: "IP",
		1: "IP_AND_PORT",
		2: "NET",
	}
	IPSetUpdate_IPSetType_value = map[string]int32{
		"IP":          0,
		"IP_AND_PORT": 1,
		"NET":         2,
	}
)

func (x IPSetUpdate_IPSetType) Enum() *IPSetUpdate_IPSetType {
	p := new(IPSetUpdate_IPSetType)
	*p = x
	return p
}

func (x IPSetUpdate_IPSetType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (IPSetUpdate_IPSetType) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[5].Descriptor()
}

func (IPSetUpdate_IPSetType) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[5]
}

func (x IPSetUpdate_IPSetType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use IPSetUpdate_IPSetType.Descriptor instead.
func (IPSetUpdate_IPSetType) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{6, 0}
}

// Whether the statistic is for inbound or outbound data flow, relative to
// the dataplane reporting.
type Statistic_Direction int32

const (
	Statistic_IN  Statistic_Direction = 0
	Statistic_OUT Statistic_Direction = 1
)

// Enum value maps for Statistic_Direction.
var (
	Statistic_Direction_name = map[int32]string{
		0: "IN",
		1: "OUT",
	}
	Statistic_Direction_value = map[string]int32{
		"IN":  0,
		"OUT": 1,
	}
)

func (x Statistic_Direction) Enum() *Statistic_Direction {
	p := new(Statistic_Direction)
	*p = x
	return p
}

func (x Statistic_Direction) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Statistic_Direction) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[6].Descriptor()
}

func (Statistic_Direction) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[6]
}

func (x Statistic_Direction) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Statistic_Direction.Descriptor instead.
func (Statistic_Direction) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{67, 0}
}

// Whether the data is relative. ABSOLUTE data gives the total for the flow
// since it started.  DELTA data gives the change since the last report
// for this flow.
type Statistic_Relativity int32

const (
	Statistic_ABSOLUTE Statistic_Relativity = 0
	Statistic_DELTA    Statistic_Relativity = 1
)

// Enum value maps for Statistic_Relativity.
var (
	Statistic_Relativity_name = map[int32]string{
		0: "ABSOLUTE",
		1: "DELTA",
	}
	Statistic_Relativity_value = map[string]int32{
		"ABSOLUTE": 0,
		"DELTA":    1,
	}
)

func (x Statistic_Relativity) Enum() *Statistic_Relativity {
	p := new(Statistic_Relativity)
	*p = x
	return p
}

func (x Statistic_Relativity) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Statistic_Relativity) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[7].Descriptor()
}

func (Statistic_Relativity) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[7]
}

func (x Statistic_Relativity) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Statistic_Relativity.Descriptor instead.
func (Statistic_Relativity) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{67, 1}
}

// Kind indicates what this statistic is about.
type Statistic_Kind int32

const (
	Statistic_PACKETS Statistic_Kind = 0
	Statistic_BYTES   Statistic_Kind = 1
)

// Enum value maps for Statistic_Kind.
var (
	Statistic_Kind_name = map[int32]string{
		0: "PACKETS",
		1: "BYTES",
	}
	Statistic_Kind_value = map[string]int32{
		"PACKETS": 0,
		"BYTES":   1,
	}
)

func (x Statistic_Kind) Enum() *Statistic_Kind {
	p := new(Statistic_Kind)
	*p = x
	return p
}

func (x Statistic_Kind) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Statistic_Kind) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[8].Descriptor()
}

func (Statistic_Kind) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[8]
}

func (x Statistic_Kind) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Statistic_Kind.Descriptor instead.
func (Statistic_Kind) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{67, 2}
}

// Whether the rule appears in INBOUND or OUTBOUND rules for the policy /
// profile.
type RuleTrace_Direction int32

const (
	RuleTrace_INBOUND  RuleTrace_Direction = 0
	RuleTrace_OUTBOUND RuleTrace_Direction = 1
)

// Enum value maps for RuleTrace_Direction.
var (
	RuleTrace_Direction_name = map[int32]string{
		0: "INBOUND",
		1: "OUTBOUND",
	}
	RuleTrace_Direction_value = map[string]int32{
		"INBOUND":  0,
		"OUTBOUND": 1,
	}
)

func (x RuleTrace_Direction) Enum() *RuleTrace_Direction {
	p := new(RuleTrace_Direction)
	*p = x
	return p
}

func (x RuleTrace_Direction) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (RuleTrace_Direction) Descriptor() protoreflect.EnumDescriptor {
	return file_felixbackend_proto_enumTypes[9].Descriptor()
}

func (RuleTrace_Direction) Type() protoreflect.EnumType {
	return &file_felixbackend_proto_enumTypes[9]
}

func (x RuleTrace_Direction) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use RuleTrace_Direction.Descriptor instead.
func (RuleTrace_Direction) EnumDescriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{68, 0}
}

type SyncRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SyncRequest) Reset() {
	*x = SyncRequest{}
	mi := &file_felixbackend_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SyncRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SyncRequest) ProtoMessage() {}

func (x *SyncRequest) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SyncRequest.ProtoReflect.Descriptor instead.
func (*SyncRequest) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{0}
}

type ToDataplane struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Sequence number incremented with each message.  Useful for correlating
	// messages in logs.
	SequenceNumber uint64 `protobuf:"varint,15,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
	// Types that are valid to be assigned to Payload:
	//
	//	*ToDataplane_InSync
	//	*ToDataplane_IpsetUpdate
	//	*ToDataplane_IpsetDeltaUpdate
	//	*ToDataplane_IpsetRemove
	//	*ToDataplane_ActiveProfileUpdate
	//	*ToDataplane_ActiveProfileRemove
	//	*ToDataplane_ActivePolicyUpdate
	//	*ToDataplane_ActivePolicyRemove
	//	*ToDataplane_HostEndpointUpdate
	//	*ToDataplane_HostEndpointRemove
	//	*ToDataplane_WorkloadEndpointUpdate
	//	*ToDataplane_WorkloadEndpointRemove
	//	*ToDataplane_ConfigUpdate
	//	*ToDataplane_HostMetadataUpdate
	//	*ToDataplane_HostMetadataRemove
	//	*ToDataplane_HostMetadataV4V6Update
	//	*ToDataplane_HostMetadataV4V6Remove
	//	*ToDataplane_IpamPoolUpdate
	//	*ToDataplane_IpamPoolRemove
	//	*ToDataplane_ServiceAccountUpdate
	//	*ToDataplane_ServiceAccountRemove
	//	*ToDataplane_NamespaceUpdate
	//	*ToDataplane_NamespaceRemove
	//	*ToDataplane_RouteUpdate
	//	*ToDataplane_RouteRemove
	//	*ToDataplane_VtepUpdate
	//	*ToDataplane_VtepRemove
	//	*ToDataplane_WireguardEndpointUpdate
	//	*ToDataplane_WireguardEndpointRemove
	//	*ToDataplane_GlobalBgpConfigUpdate
	//	*ToDataplane_Encapsulation
	//	*ToDataplane_ServiceUpdate
	//	*ToDataplane_ServiceRemove
	//	*ToDataplane_WireguardEndpointV6Update
	//	*ToDataplane_WireguardEndpointV6Remove
	//	*ToDataplane_HostMetadataV6Update
	//	*ToDataplane_HostMetadataV6Remove
	Payload       isToDataplane_Payload `protobuf_oneof:"payload"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ToDataplane) Reset() {
	*x = ToDataplane{}
	mi := &file_felixbackend_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ToDataplane) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ToDataplane) ProtoMessage() {}

func (x *ToDataplane) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ToDataplane.ProtoReflect.Descriptor instead.
func (*ToDataplane) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{1}
}

func (x *ToDataplane) GetSequenceNumber() uint64 {
	if x != nil {
		return x.SequenceNumber
	}
	return 0
}

func (x *ToDataplane) GetPayload() isToDataplane_Payload {
	if x != nil {
		return x.Payload
	}
	return nil
}

func (x *ToDataplane) GetInSync() *InSync {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_InSync); ok {
			return x.InSync
		}
	}
	return nil
}

func (x *ToDataplane) GetIpsetUpdate() *IPSetUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_IpsetUpdate); ok {
			return x.IpsetUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetIpsetDeltaUpdate() *IPSetDeltaUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_IpsetDeltaUpdate); ok {
			return x.IpsetDeltaUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetIpsetRemove() *IPSetRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_IpsetRemove); ok {
			return x.IpsetRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetActiveProfileUpdate() *ActiveProfileUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ActiveProfileUpdate); ok {
			return x.ActiveProfileUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetActiveProfileRemove() *ActiveProfileRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ActiveProfileRemove); ok {
			return x.ActiveProfileRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetActivePolicyUpdate() *ActivePolicyUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ActivePolicyUpdate); ok {
			return x.ActivePolicyUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetActivePolicyRemove() *ActivePolicyRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ActivePolicyRemove); ok {
			return x.ActivePolicyRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetHostEndpointUpdate() *HostEndpointUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostEndpointUpdate); ok {
			return x.HostEndpointUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetHostEndpointRemove() *HostEndpointRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostEndpointRemove); ok {
			return x.HostEndpointRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetWorkloadEndpointUpdate() *WorkloadEndpointUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_WorkloadEndpointUpdate); ok {
			return x.WorkloadEndpointUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetWorkloadEndpointRemove() *WorkloadEndpointRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_WorkloadEndpointRemove); ok {
			return x.WorkloadEndpointRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetConfigUpdate() *ConfigUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ConfigUpdate); ok {
			return x.ConfigUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetHostMetadataUpdate() *HostMetadataUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostMetadataUpdate); ok {
			return x.HostMetadataUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetHostMetadataRemove() *HostMetadataRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostMetadataRemove); ok {
			return x.HostMetadataRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetHostMetadataV4V6Update() *HostMetadataV4V6Update {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostMetadataV4V6Update); ok {
			return x.HostMetadataV4V6Update
		}
	}
	return nil
}

func (x *ToDataplane) GetHostMetadataV4V6Remove() *HostMetadataV4V6Remove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostMetadataV4V6Remove); ok {
			return x.HostMetadataV4V6Remove
		}
	}
	return nil
}

func (x *ToDataplane) GetIpamPoolUpdate() *IPAMPoolUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_IpamPoolUpdate); ok {
			return x.IpamPoolUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetIpamPoolRemove() *IPAMPoolRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_IpamPoolRemove); ok {
			return x.IpamPoolRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetServiceAccountUpdate() *ServiceAccountUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ServiceAccountUpdate); ok {
			return x.ServiceAccountUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetServiceAccountRemove() *ServiceAccountRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ServiceAccountRemove); ok {
			return x.ServiceAccountRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetNamespaceUpdate() *NamespaceUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_NamespaceUpdate); ok {
			return x.NamespaceUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetNamespaceRemove() *NamespaceRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_NamespaceRemove); ok {
			return x.NamespaceRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetRouteUpdate() *RouteUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_RouteUpdate); ok {
			return x.RouteUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetRouteRemove() *RouteRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_RouteRemove); ok {
			return x.RouteRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetVtepUpdate() *VXLANTunnelEndpointUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_VtepUpdate); ok {
			return x.VtepUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetVtepRemove() *VXLANTunnelEndpointRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_VtepRemove); ok {
			return x.VtepRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetWireguardEndpointUpdate() *WireguardEndpointUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_WireguardEndpointUpdate); ok {
			return x.WireguardEndpointUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetWireguardEndpointRemove() *WireguardEndpointRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_WireguardEndpointRemove); ok {
			return x.WireguardEndpointRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetGlobalBgpConfigUpdate() *GlobalBGPConfigUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_GlobalBgpConfigUpdate); ok {
			return x.GlobalBgpConfigUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetEncapsulation() *Encapsulation {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_Encapsulation); ok {
			return x.Encapsulation
		}
	}
	return nil
}

func (x *ToDataplane) GetServiceUpdate() *ServiceUpdate {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ServiceUpdate); ok {
			return x.ServiceUpdate
		}
	}
	return nil
}

func (x *ToDataplane) GetServiceRemove() *ServiceRemove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_ServiceRemove); ok {
			return x.ServiceRemove
		}
	}
	return nil
}

func (x *ToDataplane) GetWireguardEndpointV6Update() *WireguardEndpointV6Update {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_WireguardEndpointV6Update); ok {
			return x.WireguardEndpointV6Update
		}
	}
	return nil
}

func (x *ToDataplane) GetWireguardEndpointV6Remove() *WireguardEndpointV6Remove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_WireguardEndpointV6Remove); ok {
			return x.WireguardEndpointV6Remove
		}
	}
	return nil
}

func (x *ToDataplane) GetHostMetadataV6Update() *HostMetadataV6Update {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostMetadataV6Update); ok {
			return x.HostMetadataV6Update
		}
	}
	return nil
}

func (x *ToDataplane) GetHostMetadataV6Remove() *HostMetadataV6Remove {
	if x != nil {
		if x, ok := x.Payload.(*ToDataplane_HostMetadataV6Remove); ok {
			return x.HostMetadataV6Remove
		}
	}
	return nil
}

type isToDataplane_Payload interface {
	isToDataplane_Payload()
}

type ToDataplane_InSync struct {
	// InSync is sent once a complete snapshot of the datastore has been
	// processed.  The dataplane driver should use it as a signal to
	// resynchronise the dataplane.
	InSync *InSync `protobuf:"bytes,1,opt,name=in_sync,json=inSync,proto3,oneof"`
}

type ToDataplane_IpsetUpdate struct {
	// IPSetUpdate is sent when an IP set becomes active.  It contains the
	// complete membership of the IP set.
	IpsetUpdate *IPSetUpdate `protobuf:"bytes,2,opt,name=ipset_update,json=ipsetUpdate,proto3,oneof"`
}

type ToDataplane_IpsetDeltaUpdate struct {
	// IPSetDeltaUpdates are sent after the first IPSetUpdate; they contain
	// a list of IPs that should be added and removed from the IP set.
	IpsetDeltaUpdate *IPSetDeltaUpdate `protobuf:"bytes,3,opt,name=ipset_delta_update,json=ipsetDeltaUpdate,proto3,oneof"`
}

type ToDataplane_IpsetRemove struct {
	// IPSet remove is sent when an IP set is no longer needed.
	IpsetRemove *IPSetRemove `protobuf:"bytes,4,opt,name=ipset_remove,json=ipsetRemove,proto3,oneof"`
}

type ToDataplane_ActiveProfileUpdate struct {
	// ActiveProfileUpdate is sent when a profile becomes active or is updated.
	ActiveProfileUpdate *ActiveProfileUpdate `protobuf:"bytes,5,opt,name=active_profile_update,json=activeProfileUpdate,proto3,oneof"`
}

type ToDataplane_ActiveProfileRemove struct {
	// ActiveProfileRemove is sent when a profile becomes inactive or is
	// deleted.
	ActiveProfileRemove *ActiveProfileRemove `protobuf:"bytes,6,opt,name=active_profile_remove,json=activeProfileRemove,proto3,oneof"`
}

type ToDataplane_ActivePolicyUpdate struct {
	// ActivePolicyUpdate is sent when a policy becomes active or is updated.
	ActivePolicyUpdate *ActivePolicyUpdate `protobuf:"bytes,7,opt,name=active_policy_update,json=activePolicyUpdate,proto3,oneof"`
}

type ToDataplane_ActivePolicyRemove struct {
	// ActivePolicyRemove is sent when a policy becomes inactive or is
	// deleted.
	ActivePolicyRemove *ActivePolicyRemove `protobuf:"bytes,8,opt,name=active_policy_remove,json=activePolicyRemove,proto3,oneof"`
}

type ToDataplane_HostEndpointUpdate struct {
	// HostEndpointUpdate is sent when a local host endpoint is added or
	// updated.
	HostEndpointUpdate *HostEndpointUpdate `protobuf:"bytes,9,opt,name=host_endpoint_update,json=hostEndpointUpdate,proto3,oneof"`
}

type ToDataplane_HostEndpointRemove struct {
	// HostEndpointRemove is sent when a local host endpoint is removed.
	HostEndpointRemove *HostEndpointRemove `protobuf:"bytes,10,opt,name=host_endpoint_remove,json=hostEndpointRemove,proto3,oneof"`
}

type ToDataplane_WorkloadEndpointUpdate struct {
	// WorkloadEndpointUpdate is sent when a local workload endpoint is added
	// or updated.
	WorkloadEndpointUpdate *WorkloadEndpointUpdate `protobuf:"bytes,11,opt,name=workload_endpoint_update,json=workloadEndpointUpdate,proto3,oneof"`
}

type ToDataplane_WorkloadEndpointRemove struct {
	// WorkloadEndpointRemove is sent when a local workload endpoint is
	// removed.
	WorkloadEndpointRemove *WorkloadEndpointRemove `protobuf:"bytes,12,opt,name=workload_endpoint_remove,json=workloadEndpointRemove,proto3,oneof"`
}

type ToDataplane_ConfigUpdate struct {
	// ConfigUpdate is sent at start of day or when the config changes.
	ConfigUpdate *ConfigUpdate `protobuf:"bytes,13,opt,name=config_update,json=configUpdate,proto3,oneof"`
}

type ToDataplane_HostMetadataUpdate struct {
	// HostMetadataUpdate is sent when a host IP is added or updated.  I.e. the
	// IP used for BGP peering/IPIP.
	HostMetadataUpdate *HostMetadataUpdate `protobuf:"bytes,14,opt,name=host_metadata_update,json=hostMetadataUpdate,proto3,oneof"`
}

type ToDataplane_HostMetadataRemove struct {
	// HostIPRemove is sent when a host IP is removed.
	HostMetadataRemove *HostMetadataRemove `protobuf:"bytes,18,opt,name=host_metadata_remove,json=hostMetadataRemove,proto3,oneof"`
}

type ToDataplane_HostMetadataV4V6Update struct {
	// HostMetadataV4V6Update is sent when a host is added or updated.
	HostMetadataV4V6Update *HostMetadataV4V6Update `protobuf:"bytes,37,opt,name=host_metadata_v4v6_update,json=hostMetadataV4v6Update,proto3,oneof"`
}

type ToDataplane_HostMetadataV4V6Remove struct {
	// HostIPRemove is sent when a host is removed.
	HostMetadataV4V6Remove *HostMetadataV4V6Remove `protobuf:"bytes,38,opt,name=host_metadata_v4v6_remove,json=hostMetadataV4v6Remove,proto3,oneof"`
}

type ToDataplane_IpamPoolUpdate struct {
	// IPAMPoolUpdate is sent when an IPAM pool is added/updated.
	IpamPoolUpdate *IPAMPoolUpdate `protobuf:"bytes,16,opt,name=ipam_pool_update,json=ipamPoolUpdate,proto3,oneof"`
}

type ToDataplane_IpamPoolRemove struct {
	// IPAMPoolRemove is sent when an IPAM pool is removed.
	IpamPoolRemove *IPAMPoolRemove `protobuf:"bytes,17,opt,name=ipam_pool_remove,json=ipamPoolRemove,proto3,oneof"`
}

type ToDataplane_ServiceAccountUpdate struct {
	// ServiceAccountUpdate is sent when a ServiceAccount is added/updated.
	ServiceAccountUpdate *ServiceAccountUpdate `protobuf:"bytes,19,opt,name=service_account_update,json=serviceAccountUpdate,proto3,oneof"`
}

type ToDataplane_ServiceAccountRemove struct {
	// ServiceAccountRemove is sent when a ServiceAccount is removed.
	ServiceAccountRemove *ServiceAccountRemove `protobuf:"bytes,20,opt,name=service_account_remove,json=serviceAccountRemove,proto3,oneof"`
}

type ToDataplane_NamespaceUpdate struct {
	// NamespaceUpdate is sent when a Namespace is added/updated.
	NamespaceUpdate *NamespaceUpdate `protobuf:"bytes,21,opt,name=namespace_update,json=namespaceUpdate,proto3,oneof"`
}

type ToDataplane_NamespaceRemove struct {
	// NamespaceRemove is sent when a Namespace is removed.
	NamespaceRemove *NamespaceRemove `protobuf:"bytes,22,opt,name=namespace_remove,json=namespaceRemove,proto3,oneof"`
}

type ToDataplane_RouteUpdate struct {
	// RouteUpdate is send when a route is added/updated.
	RouteUpdate *RouteUpdate `protobuf:"bytes,23,opt,name=route_update,json=routeUpdate,proto3,oneof"`
}

type ToDataplane_RouteRemove struct {
	// RouteRemove is send when a route is deleted.
	RouteRemove *RouteRemove `protobuf:"bytes,24,opt,name=route_remove,json=routeRemove,proto3,oneof"`
}

type ToDataplane_VtepUpdate struct {
	// VXLANTunnelEndpointUpdate is send when a vtep is added/updated.
	VtepUpdate *VXLANTunnelEndpointUpdate `protobuf:"bytes,25,opt,name=vtep_update,json=vtepUpdate,proto3,oneof"`
}

type ToDataplane_VtepRemove struct {
	// VXLANTunnelEndpointRemove is send when a route is deleted.
	VtepRemove *VXLANTunnelEndpointRemove `protobuf:"bytes,26,opt,name=vtep_remove,json=vtepRemove,proto3,oneof"`
}

type ToDataplane_WireguardEndpointUpdate struct {
	// WireguardEndpointUpdate is sent to setup IPv4 wireguard on the host.
	WireguardEndpointUpdate *WireguardEndpointUpdate `protobuf:"bytes,27,opt,name=wireguard_endpoint_update,json=wireguardEndpointUpdate,proto3,oneof"`
}

type ToDataplane_WireguardEndpointRemove struct {
	// WireguardEndpointRemove is sent to undo IPv4 wireguard on the host.
	WireguardEndpointRemove *WireguardEndpointRemove `protobuf:"bytes,28,opt,name=wireguard_endpoint_remove,json=wireguardEndpointRemove,proto3,oneof"`
}

type ToDataplane_GlobalBgpConfigUpdate struct {
	// GlobalBGPConfigUpdate is sent when global BGPConfiguration changes.
	GlobalBgpConfigUpdate *GlobalBGPConfigUpdate `protobuf:"bytes,29,opt,name=global_bgp_config_update,json=globalBgpConfigUpdate,proto3,oneof"`
}

type ToDataplane_Encapsulation struct {
	Encapsulation *Encapsulation `protobuf:"bytes,30,opt,name=encapsulation,proto3,oneof"`
}

type ToDataplane_ServiceUpdate struct {
	ServiceUpdate *ServiceUpdate `protobuf:"bytes,31,opt,name=service_update,json=serviceUpdate,proto3,oneof"`
}

type ToDataplane_ServiceRemove struct {
	ServiceRemove *ServiceRemove `protobuf:"bytes,32,opt,name=service_remove,json=serviceRemove,proto3,oneof"`
}

type ToDataplane_WireguardEndpointV6Update struct {
	// WireguardEndpointV6Update is sent to setup IPv6 wireguard on the host.
	WireguardEndpointV6Update *WireguardEndpointV6Update `protobuf:"bytes,33,opt,name=wireguard_endpoint_v6_update,json=wireguardEndpointV6Update,proto3,oneof"`
}

type ToDataplane_WireguardEndpointV6Remove struct {
	// WireguardEndpointV6Remove is sent to undo IPv6 wireguard on the host.
	WireguardEndpointV6Remove *WireguardEndpointV6Remove `protobuf:"bytes,34,opt,name=wireguard_endpoint_v6_remove,json=wireguardEndpointV6Remove,proto3,oneof"`
}

type ToDataplane_HostMetadataV6Update struct {
	// HostMetadataV6Update is sent when a host IPv6 address is added or updated.
	HostMetadataV6Update *HostMetadataV6Update `protobuf:"bytes,35,opt,name=host_metadata_v6_update,json=hostMetadataV6Update,proto3,oneof"`
}

type ToDataplane_HostMetadataV6Remove struct {
	// HostMetadataV6Remove is sent when a host IPv6 address is removed.
	HostMetadataV6Remove *HostMetadataV6Remove `protobuf:"bytes,36,opt,name=host_metadata_v6_remove,json=hostMetadataV6Remove,proto3,oneof"`
}

func (*ToDataplane_InSync) isToDataplane_Payload() {}

func (*ToDataplane_IpsetUpdate) isToDataplane_Payload() {}

func (*ToDataplane_IpsetDeltaUpdate) isToDataplane_Payload() {}

func (*ToDataplane_IpsetRemove) isToDataplane_Payload() {}

func (*ToDataplane_ActiveProfileUpdate) isToDataplane_Payload() {}

func (*ToDataplane_ActiveProfileRemove) isToDataplane_Payload() {}

func (*ToDataplane_ActivePolicyUpdate) isToDataplane_Payload() {}

func (*ToDataplane_ActivePolicyRemove) isToDataplane_Payload() {}

func (*ToDataplane_HostEndpointUpdate) isToDataplane_Payload() {}

func (*ToDataplane_HostEndpointRemove) isToDataplane_Payload() {}

func (*ToDataplane_WorkloadEndpointUpdate) isToDataplane_Payload() {}

func (*ToDataplane_WorkloadEndpointRemove) isToDataplane_Payload() {}

func (*ToDataplane_ConfigUpdate) isToDataplane_Payload() {}

func (*ToDataplane_HostMetadataUpdate) isToDataplane_Payload() {}

func (*ToDataplane_HostMetadataRemove) isToDataplane_Payload() {}

func (*ToDataplane_HostMetadataV4V6Update) isToDataplane_Payload() {}

func (*ToDataplane_HostMetadataV4V6Remove) isToDataplane_Payload() {}

func (*ToDataplane_IpamPoolUpdate) isToDataplane_Payload() {}

func (*ToDataplane_IpamPoolRemove) isToDataplane_Payload() {}

func (*ToDataplane_ServiceAccountUpdate) isToDataplane_Payload() {}

func (*ToDataplane_ServiceAccountRemove) isToDataplane_Payload() {}

func (*ToDataplane_NamespaceUpdate) isToDataplane_Payload() {}

func (*ToDataplane_NamespaceRemove) isToDataplane_Payload() {}

func (*ToDataplane_RouteUpdate) isToDataplane_Payload() {}

func (*ToDataplane_RouteRemove) isToDataplane_Payload() {}

func (*ToDataplane_VtepUpdate) isToDataplane_Payload() {}

func (*ToDataplane_VtepRemove) isToDataplane_Payload() {}

func (*ToDataplane_WireguardEndpointUpdate) isToDataplane_Payload() {}

func (*ToDataplane_WireguardEndpointRemove) isToDataplane_Payload() {}

func (*ToDataplane_GlobalBgpConfigUpdate) isToDataplane_Payload() {}

func (*ToDataplane_Encapsulation) isToDataplane_Payload() {}

func (*ToDataplane_ServiceUpdate) isToDataplane_Payload() {}

func (*ToDataplane_ServiceRemove) isToDataplane_Payload() {}

func (*ToDataplane_WireguardEndpointV6Update) isToDataplane_Payload() {}

func (*ToDataplane_WireguardEndpointV6Remove) isToDataplane_Payload() {}

func (*ToDataplane_HostMetadataV6Update) isToDataplane_Payload() {}

func (*ToDataplane_HostMetadataV6Remove) isToDataplane_Payload() {}

type FromDataplane struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	SequenceNumber uint64                 `protobuf:"varint,8,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
	// Types that are valid to be assigned to Payload:
	//
	//	*FromDataplane_ProcessStatusUpdate
	//	*FromDataplane_HostEndpointStatusUpdate
	//	*FromDataplane_HostEndpointStatusRemove
	//	*FromDataplane_WorkloadEndpointStatusUpdate
	//	*FromDataplane_WorkloadEndpointStatusRemove
	//	*FromDataplane_WireguardStatusUpdate
	//	*FromDataplane_DataplaneInSync
	Payload       isFromDataplane_Payload `protobuf_oneof:"payload"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *FromDataplane) Reset() {
	*x = FromDataplane{}
	mi := &file_felixbackend_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *FromDataplane) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FromDataplane) ProtoMessage() {}

func (x *FromDataplane) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FromDataplane.ProtoReflect.Descriptor instead.
func (*FromDataplane) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{2}
}

func (x *FromDataplane) GetSequenceNumber() uint64 {
	if x != nil {
		return x.SequenceNumber
	}
	return 0
}

func (x *FromDataplane) GetPayload() isFromDataplane_Payload {
	if x != nil {
		return x.Payload
	}
	return nil
}

func (x *FromDataplane) GetProcessStatusUpdate() *ProcessStatusUpdate {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_ProcessStatusUpdate); ok {
			return x.ProcessStatusUpdate
		}
	}
	return nil
}

func (x *FromDataplane) GetHostEndpointStatusUpdate() *HostEndpointStatusUpdate {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_HostEndpointStatusUpdate); ok {
			return x.HostEndpointStatusUpdate
		}
	}
	return nil
}

func (x *FromDataplane) GetHostEndpointStatusRemove() *HostEndpointStatusRemove {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_HostEndpointStatusRemove); ok {
			return x.HostEndpointStatusRemove
		}
	}
	return nil
}

func (x *FromDataplane) GetWorkloadEndpointStatusUpdate() *WorkloadEndpointStatusUpdate {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_WorkloadEndpointStatusUpdate); ok {
			return x.WorkloadEndpointStatusUpdate
		}
	}
	return nil
}

func (x *FromDataplane) GetWorkloadEndpointStatusRemove() *WorkloadEndpointStatusRemove {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_WorkloadEndpointStatusRemove); ok {
			return x.WorkloadEndpointStatusRemove
		}
	}
	return nil
}

func (x *FromDataplane) GetWireguardStatusUpdate() *WireguardStatusUpdate {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_WireguardStatusUpdate); ok {
			return x.WireguardStatusUpdate
		}
	}
	return nil
}

func (x *FromDataplane) GetDataplaneInSync() *DataplaneInSync {
	if x != nil {
		if x, ok := x.Payload.(*FromDataplane_DataplaneInSync); ok {
			return x.DataplaneInSync
		}
	}
	return nil
}

type isFromDataplane_Payload interface {
	isFromDataplane_Payload()
}

type FromDataplane_ProcessStatusUpdate struct {
	// ProcessStatusUpdate is sent as a periodic heartbeat.
	ProcessStatusUpdate *ProcessStatusUpdate `protobuf:"bytes,3,opt,name=process_status_update,json=processStatusUpdate,proto3,oneof"`
}

type FromDataplane_HostEndpointStatusUpdate struct {
	// HostEndpointStatusUpdate is sent when the oper status of an endpoint
	// changes.
	HostEndpointStatusUpdate *HostEndpointStatusUpdate `protobuf:"bytes,4,opt,name=host_endpoint_status_update,json=hostEndpointStatusUpdate,proto3,oneof"`
}

type FromDataplane_HostEndpointStatusRemove struct {
	// HostEndpointStatusRemove is sent when an endpoint is removed to clean
	// up its oper status entry.
	HostEndpointStatusRemove *HostEndpointStatusRemove `protobuf:"bytes,5,opt,name=host_endpoint_status_remove,json=hostEndpointStatusRemove,proto3,oneof"`
}

type FromDataplane_WorkloadEndpointStatusUpdate struct {
	// WorkloadEndpointStatusUpdate is sent when the oper status of an endpoint
	// changes.
	WorkloadEndpointStatusUpdate *WorkloadEndpointStatusUpdate `protobuf:"bytes,6,opt,name=workload_endpoint_status_update,json=workloadEndpointStatusUpdate,proto3,oneof"`
}

type FromDataplane_WorkloadEndpointStatusRemove struct {
	// WorkloadEndpointStatusRemove is sent when an endpoint is removed to
	// clean up its oper status entry.
	WorkloadEndpointStatusRemove *WorkloadEndpointStatusRemove `protobuf:"bytes,7,opt,name=workload_endpoint_status_remove,json=workloadEndpointStatusRemove,proto3,oneof"`
}

type FromDataplane_WireguardStatusUpdate struct {
	// WireguardStatusUpdate is sent when the wireguard is available with the
	// crypto primitives set up.
	WireguardStatusUpdate *WireguardStatusUpdate `protobuf:"bytes,9,opt,name=wireguard_status_update,json=wireguardStatusUpdate,proto3,oneof"`
}

type FromDataplane_DataplaneInSync struct {
	DataplaneInSync *DataplaneInSync `protobuf:"bytes,10,opt,name=dataplane_in_sync,json=dataplaneInSync,proto3,oneof"`
}

func (*FromDataplane_ProcessStatusUpdate) isFromDataplane_Payload() {}

func (*FromDataplane_HostEndpointStatusUpdate) isFromDataplane_Payload() {}

func (*FromDataplane_HostEndpointStatusRemove) isFromDataplane_Payload() {}

func (*FromDataplane_WorkloadEndpointStatusUpdate) isFromDataplane_Payload() {}

func (*FromDataplane_WorkloadEndpointStatusRemove) isFromDataplane_Payload() {}

func (*FromDataplane_WireguardStatusUpdate) isFromDataplane_Payload() {}

func (*FromDataplane_DataplaneInSync) isFromDataplane_Payload() {}

type ConfigUpdate struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Message           string                 `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
	Config            map[string]string      `protobuf:"bytes,1,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	SourceToRawConfig map[uint32]*RawConfig  `protobuf:"bytes,2,rep,name=source_to_raw_config,json=sourceToRawConfig,proto3" json:"source_to_raw_config,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *ConfigUpdate) Reset() {
	*x = ConfigUpdate{}
	mi := &file_felixbackend_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ConfigUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConfigUpdate) ProtoMessage() {}

func (x *ConfigUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ConfigUpdate.ProtoReflect.Descriptor instead.
func (*ConfigUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{3}
}

func (x *ConfigUpdate) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *ConfigUpdate) GetConfig() map[string]string {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *ConfigUpdate) GetSourceToRawConfig() map[uint32]*RawConfig {
	if x != nil {
		return x.SourceToRawConfig
	}
	return nil
}

type RawConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Source        string                 `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	Config        map[string]string      `protobuf:"bytes,2,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RawConfig) Reset() {
	*x = RawConfig{}
	mi := &file_felixbackend_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RawConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RawConfig) ProtoMessage() {}

func (x *RawConfig) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RawConfig.ProtoReflect.Descriptor instead.
func (*RawConfig) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{4}
}

func (x *RawConfig) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *RawConfig) GetConfig() map[string]string {
	if x != nil {
		return x.Config
	}
	return nil
}

type InSync struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *InSync) Reset() {
	*x = InSync{}
	mi := &file_felixbackend_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *InSync) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InSync) ProtoMessage() {}

func (x *InSync) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use InSync.ProtoReflect.Descriptor instead.
func (*InSync) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{5}
}

type IPSetUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Members       []string               `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"`
	Type          IPSetUpdate_IPSetType  `protobuf:"varint,3,opt,name=type,proto3,enum=felix.IPSetUpdate_IPSetType" json:"type,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPSetUpdate) Reset() {
	*x = IPSetUpdate{}
	mi := &file_felixbackend_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IPSetUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IPSetUpdate) ProtoMessage() {}

func (x *IPSetUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPSetUpdate.ProtoReflect.Descriptor instead.
func (*IPSetUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{6}
}

func (x *IPSetUpdate) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *IPSetUpdate) GetMembers() []string {
	if x != nil {
		return x.Members
	}
	return nil
}

func (x *IPSetUpdate) GetType() IPSetUpdate_IPSetType {
	if x != nil {
		return x.Type
	}
	return IPSetUpdate_IP
}

type IPSetDeltaUpdate struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Id             string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	AddedMembers   []string               `protobuf:"bytes,2,rep,name=added_members,json=addedMembers,proto3" json:"added_members,omitempty"`
	RemovedMembers []string               `protobuf:"bytes,3,rep,name=removed_members,json=removedMembers,proto3" json:"removed_members,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *IPSetDeltaUpdate) Reset() {
	*x = IPSetDeltaUpdate{}
	mi := &file_felixbackend_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IPSetDeltaUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IPSetDeltaUpdate) ProtoMessage() {}

func (x *IPSetDeltaUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPSetDeltaUpdate.ProtoReflect.Descriptor instead.
func (*IPSetDeltaUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{7}
}

func (x *IPSetDeltaUpdate) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *IPSetDeltaUpdate) GetAddedMembers() []string {
	if x != nil {
		return x.AddedMembers
	}
	return nil
}

func (x *IPSetDeltaUpdate) GetRemovedMembers() []string {
	if x != nil {
		return x.RemovedMembers
	}
	return nil
}

type IPSetRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPSetRemove) Reset() {
	*x = IPSetRemove{}
	mi := &file_felixbackend_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IPSetRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IPSetRemove) ProtoMessage() {}

func (x *IPSetRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPSetRemove.ProtoReflect.Descriptor instead.
func (*IPSetRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{8}
}

func (x *IPSetRemove) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type ActiveProfileUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *ProfileID             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Profile       *Profile               `protobuf:"bytes,2,opt,name=profile,proto3" json:"profile,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ActiveProfileUpdate) Reset() {
	*x = ActiveProfileUpdate{}
	mi := &file_felixbackend_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ActiveProfileUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ActiveProfileUpdate) ProtoMessage() {}

func (x *ActiveProfileUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ActiveProfileUpdate.ProtoReflect.Descriptor instead.
func (*ActiveProfileUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{9}
}

func (x *ActiveProfileUpdate) GetId() *ProfileID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *ActiveProfileUpdate) GetProfile() *Profile {
	if x != nil {
		return x.Profile
	}
	return nil
}

type ActiveProfileRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *ProfileID             `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ActiveProfileRemove) Reset() {
	*x = ActiveProfileRemove{}
	mi := &file_felixbackend_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ActiveProfileRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ActiveProfileRemove) ProtoMessage() {}

func (x *ActiveProfileRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ActiveProfileRemove.ProtoReflect.Descriptor instead.
func (*ActiveProfileRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{10}
}

func (x *ActiveProfileRemove) GetId() *ProfileID {
	if x != nil {
		return x.Id
	}
	return nil
}

type ProfileID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProfileID) Reset() {
	*x = ProfileID{}
	mi := &file_felixbackend_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProfileID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProfileID) ProtoMessage() {}

func (x *ProfileID) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProfileID.ProtoReflect.Descriptor instead.
func (*ProfileID) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{11}
}

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

type Profile struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	InboundRules  []*Rule                `protobuf:"bytes,1,rep,name=inbound_rules,json=inboundRules,proto3" json:"inbound_rules,omitempty"`
	OutboundRules []*Rule                `protobuf:"bytes,2,rep,name=outbound_rules,json=outboundRules,proto3" json:"outbound_rules,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Profile) Reset() {
	*x = Profile{}
	mi := &file_felixbackend_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Profile) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Profile) ProtoMessage() {}

func (x *Profile) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Profile.ProtoReflect.Descriptor instead.
func (*Profile) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{12}
}

func (x *Profile) GetInboundRules() []*Rule {
	if x != nil {
		return x.InboundRules
	}
	return nil
}

func (x *Profile) GetOutboundRules() []*Rule {
	if x != nil {
		return x.OutboundRules
	}
	return nil
}

type ActivePolicyUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *PolicyID              `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Policy        *Policy                `protobuf:"bytes,2,opt,name=policy,proto3" json:"policy,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ActivePolicyUpdate) Reset() {
	*x = ActivePolicyUpdate{}
	mi := &file_felixbackend_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ActivePolicyUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ActivePolicyUpdate) ProtoMessage() {}

func (x *ActivePolicyUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ActivePolicyUpdate.ProtoReflect.Descriptor instead.
func (*ActivePolicyUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{13}
}

func (x *ActivePolicyUpdate) GetId() *PolicyID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *ActivePolicyUpdate) GetPolicy() *Policy {
	if x != nil {
		return x.Policy
	}
	return nil
}

type ActivePolicyRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *PolicyID              `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ActivePolicyRemove) Reset() {
	*x = ActivePolicyRemove{}
	mi := &file_felixbackend_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ActivePolicyRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ActivePolicyRemove) ProtoMessage() {}

func (x *ActivePolicyRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[14]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ActivePolicyRemove.ProtoReflect.Descriptor instead.
func (*ActivePolicyRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{14}
}

func (x *ActivePolicyRemove) GetId() *PolicyID {
	if x != nil {
		return x.Id
	}
	return nil
}

type PolicyID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Tier          string                 `protobuf:"bytes,1,opt,name=tier,proto3" json:"tier,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PolicyID) Reset() {
	*x = PolicyID{}
	mi := &file_felixbackend_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PolicyID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PolicyID) ProtoMessage() {}

func (x *PolicyID) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[15]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PolicyID.ProtoReflect.Descriptor instead.
func (*PolicyID) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{15}
}

func (x *PolicyID) GetTier() string {
	if x != nil {
		return x.Tier
	}
	return ""
}

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

type Policy struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// If the Policy represents a NetworkPolicy, this contains the namespace that the policy came
	// from.  Otherwise, empty.
	Namespace        string  `protobuf:"bytes,5,opt,name=namespace,proto3" json:"namespace,omitempty"`
	InboundRules     []*Rule `protobuf:"bytes,1,rep,name=inbound_rules,json=inboundRules,proto3" json:"inbound_rules,omitempty"`
	OutboundRules    []*Rule `protobuf:"bytes,2,rep,name=outbound_rules,json=outboundRules,proto3" json:"outbound_rules,omitempty"`
	Untracked        bool    `protobuf:"varint,3,opt,name=untracked,proto3" json:"untracked,omitempty"`
	PreDnat          bool    `protobuf:"varint,4,opt,name=pre_dnat,json=preDnat,proto3" json:"pre_dnat,omitempty"`
	OriginalSelector string  `protobuf:"bytes,6,opt,name=original_selector,json=originalSelector,proto3" json:"original_selector,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *Policy) Reset() {
	*x = Policy{}
	mi := &file_felixbackend_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Policy) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Policy) ProtoMessage() {}

func (x *Policy) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Policy.ProtoReflect.Descriptor instead.
func (*Policy) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{16}
}

func (x *Policy) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *Policy) GetInboundRules() []*Rule {
	if x != nil {
		return x.InboundRules
	}
	return nil
}

func (x *Policy) GetOutboundRules() []*Rule {
	if x != nil {
		return x.OutboundRules
	}
	return nil
}

func (x *Policy) GetUntracked() bool {
	if x != nil {
		return x.Untracked
	}
	return false
}

func (x *Policy) GetPreDnat() bool {
	if x != nil {
		return x.PreDnat
	}
	return false
}

func (x *Policy) GetOriginalSelector() string {
	if x != nil {
		return x.OriginalSelector
	}
	return ""
}

type Rule struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	Action    string                 `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"`
	IpVersion IPVersion              `protobuf:"varint,2,opt,name=ip_version,json=ipVersion,proto3,enum=felix.IPVersion" json:"ip_version,omitempty"`
	Protocol  *Protocol              `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"`
	SrcNet    []string               `protobuf:"bytes,4,rep,name=src_net,json=srcNet,proto3" json:"src_net,omitempty"`
	// The list of ports is split into numeric and named ports, where named ports are represented
	// by (IP, port) IP sets.  A packet matches this rule if it matches any numeric port range *or*
	// any listed named port IP set.
	SrcPorts             []*PortRange `protobuf:"bytes,5,rep,name=src_ports,json=srcPorts,proto3" json:"src_ports,omitempty"`
	SrcNamedPortIpSetIds []string     `protobuf:"bytes,12,rep,name=src_named_port_ip_set_ids,json=srcNamedPortIpSetIds,proto3" json:"src_named_port_ip_set_ids,omitempty"`
	DstNet               []string     `protobuf:"bytes,6,rep,name=dst_net,json=dstNet,proto3" json:"dst_net,omitempty"`
	DstPorts             []*PortRange `protobuf:"bytes,7,rep,name=dst_ports,json=dstPorts,proto3" json:"dst_ports,omitempty"`
	DstNamedPortIpSetIds []string     `protobuf:"bytes,13,rep,name=dst_named_port_ip_set_ids,json=dstNamedPortIpSetIds,proto3" json:"dst_named_port_ip_set_ids,omitempty"`
	// Types that are valid to be assigned to Icmp:
	//
	//	*Rule_IcmpType
	//	*Rule_IcmpTypeCode
	Icmp        isRule_Icmp `protobuf_oneof:"icmp"`
	SrcIpSetIds []string    `protobuf:"bytes,10,rep,name=src_ip_set_ids,json=srcIpSetIds,proto3" json:"src_ip_set_ids,omitempty"`
	DstIpSetIds []string    `protobuf:"bytes,11,rep,name=dst_ip_set_ids,json=dstIpSetIds,proto3" json:"dst_ip_set_ids,omitempty"`
	// IP sets on which we should match both IP and port.
	DstIpPortSetIds []string     `protobuf:"bytes,15,rep,name=dst_ip_port_set_ids,json=dstIpPortSetIds,proto3" json:"dst_ip_port_set_ids,omitempty"`
	NotProtocol     *Protocol    `protobuf:"bytes,102,opt,name=not_protocol,json=notProtocol,proto3" json:"not_protocol,omitempty"`
	NotSrcNet       []string     `protobuf:"bytes,103,rep,name=not_src_net,json=notSrcNet,proto3" json:"not_src_net,omitempty"`
	NotSrcPorts     []*PortRange `protobuf:"bytes,104,rep,name=not_src_ports,json=notSrcPorts,proto3" json:"not_src_ports,omitempty"`
	NotDstNet       []string     `protobuf:"bytes,105,rep,name=not_dst_net,json=notDstNet,proto3" json:"not_dst_net,omitempty"`
	NotDstPorts     []*PortRange `protobuf:"bytes,106,rep,name=not_dst_ports,json=notDstPorts,proto3" json:"not_dst_ports,omitempty"`
	// Types that are valid to be assigned to NotIcmp:
	//
	//	*Rule_NotIcmpType
	//	*Rule_NotIcmpTypeCode
	NotIcmp                 isRule_NotIcmp `protobuf_oneof:"not_icmp"`
	NotSrcIpSetIds          []string       `protobuf:"bytes,109,rep,name=not_src_ip_set_ids,json=notSrcIpSetIds,proto3" json:"not_src_ip_set_ids,omitempty"`
	NotDstIpSetIds          []string       `protobuf:"bytes,110,rep,name=not_dst_ip_set_ids,json=notDstIpSetIds,proto3" json:"not_dst_ip_set_ids,omitempty"`
	NotSrcNamedPortIpSetIds []string       `protobuf:"bytes,112,rep,name=not_src_named_port_ip_set_ids,json=notSrcNamedPortIpSetIds,proto3" json:"not_src_named_port_ip_set_ids,omitempty"`
	NotDstNamedPortIpSetIds []string       `protobuf:"bytes,113,rep,name=not_dst_named_port_ip_set_ids,json=notDstNamedPortIpSetIds,proto3" json:"not_dst_named_port_ip_set_ids,omitempty"`
	// These fields pass through the original selectors from the v3 datamodel unmodified as required
	// for the policy sync API.
	OriginalSrcSelector          string `protobuf:"bytes,114,opt,name=original_src_selector,json=originalSrcSelector,proto3" json:"original_src_selector,omitempty"`
	OriginalDstSelector          string `protobuf:"bytes,115,opt,name=original_dst_selector,json=originalDstSelector,proto3" json:"original_dst_selector,omitempty"`
	OriginalSrcNamespaceSelector string `protobuf:"bytes,116,opt,name=original_src_namespace_selector,json=originalSrcNamespaceSelector,proto3" json:"original_src_namespace_selector,omitempty"`
	OriginalDstNamespaceSelector string `protobuf:"bytes,117,opt,name=original_dst_namespace_selector,json=originalDstNamespaceSelector,proto3" json:"original_dst_namespace_selector,omitempty"`
	OriginalNotSrcSelector       string `protobuf:"bytes,118,opt,name=original_not_src_selector,json=originalNotSrcSelector,proto3" json:"original_not_src_selector,omitempty"`
	OriginalNotDstSelector       string `protobuf:"bytes,119,opt,name=original_not_dst_selector,json=originalNotDstSelector,proto3" json:"original_not_dst_selector,omitempty"`
	// Original source service match criteria.
	OriginalSrcService          string `protobuf:"bytes,132,opt,name=original_src_service,json=originalSrcService,proto3" json:"original_src_service,omitempty"`
	OriginalSrcServiceNamespace string `protobuf:"bytes,133,opt,name=original_src_service_namespace,json=originalSrcServiceNamespace,proto3" json:"original_src_service_namespace,omitempty"`
	// Original destination service match criteria.
	OriginalDstService          string `protobuf:"bytes,130,opt,name=original_dst_service,json=originalDstService,proto3" json:"original_dst_service,omitempty"`
	OriginalDstServiceNamespace string `protobuf:"bytes,131,opt,name=original_dst_service_namespace,json=originalDstServiceNamespace,proto3" json:"original_dst_service_namespace,omitempty"`
	// Pass through of the v3 datamodel service account match criteria.
	SrcServiceAccountMatch *ServiceAccountMatch `protobuf:"bytes,120,opt,name=src_service_account_match,json=srcServiceAccountMatch,proto3" json:"src_service_account_match,omitempty"`
	DstServiceAccountMatch *ServiceAccountMatch `protobuf:"bytes,121,opt,name=dst_service_account_match,json=dstServiceAccountMatch,proto3" json:"dst_service_account_match,omitempty"`
	// Pass through of the v3 datamodel HTTP match criteria.
	HttpMatch *HTTPMatch    `protobuf:"bytes,122,opt,name=http_match,json=httpMatch,proto3" json:"http_match,omitempty"`
	Metadata  *RuleMetadata `protobuf:"bytes,123,opt,name=metadata,proto3" json:"metadata,omitempty"`
	// An opaque ID/hash for the rule.
	RuleId        string `protobuf:"bytes,201,opt,name=rule_id,json=ruleId,proto3" json:"rule_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Rule) Reset() {
	*x = Rule{}
	mi := &file_felixbackend_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Rule) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Rule) ProtoMessage() {}

func (x *Rule) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Rule.ProtoReflect.Descriptor instead.
func (*Rule) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{17}
}

func (x *Rule) GetAction() string {
	if x != nil {
		return x.Action
	}
	return ""
}

func (x *Rule) GetIpVersion() IPVersion {
	if x != nil {
		return x.IpVersion
	}
	return IPVersion_ANY
}

func (x *Rule) GetProtocol() *Protocol {
	if x != nil {
		return x.Protocol
	}
	return nil
}

func (x *Rule) GetSrcNet() []string {
	if x != nil {
		return x.SrcNet
	}
	return nil
}

func (x *Rule) GetSrcPorts() []*PortRange {
	if x != nil {
		return x.SrcPorts
	}
	return nil
}

func (x *Rule) GetSrcNamedPortIpSetIds() []string {
	if x != nil {
		return x.SrcNamedPortIpSetIds
	}
	return nil
}

func (x *Rule) GetDstNet() []string {
	if x != nil {
		return x.DstNet
	}
	return nil
}

func (x *Rule) GetDstPorts() []*PortRange {
	if x != nil {
		return x.DstPorts
	}
	return nil
}

func (x *Rule) GetDstNamedPortIpSetIds() []string {
	if x != nil {
		return x.DstNamedPortIpSetIds
	}
	return nil
}

func (x *Rule) GetIcmp() isRule_Icmp {
	if x != nil {
		return x.Icmp
	}
	return nil
}

func (x *Rule) GetIcmpType() int32 {
	if x != nil {
		if x, ok := x.Icmp.(*Rule_IcmpType); ok {
			return x.IcmpType
		}
	}
	return 0
}

func (x *Rule) GetIcmpTypeCode() *IcmpTypeAndCode {
	if x != nil {
		if x, ok := x.Icmp.(*Rule_IcmpTypeCode); ok {
			return x.IcmpTypeCode
		}
	}
	return nil
}

func (x *Rule) GetSrcIpSetIds() []string {
	if x != nil {
		return x.SrcIpSetIds
	}
	return nil
}

func (x *Rule) GetDstIpSetIds() []string {
	if x != nil {
		return x.DstIpSetIds
	}
	return nil
}

func (x *Rule) GetDstIpPortSetIds() []string {
	if x != nil {
		return x.DstIpPortSetIds
	}
	return nil
}

func (x *Rule) GetNotProtocol() *Protocol {
	if x != nil {
		return x.NotProtocol
	}
	return nil
}

func (x *Rule) GetNotSrcNet() []string {
	if x != nil {
		return x.NotSrcNet
	}
	return nil
}

func (x *Rule) GetNotSrcPorts() []*PortRange {
	if x != nil {
		return x.NotSrcPorts
	}
	return nil
}

func (x *Rule) GetNotDstNet() []string {
	if x != nil {
		return x.NotDstNet
	}
	return nil
}

func (x *Rule) GetNotDstPorts() []*PortRange {
	if x != nil {
		return x.NotDstPorts
	}
	return nil
}

func (x *Rule) GetNotIcmp() isRule_NotIcmp {
	if x != nil {
		return x.NotIcmp
	}
	return nil
}

func (x *Rule) GetNotIcmpType() int32 {
	if x != nil {
		if x, ok := x.NotIcmp.(*Rule_NotIcmpType); ok {
			return x.NotIcmpType
		}
	}
	return 0
}

func (x *Rule) GetNotIcmpTypeCode() *IcmpTypeAndCode {
	if x != nil {
		if x, ok := x.NotIcmp.(*Rule_NotIcmpTypeCode); ok {
			return x.NotIcmpTypeCode
		}
	}
	return nil
}

func (x *Rule) GetNotSrcIpSetIds() []string {
	if x != nil {
		return x.NotSrcIpSetIds
	}
	return nil
}

func (x *Rule) GetNotDstIpSetIds() []string {
	if x != nil {
		return x.NotDstIpSetIds
	}
	return nil
}

func (x *Rule) GetNotSrcNamedPortIpSetIds() []string {
	if x != nil {
		return x.NotSrcNamedPortIpSetIds
	}
	return nil
}

func (x *Rule) GetNotDstNamedPortIpSetIds() []string {
	if x != nil {
		return x.NotDstNamedPortIpSetIds
	}
	return nil
}

func (x *Rule) GetOriginalSrcSelector() string {
	if x != nil {
		return x.OriginalSrcSelector
	}
	return ""
}

func (x *Rule) GetOriginalDstSelector() string {
	if x != nil {
		return x.OriginalDstSelector
	}
	return ""
}

func (x *Rule) GetOriginalSrcNamespaceSelector() string {
	if x != nil {
		return x.OriginalSrcNamespaceSelector
	}
	return ""
}

func (x *Rule) GetOriginalDstNamespaceSelector() string {
	if x != nil {
		return x.OriginalDstNamespaceSelector
	}
	return ""
}

func (x *Rule) GetOriginalNotSrcSelector() string {
	if x != nil {
		return x.OriginalNotSrcSelector
	}
	return ""
}

func (x *Rule) GetOriginalNotDstSelector() string {
	if x != nil {
		return x.OriginalNotDstSelector
	}
	return ""
}

func (x *Rule) GetOriginalSrcService() string {
	if x != nil {
		return x.OriginalSrcService
	}
	return ""
}

func (x *Rule) GetOriginalSrcServiceNamespace() string {
	if x != nil {
		return x.OriginalSrcServiceNamespace
	}
	return ""
}

func (x *Rule) GetOriginalDstService() string {
	if x != nil {
		return x.OriginalDstService
	}
	return ""
}

func (x *Rule) GetOriginalDstServiceNamespace() string {
	if x != nil {
		return x.OriginalDstServiceNamespace
	}
	return ""
}

func (x *Rule) GetSrcServiceAccountMatch() *ServiceAccountMatch {
	if x != nil {
		return x.SrcServiceAccountMatch
	}
	return nil
}

func (x *Rule) GetDstServiceAccountMatch() *ServiceAccountMatch {
	if x != nil {
		return x.DstServiceAccountMatch
	}
	return nil
}

func (x *Rule) GetHttpMatch() *HTTPMatch {
	if x != nil {
		return x.HttpMatch
	}
	return nil
}

func (x *Rule) GetMetadata() *RuleMetadata {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *Rule) GetRuleId() string {
	if x != nil {
		return x.RuleId
	}
	return ""
}

type isRule_Icmp interface {
	isRule_Icmp()
}

type Rule_IcmpType struct {
	// Distinguish between a match on type only and type+code.  We can't use
	// the fact that fields ar optional because Go can't distinguish 0 from
	// "not-present".
	IcmpType int32 `protobuf:"varint,8,opt,name=icmp_type,json=icmpType,proto3,oneof"`
}

type Rule_IcmpTypeCode struct {
	IcmpTypeCode *IcmpTypeAndCode `protobuf:"bytes,9,opt,name=icmp_type_code,json=icmpTypeCode,proto3,oneof"`
}

func (*Rule_IcmpType) isRule_Icmp() {}

func (*Rule_IcmpTypeCode) isRule_Icmp() {}

type isRule_NotIcmp interface {
	isRule_NotIcmp()
}

type Rule_NotIcmpType struct {
	NotIcmpType int32 `protobuf:"varint,107,opt,name=not_icmp_type,json=notIcmpType,proto3,oneof"`
}

type Rule_NotIcmpTypeCode struct {
	NotIcmpTypeCode *IcmpTypeAndCode `protobuf:"bytes,108,opt,name=not_icmp_type_code,json=notIcmpTypeCode,proto3,oneof"`
}

func (*Rule_NotIcmpType) isRule_NotIcmp() {}

func (*Rule_NotIcmpTypeCode) isRule_NotIcmp() {}

type ServiceAccountMatch struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Selector      string                 `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
	Names         []string               `protobuf:"bytes,2,rep,name=names,proto3" json:"names,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceAccountMatch) Reset() {
	*x = ServiceAccountMatch{}
	mi := &file_felixbackend_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceAccountMatch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceAccountMatch) ProtoMessage() {}

func (x *ServiceAccountMatch) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceAccountMatch.ProtoReflect.Descriptor instead.
func (*ServiceAccountMatch) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{18}
}

func (x *ServiceAccountMatch) GetSelector() string {
	if x != nil {
		return x.Selector
	}
	return ""
}

func (x *ServiceAccountMatch) GetNames() []string {
	if x != nil {
		return x.Names
	}
	return nil
}

type HTTPMatch struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Methods       []string               `protobuf:"bytes,1,rep,name=methods,proto3" json:"methods,omitempty"`
	Paths         []*HTTPMatch_PathMatch `protobuf:"bytes,2,rep,name=paths,proto3" json:"paths,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPMatch) Reset() {
	*x = HTTPMatch{}
	mi := &file_felixbackend_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HTTPMatch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HTTPMatch) ProtoMessage() {}

func (x *HTTPMatch) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HTTPMatch.ProtoReflect.Descriptor instead.
func (*HTTPMatch) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{19}
}

func (x *HTTPMatch) GetMethods() []string {
	if x != nil {
		return x.Methods
	}
	return nil
}

func (x *HTTPMatch) GetPaths() []*HTTPMatch_PathMatch {
	if x != nil {
		return x.Paths
	}
	return nil
}

type RuleMetadata struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Annotations   map[string]string      `protobuf:"bytes,1,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RuleMetadata) Reset() {
	*x = RuleMetadata{}
	mi := &file_felixbackend_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RuleMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RuleMetadata) ProtoMessage() {}

func (x *RuleMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RuleMetadata.ProtoReflect.Descriptor instead.
func (*RuleMetadata) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{20}
}

func (x *RuleMetadata) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

type IcmpTypeAndCode struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Type          int32                  `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
	Code          int32                  `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IcmpTypeAndCode) Reset() {
	*x = IcmpTypeAndCode{}
	mi := &file_felixbackend_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IcmpTypeAndCode) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IcmpTypeAndCode) ProtoMessage() {}

func (x *IcmpTypeAndCode) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IcmpTypeAndCode.ProtoReflect.Descriptor instead.
func (*IcmpTypeAndCode) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{21}
}

func (x *IcmpTypeAndCode) GetType() int32 {
	if x != nil {
		return x.Type
	}
	return 0
}

func (x *IcmpTypeAndCode) GetCode() int32 {
	if x != nil {
		return x.Code
	}
	return 0
}

type Protocol struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to NumberOrName:
	//
	//	*Protocol_Number
	//	*Protocol_Name
	NumberOrName  isProtocol_NumberOrName `protobuf_oneof:"number_or_name"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Protocol) Reset() {
	*x = Protocol{}
	mi := &file_felixbackend_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Protocol) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Protocol) ProtoMessage() {}

func (x *Protocol) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Protocol.ProtoReflect.Descriptor instead.
func (*Protocol) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{22}
}

func (x *Protocol) GetNumberOrName() isProtocol_NumberOrName {
	if x != nil {
		return x.NumberOrName
	}
	return nil
}

func (x *Protocol) GetNumber() int32 {
	if x != nil {
		if x, ok := x.NumberOrName.(*Protocol_Number); ok {
			return x.Number
		}
	}
	return 0
}

func (x *Protocol) GetName() string {
	if x != nil {
		if x, ok := x.NumberOrName.(*Protocol_Name); ok {
			return x.Name
		}
	}
	return ""
}

type isProtocol_NumberOrName interface {
	isProtocol_NumberOrName()
}

type Protocol_Number struct {
	Number int32 `protobuf:"varint,1,opt,name=number,proto3,oneof"`
}

type Protocol_Name struct {
	Name string `protobuf:"bytes,2,opt,name=name,proto3,oneof"`
}

func (*Protocol_Number) isProtocol_NumberOrName() {}

func (*Protocol_Name) isProtocol_NumberOrName() {}

// Individual ports are sent with first == last.
type PortRange struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	First         int32                  `protobuf:"varint,1,opt,name=first,proto3" json:"first,omitempty"`
	Last          int32                  `protobuf:"varint,2,opt,name=last,proto3" json:"last,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PortRange) Reset() {
	*x = PortRange{}
	mi := &file_felixbackend_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PortRange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PortRange) ProtoMessage() {}

func (x *PortRange) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PortRange.ProtoReflect.Descriptor instead.
func (*PortRange) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{23}
}

func (x *PortRange) GetFirst() int32 {
	if x != nil {
		return x.First
	}
	return 0
}

func (x *PortRange) GetLast() int32 {
	if x != nil {
		return x.Last
	}
	return 0
}

type WorkloadEndpointID struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	OrchestratorId string                 `protobuf:"bytes,2,opt,name=orchestrator_id,json=orchestratorId,proto3" json:"orchestrator_id,omitempty"`
	WorkloadId     string                 `protobuf:"bytes,3,opt,name=workload_id,json=workloadId,proto3" json:"workload_id,omitempty"`
	EndpointId     string                 `protobuf:"bytes,4,opt,name=endpoint_id,json=endpointId,proto3" json:"endpoint_id,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *WorkloadEndpointID) Reset() {
	*x = WorkloadEndpointID{}
	mi := &file_felixbackend_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkloadEndpointID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkloadEndpointID) ProtoMessage() {}

func (x *WorkloadEndpointID) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WorkloadEndpointID.ProtoReflect.Descriptor instead.
func (*WorkloadEndpointID) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{24}
}

func (x *WorkloadEndpointID) GetOrchestratorId() string {
	if x != nil {
		return x.OrchestratorId
	}
	return ""
}

func (x *WorkloadEndpointID) GetWorkloadId() string {
	if x != nil {
		return x.WorkloadId
	}
	return ""
}

func (x *WorkloadEndpointID) GetEndpointId() string {
	if x != nil {
		return x.EndpointId
	}
	return ""
}

type WorkloadEndpointUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *WorkloadEndpointID    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Endpoint      *WorkloadEndpoint      `protobuf:"bytes,5,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkloadEndpointUpdate) Reset() {
	*x = WorkloadEndpointUpdate{}
	mi := &file_felixbackend_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkloadEndpointUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkloadEndpointUpdate) ProtoMessage() {}

func (x *WorkloadEndpointUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WorkloadEndpointUpdate.ProtoReflect.Descriptor instead.
func (*WorkloadEndpointUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{25}
}

func (x *WorkloadEndpointUpdate) GetId() *WorkloadEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *WorkloadEndpointUpdate) GetEndpoint() *WorkloadEndpoint {
	if x != nil {
		return x.Endpoint
	}
	return nil
}

type WorkloadEndpoint struct {
	state                      protoimpl.MessageState `protogen:"open.v1"`
	State                      string                 `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
	Name                       string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Mac                        string                 `protobuf:"bytes,3,opt,name=mac,proto3" json:"mac,omitempty"`
	ProfileIds                 []string               `protobuf:"bytes,4,rep,name=profile_ids,json=profileIds,proto3" json:"profile_ids,omitempty"`
	Ipv4Nets                   []string               `protobuf:"bytes,5,rep,name=ipv4_nets,json=ipv4Nets,proto3" json:"ipv4_nets,omitempty"`
	Ipv6Nets                   []string               `protobuf:"bytes,6,rep,name=ipv6_nets,json=ipv6Nets,proto3" json:"ipv6_nets,omitempty"`
	Tiers                      []*TierInfo            `protobuf:"bytes,7,rep,name=tiers,proto3" json:"tiers,omitempty"`
	Ipv4Nat                    []*NatInfo             `protobuf:"bytes,8,rep,name=ipv4_nat,json=ipv4Nat,proto3" json:"ipv4_nat,omitempty"`
	Ipv6Nat                    []*NatInfo             `protobuf:"bytes,9,rep,name=ipv6_nat,json=ipv6Nat,proto3" json:"ipv6_nat,omitempty"`
	AllowSpoofedSourcePrefixes []string               `protobuf:"bytes,10,rep,name=allow_spoofed_source_prefixes,json=allowSpoofedSourcePrefixes,proto3" json:"allow_spoofed_source_prefixes,omitempty"`
	Annotations                map[string]string      `protobuf:"bytes,11,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	QosControls                *QoSControls           `protobuf:"bytes,12,opt,name=qos_controls,json=qosControls,proto3" json:"qos_controls,omitempty"`
	LocalBgpPeer               *LocalBGPPeer          `protobuf:"bytes,13,opt,name=local_bgp_peer,json=localBgpPeer,proto3" json:"local_bgp_peer,omitempty"`
	Type                       WorkloadType           `protobuf:"varint,14,opt,name=type,proto3,enum=felix.WorkloadType" json:"type,omitempty"`
	unknownFields              protoimpl.UnknownFields
	sizeCache                  protoimpl.SizeCache
}

func (x *WorkloadEndpoint) Reset() {
	*x = WorkloadEndpoint{}
	mi := &file_felixbackend_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkloadEndpoint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkloadEndpoint) ProtoMessage() {}

func (x *WorkloadEndpoint) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WorkloadEndpoint.ProtoReflect.Descriptor instead.
func (*WorkloadEndpoint) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{26}
}

func (x *WorkloadEndpoint) GetState() string {
	if x != nil {
		return x.State
	}
	return ""
}

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

func (x *WorkloadEndpoint) GetMac() string {
	if x != nil {
		return x.Mac
	}
	return ""
}

func (x *WorkloadEndpoint) GetProfileIds() []string {
	if x != nil {
		return x.ProfileIds
	}
	return nil
}

func (x *WorkloadEndpoint) GetIpv4Nets() []string {
	if x != nil {
		return x.Ipv4Nets
	}
	return nil
}

func (x *WorkloadEndpoint) GetIpv6Nets() []string {
	if x != nil {
		return x.Ipv6Nets
	}
	return nil
}

func (x *WorkloadEndpoint) GetTiers() []*TierInfo {
	if x != nil {
		return x.Tiers
	}
	return nil
}

func (x *WorkloadEndpoint) GetIpv4Nat() []*NatInfo {
	if x != nil {
		return x.Ipv4Nat
	}
	return nil
}

func (x *WorkloadEndpoint) GetIpv6Nat() []*NatInfo {
	if x != nil {
		return x.Ipv6Nat
	}
	return nil
}

func (x *WorkloadEndpoint) GetAllowSpoofedSourcePrefixes() []string {
	if x != nil {
		return x.AllowSpoofedSourcePrefixes
	}
	return nil
}

func (x *WorkloadEndpoint) GetAnnotations() map[string]string {
	if x != nil {
		return x.Annotations
	}
	return nil
}

func (x *WorkloadEndpoint) GetQosControls() *QoSControls {
	if x != nil {
		return x.QosControls
	}
	return nil
}

func (x *WorkloadEndpoint) GetLocalBgpPeer() *LocalBGPPeer {
	if x != nil {
		return x.LocalBgpPeer
	}
	return nil
}

func (x *WorkloadEndpoint) GetType() WorkloadType {
	if x != nil {
		return x.Type
	}
	return WorkloadType_REGULAR
}

type QoSControls struct {
	state                 protoimpl.MessageState `protogen:"open.v1"`
	IngressBandwidth      int64                  `protobuf:"varint,1,opt,name=IngressBandwidth,proto3" json:"IngressBandwidth,omitempty"`
	EgressBandwidth       int64                  `protobuf:"varint,2,opt,name=EgressBandwidth,proto3" json:"EgressBandwidth,omitempty"`
	IngressBurst          int64                  `protobuf:"varint,3,opt,name=IngressBurst,proto3" json:"IngressBurst,omitempty"`
	EgressBurst           int64                  `protobuf:"varint,4,opt,name=EgressBurst,proto3" json:"EgressBurst,omitempty"`
	IngressPacketRate     int64                  `protobuf:"varint,5,opt,name=IngressPacketRate,proto3" json:"IngressPacketRate,omitempty"`
	EgressPacketRate      int64                  `protobuf:"varint,6,opt,name=EgressPacketRate,proto3" json:"EgressPacketRate,omitempty"`
	IngressMaxConnections int64                  `protobuf:"varint,7,opt,name=IngressMaxConnections,proto3" json:"IngressMaxConnections,omitempty"`
	EgressMaxConnections  int64                  `protobuf:"varint,8,opt,name=EgressMaxConnections,proto3" json:"EgressMaxConnections,omitempty"`
	IngressPeakrate       int64                  `protobuf:"varint,9,opt,name=IngressPeakrate,proto3" json:"IngressPeakrate,omitempty"`
	EgressPeakrate        int64                  `protobuf:"varint,10,opt,name=EgressPeakrate,proto3" json:"EgressPeakrate,omitempty"`
	IngressMinburst       int64                  `protobuf:"varint,11,opt,name=IngressMinburst,proto3" json:"IngressMinburst,omitempty"`
	EgressMinburst        int64                  `protobuf:"varint,12,opt,name=EgressMinburst,proto3" json:"EgressMinburst,omitempty"`
	IngressPacketBurst    int64                  `protobuf:"varint,13,opt,name=IngressPacketBurst,proto3" json:"IngressPacketBurst,omitempty"`
	EgressPacketBurst     int64                  `protobuf:"varint,14,opt,name=EgressPacketBurst,proto3" json:"EgressPacketBurst,omitempty"`
	unknownFields         protoimpl.UnknownFields
	sizeCache             protoimpl.SizeCache
}

func (x *QoSControls) Reset() {
	*x = QoSControls{}
	mi := &file_felixbackend_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *QoSControls) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*QoSControls) ProtoMessage() {}

func (x *QoSControls) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use QoSControls.ProtoReflect.Descriptor instead.
func (*QoSControls) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{27}
}

func (x *QoSControls) GetIngressBandwidth() int64 {
	if x != nil {
		return x.IngressBandwidth
	}
	return 0
}

func (x *QoSControls) GetEgressBandwidth() int64 {
	if x != nil {
		return x.EgressBandwidth
	}
	return 0
}

func (x *QoSControls) GetIngressBurst() int64 {
	if x != nil {
		return x.IngressBurst
	}
	return 0
}

func (x *QoSControls) GetEgressBurst() int64 {
	if x != nil {
		return x.EgressBurst
	}
	return 0
}

func (x *QoSControls) GetIngressPacketRate() int64 {
	if x != nil {
		return x.IngressPacketRate
	}
	return 0
}

func (x *QoSControls) GetEgressPacketRate() int64 {
	if x != nil {
		return x.EgressPacketRate
	}
	return 0
}

func (x *QoSControls) GetIngressMaxConnections() int64 {
	if x != nil {
		return x.IngressMaxConnections
	}
	return 0
}

func (x *QoSControls) GetEgressMaxConnections() int64 {
	if x != nil {
		return x.EgressMaxConnections
	}
	return 0
}

func (x *QoSControls) GetIngressPeakrate() int64 {
	if x != nil {
		return x.IngressPeakrate
	}
	return 0
}

func (x *QoSControls) GetEgressPeakrate() int64 {
	if x != nil {
		return x.EgressPeakrate
	}
	return 0
}

func (x *QoSControls) GetIngressMinburst() int64 {
	if x != nil {
		return x.IngressMinburst
	}
	return 0
}

func (x *QoSControls) GetEgressMinburst() int64 {
	if x != nil {
		return x.EgressMinburst
	}
	return 0
}

func (x *QoSControls) GetIngressPacketBurst() int64 {
	if x != nil {
		return x.IngressPacketBurst
	}
	return 0
}

func (x *QoSControls) GetEgressPacketBurst() int64 {
	if x != nil {
		return x.EgressPacketBurst
	}
	return 0
}

type LocalBGPPeer struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	BgpPeerName   string                 `protobuf:"bytes,1,opt,name=bgp_peer_name,json=bgpPeerName,proto3" json:"bgp_peer_name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *LocalBGPPeer) Reset() {
	*x = LocalBGPPeer{}
	mi := &file_felixbackend_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *LocalBGPPeer) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LocalBGPPeer) ProtoMessage() {}

func (x *LocalBGPPeer) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocalBGPPeer.ProtoReflect.Descriptor instead.
func (*LocalBGPPeer) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{28}
}

func (x *LocalBGPPeer) GetBgpPeerName() string {
	if x != nil {
		return x.BgpPeerName
	}
	return ""
}

type WorkloadEndpointRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *WorkloadEndpointID    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkloadEndpointRemove) Reset() {
	*x = WorkloadEndpointRemove{}
	mi := &file_felixbackend_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkloadEndpointRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkloadEndpointRemove) ProtoMessage() {}

func (x *WorkloadEndpointRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WorkloadEndpointRemove.ProtoReflect.Descriptor instead.
func (*WorkloadEndpointRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{29}
}

func (x *WorkloadEndpointRemove) GetId() *WorkloadEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

type HostEndpointID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	EndpointId    string                 `protobuf:"bytes,2,opt,name=endpoint_id,json=endpointId,proto3" json:"endpoint_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostEndpointID) Reset() {
	*x = HostEndpointID{}
	mi := &file_felixbackend_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostEndpointID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostEndpointID) ProtoMessage() {}

func (x *HostEndpointID) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostEndpointID.ProtoReflect.Descriptor instead.
func (*HostEndpointID) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{30}
}

func (x *HostEndpointID) GetEndpointId() string {
	if x != nil {
		return x.EndpointId
	}
	return ""
}

type HostEndpointUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *HostEndpointID        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Endpoint      *HostEndpoint          `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostEndpointUpdate) Reset() {
	*x = HostEndpointUpdate{}
	mi := &file_felixbackend_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostEndpointUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostEndpointUpdate) ProtoMessage() {}

func (x *HostEndpointUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostEndpointUpdate.ProtoReflect.Descriptor instead.
func (*HostEndpointUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{31}
}

func (x *HostEndpointUpdate) GetId() *HostEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *HostEndpointUpdate) GetEndpoint() *HostEndpoint {
	if x != nil {
		return x.Endpoint
	}
	return nil
}

type HostEndpoint struct {
	state             protoimpl.MessageState `protogen:"open.v1"`
	Name              string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	ProfileIds        []string               `protobuf:"bytes,2,rep,name=profile_ids,json=profileIds,proto3" json:"profile_ids,omitempty"`
	Tiers             []*TierInfo            `protobuf:"bytes,3,rep,name=tiers,proto3" json:"tiers,omitempty"`
	UntrackedTiers    []*TierInfo            `protobuf:"bytes,6,rep,name=untracked_tiers,json=untrackedTiers,proto3" json:"untracked_tiers,omitempty"`
	PreDnatTiers      []*TierInfo            `protobuf:"bytes,7,rep,name=pre_dnat_tiers,json=preDnatTiers,proto3" json:"pre_dnat_tiers,omitempty"`
	ForwardTiers      []*TierInfo            `protobuf:"bytes,8,rep,name=forward_tiers,json=forwardTiers,proto3" json:"forward_tiers,omitempty"`
	ExpectedIpv4Addrs []string               `protobuf:"bytes,4,rep,name=expected_ipv4_addrs,json=expectedIpv4Addrs,proto3" json:"expected_ipv4_addrs,omitempty"`
	ExpectedIpv6Addrs []string               `protobuf:"bytes,5,rep,name=expected_ipv6_addrs,json=expectedIpv6Addrs,proto3" json:"expected_ipv6_addrs,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *HostEndpoint) Reset() {
	*x = HostEndpoint{}
	mi := &file_felixbackend_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostEndpoint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostEndpoint) ProtoMessage() {}

func (x *HostEndpoint) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostEndpoint.ProtoReflect.Descriptor instead.
func (*HostEndpoint) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{32}
}

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

func (x *HostEndpoint) GetProfileIds() []string {
	if x != nil {
		return x.ProfileIds
	}
	return nil
}

func (x *HostEndpoint) GetTiers() []*TierInfo {
	if x != nil {
		return x.Tiers
	}
	return nil
}

func (x *HostEndpoint) GetUntrackedTiers() []*TierInfo {
	if x != nil {
		return x.UntrackedTiers
	}
	return nil
}

func (x *HostEndpoint) GetPreDnatTiers() []*TierInfo {
	if x != nil {
		return x.PreDnatTiers
	}
	return nil
}

func (x *HostEndpoint) GetForwardTiers() []*TierInfo {
	if x != nil {
		return x.ForwardTiers
	}
	return nil
}

func (x *HostEndpoint) GetExpectedIpv4Addrs() []string {
	if x != nil {
		return x.ExpectedIpv4Addrs
	}
	return nil
}

func (x *HostEndpoint) GetExpectedIpv6Addrs() []string {
	if x != nil {
		return x.ExpectedIpv6Addrs
	}
	return nil
}

type HostEndpointRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *HostEndpointID        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostEndpointRemove) Reset() {
	*x = HostEndpointRemove{}
	mi := &file_felixbackend_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostEndpointRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostEndpointRemove) ProtoMessage() {}

func (x *HostEndpointRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostEndpointRemove.ProtoReflect.Descriptor instead.
func (*HostEndpointRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{33}
}

func (x *HostEndpointRemove) GetId() *HostEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

type TierInfo struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Name            string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	IngressPolicies []string               `protobuf:"bytes,2,rep,name=ingress_policies,json=ingressPolicies,proto3" json:"ingress_policies,omitempty"`
	EgressPolicies  []string               `protobuf:"bytes,3,rep,name=egress_policies,json=egressPolicies,proto3" json:"egress_policies,omitempty"`
	DefaultAction   string                 `protobuf:"bytes,4,opt,name=default_action,json=defaultAction,proto3" json:"default_action,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *TierInfo) Reset() {
	*x = TierInfo{}
	mi := &file_felixbackend_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TierInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TierInfo) ProtoMessage() {}

func (x *TierInfo) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TierInfo.ProtoReflect.Descriptor instead.
func (*TierInfo) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{34}
}

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

func (x *TierInfo) GetIngressPolicies() []string {
	if x != nil {
		return x.IngressPolicies
	}
	return nil
}

func (x *TierInfo) GetEgressPolicies() []string {
	if x != nil {
		return x.EgressPolicies
	}
	return nil
}

func (x *TierInfo) GetDefaultAction() string {
	if x != nil {
		return x.DefaultAction
	}
	return ""
}

type NatInfo struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ExtIp         string                 `protobuf:"bytes,1,opt,name=ext_ip,json=extIp,proto3" json:"ext_ip,omitempty"`
	IntIp         string                 `protobuf:"bytes,2,opt,name=int_ip,json=intIp,proto3" json:"int_ip,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NatInfo) Reset() {
	*x = NatInfo{}
	mi := &file_felixbackend_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NatInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NatInfo) ProtoMessage() {}

func (x *NatInfo) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NatInfo.ProtoReflect.Descriptor instead.
func (*NatInfo) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{35}
}

func (x *NatInfo) GetExtIp() string {
	if x != nil {
		return x.ExtIp
	}
	return ""
}

func (x *NatInfo) GetIntIp() string {
	if x != nil {
		return x.IntIp
	}
	return ""
}

type ProcessStatusUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	IsoTimestamp  string                 `protobuf:"bytes,1,opt,name=iso_timestamp,json=isoTimestamp,proto3" json:"iso_timestamp,omitempty"`
	Uptime        float64                `protobuf:"fixed64,2,opt,name=uptime,proto3" json:"uptime,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProcessStatusUpdate) Reset() {
	*x = ProcessStatusUpdate{}
	mi := &file_felixbackend_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProcessStatusUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProcessStatusUpdate) ProtoMessage() {}

func (x *ProcessStatusUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[36]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProcessStatusUpdate.ProtoReflect.Descriptor instead.
func (*ProcessStatusUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{36}
}

func (x *ProcessStatusUpdate) GetIsoTimestamp() string {
	if x != nil {
		return x.IsoTimestamp
	}
	return ""
}

func (x *ProcessStatusUpdate) GetUptime() float64 {
	if x != nil {
		return x.Uptime
	}
	return 0
}

type HostEndpointStatusUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *HostEndpointID        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status        *EndpointStatus        `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostEndpointStatusUpdate) Reset() {
	*x = HostEndpointStatusUpdate{}
	mi := &file_felixbackend_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostEndpointStatusUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostEndpointStatusUpdate) ProtoMessage() {}

func (x *HostEndpointStatusUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostEndpointStatusUpdate.ProtoReflect.Descriptor instead.
func (*HostEndpointStatusUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{37}
}

func (x *HostEndpointStatusUpdate) GetId() *HostEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *HostEndpointStatusUpdate) GetStatus() *EndpointStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

type EndpointStatus struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Status        string                 `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EndpointStatus) Reset() {
	*x = EndpointStatus{}
	mi := &file_felixbackend_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EndpointStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EndpointStatus) ProtoMessage() {}

func (x *EndpointStatus) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EndpointStatus.ProtoReflect.Descriptor instead.
func (*EndpointStatus) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{38}
}

func (x *EndpointStatus) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

type HostEndpointStatusRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *HostEndpointID        `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostEndpointStatusRemove) Reset() {
	*x = HostEndpointStatusRemove{}
	mi := &file_felixbackend_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostEndpointStatusRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostEndpointStatusRemove) ProtoMessage() {}

func (x *HostEndpointStatusRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostEndpointStatusRemove.ProtoReflect.Descriptor instead.
func (*HostEndpointStatusRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{39}
}

func (x *HostEndpointStatusRemove) GetId() *HostEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

type WorkloadEndpointStatusUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *WorkloadEndpointID    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Status        *EndpointStatus        `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
	Endpoint      *WorkloadEndpoint      `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkloadEndpointStatusUpdate) Reset() {
	*x = WorkloadEndpointStatusUpdate{}
	mi := &file_felixbackend_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkloadEndpointStatusUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkloadEndpointStatusUpdate) ProtoMessage() {}

func (x *WorkloadEndpointStatusUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WorkloadEndpointStatusUpdate.ProtoReflect.Descriptor instead.
func (*WorkloadEndpointStatusUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{40}
}

func (x *WorkloadEndpointStatusUpdate) GetId() *WorkloadEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *WorkloadEndpointStatusUpdate) GetStatus() *EndpointStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *WorkloadEndpointStatusUpdate) GetEndpoint() *WorkloadEndpoint {
	if x != nil {
		return x.Endpoint
	}
	return nil
}

type WorkloadEndpointStatusRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *WorkloadEndpointID    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkloadEndpointStatusRemove) Reset() {
	*x = WorkloadEndpointStatusRemove{}
	mi := &file_felixbackend_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkloadEndpointStatusRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkloadEndpointStatusRemove) ProtoMessage() {}

func (x *WorkloadEndpointStatusRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WorkloadEndpointStatusRemove.ProtoReflect.Descriptor instead.
func (*WorkloadEndpointStatusRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{41}
}

func (x *WorkloadEndpointStatusRemove) GetId() *WorkloadEndpointID {
	if x != nil {
		return x.Id
	}
	return nil
}

type WireguardStatusUpdate struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Wireguard public-key set on the interface.
	PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
	// The IP version of this update
	IpVersion     IPVersion `protobuf:"varint,2,opt,name=ip_version,json=ipVersion,proto3,enum=felix.IPVersion" json:"ip_version,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WireguardStatusUpdate) Reset() {
	*x = WireguardStatusUpdate{}
	mi := &file_felixbackend_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WireguardStatusUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WireguardStatusUpdate) ProtoMessage() {}

func (x *WireguardStatusUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WireguardStatusUpdate.ProtoReflect.Descriptor instead.
func (*WireguardStatusUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{42}
}

func (x *WireguardStatusUpdate) GetPublicKey() string {
	if x != nil {
		return x.PublicKey
	}
	return ""
}

func (x *WireguardStatusUpdate) GetIpVersion() IPVersion {
	if x != nil {
		return x.IpVersion
	}
	return IPVersion_ANY
}

type DataplaneInSync struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DataplaneInSync) Reset() {
	*x = DataplaneInSync{}
	mi := &file_felixbackend_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DataplaneInSync) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataplaneInSync) ProtoMessage() {}

func (x *DataplaneInSync) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataplaneInSync.ProtoReflect.Descriptor instead.
func (*DataplaneInSync) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{43}
}

type HostMetadataV4V6Update struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hostname      string                 `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Ipv4Addr      string                 `protobuf:"bytes,2,opt,name=ipv4_addr,json=ipv4Addr,proto3" json:"ipv4_addr,omitempty"`
	Ipv6Addr      string                 `protobuf:"bytes,3,opt,name=ipv6_addr,json=ipv6Addr,proto3" json:"ipv6_addr,omitempty"`
	Asnumber      string                 `protobuf:"bytes,4,opt,name=asnumber,proto3" json:"asnumber,omitempty"`
	Labels        map[string]string      `protobuf:"bytes,5,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostMetadataV4V6Update) Reset() {
	*x = HostMetadataV4V6Update{}
	mi := &file_felixbackend_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostMetadataV4V6Update) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostMetadataV4V6Update) ProtoMessage() {}

func (x *HostMetadataV4V6Update) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostMetadataV4V6Update.ProtoReflect.Descriptor instead.
func (*HostMetadataV4V6Update) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{44}
}

func (x *HostMetadataV4V6Update) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *HostMetadataV4V6Update) GetIpv4Addr() string {
	if x != nil {
		return x.Ipv4Addr
	}
	return ""
}

func (x *HostMetadataV4V6Update) GetIpv6Addr() string {
	if x != nil {
		return x.Ipv6Addr
	}
	return ""
}

func (x *HostMetadataV4V6Update) GetAsnumber() string {
	if x != nil {
		return x.Asnumber
	}
	return ""
}

func (x *HostMetadataV4V6Update) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type HostMetadataV4V6Remove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hostname      string                 `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Ipv4Addr      string                 `protobuf:"bytes,2,opt,name=ipv4_addr,json=ipv4Addr,proto3" json:"ipv4_addr,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostMetadataV4V6Remove) Reset() {
	*x = HostMetadataV4V6Remove{}
	mi := &file_felixbackend_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostMetadataV4V6Remove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostMetadataV4V6Remove) ProtoMessage() {}

func (x *HostMetadataV4V6Remove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostMetadataV4V6Remove.ProtoReflect.Descriptor instead.
func (*HostMetadataV4V6Remove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{45}
}

func (x *HostMetadataV4V6Remove) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *HostMetadataV4V6Remove) GetIpv4Addr() string {
	if x != nil {
		return x.Ipv4Addr
	}
	return ""
}

type HostMetadataUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hostname      string                 `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Ipv4Addr      string                 `protobuf:"bytes,2,opt,name=ipv4_addr,json=ipv4Addr,proto3" json:"ipv4_addr,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostMetadataUpdate) Reset() {
	*x = HostMetadataUpdate{}
	mi := &file_felixbackend_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostMetadataUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostMetadataUpdate) ProtoMessage() {}

func (x *HostMetadataUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostMetadataUpdate.ProtoReflect.Descriptor instead.
func (*HostMetadataUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{46}
}

func (x *HostMetadataUpdate) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *HostMetadataUpdate) GetIpv4Addr() string {
	if x != nil {
		return x.Ipv4Addr
	}
	return ""
}

type HostMetadataRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hostname      string                 `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Ipv4Addr      string                 `protobuf:"bytes,2,opt,name=ipv4_addr,json=ipv4Addr,proto3" json:"ipv4_addr,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostMetadataRemove) Reset() {
	*x = HostMetadataRemove{}
	mi := &file_felixbackend_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostMetadataRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostMetadataRemove) ProtoMessage() {}

func (x *HostMetadataRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostMetadataRemove.ProtoReflect.Descriptor instead.
func (*HostMetadataRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{47}
}

func (x *HostMetadataRemove) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *HostMetadataRemove) GetIpv4Addr() string {
	if x != nil {
		return x.Ipv4Addr
	}
	return ""
}

type HostMetadataV6Update struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hostname      string                 `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Ipv6Addr      string                 `protobuf:"bytes,2,opt,name=ipv6_addr,json=ipv6Addr,proto3" json:"ipv6_addr,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostMetadataV6Update) Reset() {
	*x = HostMetadataV6Update{}
	mi := &file_felixbackend_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostMetadataV6Update) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostMetadataV6Update) ProtoMessage() {}

func (x *HostMetadataV6Update) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostMetadataV6Update.ProtoReflect.Descriptor instead.
func (*HostMetadataV6Update) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{48}
}

func (x *HostMetadataV6Update) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *HostMetadataV6Update) GetIpv6Addr() string {
	if x != nil {
		return x.Ipv6Addr
	}
	return ""
}

type HostMetadataV6Remove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Hostname      string                 `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Ipv6Addr      string                 `protobuf:"bytes,2,opt,name=ipv6_addr,json=ipv6Addr,proto3" json:"ipv6_addr,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HostMetadataV6Remove) Reset() {
	*x = HostMetadataV6Remove{}
	mi := &file_felixbackend_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HostMetadataV6Remove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HostMetadataV6Remove) ProtoMessage() {}

func (x *HostMetadataV6Remove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HostMetadataV6Remove.ProtoReflect.Descriptor instead.
func (*HostMetadataV6Remove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{49}
}

func (x *HostMetadataV6Remove) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *HostMetadataV6Remove) GetIpv6Addr() string {
	if x != nil {
		return x.Ipv6Addr
	}
	return ""
}

type IPAMPoolUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Pool          *IPAMPool              `protobuf:"bytes,2,opt,name=pool,proto3" json:"pool,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPAMPoolUpdate) Reset() {
	*x = IPAMPoolUpdate{}
	mi := &file_felixbackend_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IPAMPoolUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IPAMPoolUpdate) ProtoMessage() {}

func (x *IPAMPoolUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPAMPoolUpdate.ProtoReflect.Descriptor instead.
func (*IPAMPoolUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{50}
}

func (x *IPAMPoolUpdate) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *IPAMPoolUpdate) GetPool() *IPAMPool {
	if x != nil {
		return x.Pool
	}
	return nil
}

type IPAMPoolRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPAMPoolRemove) Reset() {
	*x = IPAMPoolRemove{}
	mi := &file_felixbackend_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IPAMPoolRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IPAMPoolRemove) ProtoMessage() {}

func (x *IPAMPoolRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPAMPoolRemove.ProtoReflect.Descriptor instead.
func (*IPAMPoolRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{51}
}

func (x *IPAMPoolRemove) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

type IPAMPool struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Cidr          string                 `protobuf:"bytes,1,opt,name=cidr,proto3" json:"cidr,omitempty"`
	Masquerade    bool                   `protobuf:"varint,2,opt,name=masquerade,proto3" json:"masquerade,omitempty"`
	IpipMode      string                 `protobuf:"bytes,3,opt,name=ipip_mode,json=ipipMode,proto3" json:"ipip_mode,omitempty"`
	VxlanMode     string                 `protobuf:"bytes,4,opt,name=vxlan_mode,json=vxlanMode,proto3" json:"vxlan_mode,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *IPAMPool) Reset() {
	*x = IPAMPool{}
	mi := &file_felixbackend_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *IPAMPool) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*IPAMPool) ProtoMessage() {}

func (x *IPAMPool) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use IPAMPool.ProtoReflect.Descriptor instead.
func (*IPAMPool) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{52}
}

func (x *IPAMPool) GetCidr() string {
	if x != nil {
		return x.Cidr
	}
	return ""
}

func (x *IPAMPool) GetMasquerade() bool {
	if x != nil {
		return x.Masquerade
	}
	return false
}

func (x *IPAMPool) GetIpipMode() string {
	if x != nil {
		return x.IpipMode
	}
	return ""
}

func (x *IPAMPool) GetVxlanMode() string {
	if x != nil {
		return x.VxlanMode
	}
	return ""
}

type Encapsulation struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	IpipEnabled    bool                   `protobuf:"varint,1,opt,name=ipip_enabled,json=ipipEnabled,proto3" json:"ipip_enabled,omitempty"`
	VxlanEnabled   bool                   `protobuf:"varint,2,opt,name=vxlan_enabled,json=vxlanEnabled,proto3" json:"vxlan_enabled,omitempty"`
	VxlanEnabledV6 bool                   `protobuf:"varint,3,opt,name=vxlan_enabled_v6,json=vxlanEnabledV6,proto3" json:"vxlan_enabled_v6,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *Encapsulation) Reset() {
	*x = Encapsulation{}
	mi := &file_felixbackend_proto_msgTypes[53]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Encapsulation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Encapsulation) ProtoMessage() {}

func (x *Encapsulation) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[53]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Encapsulation.ProtoReflect.Descriptor instead.
func (*Encapsulation) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{53}
}

func (x *Encapsulation) GetIpipEnabled() bool {
	if x != nil {
		return x.IpipEnabled
	}
	return false
}

func (x *Encapsulation) GetVxlanEnabled() bool {
	if x != nil {
		return x.VxlanEnabled
	}
	return false
}

func (x *Encapsulation) GetVxlanEnabledV6() bool {
	if x != nil {
		return x.VxlanEnabledV6
	}
	return false
}

type ServiceAccountUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *ServiceAccountID      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Labels        map[string]string      `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceAccountUpdate) Reset() {
	*x = ServiceAccountUpdate{}
	mi := &file_felixbackend_proto_msgTypes[54]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceAccountUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceAccountUpdate) ProtoMessage() {}

func (x *ServiceAccountUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[54]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceAccountUpdate.ProtoReflect.Descriptor instead.
func (*ServiceAccountUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{54}
}

func (x *ServiceAccountUpdate) GetId() *ServiceAccountID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *ServiceAccountUpdate) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type ServiceAccountRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *ServiceAccountID      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceAccountRemove) Reset() {
	*x = ServiceAccountRemove{}
	mi := &file_felixbackend_proto_msgTypes[55]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceAccountRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceAccountRemove) ProtoMessage() {}

func (x *ServiceAccountRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[55]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceAccountRemove.ProtoReflect.Descriptor instead.
func (*ServiceAccountRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{55}
}

func (x *ServiceAccountRemove) GetId() *ServiceAccountID {
	if x != nil {
		return x.Id
	}
	return nil
}

type ServiceAccountID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Namespace     string                 `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Name          string                 `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceAccountID) Reset() {
	*x = ServiceAccountID{}
	mi := &file_felixbackend_proto_msgTypes[56]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceAccountID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceAccountID) ProtoMessage() {}

func (x *ServiceAccountID) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[56]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceAccountID.ProtoReflect.Descriptor instead.
func (*ServiceAccountID) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{56}
}

func (x *ServiceAccountID) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

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

type NamespaceUpdate struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *NamespaceID           `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Labels        map[string]string      `protobuf:"bytes,2,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NamespaceUpdate) Reset() {
	*x = NamespaceUpdate{}
	mi := &file_felixbackend_proto_msgTypes[57]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NamespaceUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NamespaceUpdate) ProtoMessage() {}

func (x *NamespaceUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[57]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NamespaceUpdate.ProtoReflect.Descriptor instead.
func (*NamespaceUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{57}
}

func (x *NamespaceUpdate) GetId() *NamespaceID {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *NamespaceUpdate) GetLabels() map[string]string {
	if x != nil {
		return x.Labels
	}
	return nil
}

type NamespaceRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            *NamespaceID           `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NamespaceRemove) Reset() {
	*x = NamespaceRemove{}
	mi := &file_felixbackend_proto_msgTypes[58]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NamespaceRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NamespaceRemove) ProtoMessage() {}

func (x *NamespaceRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[58]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NamespaceRemove.ProtoReflect.Descriptor instead.
func (*NamespaceRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{58}
}

func (x *NamespaceRemove) GetId() *NamespaceID {
	if x != nil {
		return x.Id
	}
	return nil
}

type NamespaceID struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NamespaceID) Reset() {
	*x = NamespaceID{}
	mi := &file_felixbackend_proto_msgTypes[59]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NamespaceID) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NamespaceID) ProtoMessage() {}

func (x *NamespaceID) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[59]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NamespaceID.ProtoReflect.Descriptor instead.
func (*NamespaceID) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{59}
}

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

type TunnelType struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Ipip          bool                   `protobuf:"varint,1,opt,name=ipip,proto3" json:"ipip,omitempty"`
	Vxlan         bool                   `protobuf:"varint,2,opt,name=vxlan,proto3" json:"vxlan,omitempty"`
	Wireguard     bool                   `protobuf:"varint,3,opt,name=wireguard,proto3" json:"wireguard,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *TunnelType) Reset() {
	*x = TunnelType{}
	mi := &file_felixbackend_proto_msgTypes[60]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *TunnelType) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TunnelType) ProtoMessage() {}

func (x *TunnelType) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[60]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TunnelType.ProtoReflect.Descriptor instead.
func (*TunnelType) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{60}
}

func (x *TunnelType) GetIpip() bool {
	if x != nil {
		return x.Ipip
	}
	return false
}

func (x *TunnelType) GetVxlan() bool {
	if x != nil {
		return x.Vxlan
	}
	return false
}

func (x *TunnelType) GetWireguard() bool {
	if x != nil {
		return x.Wireguard
	}
	return false
}

type RouteUpdate struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types is a bitmap field indicating which route types apply to this route.
	Types      RouteType  `protobuf:"varint,12,opt,name=types,proto3,enum=felix.RouteType" json:"types,omitempty"`
	IpPoolType IPPoolType `protobuf:"varint,2,opt,name=ip_pool_type,json=ipPoolType,proto3,enum=felix.IPPoolType" json:"ip_pool_type,omitempty"`
	Dst        string     `protobuf:"bytes,3,opt,name=dst,proto3" json:"dst,omitempty"`
	// The name of the node holding this destination, if this route targets a calico node.
	DstNodeName string `protobuf:"bytes,4,opt,name=dst_node_name,json=dstNodeName,proto3" json:"dst_node_name,omitempty"`
	// IP of the node holding this destination.
	DstNodeIp     string      `protobuf:"bytes,5,opt,name=dst_node_ip,json=dstNodeIp,proto3" json:"dst_node_ip,omitempty"`
	SameSubnet    bool        `protobuf:"varint,7,opt,name=same_subnet,json=sameSubnet,proto3" json:"same_subnet,omitempty"`
	NatOutgoing   bool        `protobuf:"varint,8,opt,name=nat_outgoing,json=natOutgoing,proto3" json:"nat_outgoing,omitempty"`
	LocalWorkload bool        `protobuf:"varint,9,opt,name=local_workload,json=localWorkload,proto3" json:"local_workload,omitempty"`
	TunnelType    *TunnelType `protobuf:"bytes,10,opt,name=tunnel_type,json=tunnelType,proto3" json:"tunnel_type,omitempty"`
	Borrowed      bool        `protobuf:"varint,11,opt,name=borrowed,proto3" json:"borrowed,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RouteUpdate) Reset() {
	*x = RouteUpdate{}
	mi := &file_felixbackend_proto_msgTypes[61]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RouteUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RouteUpdate) ProtoMessage() {}

func (x *RouteUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[61]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RouteUpdate.ProtoReflect.Descriptor instead.
func (*RouteUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{61}
}

func (x *RouteUpdate) GetTypes() RouteType {
	if x != nil {
		return x.Types
	}
	return RouteType_CIDR_INFO
}

func (x *RouteUpdate) GetIpPoolType() IPPoolType {
	if x != nil {
		return x.IpPoolType
	}
	return IPPoolType_NONE
}

func (x *RouteUpdate) GetDst() string {
	if x != nil {
		return x.Dst
	}
	return ""
}

func (x *RouteUpdate) GetDstNodeName() string {
	if x != nil {
		return x.DstNodeName
	}
	return ""
}

func (x *RouteUpdate) GetDstNodeIp() string {
	if x != nil {
		return x.DstNodeIp
	}
	return ""
}

func (x *RouteUpdate) GetSameSubnet() bool {
	if x != nil {
		return x.SameSubnet
	}
	return false
}

func (x *RouteUpdate) GetNatOutgoing() bool {
	if x != nil {
		return x.NatOutgoing
	}
	return false
}

func (x *RouteUpdate) GetLocalWorkload() bool {
	if x != nil {
		return x.LocalWorkload
	}
	return false
}

func (x *RouteUpdate) GetTunnelType() *TunnelType {
	if x != nil {
		return x.TunnelType
	}
	return nil
}

func (x *RouteUpdate) GetBorrowed() bool {
	if x != nil {
		return x.Borrowed
	}
	return false
}

type RouteRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Dst           string                 `protobuf:"bytes,2,opt,name=dst,proto3" json:"dst,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RouteRemove) Reset() {
	*x = RouteRemove{}
	mi := &file_felixbackend_proto_msgTypes[62]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RouteRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RouteRemove) ProtoMessage() {}

func (x *RouteRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[62]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RouteRemove.ProtoReflect.Descriptor instead.
func (*RouteRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{62}
}

func (x *RouteRemove) GetDst() string {
	if x != nil {
		return x.Dst
	}
	return ""
}

type VXLANTunnelEndpointUpdate struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Node             string                 `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
	Mac              string                 `protobuf:"bytes,2,opt,name=mac,proto3" json:"mac,omitempty"`
	Ipv4Addr         string                 `protobuf:"bytes,3,opt,name=ipv4_addr,json=ipv4Addr,proto3" json:"ipv4_addr,omitempty"`
	ParentDeviceIp   string                 `protobuf:"bytes,4,opt,name=parent_device_ip,json=parentDeviceIp,proto3" json:"parent_device_ip,omitempty"`
	MacV6            string                 `protobuf:"bytes,5,opt,name=mac_v6,json=macV6,proto3" json:"mac_v6,omitempty"`
	Ipv6Addr         string                 `protobuf:"bytes,6,opt,name=ipv6_addr,json=ipv6Addr,proto3" json:"ipv6_addr,omitempty"`
	ParentDeviceIpv6 string                 `protobuf:"bytes,7,opt,name=parent_device_ipv6,json=parentDeviceIpv6,proto3" json:"parent_device_ipv6,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *VXLANTunnelEndpointUpdate) Reset() {
	*x = VXLANTunnelEndpointUpdate{}
	mi := &file_felixbackend_proto_msgTypes[63]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *VXLANTunnelEndpointUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VXLANTunnelEndpointUpdate) ProtoMessage() {}

func (x *VXLANTunnelEndpointUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[63]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use VXLANTunnelEndpointUpdate.ProtoReflect.Descriptor instead.
func (*VXLANTunnelEndpointUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{63}
}

func (x *VXLANTunnelEndpointUpdate) GetNode() string {
	if x != nil {
		return x.Node
	}
	return ""
}

func (x *VXLANTunnelEndpointUpdate) GetMac() string {
	if x != nil {
		return x.Mac
	}
	return ""
}

func (x *VXLANTunnelEndpointUpdate) GetIpv4Addr() string {
	if x != nil {
		return x.Ipv4Addr
	}
	return ""
}

func (x *VXLANTunnelEndpointUpdate) GetParentDeviceIp() string {
	if x != nil {
		return x.ParentDeviceIp
	}
	return ""
}

func (x *VXLANTunnelEndpointUpdate) GetMacV6() string {
	if x != nil {
		return x.MacV6
	}
	return ""
}

func (x *VXLANTunnelEndpointUpdate) GetIpv6Addr() string {
	if x != nil {
		return x.Ipv6Addr
	}
	return ""
}

func (x *VXLANTunnelEndpointUpdate) GetParentDeviceIpv6() string {
	if x != nil {
		return x.ParentDeviceIpv6
	}
	return ""
}

type VXLANTunnelEndpointRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Node          string                 `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *VXLANTunnelEndpointRemove) Reset() {
	*x = VXLANTunnelEndpointRemove{}
	mi := &file_felixbackend_proto_msgTypes[64]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *VXLANTunnelEndpointRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VXLANTunnelEndpointRemove) ProtoMessage() {}

func (x *VXLANTunnelEndpointRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[64]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use VXLANTunnelEndpointRemove.ProtoReflect.Descriptor instead.
func (*VXLANTunnelEndpointRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{64}
}

func (x *VXLANTunnelEndpointRemove) GetNode() string {
	if x != nil {
		return x.Node
	}
	return ""
}

type ReportResult struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Whether the data was reported successfully.
	Successful    bool `protobuf:"varint,1,opt,name=successful,proto3" json:"successful,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ReportResult) Reset() {
	*x = ReportResult{}
	mi := &file_felixbackend_proto_msgTypes[65]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ReportResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReportResult) ProtoMessage() {}

func (x *ReportResult) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[65]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReportResult.ProtoReflect.Descriptor instead.
func (*ReportResult) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{65}
}

func (x *ReportResult) GetSuccessful() bool {
	if x != nil {
		return x.Successful
	}
	return false
}

// DataplaneStats reports statistics about a flow from the dataplane.
type DataplaneStats struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Identity of the flow.
	// Right now, just 5-tuple
	SrcIp    string    `protobuf:"bytes,1,opt,name=src_ip,json=srcIp,proto3" json:"src_ip,omitempty"`
	DstIp    string    `protobuf:"bytes,2,opt,name=dst_ip,json=dstIp,proto3" json:"dst_ip,omitempty"`
	SrcPort  int32     `protobuf:"varint,3,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"`
	DstPort  int32     `protobuf:"varint,4,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"`
	Protocol *Protocol `protobuf:"bytes,5,opt,name=protocol,proto3" json:"protocol,omitempty"`
	// Each message can report zero or more statistics about the flow.
	Stats []*Statistic `protobuf:"bytes,6,rep,name=stats,proto3" json:"stats,omitempty"`
	// RuleTrace is the sequence of rules that matched the flow. The last rule
	// allows or denies the flow, each rule prior "passed" to the next tier or
	// to profiles.
	Rules []*RuleTrace `protobuf:"bytes,7,rep,name=rules,proto3" json:"rules,omitempty"`
	// Whether the flow was allowed or denied
	Action        Action `protobuf:"varint,8,opt,name=action,proto3,enum=felix.Action" json:"action,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DataplaneStats) Reset() {
	*x = DataplaneStats{}
	mi := &file_felixbackend_proto_msgTypes[66]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DataplaneStats) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DataplaneStats) ProtoMessage() {}

func (x *DataplaneStats) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[66]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DataplaneStats.ProtoReflect.Descriptor instead.
func (*DataplaneStats) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{66}
}

func (x *DataplaneStats) GetSrcIp() string {
	if x != nil {
		return x.SrcIp
	}
	return ""
}

func (x *DataplaneStats) GetDstIp() string {
	if x != nil {
		return x.DstIp
	}
	return ""
}

func (x *DataplaneStats) GetSrcPort() int32 {
	if x != nil {
		return x.SrcPort
	}
	return 0
}

func (x *DataplaneStats) GetDstPort() int32 {
	if x != nil {
		return x.DstPort
	}
	return 0
}

func (x *DataplaneStats) GetProtocol() *Protocol {
	if x != nil {
		return x.Protocol
	}
	return nil
}

func (x *DataplaneStats) GetStats() []*Statistic {
	if x != nil {
		return x.Stats
	}
	return nil
}

func (x *DataplaneStats) GetRules() []*RuleTrace {
	if x != nil {
		return x.Rules
	}
	return nil
}

func (x *DataplaneStats) GetAction() Action {
	if x != nil {
		return x.Action
	}
	return Action_ALLOWED
}

// Statistic is a piece of summary information for a flow.
type Statistic struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	Direction  Statistic_Direction    `protobuf:"varint,1,opt,name=direction,proto3,enum=felix.Statistic_Direction" json:"direction,omitempty"`
	Relativity Statistic_Relativity   `protobuf:"varint,2,opt,name=relativity,proto3,enum=felix.Statistic_Relativity" json:"relativity,omitempty"`
	Kind       Statistic_Kind         `protobuf:"varint,3,opt,name=kind,proto3,enum=felix.Statistic_Kind" json:"kind,omitempty"`
	// Action further qualifies the kind.  For example, an action of ALLOWED with
	// a kind of PACKETS means this statistic is the number of allowed packets.
	Action Action `protobuf:"varint,4,opt,name=action,proto3,enum=felix.Action" json:"action,omitempty"`
	// The numerical value of the statistic.
	Value         int64 `protobuf:"varint,5,opt,name=value,proto3" json:"value,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Statistic) Reset() {
	*x = Statistic{}
	mi := &file_felixbackend_proto_msgTypes[67]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Statistic) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Statistic) ProtoMessage() {}

func (x *Statistic) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[67]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Statistic.ProtoReflect.Descriptor instead.
func (*Statistic) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{67}
}

func (x *Statistic) GetDirection() Statistic_Direction {
	if x != nil {
		return x.Direction
	}
	return Statistic_IN
}

func (x *Statistic) GetRelativity() Statistic_Relativity {
	if x != nil {
		return x.Relativity
	}
	return Statistic_ABSOLUTE
}

func (x *Statistic) GetKind() Statistic_Kind {
	if x != nil {
		return x.Kind
	}
	return Statistic_PACKETS
}

func (x *Statistic) GetAction() Action {
	if x != nil {
		return x.Action
	}
	return Action_ALLOWED
}

func (x *Statistic) GetValue() int64 {
	if x != nil {
		return x.Value
	}
	return 0
}

// RuleTrace indicates a rule that matched the flow as it was being evaluated.
type RuleTrace struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to Id:
	//
	//	*RuleTrace_Policy
	//	*RuleTrace_Profile
	//	*RuleTrace_None
	Id        isRuleTrace_Id      `protobuf_oneof:"id"`
	Direction RuleTrace_Direction `protobuf:"varint,4,opt,name=direction,proto3,enum=felix.RuleTrace_Direction" json:"direction,omitempty"`
	// The numerical index of the rule that matched.
	RuleNum       int32 `protobuf:"varint,5,opt,name=rule_num,json=ruleNum,proto3" json:"rule_num,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RuleTrace) Reset() {
	*x = RuleTrace{}
	mi := &file_felixbackend_proto_msgTypes[68]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RuleTrace) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RuleTrace) ProtoMessage() {}

func (x *RuleTrace) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[68]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RuleTrace.ProtoReflect.Descriptor instead.
func (*RuleTrace) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{68}
}

func (x *RuleTrace) GetId() isRuleTrace_Id {
	if x != nil {
		return x.Id
	}
	return nil
}

func (x *RuleTrace) GetPolicy() *PolicyID {
	if x != nil {
		if x, ok := x.Id.(*RuleTrace_Policy); ok {
			return x.Policy
		}
	}
	return nil
}

func (x *RuleTrace) GetProfile() *ProfileID {
	if x != nil {
		if x, ok := x.Id.(*RuleTrace_Profile); ok {
			return x.Profile
		}
	}
	return nil
}

func (x *RuleTrace) GetNone() bool {
	if x != nil {
		if x, ok := x.Id.(*RuleTrace_None); ok {
			return x.None
		}
	}
	return false
}

func (x *RuleTrace) GetDirection() RuleTrace_Direction {
	if x != nil {
		return x.Direction
	}
	return RuleTrace_INBOUND
}

func (x *RuleTrace) GetRuleNum() int32 {
	if x != nil {
		return x.RuleNum
	}
	return 0
}

type isRuleTrace_Id interface {
	isRuleTrace_Id()
}

type RuleTrace_Policy struct {
	// The rule is part of a policy identified in this field.
	Policy *PolicyID `protobuf:"bytes,1,opt,name=policy,proto3,oneof"`
}

type RuleTrace_Profile struct {
	// The rule is part of a profile identified in this field.
	Profile *ProfileID `protobuf:"bytes,2,opt,name=profile,proto3,oneof"`
}

type RuleTrace_None struct {
	// The flow was neither allowed nor denied by any policy or profile.  By
	// default this means the flow is denied. If this is set the rule num should
	// be ignored since no rule matched the flow.
	None bool `protobuf:"varint,3,opt,name=none,proto3,oneof"`
}

func (*RuleTrace_Policy) isRuleTrace_Id() {}

func (*RuleTrace_Profile) isRuleTrace_Id() {}

func (*RuleTrace_None) isRuleTrace_Id() {}

type WireguardEndpointUpdate struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the IPv4 wireguard host.
	Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	// The public key for IPv4 wireguard on this endpoint.
	PublicKey string `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
	// The IP address of the IPv4 wireguard interface.
	InterfaceIpv4Addr string `protobuf:"bytes,3,opt,name=interface_ipv4_addr,json=interfaceIpv4Addr,proto3" json:"interface_ipv4_addr,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *WireguardEndpointUpdate) Reset() {
	*x = WireguardEndpointUpdate{}
	mi := &file_felixbackend_proto_msgTypes[69]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WireguardEndpointUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WireguardEndpointUpdate) ProtoMessage() {}

func (x *WireguardEndpointUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[69]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WireguardEndpointUpdate.ProtoReflect.Descriptor instead.
func (*WireguardEndpointUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{69}
}

func (x *WireguardEndpointUpdate) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *WireguardEndpointUpdate) GetPublicKey() string {
	if x != nil {
		return x.PublicKey
	}
	return ""
}

func (x *WireguardEndpointUpdate) GetInterfaceIpv4Addr() string {
	if x != nil {
		return x.InterfaceIpv4Addr
	}
	return ""
}

type WireguardEndpointRemove struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the IPv4 wireguard host.
	Hostname      string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WireguardEndpointRemove) Reset() {
	*x = WireguardEndpointRemove{}
	mi := &file_felixbackend_proto_msgTypes[70]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WireguardEndpointRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WireguardEndpointRemove) ProtoMessage() {}

func (x *WireguardEndpointRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[70]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WireguardEndpointRemove.ProtoReflect.Descriptor instead.
func (*WireguardEndpointRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{70}
}

func (x *WireguardEndpointRemove) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

type WireguardEndpointV6Update struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the IPv6 wireguard host.
	Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	// The public key for IPv6 wireguard on this endpoint.
	PublicKeyV6 string `protobuf:"bytes,2,opt,name=public_key_v6,json=publicKeyV6,proto3" json:"public_key_v6,omitempty"`
	// The IP address of the IPv6 wireguard interface.
	InterfaceIpv6Addr string `protobuf:"bytes,3,opt,name=interface_ipv6_addr,json=interfaceIpv6Addr,proto3" json:"interface_ipv6_addr,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *WireguardEndpointV6Update) Reset() {
	*x = WireguardEndpointV6Update{}
	mi := &file_felixbackend_proto_msgTypes[71]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WireguardEndpointV6Update) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WireguardEndpointV6Update) ProtoMessage() {}

func (x *WireguardEndpointV6Update) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[71]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WireguardEndpointV6Update.ProtoReflect.Descriptor instead.
func (*WireguardEndpointV6Update) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{71}
}

func (x *WireguardEndpointV6Update) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

func (x *WireguardEndpointV6Update) GetPublicKeyV6() string {
	if x != nil {
		return x.PublicKeyV6
	}
	return ""
}

func (x *WireguardEndpointV6Update) GetInterfaceIpv6Addr() string {
	if x != nil {
		return x.InterfaceIpv6Addr
	}
	return ""
}

type WireguardEndpointV6Remove struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The name of the IPv6 wireguard host.
	Hostname      string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WireguardEndpointV6Remove) Reset() {
	*x = WireguardEndpointV6Remove{}
	mi := &file_felixbackend_proto_msgTypes[72]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WireguardEndpointV6Remove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WireguardEndpointV6Remove) ProtoMessage() {}

func (x *WireguardEndpointV6Remove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[72]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WireguardEndpointV6Remove.ProtoReflect.Descriptor instead.
func (*WireguardEndpointV6Remove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{72}
}

func (x *WireguardEndpointV6Remove) GetHostname() string {
	if x != nil {
		return x.Hostname
	}
	return ""
}

type GlobalBGPConfigUpdate struct {
	state                    protoimpl.MessageState `protogen:"open.v1"`
	ServiceClusterCidrs      []string               `protobuf:"bytes,1,rep,name=service_cluster_cidrs,json=serviceClusterCidrs,proto3" json:"service_cluster_cidrs,omitempty"`
	ServiceExternalCidrs     []string               `protobuf:"bytes,2,rep,name=service_external_cidrs,json=serviceExternalCidrs,proto3" json:"service_external_cidrs,omitempty"`
	ServiceLoadbalancerCidrs []string               `protobuf:"bytes,3,rep,name=service_loadbalancer_cidrs,json=serviceLoadbalancerCidrs,proto3" json:"service_loadbalancer_cidrs,omitempty"`
	LocalWorkloadPeeringIpV4 string                 `protobuf:"bytes,4,opt,name=local_workload_peering_ip_v4,json=localWorkloadPeeringIpV4,proto3" json:"local_workload_peering_ip_v4,omitempty"`
	LocalWorkloadPeeringIpV6 string                 `protobuf:"bytes,5,opt,name=local_workload_peering_ip_v6,json=localWorkloadPeeringIpV6,proto3" json:"local_workload_peering_ip_v6,omitempty"`
	unknownFields            protoimpl.UnknownFields
	sizeCache                protoimpl.SizeCache
}

func (x *GlobalBGPConfigUpdate) Reset() {
	*x = GlobalBGPConfigUpdate{}
	mi := &file_felixbackend_proto_msgTypes[73]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *GlobalBGPConfigUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GlobalBGPConfigUpdate) ProtoMessage() {}

func (x *GlobalBGPConfigUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[73]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use GlobalBGPConfigUpdate.ProtoReflect.Descriptor instead.
func (*GlobalBGPConfigUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{73}
}

func (x *GlobalBGPConfigUpdate) GetServiceClusterCidrs() []string {
	if x != nil {
		return x.ServiceClusterCidrs
	}
	return nil
}

func (x *GlobalBGPConfigUpdate) GetServiceExternalCidrs() []string {
	if x != nil {
		return x.ServiceExternalCidrs
	}
	return nil
}

func (x *GlobalBGPConfigUpdate) GetServiceLoadbalancerCidrs() []string {
	if x != nil {
		return x.ServiceLoadbalancerCidrs
	}
	return nil
}

func (x *GlobalBGPConfigUpdate) GetLocalWorkloadPeeringIpV4() string {
	if x != nil {
		return x.LocalWorkloadPeeringIpV4
	}
	return ""
}

func (x *GlobalBGPConfigUpdate) GetLocalWorkloadPeeringIpV6() string {
	if x != nil {
		return x.LocalWorkloadPeeringIpV6
	}
	return ""
}

type ServicePort struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Protocol      string                 `protobuf:"bytes,1,opt,name=Protocol,proto3" json:"Protocol,omitempty"`
	Port          int32                  `protobuf:"varint,2,opt,name=Port,proto3" json:"Port,omitempty"`
	NodePort      int32                  `protobuf:"varint,3,opt,name=NodePort,proto3" json:"NodePort,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServicePort) Reset() {
	*x = ServicePort{}
	mi := &file_felixbackend_proto_msgTypes[74]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServicePort) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServicePort) ProtoMessage() {}

func (x *ServicePort) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[74]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServicePort.ProtoReflect.Descriptor instead.
func (*ServicePort) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{74}
}

func (x *ServicePort) GetProtocol() string {
	if x != nil {
		return x.Protocol
	}
	return ""
}

func (x *ServicePort) GetPort() int32 {
	if x != nil {
		return x.Port
	}
	return 0
}

func (x *ServicePort) GetNodePort() int32 {
	if x != nil {
		return x.NodePort
	}
	return 0
}

type ServiceUpdate struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	Name           string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Namespace      string                 `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	Type           string                 `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
	ClusterIps     []string               `protobuf:"bytes,4,rep,name=cluster_ips,json=clusterIps,proto3" json:"cluster_ips,omitempty"`
	LoadbalancerIp string                 `protobuf:"bytes,5,opt,name=loadbalancer_ip,json=loadbalancerIp,proto3" json:"loadbalancer_ip,omitempty"`
	ExternalIps    []string               `protobuf:"bytes,6,rep,name=external_ips,json=externalIps,proto3" json:"external_ips,omitempty"`
	Ports          []*ServicePort         `protobuf:"bytes,7,rep,name=ports,proto3" json:"ports,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *ServiceUpdate) Reset() {
	*x = ServiceUpdate{}
	mi := &file_felixbackend_proto_msgTypes[75]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceUpdate) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceUpdate) ProtoMessage() {}

func (x *ServiceUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[75]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceUpdate.ProtoReflect.Descriptor instead.
func (*ServiceUpdate) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{75}
}

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

func (x *ServiceUpdate) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

func (x *ServiceUpdate) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ServiceUpdate) GetClusterIps() []string {
	if x != nil {
		return x.ClusterIps
	}
	return nil
}

func (x *ServiceUpdate) GetLoadbalancerIp() string {
	if x != nil {
		return x.LoadbalancerIp
	}
	return ""
}

func (x *ServiceUpdate) GetExternalIps() []string {
	if x != nil {
		return x.ExternalIps
	}
	return nil
}

func (x *ServiceUpdate) GetPorts() []*ServicePort {
	if x != nil {
		return x.Ports
	}
	return nil
}

type ServiceRemove struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Name          string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Namespace     string                 `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ServiceRemove) Reset() {
	*x = ServiceRemove{}
	mi := &file_felixbackend_proto_msgTypes[76]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ServiceRemove) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ServiceRemove) ProtoMessage() {}

func (x *ServiceRemove) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[76]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ServiceRemove.ProtoReflect.Descriptor instead.
func (*ServiceRemove) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{76}
}

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

func (x *ServiceRemove) GetNamespace() string {
	if x != nil {
		return x.Namespace
	}
	return ""
}

type HTTPMatch_PathMatch struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Types that are valid to be assigned to PathMatch:
	//
	//	*HTTPMatch_PathMatch_Exact
	//	*HTTPMatch_PathMatch_Prefix
	PathMatch     isHTTPMatch_PathMatch_PathMatch `protobuf_oneof:"path_match"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *HTTPMatch_PathMatch) Reset() {
	*x = HTTPMatch_PathMatch{}
	mi := &file_felixbackend_proto_msgTypes[80]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *HTTPMatch_PathMatch) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HTTPMatch_PathMatch) ProtoMessage() {}

func (x *HTTPMatch_PathMatch) ProtoReflect() protoreflect.Message {
	mi := &file_felixbackend_proto_msgTypes[80]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use HTTPMatch_PathMatch.ProtoReflect.Descriptor instead.
func (*HTTPMatch_PathMatch) Descriptor() ([]byte, []int) {
	return file_felixbackend_proto_rawDescGZIP(), []int{19, 0}
}

func (x *HTTPMatch_PathMatch) GetPathMatch() isHTTPMatch_PathMatch_PathMatch {
	if x != nil {
		return x.PathMatch
	}
	return nil
}

func (x *HTTPMatch_PathMatch) GetExact() string {
	if x != nil {
		if x, ok := x.PathMatch.(*HTTPMatch_PathMatch_Exact); ok {
			return x.Exact
		}
	}
	return ""
}

func (x *HTTPMatch_PathMatch) GetPrefix() string {
	if x != nil {
		if x, ok := x.PathMatch.(*HTTPMatch_PathMatch_Prefix); ok {
			return x.Prefix
		}
	}
	return ""
}

type isHTTPMatch_PathMatch_PathMatch interface {
	isHTTPMatch_PathMatch_PathMatch()
}

type HTTPMatch_PathMatch_Exact struct {
	Exact string `protobuf:"bytes,1,opt,name=exact,proto3,oneof"`
}

type HTTPMatch_PathMatch_Prefix struct {
	Prefix string `protobuf:"bytes,2,opt,name=prefix,proto3,oneof"`
}

func (*HTTPMatch_PathMatch_Exact) isHTTPMatch_PathMatch_PathMatch() {}

func (*HTTPMatch_PathMatch_Prefix) isHTTPMatch_PathMatch_PathMatch() {}

var File_felixbackend_proto protoreflect.FileDescriptor

const file_felixbackend_proto_rawDesc = "" +
	"\n" +
	"\x12felixbackend.proto\x12\x05felix\"\r\n" +
	"\vSyncRequest\"\xcb\x16\n" +
	"\vToDataplane\x12'\n" +
	"\x0fsequence_number\x18\x0f \x01(\x04R\x0esequenceNumber\x12(\n" +
	"\ain_sync\x18\x01 \x01(\v2\r.felix.InSyncH\x00R\x06inSync\x127\n" +
	"\fipset_update\x18\x02 \x01(\v2\x12.felix.IPSetUpdateH\x00R\vipsetUpdate\x12G\n" +
	"\x12ipset_delta_update\x18\x03 \x01(\v2\x17.felix.IPSetDeltaUpdateH\x00R\x10ipsetDeltaUpdate\x127\n" +
	"\fipset_remove\x18\x04 \x01(\v2\x12.felix.IPSetRemoveH\x00R\vipsetRemove\x12P\n" +
	"\x15active_profile_update\x18\x05 \x01(\v2\x1a.felix.ActiveProfileUpdateH\x00R\x13activeProfileUpdate\x12P\n" +
	"\x15active_profile_remove\x18\x06 \x01(\v2\x1a.felix.ActiveProfileRemoveH\x00R\x13activeProfileRemove\x12M\n" +
	"\x14active_policy_update\x18\a \x01(\v2\x19.felix.ActivePolicyUpdateH\x00R\x12activePolicyUpdate\x12M\n" +
	"\x14active_policy_remove\x18\b \x01(\v2\x19.felix.ActivePolicyRemoveH\x00R\x12activePolicyRemove\x12M\n" +
	"\x14host_endpoint_update\x18\t \x01(\v2\x19.felix.HostEndpointUpdateH\x00R\x12hostEndpointUpdate\x12M\n" +
	"\x14host_endpoint_remove\x18\n" +
	" \x01(\v2\x19.felix.HostEndpointRemoveH\x00R\x12hostEndpointRemove\x12Y\n" +
	"\x18workload_endpoint_update\x18\v \x01(\v2\x1d.felix.WorkloadEndpointUpdateH\x00R\x16workloadEndpointUpdate\x12Y\n" +
	"\x18workload_endpoint_remove\x18\f \x01(\v2\x1d.felix.WorkloadEndpointRemoveH\x00R\x16workloadEndpointRemove\x12:\n" +
	"\rconfig_update\x18\r \x01(\v2\x13.felix.ConfigUpdateH\x00R\fconfigUpdate\x12M\n" +
	"\x14host_metadata_update\x18\x0e \x01(\v2\x19.felix.HostMetadataUpdateH\x00R\x12hostMetadataUpdate\x12M\n" +
	"\x14host_metadata_remove\x18\x12 \x01(\v2\x19.felix.HostMetadataRemoveH\x00R\x12hostMetadataRemove\x12Z\n" +
	"\x19host_metadata_v4v6_update\x18% \x01(\v2\x1d.felix.HostMetadataV4V6UpdateH\x00R\x16hostMetadataV4v6Update\x12Z\n" +
	"\x19host_metadata_v4v6_remove\x18& \x01(\v2\x1d.felix.HostMetadataV4V6RemoveH\x00R\x16hostMetadataV4v6Remove\x12A\n" +
	"\x10ipam_pool_update\x18\x10 \x01(\v2\x15.felix.IPAMPoolUpdateH\x00R\x0eipamPoolUpdate\x12A\n" +
	"\x10ipam_pool_remove\x18\x11 \x01(\v2\x15.felix.IPAMPoolRemoveH\x00R\x0eipamPoolRemove\x12S\n" +
	"\x16service_account_update\x18\x13 \x01(\v2\x1b.felix.ServiceAccountUpdateH\x00R\x14serviceAccountUpdate\x12S\n" +
	"\x16service_account_remove\x18\x14 \x01(\v2\x1b.felix.ServiceAccountRemoveH\x00R\x14serviceAccountRemove\x12C\n" +
	"\x10namespace_update\x18\x15 \x01(\v2\x16.felix.NamespaceUpdateH\x00R\x0fnamespaceUpdate\x12C\n" +
	"\x10namespace_remove\x18\x16 \x01(\v2\x16.felix.NamespaceRemoveH\x00R\x0fnamespaceRemove\x127\n" +
	"\froute_update\x18\x17 \x01(\v2\x12.felix.RouteUpdateH\x00R\vrouteUpdate\x127\n" +
	"\froute_remove\x18\x18 \x01(\v2\x12.felix.RouteRemoveH\x00R\vrouteRemove\x12C\n" +
	"\vvtep_update\x18\x19 \x01(\v2 .felix.VXLANTunnelEndpointUpdateH\x00R\n" +
	"vtepUpdate\x12C\n" +
	"\vvtep_remove\x18\x1a \x01(\v2 .felix.VXLANTunnelEndpointRemoveH\x00R\n" +
	"vtepRemove\x12\\\n" +
	"\x19wireguard_endpoint_update\x18\x1b \x01(\v2\x1e.felix.WireguardEndpointUpdateH\x00R\x17wireguardEndpointUpdate\x12\\\n" +
	"\x19wireguard_endpoint_remove\x18\x1c \x01(\v2\x1e.felix.WireguardEndpointRemoveH\x00R\x17wireguardEndpointRemove\x12W\n" +
	"\x18global_bgp_config_update\x18\x1d \x01(\v2\x1c.felix.GlobalBGPConfigUpdateH\x00R\x15globalBgpConfigUpdate\x12<\n" +
	"\rencapsulation\x18\x1e \x01(\v2\x14.felix.EncapsulationH\x00R\rencapsulation\x12=\n" +
	"\x0eservice_update\x18\x1f \x01(\v2\x14.felix.ServiceUpdateH\x00R\rserviceUpdate\x12=\n" +
	"\x0eservice_remove\x18  \x01(\v2\x14.felix.ServiceRemoveH\x00R\rserviceRemove\x12c\n" +
	"\x1cwireguard_endpoint_v6_update\x18! \x01(\v2 .felix.WireguardEndpointV6UpdateH\x00R\x19wireguardEndpointV6Update\x12c\n" +
	"\x1cwireguard_endpoint_v6_remove\x18\" \x01(\v2 .felix.WireguardEndpointV6RemoveH\x00R\x19wireguardEndpointV6Remove\x12T\n" +
	"\x17host_metadata_v6_update\x18# \x01(\v2\x1b.felix.HostMetadataV6UpdateH\x00R\x14hostMetadataV6Update\x12T\n" +
	"\x17host_metadata_v6_remove\x18$ \x01(\v2\x1b.felix.HostMetadataV6RemoveH\x00R\x14hostMetadataV6RemoveB\t\n" +
	"\apayload\"\xd3\x05\n" +
	"\rFromDataplane\x12'\n" +
	"\x0fsequence_number\x18\b \x01(\x04R\x0esequenceNumber\x12P\n" +
	"\x15process_status_update\x18\x03 \x01(\v2\x1a.felix.ProcessStatusUpdateH\x00R\x13processStatusUpdate\x12`\n" +
	"\x1bhost_endpoint_status_update\x18\x04 \x01(\v2\x1f.felix.HostEndpointStatusUpdateH\x00R\x18hostEndpointStatusUpdate\x12`\n" +
	"\x1bhost_endpoint_status_remove\x18\x05 \x01(\v2\x1f.felix.HostEndpointStatusRemoveH\x00R\x18hostEndpointStatusRemove\x12l\n" +
	"\x1fworkload_endpoint_status_update\x18\x06 \x01(\v2#.felix.WorkloadEndpointStatusUpdateH\x00R\x1cworkloadEndpointStatusUpdate\x12l\n" +
	"\x1fworkload_endpoint_status_remove\x18\a \x01(\v2#.felix.WorkloadEndpointStatusRemoveH\x00R\x1cworkloadEndpointStatusRemove\x12V\n" +
	"\x17wireguard_status_update\x18\t \x01(\v2\x1c.felix.WireguardStatusUpdateH\x00R\x15wireguardStatusUpdate\x12D\n" +
	"\x11dataplane_in_sync\x18\n" +
	" \x01(\v2\x16.felix.DataplaneInSyncH\x00R\x0fdataplaneInSyncB\t\n" +
	"\apayload\"\xd1\x02\n" +
	"\fConfigUpdate\x12\x18\n" +
	"\amessage\x18\x03 \x01(\tR\amessage\x127\n" +
	"\x06config\x18\x01 \x03(\v2\x1f.felix.ConfigUpdate.ConfigEntryR\x06config\x12[\n" +
	"\x14source_to_raw_config\x18\x02 \x03(\v2*.felix.ConfigUpdate.SourceToRawConfigEntryR\x11sourceToRawConfig\x1a9\n" +
	"\vConfigEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1aV\n" +
	"\x16SourceToRawConfigEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\rR\x03key\x12&\n" +
	"\x05value\x18\x02 \x01(\v2\x10.felix.RawConfigR\x05value:\x028\x01\"\x94\x01\n" +
	"\tRawConfig\x12\x16\n" +
	"\x06source\x18\x01 \x01(\tR\x06source\x124\n" +
	"\x06config\x18\x02 \x03(\v2\x1c.felix.RawConfig.ConfigEntryR\x06config\x1a9\n" +
	"\vConfigEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\b\n" +
	"\x06InSync\"\x98\x01\n" +
	"\vIPSetUpdate\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x18\n" +
	"\amembers\x18\x02 \x03(\tR\amembers\x120\n" +
	"\x04type\x18\x03 \x01(\x0e2\x1c.felix.IPSetUpdate.IPSetTypeR\x04type\"-\n" +
	"\tIPSetType\x12\x06\n" +
	"\x02IP\x10\x00\x12\x0f\n" +
	"\vIP_AND_PORT\x10\x01\x12\a\n" +
	"\x03NET\x10\x02\"p\n" +
	"\x10IPSetDeltaUpdate\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12#\n" +
	"\radded_members\x18\x02 \x03(\tR\faddedMembers\x12'\n" +
	"\x0fremoved_members\x18\x03 \x03(\tR\x0eremovedMembers\"\x1d\n" +
	"\vIPSetRemove\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"a\n" +
	"\x13ActiveProfileUpdate\x12 \n" +
	"\x02id\x18\x01 \x01(\v2\x10.felix.ProfileIDR\x02id\x12(\n" +
	"\aprofile\x18\x02 \x01(\v2\x0e.felix.ProfileR\aprofile\"7\n" +
	"\x13ActiveProfileRemove\x12 \n" +
	"\x02id\x18\x01 \x01(\v2\x10.felix.ProfileIDR\x02id\"\x1f\n" +
	"\tProfileID\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\"o\n" +
	"\aProfile\x120\n" +
	"\rinbound_rules\x18\x01 \x03(\v2\v.felix.RuleR\finboundRules\x122\n" +
	"\x0eoutbound_rules\x18\x02 \x03(\v2\v.felix.RuleR\routboundRules\"\\\n" +
	"\x12ActivePolicyUpdate\x12\x1f\n" +
	"\x02id\x18\x01 \x01(\v2\x0f.felix.PolicyIDR\x02id\x12%\n" +
	"\x06policy\x18\x02 \x01(\v2\r.felix.PolicyR\x06policy\"5\n" +
	"\x12ActivePolicyRemove\x12\x1f\n" +
	"\x02id\x18\x01 \x01(\v2\x0f.felix.PolicyIDR\x02id\"2\n" +
	"\bPolicyID\x12\x12\n" +
	"\x04tier\x18\x01 \x01(\tR\x04tier\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\"\xf2\x01\n" +
	"\x06Policy\x12\x1c\n" +
	"\tnamespace\x18\x05 \x01(\tR\tnamespace\x120\n" +
	"\rinbound_rules\x18\x01 \x03(\v2\v.felix.RuleR\finboundRules\x122\n" +
	"\x0eoutbound_rules\x18\x02 \x03(\v2\v.felix.RuleR\routboundRules\x12\x1c\n" +
	"\tuntracked\x18\x03 \x01(\bR\tuntracked\x12\x19\n" +
	"\bpre_dnat\x18\x04 \x01(\bR\apreDnat\x12+\n" +
	"\x11original_selector\x18\x06 \x01(\tR\x10originalSelector\"\xaa\x10\n" +
	"\x04Rule\x12\x16\n" +
	"\x06action\x18\x01 \x01(\tR\x06action\x12/\n" +
	"\n" +
	"ip_version\x18\x02 \x01(\x0e2\x10.felix.IPVersionR\tipVersion\x12+\n" +
	"\bprotocol\x18\x03 \x01(\v2\x0f.felix.ProtocolR\bprotocol\x12\x17\n" +
	"\asrc_net\x18\x04 \x03(\tR\x06srcNet\x12-\n" +
	"\tsrc_ports\x18\x05 \x03(\v2\x10.felix.PortRangeR\bsrcPorts\x127\n" +
	"\x19src_named_port_ip_set_ids\x18\f \x03(\tR\x14srcNamedPortIpSetIds\x12\x17\n" +
	"\adst_net\x18\x06 \x03(\tR\x06dstNet\x12-\n" +
	"\tdst_ports\x18\a \x03(\v2\x10.felix.PortRangeR\bdstPorts\x127\n" +
	"\x19dst_named_port_ip_set_ids\x18\r \x03(\tR\x14dstNamedPortIpSetIds\x12\x1d\n" +
	"\ticmp_type\x18\b \x01(\x05H\x00R\bicmpType\x12>\n" +
	"\x0eicmp_type_code\x18\t \x01(\v2\x16.felix.IcmpTypeAndCodeH\x00R\ficmpTypeCode\x12#\n" +
	"\x0esrc_ip_set_ids\x18\n" +
	" \x03(\tR\vsrcIpSetIds\x12#\n" +
	"\x0edst_ip_set_ids\x18\v \x03(\tR\vdstIpSetIds\x12,\n" +
	"\x13dst_ip_port_set_ids\x18\x0f \x03(\tR\x0fdstIpPortSetIds\x122\n" +
	"\fnot_protocol\x18f \x01(\v2\x0f.felix.ProtocolR\vnotProtocol\x12\x1e\n" +
	"\vnot_src_net\x18g \x03(\tR\tnotSrcNet\x124\n" +
	"\rnot_src_ports\x18h \x03(\v2\x10.felix.PortRangeR\vnotSrcPorts\x12\x1e\n" +
	"\vnot_dst_net\x18i \x03(\tR\tnotDstNet\x124\n" +
	"\rnot_dst_ports\x18j \x03(\v2\x10.felix.PortRangeR\vnotDstPorts\x12$\n" +
	"\rnot_icmp_type\x18k \x01(\x05H\x01R\vnotIcmpType\x12E\n" +
	"\x12not_icmp_type_code\x18l \x01(\v2\x16.felix.IcmpTypeAndCodeH\x01R\x0fnotIcmpTypeCode\x12*\n" +
	"\x12not_src_ip_set_ids\x18m \x03(\tR\x0enotSrcIpSetIds\x12*\n" +
	"\x12not_dst_ip_set_ids\x18n \x03(\tR\x0enotDstIpSetIds\x12>\n" +
	"\x1dnot_src_named_port_ip_set_ids\x18p \x03(\tR\x17notSrcNamedPortIpSetIds\x12>\n" +
	"\x1dnot_dst_named_port_ip_set_ids\x18q \x03(\tR\x17notDstNamedPortIpSetIds\x122\n" +
	"\x15original_src_selector\x18r \x01(\tR\x13originalSrcSelector\x122\n" +
	"\x15original_dst_selector\x18s \x01(\tR\x13originalDstSelector\x12E\n" +
	"\x1foriginal_src_namespace_selector\x18t \x01(\tR\x1coriginalSrcNamespaceSelector\x12E\n" +
	"\x1foriginal_dst_namespace_selector\x18u \x01(\tR\x1coriginalDstNamespaceSelector\x129\n" +
	"\x19original_not_src_selector\x18v \x01(\tR\x16originalNotSrcSelector\x129\n" +
	"\x19original_not_dst_selector\x18w \x01(\tR\x16originalNotDstSelector\x121\n" +
	"\x14original_src_service\x18\x84\x01 \x01(\tR\x12originalSrcService\x12D\n" +
	"\x1eoriginal_src_service_namespace\x18\x85\x01 \x01(\tR\x1boriginalSrcServiceNamespace\x121\n" +
	"\x14original_dst_service\x18\x82\x01 \x01(\tR\x12originalDstService\x12D\n" +
	"\x1eoriginal_dst_service_namespace\x18\x83\x01 \x01(\tR\x1boriginalDstServiceNamespace\x12U\n" +
	"\x19src_service_account_match\x18x \x01(\v2\x1a.felix.ServiceAccountMatchR\x16srcServiceAccountMatch\x12U\n" +
	"\x19dst_service_account_match\x18y \x01(\v2\x1a.felix.ServiceAccountMatchR\x16dstServiceAccountMatch\x12/\n" +
	"\n" +
	"http_match\x18z \x01(\v2\x10.felix.HTTPMatchR\thttpMatch\x12/\n" +
	"\bmetadata\x18{ \x01(\v2\x13.felix.RuleMetadataR\bmetadata\x12\x18\n" +
	"\arule_id\x18\xc9\x01 \x01(\tR\x06ruleIdB\x06\n" +
	"\x04icmpB\n" +
	"\n" +
	"\bnot_icmpJ\x06\b\xc8\x01\x10\xc9\x01R\n" +
	"log_prefix\"G\n" +
	"\x13ServiceAccountMatch\x12\x1a\n" +
	"\bselector\x18\x01 \x01(\tR\bselector\x12\x14\n" +
	"\x05names\x18\x02 \x03(\tR\x05names\"\xa4\x01\n" +
	"\tHTTPMatch\x12\x18\n" +
	"\amethods\x18\x01 \x03(\tR\amethods\x120\n" +
	"\x05paths\x18\x02 \x03(\v2\x1a.felix.HTTPMatch.PathMatchR\x05paths\x1aK\n" +
	"\tPathMatch\x12\x16\n" +
	"\x05exact\x18\x01 \x01(\tH\x00R\x05exact\x12\x18\n" +
	"\x06prefix\x18\x02 \x01(\tH\x00R\x06prefixB\f\n" +
	"\n" +
	"path_match\"\x96\x01\n" +
	"\fRuleMetadata\x12F\n" +
	"\vannotations\x18\x01 \x03(\v2$.felix.RuleMetadata.AnnotationsEntryR\vannotations\x1a>\n" +
	"\x10AnnotationsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"9\n" +
	"\x0fIcmpTypeAndCode\x12\x12\n" +
	"\x04type\x18\x01 \x01(\x05R\x04type\x12\x12\n" +
	"\x04code\x18\x02 \x01(\x05R\x04code\"L\n" +
	"\bProtocol\x12\x18\n" +
	"\x06number\x18\x01 \x01(\x05H\x00R\x06number\x12\x14\n" +
	"\x04name\x18\x02 \x01(\tH\x00R\x04nameB\x10\n" +
	"\x0enumber_or_name\"5\n" +
	"\tPortRange\x12\x14\n" +
	"\x05first\x18\x01 \x01(\x05R\x05first\x12\x12\n" +
	"\x04last\x18\x02 \x01(\x05R\x04last\"\x8f\x01\n" +
	"\x12WorkloadEndpointID\x12'\n" +
	"\x0forchestrator_id\x18\x02 \x01(\tR\x0eorchestratorId\x12\x1f\n" +
	"\vworkload_id\x18\x03 \x01(\tR\n" +
	"workloadId\x12\x1f\n" +
	"\vendpoint_id\x18\x04 \x01(\tR\n" +
	"endpointIdJ\x04\b\x01\x10\x02R\bhostname\"x\n" +
	"\x16WorkloadEndpointUpdate\x12)\n" +
	"\x02id\x18\x01 \x01(\v2\x19.felix.WorkloadEndpointIDR\x02id\x123\n" +
	"\bendpoint\x18\x05 \x01(\v2\x17.felix.WorkloadEndpointR\bendpoint\"\x90\x05\n" +
	"\x10WorkloadEndpoint\x12\x14\n" +
	"\x05state\x18\x01 \x01(\tR\x05state\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n" +
	"\x03mac\x18\x03 \x01(\tR\x03mac\x12\x1f\n" +
	"\vprofile_ids\x18\x04 \x03(\tR\n" +
	"profileIds\x12\x1b\n" +
	"\tipv4_nets\x18\x05 \x03(\tR\bipv4Nets\x12\x1b\n" +
	"\tipv6_nets\x18\x06 \x03(\tR\bipv6Nets\x12%\n" +
	"\x05tiers\x18\a \x03(\v2\x0f.felix.TierInfoR\x05tiers\x12)\n" +
	"\bipv4_nat\x18\b \x03(\v2\x0e.felix.NatInfoR\aipv4Nat\x12)\n" +
	"\bipv6_nat\x18\t \x03(\v2\x0e.felix.NatInfoR\aipv6Nat\x12A\n" +
	"\x1dallow_spoofed_source_prefixes\x18\n" +
	" \x03(\tR\x1aallowSpoofedSourcePrefixes\x12J\n" +
	"\vannotations\x18\v \x03(\v2(.felix.WorkloadEndpoint.AnnotationsEntryR\vannotations\x125\n" +
	"\fqos_controls\x18\f \x01(\v2\x12.felix.QoSControlsR\vqosControls\x129\n" +
	"\x0elocal_bgp_peer\x18\r \x01(\v2\x13.felix.LocalBGPPeerR\flocalBgpPeer\x12'\n" +
	"\x04type\x18\x0e \x01(\x0e2\x13.felix.WorkloadTypeR\x04type\x1a>\n" +
	"\x10AnnotationsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xef\x04\n" +
	"\vQoSControls\x12*\n" +
	"\x10IngressBandwidth\x18\x01 \x01(\x03R\x10IngressBandwidth\x12(\n" +
	"\x0fEgressBandwidth\x18\x02 \x01(\x03R\x0fEgressBandwidth\x12\"\n" +
	"\fIngressBurst\x18\x03 \x01(\x03R\fIngressBurst\x12 \n" +
	"\vEgressBurst\x18\x04 \x01(\x03R\vEgressBurst\x12,\n" +
	"\x11IngressPacketRate\x18\x05 \x01(\x03R\x11IngressPacketRate\x12*\n" +
	"\x10EgressPacketRate\x18\x06 \x01(\x03R\x10EgressPacketRate\x124\n" +
	"\x15IngressMaxConnections\x18\a \x01(\x03R\x15IngressMaxConnections\x122\n" +
	"\x14EgressMaxConnections\x18\b \x01(\x03R\x14EgressMaxConnections\x12(\n" +
	"\x0fIngressPeakrate\x18\t \x01(\x03R\x0fIngressPeakrate\x12&\n" +
	"\x0eEgressPeakrate\x18\n" +
	" \x01(\x03R\x0eEgressPeakrate\x12(\n" +
	"\x0fIngressMinburst\x18\v \x01(\x03R\x0fIngressMinburst\x12&\n" +
	"\x0eEgressMinburst\x18\f \x01(\x03R\x0eEgressMinburst\x12.\n" +
	"\x12IngressPacketBurst\x18\r \x01(\x03R\x12IngressPacketBurst\x12,\n" +
	"\x11EgressPacketBurst\x18\x0e \x01(\x03R\x11EgressPacketBurst\"2\n" +
	"\fLocalBGPPeer\x12\"\n" +
	"\rbgp_peer_name\x18\x01 \x01(\tR\vbgpPeerName\"C\n" +
	"\x16WorkloadEndpointRemove\x12)\n" +
	"\x02id\x18\x01 \x01(\v2\x19.felix.WorkloadEndpointIDR\x02id\"A\n" +
	"\x0eHostEndpointID\x12\x1f\n" +
	"\vendpoint_id\x18\x02 \x01(\tR\n" +
	"endpointIdJ\x04\b\x01\x10\x02R\bhostname\"l\n" +
	"\x12HostEndpointUpdate\x12%\n" +
	"\x02id\x18\x01 \x01(\v2\x15.felix.HostEndpointIDR\x02id\x12/\n" +
	"\bendpoint\x18\x03 \x01(\v2\x13.felix.HostEndpointR\bendpoint\"\xf1\x02\n" +
	"\fHostEndpoint\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1f\n" +
	"\vprofile_ids\x18\x02 \x03(\tR\n" +
	"profileIds\x12%\n" +
	"\x05tiers\x18\x03 \x03(\v2\x0f.felix.TierInfoR\x05tiers\x128\n" +
	"\x0funtracked_tiers\x18\x06 \x03(\v2\x0f.felix.TierInfoR\x0euntrackedTiers\x125\n" +
	"\x0epre_dnat_tiers\x18\a \x03(\v2\x0f.felix.TierInfoR\fpreDnatTiers\x124\n" +
	"\rforward_tiers\x18\b \x03(\v2\x0f.felix.TierInfoR\fforwardTiers\x12.\n" +
	"\x13expected_ipv4_addrs\x18\x04 \x03(\tR\x11expectedIpv4Addrs\x12.\n" +
	"\x13expected_ipv6_addrs\x18\x05 \x03(\tR\x11expectedIpv6Addrs\";\n" +
	"\x12HostEndpointRemove\x12%\n" +
	"\x02id\x18\x01 \x01(\v2\x15.felix.HostEndpointIDR\x02id\"\x99\x01\n" +
	"\bTierInfo\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12)\n" +
	"\x10ingress_policies\x18\x02 \x03(\tR\x0fingressPolicies\x12'\n" +
	"\x0fegress_policies\x18\x03 \x03(\tR\x0eegressPolicies\x12%\n" +
	"\x0edefault_action\x18\x04 \x01(\tR\rdefaultAction\"7\n" +
	"\aNatInfo\x12\x15\n" +
	"\x06ext_ip\x18\x01 \x01(\tR\x05extIp\x12\x15\n" +
	"\x06int_ip\x18\x02 \x01(\tR\x05intIp\"R\n" +
	"\x13ProcessStatusUpdate\x12#\n" +
	"\riso_timestamp\x18\x01 \x01(\tR\fisoTimestamp\x12\x16\n" +
	"\x06uptime\x18\x02 \x01(\x01R\x06uptime\"p\n" +
	"\x18HostEndpointStatusUpdate\x12%\n" +
	"\x02id\x18\x01 \x01(\v2\x15.felix.HostEndpointIDR\x02id\x12-\n" +
	"\x06status\x18\x02 \x01(\v2\x15.felix.EndpointStatusR\x06status\"(\n" +
	"\x0eEndpointStatus\x12\x16\n" +
	"\x06status\x18\x01 \x01(\tR\x06status\"A\n" +
	"\x18HostEndpointStatusRemove\x12%\n" +
	"\x02id\x18\x01 \x01(\v2\x15.felix.HostEndpointIDR\x02id\"\xad\x01\n" +
	"\x1cWorkloadEndpointStatusUpdate\x12)\n" +
	"\x02id\x18\x01 \x01(\v2\x19.felix.WorkloadEndpointIDR\x02id\x12-\n" +
	"\x06status\x18\x02 \x01(\v2\x15.felix.EndpointStatusR\x06status\x123\n" +
	"\bendpoint\x18\x03 \x01(\v2\x17.felix.WorkloadEndpointR\bendpoint\"I\n" +
	"\x1cWorkloadEndpointStatusRemove\x12)\n" +
	"\x02id\x18\x01 \x01(\v2\x19.felix.WorkloadEndpointIDR\x02id\"g\n" +
	"\x15WireguardStatusUpdate\x12\x1d\n" +
	"\n" +
	"public_key\x18\x01 \x01(\tR\tpublicKey\x12/\n" +
	"\n" +
	"ip_version\x18\x02 \x01(\x0e2\x10.felix.IPVersionR\tipVersion\"\x11\n" +
	"\x0fDataplaneInSync\"\x88\x02\n" +
	"\x16HostMetadataV4V6Update\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1b\n" +
	"\tipv4_addr\x18\x02 \x01(\tR\bipv4Addr\x12\x1b\n" +
	"\tipv6_addr\x18\x03 \x01(\tR\bipv6Addr\x12\x1a\n" +
	"\basnumber\x18\x04 \x01(\tR\basnumber\x12A\n" +
	"\x06labels\x18\x05 \x03(\v2).felix.HostMetadataV4V6Update.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"Q\n" +
	"\x16HostMetadataV4V6Remove\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1b\n" +
	"\tipv4_addr\x18\x02 \x01(\tR\bipv4Addr\"M\n" +
	"\x12HostMetadataUpdate\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1b\n" +
	"\tipv4_addr\x18\x02 \x01(\tR\bipv4Addr\"M\n" +
	"\x12HostMetadataRemove\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1b\n" +
	"\tipv4_addr\x18\x02 \x01(\tR\bipv4Addr\"O\n" +
	"\x14HostMetadataV6Update\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1b\n" +
	"\tipv6_addr\x18\x02 \x01(\tR\bipv6Addr\"O\n" +
	"\x14HostMetadataV6Remove\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1b\n" +
	"\tipv6_addr\x18\x02 \x01(\tR\bipv6Addr\"E\n" +
	"\x0eIPAMPoolUpdate\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12#\n" +
	"\x04pool\x18\x02 \x01(\v2\x0f.felix.IPAMPoolR\x04pool\" \n" +
	"\x0eIPAMPoolRemove\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\"z\n" +
	"\bIPAMPool\x12\x12\n" +
	"\x04cidr\x18\x01 \x01(\tR\x04cidr\x12\x1e\n" +
	"\n" +
	"masquerade\x18\x02 \x01(\bR\n" +
	"masquerade\x12\x1b\n" +
	"\tipip_mode\x18\x03 \x01(\tR\bipipMode\x12\x1d\n" +
	"\n" +
	"vxlan_mode\x18\x04 \x01(\tR\tvxlanMode\"\x81\x01\n" +
	"\rEncapsulation\x12!\n" +
	"\fipip_enabled\x18\x01 \x01(\bR\vipipEnabled\x12#\n" +
	"\rvxlan_enabled\x18\x02 \x01(\bR\fvxlanEnabled\x12(\n" +
	"\x10vxlan_enabled_v6\x18\x03 \x01(\bR\x0evxlanEnabledV6\"\xbb\x01\n" +
	"\x14ServiceAccountUpdate\x12'\n" +
	"\x02id\x18\x01 \x01(\v2\x17.felix.ServiceAccountIDR\x02id\x12?\n" +
	"\x06labels\x18\x02 \x03(\v2'.felix.ServiceAccountUpdate.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"?\n" +
	"\x14ServiceAccountRemove\x12'\n" +
	"\x02id\x18\x01 \x01(\v2\x17.felix.ServiceAccountIDR\x02id\"D\n" +
	"\x10ServiceAccountID\x12\x1c\n" +
	"\tnamespace\x18\x01 \x01(\tR\tnamespace\x12\x12\n" +
	"\x04name\x18\x02 \x01(\tR\x04name\"\xac\x01\n" +
	"\x0fNamespaceUpdate\x12\"\n" +
	"\x02id\x18\x01 \x01(\v2\x12.felix.NamespaceIDR\x02id\x12:\n" +
	"\x06labels\x18\x02 \x03(\v2\".felix.NamespaceUpdate.LabelsEntryR\x06labels\x1a9\n" +
	"\vLabelsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"5\n" +
	"\x0fNamespaceRemove\x12\"\n" +
	"\x02id\x18\x01 \x01(\v2\x12.felix.NamespaceIDR\x02id\"!\n" +
	"\vNamespaceID\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\"T\n" +
	"\n" +
	"TunnelType\x12\x12\n" +
	"\x04ipip\x18\x01 \x01(\bR\x04ipip\x12\x14\n" +
	"\x05vxlan\x18\x02 \x01(\bR\x05vxlan\x12\x1c\n" +
	"\twireguard\x18\x03 \x01(\bR\twireguard\"\x87\x03\n" +
	"\vRouteUpdate\x12&\n" +
	"\x05types\x18\f \x01(\x0e2\x10.felix.RouteTypeR\x05types\x123\n" +
	"\fip_pool_type\x18\x02 \x01(\x0e2\x11.felix.IPPoolTypeR\n" +
	"ipPoolType\x12\x10\n" +
	"\x03dst\x18\x03 \x01(\tR\x03dst\x12\"\n" +
	"\rdst_node_name\x18\x04 \x01(\tR\vdstNodeName\x12\x1e\n" +
	"\vdst_node_ip\x18\x05 \x01(\tR\tdstNodeIp\x12\x1f\n" +
	"\vsame_subnet\x18\a \x01(\bR\n" +
	"sameSubnet\x12!\n" +
	"\fnat_outgoing\x18\b \x01(\bR\vnatOutgoing\x12%\n" +
	"\x0elocal_workload\x18\t \x01(\bR\rlocalWorkload\x122\n" +
	"\vtunnel_type\x18\n" +
	" \x01(\v2\x11.felix.TunnelTypeR\n" +
	"tunnelType\x12\x1a\n" +
	"\bborrowed\x18\v \x01(\bR\bborrowedJ\x04\b\x01\x10\x02R\x04type\"\x1f\n" +
	"\vRouteRemove\x12\x10\n" +
	"\x03dst\x18\x02 \x01(\tR\x03dst\"\xea\x01\n" +
	"\x19VXLANTunnelEndpointUpdate\x12\x12\n" +
	"\x04node\x18\x01 \x01(\tR\x04node\x12\x10\n" +
	"\x03mac\x18\x02 \x01(\tR\x03mac\x12\x1b\n" +
	"\tipv4_addr\x18\x03 \x01(\tR\bipv4Addr\x12(\n" +
	"\x10parent_device_ip\x18\x04 \x01(\tR\x0eparentDeviceIp\x12\x15\n" +
	"\x06mac_v6\x18\x05 \x01(\tR\x05macV6\x12\x1b\n" +
	"\tipv6_addr\x18\x06 \x01(\tR\bipv6Addr\x12,\n" +
	"\x12parent_device_ipv6\x18\a \x01(\tR\x10parentDeviceIpv6\"/\n" +
	"\x19VXLANTunnelEndpointRemove\x12\x12\n" +
	"\x04node\x18\x01 \x01(\tR\x04node\".\n" +
	"\fReportResult\x12\x1e\n" +
	"\n" +
	"successful\x18\x01 \x01(\bR\n" +
	"successful\"\x98\x02\n" +
	"\x0eDataplaneStats\x12\x15\n" +
	"\x06src_ip\x18\x01 \x01(\tR\x05srcIp\x12\x15\n" +
	"\x06dst_ip\x18\x02 \x01(\tR\x05dstIp\x12\x19\n" +
	"\bsrc_port\x18\x03 \x01(\x05R\asrcPort\x12\x19\n" +
	"\bdst_port\x18\x04 \x01(\x05R\adstPort\x12+\n" +
	"\bprotocol\x18\x05 \x01(\v2\x0f.felix.ProtocolR\bprotocol\x12&\n" +
	"\x05stats\x18\x06 \x03(\v2\x10.felix.StatisticR\x05stats\x12&\n" +
	"\x05rules\x18\a \x03(\v2\x10.felix.RuleTraceR\x05rules\x12%\n" +
	"\x06action\x18\b \x01(\x0e2\r.felix.ActionR\x06action\"\xcf\x02\n" +
	"\tStatistic\x128\n" +
	"\tdirection\x18\x01 \x01(\x0e2\x1a.felix.Statistic.DirectionR\tdirection\x12;\n" +
	"\n" +
	"relativity\x18\x02 \x01(\x0e2\x1b.felix.Statistic.RelativityR\n" +
	"relativity\x12)\n" +
	"\x04kind\x18\x03 \x01(\x0e2\x15.felix.Statistic.KindR\x04kind\x12%\n" +
	"\x06action\x18\x04 \x01(\x0e2\r.felix.ActionR\x06action\x12\x14\n" +
	"\x05value\x18\x05 \x01(\x03R\x05value\"\x1c\n" +
	"\tDirection\x12\x06\n" +
	"\x02IN\x10\x00\x12\a\n" +
	"\x03OUT\x10\x01\"%\n" +
	"\n" +
	"Relativity\x12\f\n" +
	"\bABSOLUTE\x10\x00\x12\t\n" +
	"\x05DELTA\x10\x01\"\x1e\n" +
	"\x04Kind\x12\v\n" +
	"\aPACKETS\x10\x00\x12\t\n" +
	"\x05BYTES\x10\x01\"\xfd\x01\n" +
	"\tRuleTrace\x12)\n" +
	"\x06policy\x18\x01 \x01(\v2\x0f.felix.PolicyIDH\x00R\x06policy\x12,\n" +
	"\aprofile\x18\x02 \x01(\v2\x10.felix.ProfileIDH\x00R\aprofile\x12\x14\n" +
	"\x04none\x18\x03 \x01(\bH\x00R\x04none\x128\n" +
	"\tdirection\x18\x04 \x01(\x0e2\x1a.felix.RuleTrace.DirectionR\tdirection\x12\x19\n" +
	"\brule_num\x18\x05 \x01(\x05R\aruleNum\"&\n" +
	"\tDirection\x12\v\n" +
	"\aINBOUND\x10\x00\x12\f\n" +
	"\bOUTBOUND\x10\x01B\x04\n" +
	"\x02id\"\x84\x01\n" +
	"\x17WireguardEndpointUpdate\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\x1d\n" +
	"\n" +
	"public_key\x18\x02 \x01(\tR\tpublicKey\x12.\n" +
	"\x13interface_ipv4_addr\x18\x03 \x01(\tR\x11interfaceIpv4Addr\"5\n" +
	"\x17WireguardEndpointRemove\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\"\x8b\x01\n" +
	"\x19WireguardEndpointV6Update\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\x12\"\n" +
	"\rpublic_key_v6\x18\x02 \x01(\tR\vpublicKeyV6\x12.\n" +
	"\x13interface_ipv6_addr\x18\x03 \x01(\tR\x11interfaceIpv6Addr\"7\n" +
	"\x19WireguardEndpointV6Remove\x12\x1a\n" +
	"\bhostname\x18\x01 \x01(\tR\bhostname\"\xbf\x02\n" +
	"\x15GlobalBGPConfigUpdate\x122\n" +
	"\x15service_cluster_cidrs\x18\x01 \x03(\tR\x13serviceClusterCidrs\x124\n" +
	"\x16service_external_cidrs\x18\x02 \x03(\tR\x14serviceExternalCidrs\x12<\n" +
	"\x1aservice_loadbalancer_cidrs\x18\x03 \x03(\tR\x18serviceLoadbalancerCidrs\x12>\n" +
	"\x1clocal_workload_peering_ip_v4\x18\x04 \x01(\tR\x18localWorkloadPeeringIpV4\x12>\n" +
	"\x1clocal_workload_peering_ip_v6\x18\x05 \x01(\tR\x18localWorkloadPeeringIpV6\"Y\n" +
	"\vServicePort\x12\x1a\n" +
	"\bProtocol\x18\x01 \x01(\tR\bProtocol\x12\x12\n" +
	"\x04Port\x18\x02 \x01(\x05R\x04Port\x12\x1a\n" +
	"\bNodePort\x18\x03 \x01(\x05R\bNodePort\"\xec\x01\n" +
	"\rServiceUpdate\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" +
	"\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x12\n" +
	"\x04type\x18\x03 \x01(\tR\x04type\x12\x1f\n" +
	"\vcluster_ips\x18\x04 \x03(\tR\n" +
	"clusterIps\x12'\n" +
	"\x0floadbalancer_ip\x18\x05 \x01(\tR\x0eloadbalancerIp\x12!\n" +
	"\fexternal_ips\x18\x06 \x03(\tR\vexternalIps\x12(\n" +
	"\x05ports\x18\a \x03(\v2\x12.felix.ServicePortR\x05ports\"A\n" +
	"\rServiceRemove\x12\x12\n" +
	"\x04name\x18\x01 \x01(\tR\x04name\x12\x1c\n" +
	"\tnamespace\x18\x02 \x01(\tR\tnamespace*(\n" +
	"\tIPVersion\x12\a\n" +
	"\x03ANY\x10\x00\x12\b\n" +
	"\x04IPV4\x10\x04\x12\b\n" +
	"\x04IPV6\x10\x06*#\n" +
	"\fWorkloadType\x12\v\n" +
	"\aREGULAR\x10\x00\x12\x06\n" +
	"\x02VM\x10\x01*\x89\x01\n" +
	"\tRouteType\x12\r\n" +
	"\tCIDR_INFO\x10\x00\x12\x13\n" +
	"\x0fREMOTE_WORKLOAD\x10\x01\x12\x0f\n" +
	"\vREMOTE_HOST\x10\x02\x12\x12\n" +
	"\x0eLOCAL_WORKLOAD\x10\x04\x12\x0e\n" +
	"\n" +
	"LOCAL_HOST\x10\b\x12\x11\n" +
	"\rREMOTE_TUNNEL\x10\x10\x12\x10\n" +
	"\fLOCAL_TUNNEL\x10 *9\n" +
	"\n" +
	"IPPoolType\x12\b\n" +
	"\x04NONE\x10\x00\x12\f\n" +
	"\bNO_ENCAP\x10\x01\x12\t\n" +
	"\x05VXLAN\x10\x02\x12\b\n" +
	"\x04IPIP\x10\x03*!\n" +
	"\x06Action\x12\v\n" +
	"\aALLOWED\x10\x00\x12\n" +
	"\n" +
	"\x06DENIED\x10\x012t\n" +
	"\n" +
	"PolicySync\x120\n" +
	"\x04Sync\x12\x12.felix.SyncRequest\x1a\x12.felix.ToDataplane0\x01\x124\n" +
	"\x06Report\x12\x15.felix.DataplaneStats\x1a\x13.felix.ReportResultB\tZ\a./protob\x06proto3"

var (
	file_felixbackend_proto_rawDescOnce sync.Once
	file_felixbackend_proto_rawDescData []byte
)

func file_felixbackend_proto_rawDescGZIP() []byte {
	file_felixbackend_proto_rawDescOnce.Do(func() {
		file_felixbackend_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_felixbackend_proto_rawDesc), len(file_felixbackend_proto_rawDesc)))
	})
	return file_felixbackend_proto_rawDescData
}

var file_felixbackend_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
var file_felixbackend_proto_msgTypes = make([]protoimpl.MessageInfo, 86)
var file_felixbackend_proto_goTypes = []any{
	(IPVersion)(0),                       // 0: felix.IPVersion
	(WorkloadType)(0),                    // 1: felix.WorkloadType
	(RouteType)(0),                       // 2: felix.RouteType
	(IPPoolType)(0),                      // 3: felix.IPPoolType
	(Action)(0),                          // 4: felix.Action
	(IPSetUpdate_IPSetType)(0),           // 5: felix.IPSetUpdate.IPSetType
	(Statistic_Direction)(0),             // 6: felix.Statistic.Direction
	(Statistic_Relativity)(0),            // 7: felix.Statistic.Relativity
	(Statistic_Kind)(0),                  // 8: felix.Statistic.Kind
	(RuleTrace_Direction)(0),             // 9: felix.RuleTrace.Direction
	(*SyncRequest)(nil),                  // 10: felix.SyncRequest
	(*ToDataplane)(nil),                  // 11: felix.ToDataplane
	(*FromDataplane)(nil),                // 12: felix.FromDataplane
	(*ConfigUpdate)(nil),                 // 13: felix.ConfigUpdate
	(*RawConfig)(nil),                    // 14: felix.RawConfig
	(*InSync)(nil),                       // 15: felix.InSync
	(*IPSetUpdate)(nil),                  // 16: felix.IPSetUpdate
	(*IPSetDeltaUpdate)(nil),             // 17: felix.IPSetDeltaUpdate
	(*IPSetRemove)(nil),                  // 18: felix.IPSetRemove
	(*ActiveProfileUpdate)(nil),          // 19: felix.ActiveProfileUpdate
	(*ActiveProfileRemove)(nil),          // 20: felix.ActiveProfileRemove
	(*ProfileID)(nil),                    // 21: felix.ProfileID
	(*Profile)(nil),                      // 22: felix.Profile
	(*ActivePolicyUpdate)(nil),           // 23: felix.ActivePolicyUpdate
	(*ActivePolicyRemove)(nil),           // 24: felix.ActivePolicyRemove
	(*PolicyID)(nil),                     // 25: felix.PolicyID
	(*Policy)(nil),                       // 26: felix.Policy
	(*Rule)(nil),                         // 27: felix.Rule
	(*ServiceAccountMatch)(nil),          // 28: felix.ServiceAccountMatch
	(*HTTPMatch)(nil),                    // 29: felix.HTTPMatch
	(*RuleMetadata)(nil),                 // 30: felix.RuleMetadata
	(*IcmpTypeAndCode)(nil),              // 31: felix.IcmpTypeAndCode
	(*Protocol)(nil),                     // 32: felix.Protocol
	(*PortRange)(nil),                    // 33: felix.PortRange
	(*WorkloadEndpointID)(nil),           // 34: felix.WorkloadEndpointID
	(*WorkloadEndpointUpdate)(nil),       // 35: felix.WorkloadEndpointUpdate
	(*WorkloadEndpoint)(nil),             // 36: felix.WorkloadEndpoint
	(*QoSControls)(nil),                  // 37: felix.QoSControls
	(*LocalBGPPeer)(nil),                 // 38: felix.LocalBGPPeer
	(*WorkloadEndpointRemove)(nil),       // 39: felix.WorkloadEndpointRemove
	(*HostEndpointID)(nil),               // 40: felix.HostEndpointID
	(*HostEndpointUpdate)(nil),           // 41: felix.HostEndpointUpdate
	(*HostEndpoint)(nil),                 // 42: felix.HostEndpoint
	(*HostEndpointRemove)(nil),           // 43: felix.HostEndpointRemove
	(*TierInfo)(nil),                     // 44: felix.TierInfo
	(*NatInfo)(nil),                      // 45: felix.NatInfo
	(*ProcessStatusUpdate)(nil),          // 46: felix.ProcessStatusUpdate
	(*HostEndpointStatusUpdate)(nil),     // 47: felix.HostEndpointStatusUpdate
	(*EndpointStatus)(nil),               // 48: felix.EndpointStatus
	(*HostEndpointStatusRemove)(nil),     // 49: felix.HostEndpointStatusRemove
	(*WorkloadEndpointStatusUpdate)(nil), // 50: felix.WorkloadEndpointStatusUpdate
	(*WorkloadEndpointStatusRemove)(nil), // 51: felix.WorkloadEndpointStatusRemove
	(*WireguardStatusUpdate)(nil),        // 52: felix.WireguardStatusUpdate
	(*DataplaneInSync)(nil),              // 53: felix.DataplaneInSync
	(*HostMetadataV4V6Update)(nil),       // 54: felix.HostMetadataV4V6Update
	(*HostMetadataV4V6Remove)(nil),       // 55: felix.HostMetadataV4V6Remove
	(*HostMetadataUpdate)(nil),           // 56: felix.HostMetadataUpdate
	(*HostMetadataRemove)(nil),           // 57: felix.HostMetadataRemove
	(*HostMetadataV6Update)(nil),         // 58: felix.HostMetadataV6Update
	(*HostMetadataV6Remove)(nil),         // 59: felix.HostMetadataV6Remove
	(*IPAMPoolUpdate)(nil),               // 60: felix.IPAMPoolUpdate
	(*IPAMPoolRemove)(nil),               // 61: felix.IPAMPoolRemove
	(*IPAMPool)(nil),                     // 62: felix.IPAMPool
	(*Encapsulation)(nil),                // 63: felix.Encapsulation
	(*ServiceAccountUpdate)(nil),         // 64: felix.ServiceAccountUpdate
	(*ServiceAccountRemove)(nil),         // 65: felix.ServiceAccountRemove
	(*ServiceAccountID)(nil),             // 66: felix.ServiceAccountID
	(*NamespaceUpdate)(nil),              // 67: felix.NamespaceUpdate
	(*NamespaceRemove)(nil),              // 68: felix.NamespaceRemove
	(*NamespaceID)(nil),                  // 69: felix.NamespaceID
	(*TunnelType)(nil),                   // 70: felix.TunnelType
	(*RouteUpdate)(nil),                  // 71: felix.RouteUpdate
	(*RouteRemove)(nil),                  // 72: felix.RouteRemove
	(*VXLANTunnelEndpointUpdate)(nil),    // 73: felix.VXLANTunnelEndpointUpdate
	(*VXLANTunnelEndpointRemove)(nil),    // 74: felix.VXLANTunnelEndpointRemove
	(*ReportResult)(nil),                 // 75: felix.ReportResult
	(*DataplaneStats)(nil),               // 76: felix.DataplaneStats
	(*Statistic)(nil),                    // 77: felix.Statistic
	(*RuleTrace)(nil),                    // 78: felix.RuleTrace
	(*WireguardEndpointUpdate)(nil),      // 79: felix.WireguardEndpointUpdate
	(*WireguardEndpointRemove)(nil),      // 80: felix.WireguardEndpointRemove
	(*WireguardEndpointV6Update)(nil),    // 81: felix.WireguardEndpointV6Update
	(*WireguardEndpointV6Remove)(nil),    // 82: felix.WireguardEndpointV6Remove
	(*GlobalBGPConfigUpdate)(nil),        // 83: felix.GlobalBGPConfigUpdate
	(*ServicePort)(nil),                  // 84: felix.ServicePort
	(*ServiceUpdate)(nil),                // 85: felix.ServiceUpdate
	(*ServiceRemove)(nil),                // 86: felix.ServiceRemove
	nil,                                  // 87: felix.ConfigUpdate.ConfigEntry
	nil,                                  // 88: felix.ConfigUpdate.SourceToRawConfigEntry
	nil,                                  // 89: felix.RawConfig.ConfigEntry
	(*HTTPMatch_PathMatch)(nil),          // 90: felix.HTTPMatch.PathMatch
	nil,                                  // 91: felix.RuleMetadata.AnnotationsEntry
	nil,                                  // 92: felix.WorkloadEndpoint.AnnotationsEntry
	nil,                                  // 93: felix.HostMetadataV4V6Update.LabelsEntry
	nil,                                  // 94: felix.ServiceAccountUpdate.LabelsEntry
	nil,                                  // 95: felix.NamespaceUpdate.LabelsEntry
}
var file_felixbackend_proto_depIdxs = []int32{
	15,  // 0: felix.ToDataplane.in_sync:type_name -> felix.InSync
	16,  // 1: felix.ToDataplane.ipset_update:type_name -> felix.IPSetUpdate
	17,  // 2: felix.ToDataplane.ipset_delta_update:type_name -> felix.IPSetDeltaUpdate
	18,  // 3: felix.ToDataplane.ipset_remove:type_name -> felix.IPSetRemove
	19,  // 4: felix.ToDataplane.active_profile_update:type_name -> felix.ActiveProfileUpdate
	20,  // 5: felix.ToDataplane.active_profile_remove:type_name -> felix.ActiveProfileRemove
	23,  // 6: felix.ToDataplane.active_policy_update:type_name -> felix.ActivePolicyUpdate
	24,  // 7: felix.ToDataplane.active_policy_remove:type_name -> felix.ActivePolicyRemove
	41,  // 8: felix.ToDataplane.host_endpoint_update:type_name -> felix.HostEndpointUpdate
	43,  // 9: felix.ToDataplane.host_endpoint_remove:type_name -> felix.HostEndpointRemove
	35,  // 10: felix.ToDataplane.workload_endpoint_update:type_name -> felix.WorkloadEndpointUpdate
	39,  // 11: felix.ToDataplane.workload_endpoint_remove:type_name -> felix.WorkloadEndpointRemove
	13,  // 12: felix.ToDataplane.config_update:type_name -> felix.ConfigUpdate
	56,  // 13: felix.ToDataplane.host_metadata_update:type_name -> felix.HostMetadataUpdate
	57,  // 14: felix.ToDataplane.host_metadata_remove:type_name -> felix.HostMetadataRemove
	54,  // 15: felix.ToDataplane.host_metadata_v4v6_update:type_name -> felix.HostMetadataV4V6Update
	55,  // 16: felix.ToDataplane.host_metadata_v4v6_remove:type_name -> felix.HostMetadataV4V6Remove
	60,  // 17: felix.ToDataplane.ipam_pool_update:type_name -> felix.IPAMPoolUpdate
	61,  // 18: felix.ToDataplane.ipam_pool_remove:type_name -> felix.IPAMPoolRemove
	64,  // 19: felix.ToDataplane.service_account_update:type_name -> felix.ServiceAccountUpdate
	65,  // 20: felix.ToDataplane.service_account_remove:type_name -> felix.ServiceAccountRemove
	67,  // 21: felix.ToDataplane.namespace_update:type_name -> felix.NamespaceUpdate
	68,  // 22: felix.ToDataplane.namespace_remove:type_name -> felix.NamespaceRemove
	71,  // 23: felix.ToDataplane.route_update:type_name -> felix.RouteUpdate
	72,  // 24: felix.ToDataplane.route_remove:type_name -> felix.RouteRemove
	73,  // 25: felix.ToDataplane.vtep_update:type_name -> felix.VXLANTunnelEndpointUpdate
	74,  // 26: felix.ToDataplane.vtep_remove:type_name -> felix.VXLANTunnelEndpointRemove
	79,  // 27: felix.ToDataplane.wireguard_endpoint_update:type_name -> felix.WireguardEndpointUpdate
	80,  // 28: felix.ToDataplane.wireguard_endpoint_remove:type_name -> felix.WireguardEndpointRemove
	83,  // 29: felix.ToDataplane.global_bgp_config_update:type_name -> felix.GlobalBGPConfigUpdate
	63,  // 30: felix.ToDataplane.encapsulation:type_name -> felix.Encapsulation
	85,  // 31: felix.ToDataplane.service_update:type_name -> felix.ServiceUpdate
	86,  // 32: felix.ToDataplane.service_remove:type_name -> felix.ServiceRemove
	81,  // 33: felix.ToDataplane.wireguard_endpoint_v6_update:type_name -> felix.WireguardEndpointV6Update
	82,  // 34: felix.ToDataplane.wireguard_endpoint_v6_remove:type_name -> felix.WireguardEndpointV6Remove
	58,  // 35: felix.ToDataplane.host_metadata_v6_update:type_name -> felix.HostMetadataV6Update
	59,  // 36: felix.ToDataplane.host_metadata_v6_remove:type_name -> felix.HostMetadataV6Remove
	46,  // 37: felix.FromDataplane.process_status_update:type_name -> felix.ProcessStatusUpdate
	47,  // 38: felix.FromDataplane.host_endpoint_status_update:type_name -> felix.HostEndpointStatusUpdate
	49,  // 39: felix.FromDataplane.host_endpoint_status_remove:type_name -> felix.HostEndpointStatusRemove
	50,  // 40: felix.FromDataplane.workload_endpoint_status_update:type_name -> felix.WorkloadEndpointStatusUpdate
	51,  // 41: felix.FromDataplane.workload_endpoint_status_remove:type_name -> felix.WorkloadEndpointStatusRemove
	52,  // 42: felix.FromDataplane.wireguard_status_update:type_name -> felix.WireguardStatusUpdate
	53,  // 43: felix.FromDataplane.dataplane_in_sync:type_name -> felix.DataplaneInSync
	87,  // 44: felix.ConfigUpdate.config:type_name -> felix.ConfigUpdate.ConfigEntry
	88,  // 45: felix.ConfigUpdate.source_to_raw_config:type_name -> felix.ConfigUpdate.SourceToRawConfigEntry
	89,  // 46: felix.RawConfig.config:type_name -> felix.RawConfig.ConfigEntry
	5,   // 47: felix.IPSetUpdate.type:type_name -> felix.IPSetUpdate.IPSetType
	21,  // 48: felix.ActiveProfileUpdate.id:type_name -> felix.ProfileID
	22,  // 49: felix.ActiveProfileUpdate.profile:type_name -> felix.Profile
	21,  // 50: felix.ActiveProfileRemove.id:type_name -> felix.ProfileID
	27,  // 51: felix.Profile.inbound_rules:type_name -> felix.Rule
	27,  // 52: felix.Profile.outbound_rules:type_name -> felix.Rule
	25,  // 53: felix.ActivePolicyUpdate.id:type_name -> felix.PolicyID
	26,  // 54: felix.ActivePolicyUpdate.policy:type_name -> felix.Policy
	25,  // 55: felix.ActivePolicyRemove.id:type_name -> felix.PolicyID
	27,  // 56: felix.Policy.inbound_rules:type_name -> felix.Rule
	27,  // 57: felix.Policy.outbound_rules:type_name -> felix.Rule
	0,   // 58: felix.Rule.ip_version:type_name -> felix.IPVersion
	32,  // 59: felix.Rule.protocol:type_name -> felix.Protocol
	33,  // 60: felix.Rule.src_ports:type_name -> felix.PortRange
	33,  // 61: felix.Rule.dst_ports:type_name -> felix.PortRange
	31,  // 62: felix.Rule.icmp_type_code:type_name -> felix.IcmpTypeAndCode
	32,  // 63: felix.Rule.not_protocol:type_name -> felix.Protocol
	33,  // 64: felix.Rule.not_src_ports:type_name -> felix.PortRange
	33,  // 65: felix.Rule.not_dst_ports:type_name -> felix.PortRange
	31,  // 66: felix.Rule.not_icmp_type_code:type_name -> felix.IcmpTypeAndCode
	28,  // 67: felix.Rule.src_service_account_match:type_name -> felix.ServiceAccountMatch
	28,  // 68: felix.Rule.dst_service_account_match:type_name -> felix.ServiceAccountMatch
	29,  // 69: felix.Rule.http_match:type_name -> felix.HTTPMatch
	30,  // 70: felix.Rule.metadata:type_name -> felix.RuleMetadata
	90,  // 71: felix.HTTPMatch.paths:type_name -> felix.HTTPMatch.PathMatch
	91,  // 72: felix.RuleMetadata.annotations:type_name -> felix.RuleMetadata.AnnotationsEntry
	34,  // 73: felix.WorkloadEndpointUpdate.id:type_name -> felix.WorkloadEndpointID
	36,  // 74: felix.WorkloadEndpointUpdate.endpoint:type_name -> felix.WorkloadEndpoint
	44,  // 75: felix.WorkloadEndpoint.tiers:type_name -> felix.TierInfo
	45,  // 76: felix.WorkloadEndpoint.ipv4_nat:type_name -> felix.NatInfo
	45,  // 77: felix.WorkloadEndpoint.ipv6_nat:type_name -> felix.NatInfo
	92,  // 78: felix.WorkloadEndpoint.annotations:type_name -> felix.WorkloadEndpoint.AnnotationsEntry
	37,  // 79: felix.WorkloadEndpoint.qos_controls:type_name -> felix.QoSControls
	38,  // 80: felix.WorkloadEndpoint.local_bgp_peer:type_name -> felix.LocalBGPPeer
	1,   // 81: felix.WorkloadEndpoint.type:type_name -> felix.WorkloadType
	34,  // 82: felix.WorkloadEndpointRemove.id:type_name -> felix.WorkloadEndpointID
	40,  // 83: felix.HostEndpointUpdate.id:type_name -> felix.HostEndpointID
	42,  // 84: felix.HostEndpointUpdate.endpoint:type_name -> felix.HostEndpoint
	44,  // 85: felix.HostEndpoint.tiers:type_name -> felix.TierInfo
	44,  // 86: felix.HostEndpoint.untracked_tiers:type_name -> felix.TierInfo
	44,  // 87: felix.HostEndpoint.pre_dnat_tiers:type_name -> felix.TierInfo
	44,  // 88: felix.HostEndpoint.forward_tiers:type_name -> felix.TierInfo
	40,  // 89: felix.HostEndpointRemove.id:type_name -> felix.HostEndpointID
	40,  // 90: felix.HostEndpointStatusUpdate.id:type_name -> felix.HostEndpointID
	48,  // 91: felix.HostEndpointStatusUpdate.status:type_name -> felix.EndpointStatus
	40,  // 92: felix.HostEndpointStatusRemove.id:type_name -> felix.HostEndpointID
	34,  // 93: felix.WorkloadEndpointStatusUpdate.id:type_name -> felix.WorkloadEndpointID
	48,  // 94: felix.WorkloadEndpointStatusUpdate.status:type_name -> felix.EndpointStatus
	36,  // 95: felix.WorkloadEndpointStatusUpdate.endpoint:type_name -> felix.WorkloadEndpoint
	34,  // 96: felix.WorkloadEndpointStatusRemove.id:type_name -> felix.WorkloadEndpointID
	0,   // 97: felix.WireguardStatusUpdate.ip_version:type_name -> felix.IPVersion
	93,  // 98: felix.HostMetadataV4V6Update.labels:type_name -> felix.HostMetadataV4V6Update.LabelsEntry
	62,  // 99: felix.IPAMPoolUpdate.pool:type_name -> felix.IPAMPool
	66,  // 100: felix.ServiceAccountUpdate.id:type_name -> felix.ServiceAccountID
	94,  // 101: felix.ServiceAccountUpdate.labels:type_name -> felix.ServiceAccountUpdate.LabelsEntry
	66,  // 102: felix.ServiceAccountRemove.id:type_name -> felix.ServiceAccountID
	69,  // 103: felix.NamespaceUpdate.id:type_name -> felix.NamespaceID
	95,  // 104: felix.NamespaceUpdate.labels:type_name -> felix.NamespaceUpdate.LabelsEntry
	69,  // 105: felix.NamespaceRemove.id:type_name -> felix.NamespaceID
	2,   // 106: felix.RouteUpdate.types:type_name -> felix.RouteType
	3,   // 107: felix.RouteUpdate.ip_pool_type:type_name -> felix.IPPoolType
	70,  // 108: felix.RouteUpdate.tunnel_type:type_name -> felix.TunnelType
	32,  // 109: felix.DataplaneStats.protocol:type_name -> felix.Protocol
	77,  // 110: felix.DataplaneStats.stats:type_name -> felix.Statistic
	78,  // 111: felix.DataplaneStats.rules:type_name -> felix.RuleTrace
	4,   // 112: felix.DataplaneStats.action:type_name -> felix.Action
	6,   // 113: felix.Statistic.direction:type_name -> felix.Statistic.Direction
	7,   // 114: felix.Statistic.relativity:type_name -> felix.Statistic.Relativity
	8,   // 115: felix.Statistic.kind:type_name -> felix.Statistic.Kind
	4,   // 116: felix.Statistic.action:type_name -> felix.Action
	25,  // 117: felix.RuleTrace.policy:type_name -> felix.PolicyID
	21,  // 118: felix.RuleTrace.profile:type_name -> felix.ProfileID
	9,   // 119: felix.RuleTrace.direction:type_name -> felix.RuleTrace.Direction
	84,  // 120: felix.ServiceUpdate.ports:type_name -> felix.ServicePort
	14,  // 121: felix.ConfigUpdate.SourceToRawConfigEntry.value:type_name -> felix.RawConfig
	10,  // 122: felix.PolicySync.Sync:input_type -> felix.SyncRequest
	76,  // 123: felix.PolicySync.Report:input_type -> felix.DataplaneStats
	11,  // 124: felix.PolicySync.Sync:output_type -> felix.ToDataplane
	75,  // 125: felix.PolicySync.Report:output_type -> felix.ReportResult
	124, // [124:126] is the sub-list for method output_type
	122, // [122:124] is the sub-list for method input_type
	122, // [122:122] is the sub-list for extension type_name
	122, // [122:122] is the sub-list for extension extendee
	0,   // [0:122] is the sub-list for field type_name
}

func init() { file_felixbackend_proto_init() }
func file_felixbackend_proto_init() {
	if File_felixbackend_proto != nil {
		return
	}
	file_felixbackend_proto_msgTypes[1].OneofWrappers = []any{
		(*ToDataplane_InSync)(nil),
		(*ToDataplane_IpsetUpdate)(nil),
		(*ToDataplane_IpsetDeltaUpdate)(nil),
		(*ToDataplane_IpsetRemove)(nil),
		(*ToDataplane_ActiveProfileUpdate)(nil),
		(*ToDataplane_ActiveProfileRemove)(nil),
		(*ToDataplane_ActivePolicyUpdate)(nil),
		(*ToDataplane_ActivePolicyRemove)(nil),
		(*ToDataplane_HostEndpointUpdate)(nil),
		(*ToDataplane_HostEndpointRemove)(nil),
		(*ToDataplane_WorkloadEndpointUpdate)(nil),
		(*ToDataplane_WorkloadEndpointRemove)(nil),
		(*ToDataplane_ConfigUpdate)(nil),
		(*ToDataplane_HostMetadataUpdate)(nil),
		(*ToDataplane_HostMetadataRemove)(nil),
		(*ToDataplane_HostMetadataV4V6Update)(nil),
		(*ToDataplane_HostMetadataV4V6Remove)(nil),
		(*ToDataplane_IpamPoolUpdate)(nil),
		(*ToDataplane_IpamPoolRemove)(nil),
		(*ToDataplane_ServiceAccountUpdate)(nil),
		(*ToDataplane_ServiceAccountRemove)(nil),
		(*ToDataplane_NamespaceUpdate)(nil),
		(*ToDataplane_NamespaceRemove)(nil),
		(*ToDataplane_RouteUpdate)(nil),
		(*ToDataplane_RouteRemove)(nil),
		(*ToDataplane_VtepUpdate)(nil),
		(*ToDataplane_VtepRemove)(nil),
		(*ToDataplane_WireguardEndpointUpdate)(nil),
		(*ToDataplane_WireguardEndpointRemove)(nil),
		(*ToDataplane_GlobalBgpConfigUpdate)(nil),
		(*ToDataplane_Encapsulation)(nil),
		(*ToDataplane_ServiceUpdate)(nil),
		(*ToDataplane_ServiceRemove)(nil),
		(*ToDataplane_WireguardEndpointV6Update)(nil),
		(*ToDataplane_WireguardEndpointV6Remove)(nil),
		(*ToDataplane_HostMetadataV6Update)(nil),
		(*ToDataplane_HostMetadataV6Remove)(nil),
	}
	file_felixbackend_proto_msgTypes[2].OneofWrappers = []any{
		(*FromDataplane_ProcessStatusUpdate)(nil),
		(*FromDataplane_HostEndpointStatusUpdate)(nil),
		(*FromDataplane_HostEndpointStatusRemove)(nil),
		(*FromDataplane_WorkloadEndpointStatusUpdate)(nil),
		(*FromDataplane_WorkloadEndpointStatusRemove)(nil),
		(*FromDataplane_WireguardStatusUpdate)(nil),
		(*FromDataplane_DataplaneInSync)(nil),
	}
	file_felixbackend_proto_msgTypes[17].OneofWrappers = []any{
		(*Rule_IcmpType)(nil),
		(*Rule_IcmpTypeCode)(nil),
		(*Rule_NotIcmpType)(nil),
		(*Rule_NotIcmpTypeCode)(nil),
	}
	file_felixbackend_proto_msgTypes[22].OneofWrappers = []any{
		(*Protocol_Number)(nil),
		(*Protocol_Name)(nil),
	}
	file_felixbackend_proto_msgTypes[68].OneofWrappers = []any{
		(*RuleTrace_Policy)(nil),
		(*RuleTrace_Profile)(nil),
		(*RuleTrace_None)(nil),
	}
	file_felixbackend_proto_msgTypes[80].OneofWrappers = []any{
		(*HTTPMatch_PathMatch_Exact)(nil),
		(*HTTPMatch_PathMatch_Prefix)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_felixbackend_proto_rawDesc), len(file_felixbackend_proto_rawDesc)),
			NumEnums:      10,
			NumMessages:   86,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_felixbackend_proto_goTypes,
		DependencyIndexes: file_felixbackend_proto_depIdxs,
		EnumInfos:         file_felixbackend_proto_enumTypes,
		MessageInfos:      file_felixbackend_proto_msgTypes,
	}.Build()
	File_felixbackend_proto = out.File
	file_felixbackend_proto_goTypes = nil
	file_felixbackend_proto_depIdxs = nil
}
