mirror of
https://github.com/gravitl/netmaker.git
synced 2026-01-13 14:24:07 +08:00
* 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;
680 lines
20 KiB
Go
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
|
|
}
|