netmaker/grpc/flow/flow.pb.go
Vishal Dalwadi a4981ffd26
NM-168: Network Flow Logs (#3754)
* feat(go): define flow events;

* feat(go): improve structure;

* feat(go): improve structure;

* feat(go): remove old flow definitions;

* feat(sql): add clickhouse init scripts;

* feat(sql): add protobuf spec;

* fix(sql): store ip as string;

* feat(go): move proto def to grpc dir;

* feat(go): use node instead of host as type; optimize protobuf defs;

* feat(go): add clickhouse db support; add endpoint to query flows;

* fix(go): fix clickhouse config;

* fix(go): use error response structure to report error;

* feat(go): pass flow logging status to netclient;

* feat(go): add peer ip identity map to host peer info;

* feat(go): remove prefix from participant obj fields;

* feat(go): add flow logs enabled field to host;

* feat(go): add filtering to get flow api;

* feat(go): fix record struct;

* feat(go): add exporter url to server config;

* feat(go): add exporter url to server config;

* feat(go): enable flow logs by default;

* feat(go): update nm-quick.sh;

* feat(go): update nm-quick.sh;

* feat(go): update nm-quick.sh;

* feat(go): update nm-quick.sh;

* feat(go): add db initialization logic;

* feat(go): filter by network id;

* fix(go): connection issue;

* fix(go): connection issue;

* fix(go): golang builder version;

* feat(go): add server settings for flow logs;

* feat(go): initialize clickhouse in pro; check for retention;

* feat(go): add exporter feature flags;

* feat(go): add grpc behind caddy;

* feat(go): expose ports correctly;

* fix(go): grpc caddyfile config;

* fix(go): publish exporter feature flags on license validation;

* fix(go): set server name for netmaker exporter;

* fix(go): set server name for netmaker exporter;

* fix(go): check for nil cancel func;

* fix(go): add flow logs field to api host;

* fix(go): add flow logs field to api host;

* fix(go): remove port from grpc setting;

* chore(go): tabs;

* feat(go): introduce egress range participant type;.

* feat(go): rename egress range to egress route for uniform language;

* feat(go): rename egress range to egress route for uniform language;

* feat: add peer addr identity map to host peer update;

* feat: add address identity map to host peer update;

* feat: add address identity map to host peer update;

* feat: set correct from and to args;

* feat: add support for filtering by node;

* feat: use corresponding base image;

* feat: update dockerfile base image version;

* fix: disable flow logs for all host when global settings are changed;
2025-12-12 14:12:00 +04:00

680 lines
20 KiB
Go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.10
// protoc v3.21.12
// source: grpc/flow/flow.proto
package flow
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
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)
)
// *
// Lifecycle stage of a flow event as seen by an netclient.
// A flow produces:
// - EVENT_START when conntrack entry is created
// - EVENT_DESTROY when conntrack entry is removed
type EventType int32
const (
EventType_EVENT_TYPE_UNSPECIFIED EventType = 0
EventType_EVENT_START EventType = 1
EventType_EVENT_DESTROY EventType = 2
)
// Enum value maps for EventType.
var (
EventType_name = map[int32]string{
0: "EVENT_TYPE_UNSPECIFIED",
1: "EVENT_START",
2: "EVENT_DESTROY",
}
EventType_value = map[string]int32{
"EVENT_TYPE_UNSPECIFIED": 0,
"EVENT_START": 1,
"EVENT_DESTROY": 2,
}
)
func (x EventType) Enum() *EventType {
p := new(EventType)
*p = x
return p
}
func (x EventType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (EventType) Descriptor() protoreflect.EnumDescriptor {
return file_grpc_flow_flow_proto_enumTypes[0].Descriptor()
}
func (EventType) Type() protoreflect.EnumType {
return &file_grpc_flow_flow_proto_enumTypes[0]
}
func (x EventType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use EventType.Descriptor instead.
func (EventType) EnumDescriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{0}
}
// *
// Identifies what kind of participant an IP belongs to.
type ParticipantType int32
const (
ParticipantType_PARTICIPANT_UNSPECIFIED ParticipantType = 0
ParticipantType_PARTICIPANT_NODE ParticipantType = 1
ParticipantType_PARTICIPANT_USER ParticipantType = 2
ParticipantType_PARTICIPANT_EXTCLIENT ParticipantType = 3
ParticipantType_PARTICIPANT_EGRESS_ROUTE ParticipantType = 4
ParticipantType_PARTICIPANT_EXTERNAL ParticipantType = 5 // anything not part of the Netmaker network
)
// Enum value maps for ParticipantType.
var (
ParticipantType_name = map[int32]string{
0: "PARTICIPANT_UNSPECIFIED",
1: "PARTICIPANT_NODE",
2: "PARTICIPANT_USER",
3: "PARTICIPANT_EXTCLIENT",
4: "PARTICIPANT_EGRESS_ROUTE",
5: "PARTICIPANT_EXTERNAL",
}
ParticipantType_value = map[string]int32{
"PARTICIPANT_UNSPECIFIED": 0,
"PARTICIPANT_NODE": 1,
"PARTICIPANT_USER": 2,
"PARTICIPANT_EXTCLIENT": 3,
"PARTICIPANT_EGRESS_ROUTE": 4,
"PARTICIPANT_EXTERNAL": 5,
}
)
func (x ParticipantType) Enum() *ParticipantType {
p := new(ParticipantType)
*p = x
return p
}
func (x ParticipantType) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ParticipantType) Descriptor() protoreflect.EnumDescriptor {
return file_grpc_flow_flow_proto_enumTypes[1].Descriptor()
}
func (ParticipantType) Type() protoreflect.EnumType {
return &file_grpc_flow_flow_proto_enumTypes[1]
}
func (x ParticipantType) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ParticipantType.Descriptor instead.
func (ParticipantType) EnumDescriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{1}
}
// *
// Direction of the flow relative to the observing node.
type Direction int32
const (
Direction_DIR_UNSPECIFIED Direction = 0
Direction_DIR_INGRESS Direction = 1
Direction_DIR_EGRESS Direction = 2
)
// Enum value maps for Direction.
var (
Direction_name = map[int32]string{
0: "DIR_UNSPECIFIED",
1: "DIR_INGRESS",
2: "DIR_EGRESS",
}
Direction_value = map[string]int32{
"DIR_UNSPECIFIED": 0,
"DIR_INGRESS": 1,
"DIR_EGRESS": 2,
}
)
func (x Direction) Enum() *Direction {
p := new(Direction)
*p = x
return p
}
func (x Direction) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Direction) Descriptor() protoreflect.EnumDescriptor {
return file_grpc_flow_flow_proto_enumTypes[2].Descriptor()
}
func (Direction) Type() protoreflect.EnumType {
return &file_grpc_flow_flow_proto_enumTypes[2]
}
func (x Direction) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Direction.Descriptor instead.
func (Direction) EnumDescriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{2}
}
// *
// Fully enriched representation of one endpoint of a flow.
type FlowParticipant struct {
state protoimpl.MessageState `protogen:"open.v1"`
Ip string `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"`
Type ParticipantType `protobuf:"varint,2,opt,name=type,proto3,enum=netmaker.flow.ParticipantType" json:"type,omitempty"`
Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FlowParticipant) Reset() {
*x = FlowParticipant{}
mi := &file_grpc_flow_flow_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FlowParticipant) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FlowParticipant) ProtoMessage() {}
func (x *FlowParticipant) ProtoReflect() protoreflect.Message {
mi := &file_grpc_flow_flow_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 FlowParticipant.ProtoReflect.Descriptor instead.
func (*FlowParticipant) Descriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{0}
}
func (x *FlowParticipant) GetIp() string {
if x != nil {
return x.Ip
}
return ""
}
func (x *FlowParticipant) GetType() ParticipantType {
if x != nil {
return x.Type
}
return ParticipantType_PARTICIPANT_UNSPECIFIED
}
func (x *FlowParticipant) GetId() string {
if x != nil {
return x.Id
}
return ""
}
// *
// Flow event generated by netclient.
type FlowEvent struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Flow lifecycle event type (START or DESTROY)
Type EventType `protobuf:"varint,1,opt,name=type,proto3,enum=netmaker.flow.EventType" json:"type,omitempty"`
// Stable identity
FlowId string `protobuf:"bytes,2,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"` // unique per flow
NetworkId string `protobuf:"bytes,3,opt,name=network_id,json=networkId,proto3" json:"network_id,omitempty"` // network this flow belongs to
HostId string `protobuf:"bytes,4,opt,name=host_id,json=hostId,proto3" json:"host_id,omitempty"` // node reporting this event
// L3/L4 metadata
Protocol uint32 `protobuf:"varint,5,opt,name=protocol,proto3" json:"protocol,omitempty"`
SrcPort uint32 `protobuf:"varint,6,opt,name=src_port,json=srcPort,proto3" json:"src_port,omitempty"`
DstPort uint32 `protobuf:"varint,7,opt,name=dst_port,json=dstPort,proto3" json:"dst_port,omitempty"`
IcmpType uint32 `protobuf:"varint,8,opt,name=icmp_type,json=icmpType,proto3" json:"icmp_type,omitempty"`
IcmpCode uint32 `protobuf:"varint,9,opt,name=icmp_code,json=icmpCode,proto3" json:"icmp_code,omitempty"`
Direction Direction `protobuf:"varint,10,opt,name=direction,proto3,enum=netmaker.flow.Direction" json:"direction,omitempty"`
// Participants — enriched by client
Src *FlowParticipant `protobuf:"bytes,11,opt,name=src,proto3" json:"src,omitempty"`
Dst *FlowParticipant `protobuf:"bytes,12,opt,name=dst,proto3" json:"dst,omitempty"`
// Timestamps (milliseconds since epoch)
StartTsMs int64 `protobuf:"varint,13,opt,name=start_ts_ms,json=startTsMs,proto3" json:"start_ts_ms,omitempty"`
EndTsMs int64 `protobuf:"varint,14,opt,name=end_ts_ms,json=endTsMs,proto3" json:"end_ts_ms,omitempty"`
// Traffic counters (only valid for destroy events)
BytesSent uint64 `protobuf:"varint,15,opt,name=bytes_sent,json=bytesSent,proto3" json:"bytes_sent,omitempty"`
BytesRecv uint64 `protobuf:"varint,16,opt,name=bytes_recv,json=bytesRecv,proto3" json:"bytes_recv,omitempty"`
PacketsSent uint64 `protobuf:"varint,17,opt,name=packets_sent,json=packetsSent,proto3" json:"packets_sent,omitempty"`
PacketsRecv uint64 `protobuf:"varint,18,opt,name=packets_recv,json=packetsRecv,proto3" json:"packets_recv,omitempty"`
// Netfilter conntrack status flags (bitmask)
Status uint32 `protobuf:"varint,19,opt,name=status,proto3" json:"status,omitempty"`
// *
// Version used by ClickHouse for merging.
// Must be strictly increasing for START → DESTROY.
// Usually equal to the netclient event timestamp (ms).
Version int64 `protobuf:"varint,20,opt,name=version,proto3" json:"version,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FlowEvent) Reset() {
*x = FlowEvent{}
mi := &file_grpc_flow_flow_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FlowEvent) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FlowEvent) ProtoMessage() {}
func (x *FlowEvent) ProtoReflect() protoreflect.Message {
mi := &file_grpc_flow_flow_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 FlowEvent.ProtoReflect.Descriptor instead.
func (*FlowEvent) Descriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{1}
}
func (x *FlowEvent) GetType() EventType {
if x != nil {
return x.Type
}
return EventType_EVENT_TYPE_UNSPECIFIED
}
func (x *FlowEvent) GetFlowId() string {
if x != nil {
return x.FlowId
}
return ""
}
func (x *FlowEvent) GetNetworkId() string {
if x != nil {
return x.NetworkId
}
return ""
}
func (x *FlowEvent) GetHostId() string {
if x != nil {
return x.HostId
}
return ""
}
func (x *FlowEvent) GetProtocol() uint32 {
if x != nil {
return x.Protocol
}
return 0
}
func (x *FlowEvent) GetSrcPort() uint32 {
if x != nil {
return x.SrcPort
}
return 0
}
func (x *FlowEvent) GetDstPort() uint32 {
if x != nil {
return x.DstPort
}
return 0
}
func (x *FlowEvent) GetIcmpType() uint32 {
if x != nil {
return x.IcmpType
}
return 0
}
func (x *FlowEvent) GetIcmpCode() uint32 {
if x != nil {
return x.IcmpCode
}
return 0
}
func (x *FlowEvent) GetDirection() Direction {
if x != nil {
return x.Direction
}
return Direction_DIR_UNSPECIFIED
}
func (x *FlowEvent) GetSrc() *FlowParticipant {
if x != nil {
return x.Src
}
return nil
}
func (x *FlowEvent) GetDst() *FlowParticipant {
if x != nil {
return x.Dst
}
return nil
}
func (x *FlowEvent) GetStartTsMs() int64 {
if x != nil {
return x.StartTsMs
}
return 0
}
func (x *FlowEvent) GetEndTsMs() int64 {
if x != nil {
return x.EndTsMs
}
return 0
}
func (x *FlowEvent) GetBytesSent() uint64 {
if x != nil {
return x.BytesSent
}
return 0
}
func (x *FlowEvent) GetBytesRecv() uint64 {
if x != nil {
return x.BytesRecv
}
return 0
}
func (x *FlowEvent) GetPacketsSent() uint64 {
if x != nil {
return x.PacketsSent
}
return 0
}
func (x *FlowEvent) GetPacketsRecv() uint64 {
if x != nil {
return x.PacketsRecv
}
return 0
}
func (x *FlowEvent) GetStatus() uint32 {
if x != nil {
return x.Status
}
return 0
}
func (x *FlowEvent) GetVersion() int64 {
if x != nil {
return x.Version
}
return 0
}
// *
// Envelope sent by netclients containing multiple FlowEvents.
type FlowEnvelope struct {
state protoimpl.MessageState `protogen:"open.v1"`
Events []*FlowEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FlowEnvelope) Reset() {
*x = FlowEnvelope{}
mi := &file_grpc_flow_flow_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FlowEnvelope) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FlowEnvelope) ProtoMessage() {}
func (x *FlowEnvelope) ProtoReflect() protoreflect.Message {
mi := &file_grpc_flow_flow_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 FlowEnvelope.ProtoReflect.Descriptor instead.
func (*FlowEnvelope) Descriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{2}
}
func (x *FlowEnvelope) GetEvents() []*FlowEvent {
if x != nil {
return x.Events
}
return nil
}
// *
// Response from server acknowledging receipt of a batch.
type FlowResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` // true if batch was accepted
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` // optional error information
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *FlowResponse) Reset() {
*x = FlowResponse{}
mi := &file_grpc_flow_flow_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *FlowResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FlowResponse) ProtoMessage() {}
func (x *FlowResponse) ProtoReflect() protoreflect.Message {
mi := &file_grpc_flow_flow_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 FlowResponse.ProtoReflect.Descriptor instead.
func (*FlowResponse) Descriptor() ([]byte, []int) {
return file_grpc_flow_flow_proto_rawDescGZIP(), []int{3}
}
func (x *FlowResponse) GetSuccess() bool {
if x != nil {
return x.Success
}
return false
}
func (x *FlowResponse) GetError() string {
if x != nil {
return x.Error
}
return ""
}
var File_grpc_flow_flow_proto protoreflect.FileDescriptor
const file_grpc_flow_flow_proto_rawDesc = "" +
"\n" +
"\x14grpc/flow/flow.proto\x12\rnetmaker.flow\"e\n" +
"\x0fFlowParticipant\x12\x0e\n" +
"\x02ip\x18\x01 \x01(\tR\x02ip\x122\n" +
"\x04type\x18\x02 \x01(\x0e2\x1e.netmaker.flow.ParticipantTypeR\x04type\x12\x0e\n" +
"\x02id\x18\x03 \x01(\tR\x02id\"\xa4\x05\n" +
"\tFlowEvent\x12,\n" +
"\x04type\x18\x01 \x01(\x0e2\x18.netmaker.flow.EventTypeR\x04type\x12\x17\n" +
"\aflow_id\x18\x02 \x01(\tR\x06flowId\x12\x1d\n" +
"\n" +
"network_id\x18\x03 \x01(\tR\tnetworkId\x12\x17\n" +
"\ahost_id\x18\x04 \x01(\tR\x06hostId\x12\x1a\n" +
"\bprotocol\x18\x05 \x01(\rR\bprotocol\x12\x19\n" +
"\bsrc_port\x18\x06 \x01(\rR\asrcPort\x12\x19\n" +
"\bdst_port\x18\a \x01(\rR\adstPort\x12\x1b\n" +
"\ticmp_type\x18\b \x01(\rR\bicmpType\x12\x1b\n" +
"\ticmp_code\x18\t \x01(\rR\bicmpCode\x126\n" +
"\tdirection\x18\n" +
" \x01(\x0e2\x18.netmaker.flow.DirectionR\tdirection\x120\n" +
"\x03src\x18\v \x01(\v2\x1e.netmaker.flow.FlowParticipantR\x03src\x120\n" +
"\x03dst\x18\f \x01(\v2\x1e.netmaker.flow.FlowParticipantR\x03dst\x12\x1e\n" +
"\vstart_ts_ms\x18\r \x01(\x03R\tstartTsMs\x12\x1a\n" +
"\tend_ts_ms\x18\x0e \x01(\x03R\aendTsMs\x12\x1d\n" +
"\n" +
"bytes_sent\x18\x0f \x01(\x04R\tbytesSent\x12\x1d\n" +
"\n" +
"bytes_recv\x18\x10 \x01(\x04R\tbytesRecv\x12!\n" +
"\fpackets_sent\x18\x11 \x01(\x04R\vpacketsSent\x12!\n" +
"\fpackets_recv\x18\x12 \x01(\x04R\vpacketsRecv\x12\x16\n" +
"\x06status\x18\x13 \x01(\rR\x06status\x12\x18\n" +
"\aversion\x18\x14 \x01(\x03R\aversion\"@\n" +
"\fFlowEnvelope\x120\n" +
"\x06events\x18\x01 \x03(\v2\x18.netmaker.flow.FlowEventR\x06events\">\n" +
"\fFlowResponse\x12\x18\n" +
"\asuccess\x18\x01 \x01(\bR\asuccess\x12\x14\n" +
"\x05error\x18\x02 \x01(\tR\x05error*K\n" +
"\tEventType\x12\x1a\n" +
"\x16EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x0f\n" +
"\vEVENT_START\x10\x01\x12\x11\n" +
"\rEVENT_DESTROY\x10\x02*\xad\x01\n" +
"\x0fParticipantType\x12\x1b\n" +
"\x17PARTICIPANT_UNSPECIFIED\x10\x00\x12\x14\n" +
"\x10PARTICIPANT_NODE\x10\x01\x12\x14\n" +
"\x10PARTICIPANT_USER\x10\x02\x12\x19\n" +
"\x15PARTICIPANT_EXTCLIENT\x10\x03\x12\x1c\n" +
"\x18PARTICIPANT_EGRESS_ROUTE\x10\x04\x12\x18\n" +
"\x14PARTICIPANT_EXTERNAL\x10\x05*A\n" +
"\tDirection\x12\x13\n" +
"\x0fDIR_UNSPECIFIED\x10\x00\x12\x0f\n" +
"\vDIR_INGRESS\x10\x01\x12\x0e\n" +
"\n" +
"DIR_EGRESS\x10\x022Z\n" +
"\vFlowService\x12K\n" +
"\vStreamFlows\x12\x1b.netmaker.flow.FlowEnvelope\x1a\x1b.netmaker.flow.FlowResponse(\x010\x01B'Z%github.com/gravitl/netmaker/grpc/flowb\x06proto3"
var (
file_grpc_flow_flow_proto_rawDescOnce sync.Once
file_grpc_flow_flow_proto_rawDescData []byte
)
func file_grpc_flow_flow_proto_rawDescGZIP() []byte {
file_grpc_flow_flow_proto_rawDescOnce.Do(func() {
file_grpc_flow_flow_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_grpc_flow_flow_proto_rawDesc), len(file_grpc_flow_flow_proto_rawDesc)))
})
return file_grpc_flow_flow_proto_rawDescData
}
var file_grpc_flow_flow_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_grpc_flow_flow_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
var file_grpc_flow_flow_proto_goTypes = []any{
(EventType)(0), // 0: netmaker.flow.EventType
(ParticipantType)(0), // 1: netmaker.flow.ParticipantType
(Direction)(0), // 2: netmaker.flow.Direction
(*FlowParticipant)(nil), // 3: netmaker.flow.FlowParticipant
(*FlowEvent)(nil), // 4: netmaker.flow.FlowEvent
(*FlowEnvelope)(nil), // 5: netmaker.flow.FlowEnvelope
(*FlowResponse)(nil), // 6: netmaker.flow.FlowResponse
}
var file_grpc_flow_flow_proto_depIdxs = []int32{
1, // 0: netmaker.flow.FlowParticipant.type:type_name -> netmaker.flow.ParticipantType
0, // 1: netmaker.flow.FlowEvent.type:type_name -> netmaker.flow.EventType
2, // 2: netmaker.flow.FlowEvent.direction:type_name -> netmaker.flow.Direction
3, // 3: netmaker.flow.FlowEvent.src:type_name -> netmaker.flow.FlowParticipant
3, // 4: netmaker.flow.FlowEvent.dst:type_name -> netmaker.flow.FlowParticipant
4, // 5: netmaker.flow.FlowEnvelope.events:type_name -> netmaker.flow.FlowEvent
5, // 6: netmaker.flow.FlowService.StreamFlows:input_type -> netmaker.flow.FlowEnvelope
6, // 7: netmaker.flow.FlowService.StreamFlows:output_type -> netmaker.flow.FlowResponse
7, // [7:8] is the sub-list for method output_type
6, // [6:7] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
}
func init() { file_grpc_flow_flow_proto_init() }
func file_grpc_flow_flow_proto_init() {
if File_grpc_flow_flow_proto != nil {
return
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_grpc_flow_flow_proto_rawDesc), len(file_grpc_flow_flow_proto_rawDesc)),
NumEnums: 3,
NumMessages: 4,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_grpc_flow_flow_proto_goTypes,
DependencyIndexes: file_grpc_flow_flow_proto_depIdxs,
EnumInfos: file_grpc_flow_flow_proto_enumTypes,
MessageInfos: file_grpc_flow_flow_proto_msgTypes,
}.Build()
File_grpc_flow_flow_proto = out.File
file_grpc_flow_flow_proto_goTypes = nil
file_grpc_flow_flow_proto_depIdxs = nil
}