loomv1

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Control_Health_FullMethodName          = "/loom.v1.Control/Health"
	Control_Register_FullMethodName        = "/loom.v1.Control/Register"
	Control_Capabilities_FullMethodName    = "/loom.v1.Control/Capabilities"
	Control_Configure_FullMethodName       = "/loom.v1.Control/Configure"
	Control_Arm_FullMethodName             = "/loom.v1.Control/Arm"
	Control_Start_FullMethodName           = "/loom.v1.Control/Start"
	Control_Stop_FullMethodName            = "/loom.v1.Control/Stop"
	Control_Destroy_FullMethodName         = "/loom.v1.Control/Destroy"
	Control_TimeSync_FullMethodName        = "/loom.v1.Control/TimeSync"
	Control_StreamTelemetry_FullMethodName = "/loom.v1.Control/StreamTelemetry"
)

Variables

View Source
var (
	FlowRole_name = map[int32]string{
		0: "FLOW_ROLE_UNSPECIFIED",
		1: "FLOW_ROLE_SENDER",
		2: "FLOW_ROLE_RECEIVER",
		3: "FLOW_ROLE_REFLECTOR",
		4: "FLOW_ROLE_RESPONDER",
		5: "FLOW_ROLE_REQUESTER",
	}
	FlowRole_value = map[string]int32{
		"FLOW_ROLE_UNSPECIFIED": 0,
		"FLOW_ROLE_SENDER":      1,
		"FLOW_ROLE_RECEIVER":    2,
		"FLOW_ROLE_REFLECTOR":   3,
		"FLOW_ROLE_RESPONDER":   4,
		"FLOW_ROLE_REQUESTER":   5,
	}
)

Enum value maps for FlowRole.

View Source
var Control_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "loom.v1.Control",
	HandlerType: (*ControlServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Health",
			Handler:    _Control_Health_Handler,
		},
		{
			MethodName: "Register",
			Handler:    _Control_Register_Handler,
		},
		{
			MethodName: "Capabilities",
			Handler:    _Control_Capabilities_Handler,
		},
		{
			MethodName: "Configure",
			Handler:    _Control_Configure_Handler,
		},
		{
			MethodName: "Arm",
			Handler:    _Control_Arm_Handler,
		},
		{
			MethodName: "Start",
			Handler:    _Control_Start_Handler,
		},
		{
			MethodName: "Stop",
			Handler:    _Control_Stop_Handler,
		},
		{
			MethodName: "Destroy",
			Handler:    _Control_Destroy_Handler,
		},
		{
			MethodName: "TimeSync",
			Handler:    _Control_TimeSync_Handler,
		},
	},
	Streams: []grpc.StreamDesc{
		{
			StreamName:    "StreamTelemetry",
			Handler:       _Control_StreamTelemetry_Handler,
			ServerStreams: true,
		},
	},
	Metadata: "proto/loom/v1/control.proto",
}

Control_ServiceDesc is the grpc.ServiceDesc for Control service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

View Source
var File_proto_loom_v1_control_proto protoreflect.FileDescriptor

Functions

func RegisterControlServer

func RegisterControlServer(s grpc.ServiceRegistrar, srv ControlServer)

Types

type ArmRequest

type ArmRequest struct {
	FlowId string `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
	// contains filtered or unexported fields
}

func (*ArmRequest) Descriptor deprecated

func (*ArmRequest) Descriptor() ([]byte, []int)

Deprecated: Use ArmRequest.ProtoReflect.Descriptor instead.

func (*ArmRequest) GetFlowId

func (x *ArmRequest) GetFlowId() string

func (*ArmRequest) ProtoMessage

func (*ArmRequest) ProtoMessage()

func (*ArmRequest) ProtoReflect

func (x *ArmRequest) ProtoReflect() protoreflect.Message

func (*ArmRequest) Reset

func (x *ArmRequest) Reset()

func (*ArmRequest) String

func (x *ArmRequest) String() string

type ArmResponse

type ArmResponse struct {
	// contains filtered or unexported fields
}

func (*ArmResponse) Descriptor deprecated

func (*ArmResponse) Descriptor() ([]byte, []int)

Deprecated: Use ArmResponse.ProtoReflect.Descriptor instead.

func (*ArmResponse) ProtoMessage

func (*ArmResponse) ProtoMessage()

func (*ArmResponse) ProtoReflect

func (x *ArmResponse) ProtoReflect() protoreflect.Message

func (*ArmResponse) Reset

func (x *ArmResponse) Reset()

func (*ArmResponse) String

func (x *ArmResponse) String() string

type CapabilitiesRequest

type CapabilitiesRequest struct {
	// contains filtered or unexported fields
}

func (*CapabilitiesRequest) Descriptor deprecated

func (*CapabilitiesRequest) Descriptor() ([]byte, []int)

Deprecated: Use CapabilitiesRequest.ProtoReflect.Descriptor instead.

func (*CapabilitiesRequest) ProtoMessage

func (*CapabilitiesRequest) ProtoMessage()

func (*CapabilitiesRequest) ProtoReflect

func (x *CapabilitiesRequest) ProtoReflect() protoreflect.Message

func (*CapabilitiesRequest) Reset

func (x *CapabilitiesRequest) Reset()

func (*CapabilitiesRequest) String

func (x *CapabilitiesRequest) String() string

type CapabilitiesResponse

type CapabilitiesResponse struct {
	Datapaths          []string `protobuf:"bytes,1,rep,name=datapaths,proto3" json:"datapaths,omitempty"`
	Generators         []string `protobuf:"bytes,2,rep,name=generators,proto3" json:"generators,omitempty"`
	Schedulers         []string `protobuf:"bytes,3,rep,name=schedulers,proto3" json:"schedulers,omitempty"`
	Payloads           []string `protobuf:"bytes,4,rep,name=payloads,proto3" json:"payloads,omitempty"`
	HardwareTimestamps bool     `protobuf:"varint,5,opt,name=hardware_timestamps,json=hardwareTimestamps,proto3" json:"hardware_timestamps,omitempty"`
	// contains filtered or unexported fields
}

func (*CapabilitiesResponse) Descriptor deprecated

func (*CapabilitiesResponse) Descriptor() ([]byte, []int)

Deprecated: Use CapabilitiesResponse.ProtoReflect.Descriptor instead.

func (*CapabilitiesResponse) GetDatapaths

func (x *CapabilitiesResponse) GetDatapaths() []string

func (*CapabilitiesResponse) GetGenerators

func (x *CapabilitiesResponse) GetGenerators() []string

func (*CapabilitiesResponse) GetHardwareTimestamps

func (x *CapabilitiesResponse) GetHardwareTimestamps() bool

func (*CapabilitiesResponse) GetPayloads

func (x *CapabilitiesResponse) GetPayloads() []string

func (*CapabilitiesResponse) GetSchedulers

func (x *CapabilitiesResponse) GetSchedulers() []string

func (*CapabilitiesResponse) ProtoMessage

func (*CapabilitiesResponse) ProtoMessage()

func (*CapabilitiesResponse) ProtoReflect

func (x *CapabilitiesResponse) ProtoReflect() protoreflect.Message

func (*CapabilitiesResponse) Reset

func (x *CapabilitiesResponse) Reset()

func (*CapabilitiesResponse) String

func (x *CapabilitiesResponse) String() string

type ConfigureRequest

type ConfigureRequest struct {
	Flow *FlowSpec `protobuf:"bytes,1,opt,name=flow,proto3" json:"flow,omitempty"`
	// contains filtered or unexported fields
}

func (*ConfigureRequest) Descriptor deprecated

func (*ConfigureRequest) Descriptor() ([]byte, []int)

Deprecated: Use ConfigureRequest.ProtoReflect.Descriptor instead.

func (*ConfigureRequest) GetFlow

func (x *ConfigureRequest) GetFlow() *FlowSpec

func (*ConfigureRequest) ProtoMessage

func (*ConfigureRequest) ProtoMessage()

func (*ConfigureRequest) ProtoReflect

func (x *ConfigureRequest) ProtoReflect() protoreflect.Message

func (*ConfigureRequest) Reset

func (x *ConfigureRequest) Reset()

func (*ConfigureRequest) String

func (x *ConfigureRequest) String() string

type ConfigureResponse

type ConfigureResponse struct {
	FlowId   string `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
	DataPort uint32 `protobuf:"varint,2,opt,name=data_port,json=dataPort,proto3" json:"data_port,omitempty"` // ephemeral port the agent will listen/send on
	// contains filtered or unexported fields
}

func (*ConfigureResponse) Descriptor deprecated

func (*ConfigureResponse) Descriptor() ([]byte, []int)

Deprecated: Use ConfigureResponse.ProtoReflect.Descriptor instead.

func (*ConfigureResponse) GetDataPort

func (x *ConfigureResponse) GetDataPort() uint32

func (*ConfigureResponse) GetFlowId

func (x *ConfigureResponse) GetFlowId() string

func (*ConfigureResponse) ProtoMessage

func (*ConfigureResponse) ProtoMessage()

func (*ConfigureResponse) ProtoReflect

func (x *ConfigureResponse) ProtoReflect() protoreflect.Message

func (*ConfigureResponse) Reset

func (x *ConfigureResponse) Reset()

func (*ConfigureResponse) String

func (x *ConfigureResponse) String() string

type ControlClient

type ControlClient interface {
	// Health reports liveness and version.
	Health(ctx context.Context, in *HealthRequest, opts ...grpc.CallOption) (*HealthResponse, error)
	// Register enrolls an agent with a controller and returns a session id.
	Register(ctx context.Context, in *RegisterRequest, opts ...grpc.CallOption) (*RegisterResponse, error)
	// Capabilities reports the agent's available datapaths/generators/etc.
	Capabilities(ctx context.Context, in *CapabilitiesRequest, opts ...grpc.CallOption) (*CapabilitiesResponse, error)
	// Configure prepares a flow and assigns its ephemeral data port.
	Configure(ctx context.Context, in *ConfigureRequest, opts ...grpc.CallOption) (*ConfigureResponse, error)
	// Arm readies a configured flow to start (without sending yet).
	Arm(ctx context.Context, in *ArmRequest, opts ...grpc.CallOption) (*ArmResponse, error)
	// Start begins a flow.
	Start(ctx context.Context, in *StartRequest, opts ...grpc.CallOption) (*StartResponse, error)
	// Stop ends a flow.
	Stop(ctx context.Context, in *StopRequest, opts ...grpc.CallOption) (*StopResponse, error)
	// Destroy tears a flow down and releases its resources.
	Destroy(ctx context.Context, in *DestroyRequest, opts ...grpc.CallOption) (*DestroyResponse, error)
	// TimeSync performs one four-timestamp clock-sync exchange.
	TimeSync(ctx context.Context, in *TimeSyncRequest, opts ...grpc.CallOption) (*TimeSyncResponse, error)
	// StreamTelemetry streams interval samples for a flow (or all flows).
	StreamTelemetry(ctx context.Context, in *TelemetryRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[TelemetrySample], error)
}

ControlClient is the client API for Control service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

Control is the controller <-> agent control plane (DESIGN.md §8). It carries coordination only; telemetry streams back on StreamTelemetry, and traffic flows over the data plane, never these RPCs.

func NewControlClient

func NewControlClient(cc grpc.ClientConnInterface) ControlClient

type ControlServer

type ControlServer interface {
	// Health reports liveness and version.
	Health(context.Context, *HealthRequest) (*HealthResponse, error)
	// Register enrolls an agent with a controller and returns a session id.
	Register(context.Context, *RegisterRequest) (*RegisterResponse, error)
	// Capabilities reports the agent's available datapaths/generators/etc.
	Capabilities(context.Context, *CapabilitiesRequest) (*CapabilitiesResponse, error)
	// Configure prepares a flow and assigns its ephemeral data port.
	Configure(context.Context, *ConfigureRequest) (*ConfigureResponse, error)
	// Arm readies a configured flow to start (without sending yet).
	Arm(context.Context, *ArmRequest) (*ArmResponse, error)
	// Start begins a flow.
	Start(context.Context, *StartRequest) (*StartResponse, error)
	// Stop ends a flow.
	Stop(context.Context, *StopRequest) (*StopResponse, error)
	// Destroy tears a flow down and releases its resources.
	Destroy(context.Context, *DestroyRequest) (*DestroyResponse, error)
	// TimeSync performs one four-timestamp clock-sync exchange.
	TimeSync(context.Context, *TimeSyncRequest) (*TimeSyncResponse, error)
	// StreamTelemetry streams interval samples for a flow (or all flows).
	StreamTelemetry(*TelemetryRequest, grpc.ServerStreamingServer[TelemetrySample]) error
	// contains filtered or unexported methods
}

ControlServer is the server API for Control service. All implementations must embed UnimplementedControlServer for forward compatibility.

Control is the controller <-> agent control plane (DESIGN.md §8). It carries coordination only; telemetry streams back on StreamTelemetry, and traffic flows over the data plane, never these RPCs.

type Control_StreamTelemetryClient

type Control_StreamTelemetryClient = grpc.ServerStreamingClient[TelemetrySample]

This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.

type Control_StreamTelemetryServer

type Control_StreamTelemetryServer = grpc.ServerStreamingServer[TelemetrySample]

This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name.

type DestroyRequest

type DestroyRequest struct {
	FlowId string `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
	// contains filtered or unexported fields
}

func (*DestroyRequest) Descriptor deprecated

func (*DestroyRequest) Descriptor() ([]byte, []int)

Deprecated: Use DestroyRequest.ProtoReflect.Descriptor instead.

func (*DestroyRequest) GetFlowId

func (x *DestroyRequest) GetFlowId() string

func (*DestroyRequest) ProtoMessage

func (*DestroyRequest) ProtoMessage()

func (*DestroyRequest) ProtoReflect

func (x *DestroyRequest) ProtoReflect() protoreflect.Message

func (*DestroyRequest) Reset

func (x *DestroyRequest) Reset()

func (*DestroyRequest) String

func (x *DestroyRequest) String() string

type DestroyResponse

type DestroyResponse struct {
	// contains filtered or unexported fields
}

func (*DestroyResponse) Descriptor deprecated

func (*DestroyResponse) Descriptor() ([]byte, []int)

Deprecated: Use DestroyResponse.ProtoReflect.Descriptor instead.

func (*DestroyResponse) ProtoMessage

func (*DestroyResponse) ProtoMessage()

func (*DestroyResponse) ProtoReflect

func (x *DestroyResponse) ProtoReflect() protoreflect.Message

func (*DestroyResponse) Reset

func (x *DestroyResponse) Reset()

func (*DestroyResponse) String

func (x *DestroyResponse) String() string

type FlowRole

type FlowRole int32

FlowRole is what a configured flow does. UNSPECIFIED is treated as SENDER, so an unset role defaults to sending.

const (
	FlowRole_FLOW_ROLE_UNSPECIFIED FlowRole = 0
	FlowRole_FLOW_ROLE_SENDER      FlowRole = 1
	FlowRole_FLOW_ROLE_RECEIVER    FlowRole = 2 // binds an ephemeral port and drains+accounts inbound
	FlowRole_FLOW_ROLE_REFLECTOR   FlowRole = 3 // echoes received packets (not yet implemented)
	// Request/response pair for emulations that need real bidirectional traffic
	// (e.g. https-browse): the responder binds an ephemeral port and serves the
	// bytes a requester asks for; the requester drives the behavior script.
	FlowRole_FLOW_ROLE_RESPONDER FlowRole = 4 // binds an ephemeral port, serves requested bytes
	FlowRole_FLOW_ROLE_REQUESTER FlowRole = 5 // drives a script, requesting objects from a responder
)

func (FlowRole) Descriptor

func (FlowRole) Descriptor() protoreflect.EnumDescriptor

func (FlowRole) Enum

func (x FlowRole) Enum() *FlowRole

func (FlowRole) EnumDescriptor deprecated

func (FlowRole) EnumDescriptor() ([]byte, []int)

Deprecated: Use FlowRole.Descriptor instead.

func (FlowRole) Number

func (x FlowRole) Number() protoreflect.EnumNumber

func (FlowRole) String

func (x FlowRole) String() string

func (FlowRole) Type

type FlowSpec

type FlowSpec struct {
	Generator  string `protobuf:"bytes,1,opt,name=generator,proto3" json:"generator,omitempty"`
	Payload    string `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
	Datapath   string `protobuf:"bytes,3,opt,name=datapath,proto3" json:"datapath,omitempty"`
	Target     string `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"` // host:port for udp/tcp
	PacketSize uint32 `protobuf:"varint,5,opt,name=packet_size,json=packetSize,proto3" json:"packet_size,omitempty"`
	Rate       string `protobuf:"bytes,6,opt,name=rate,proto3" json:"rate,omitempty"`    // e.g. "100Mbps"; empty = unlimited
	Iface      string `protobuf:"bytes,7,opt,name=iface,proto3" json:"iface,omitempty"`  // NIC name for the afxdp datapath
	Queue      uint32 `protobuf:"varint,8,opt,name=queue,proto3" json:"queue,omitempty"` // NIC queue for the afxdp datapath
	// emulation names an application-behavior emulation (e.g. "voip-call",
	// "https-browse"); empty = a raw flow. params are its tuning knobs.
	Emulation string `protobuf:"bytes,9,opt,name=emulation,proto3" json:"emulation,omitempty"`
	// Stop condition (whichever is reached first; all empty = until-stopped).
	Duration *durationpb.Duration `protobuf:"bytes,10,opt,name=duration,proto3" json:"duration,omitempty"`
	Count    uint64               `protobuf:"varint,11,opt,name=count,proto3" json:"count,omitempty"`   // packets
	Volume   uint64               `protobuf:"varint,12,opt,name=volume,proto3" json:"volume,omitempty"` // bytes
	Params   map[string]string    ``                                                                    // emulation parameters
	/* 140-byte string literal not displayed */
	Seed int64 `protobuf:"varint,14,opt,name=seed,proto3" json:"seed,omitempty"` // RNG seed for reproducible emulated shapes
	// transport carries request/response emulations (FLOW_ROLE_REQUESTER /
	// FLOW_ROLE_RESPONDER): "tcp" or "udp". Ignored by other roles, which use the
	// datapath field instead.
	Transport string `protobuf:"bytes,15,opt,name=transport,proto3" json:"transport,omitempty"`
	// role selects sender vs receiver (and, later, reflector). A receiver binds an
	// ephemeral UDP port returned as ConfigureResponse.data_port and
	// drains+accounts inbound packets instead of generating.
	Role FlowRole `protobuf:"varint,21,opt,name=role,proto3,enum=loom.v1.FlowRole" json:"role,omitempty"`
	// contains filtered or unexported fields
}

FlowSpec describes one flow to run, mirroring `loom run` flags.

func (*FlowSpec) Descriptor deprecated

func (*FlowSpec) Descriptor() ([]byte, []int)

Deprecated: Use FlowSpec.ProtoReflect.Descriptor instead.

func (*FlowSpec) GetCount

func (x *FlowSpec) GetCount() uint64

func (*FlowSpec) GetDatapath

func (x *FlowSpec) GetDatapath() string

func (*FlowSpec) GetDuration

func (x *FlowSpec) GetDuration() *durationpb.Duration

func (*FlowSpec) GetEmulation

func (x *FlowSpec) GetEmulation() string

func (*FlowSpec) GetGenerator

func (x *FlowSpec) GetGenerator() string

func (*FlowSpec) GetIface

func (x *FlowSpec) GetIface() string

func (*FlowSpec) GetPacketSize

func (x *FlowSpec) GetPacketSize() uint32

func (*FlowSpec) GetParams

func (x *FlowSpec) GetParams() map[string]string

func (*FlowSpec) GetPayload

func (x *FlowSpec) GetPayload() string

func (*FlowSpec) GetQueue

func (x *FlowSpec) GetQueue() uint32

func (*FlowSpec) GetRate

func (x *FlowSpec) GetRate() string

func (*FlowSpec) GetRole

func (x *FlowSpec) GetRole() FlowRole

func (*FlowSpec) GetSeed

func (x *FlowSpec) GetSeed() int64

func (*FlowSpec) GetTarget

func (x *FlowSpec) GetTarget() string

func (*FlowSpec) GetTransport added in v0.2.0

func (x *FlowSpec) GetTransport() string

func (*FlowSpec) GetVolume

func (x *FlowSpec) GetVolume() uint64

func (*FlowSpec) ProtoMessage

func (*FlowSpec) ProtoMessage()

func (*FlowSpec) ProtoReflect

func (x *FlowSpec) ProtoReflect() protoreflect.Message

func (*FlowSpec) Reset

func (x *FlowSpec) Reset()

func (*FlowSpec) String

func (x *FlowSpec) String() string

type HealthRequest

type HealthRequest struct {
	// contains filtered or unexported fields
}

func (*HealthRequest) Descriptor deprecated

func (*HealthRequest) Descriptor() ([]byte, []int)

Deprecated: Use HealthRequest.ProtoReflect.Descriptor instead.

func (*HealthRequest) ProtoMessage

func (*HealthRequest) ProtoMessage()

func (*HealthRequest) ProtoReflect

func (x *HealthRequest) ProtoReflect() protoreflect.Message

func (*HealthRequest) Reset

func (x *HealthRequest) Reset()

func (*HealthRequest) String

func (x *HealthRequest) String() string

type HealthResponse

type HealthResponse struct {
	Version    string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` // human-readable build version
	Ready      bool   `protobuf:"varint,2,opt,name=ready,proto3" json:"ready,omitempty"`
	ApiVersion uint32 `protobuf:"varint,3,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // control-plane wire version the agent speaks
	// contains filtered or unexported fields
}

func (*HealthResponse) Descriptor deprecated

func (*HealthResponse) Descriptor() ([]byte, []int)

Deprecated: Use HealthResponse.ProtoReflect.Descriptor instead.

func (*HealthResponse) GetApiVersion

func (x *HealthResponse) GetApiVersion() uint32

func (*HealthResponse) GetReady

func (x *HealthResponse) GetReady() bool

func (*HealthResponse) GetVersion

func (x *HealthResponse) GetVersion() string

func (*HealthResponse) ProtoMessage

func (*HealthResponse) ProtoMessage()

func (*HealthResponse) ProtoReflect

func (x *HealthResponse) ProtoReflect() protoreflect.Message

func (*HealthResponse) Reset

func (x *HealthResponse) Reset()

func (*HealthResponse) String

func (x *HealthResponse) String() string

type RegisterRequest

type RegisterRequest struct {
	AgentId    string   `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"`
	Hostname   string   `protobuf:"bytes,2,opt,name=hostname,proto3" json:"hostname,omitempty"`
	Tags       []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"`
	ApiVersion uint32   `protobuf:"varint,4,opt,name=api_version,json=apiVersion,proto3" json:"api_version,omitempty"` // wire version the controller speaks
	// contains filtered or unexported fields
}

func (*RegisterRequest) Descriptor deprecated

func (*RegisterRequest) Descriptor() ([]byte, []int)

Deprecated: Use RegisterRequest.ProtoReflect.Descriptor instead.

func (*RegisterRequest) GetAgentId

func (x *RegisterRequest) GetAgentId() string

func (*RegisterRequest) GetApiVersion

func (x *RegisterRequest) GetApiVersion() uint32

func (*RegisterRequest) GetHostname

func (x *RegisterRequest) GetHostname() string

func (*RegisterRequest) GetTags

func (x *RegisterRequest) GetTags() []string

func (*RegisterRequest) ProtoMessage

func (*RegisterRequest) ProtoMessage()

func (*RegisterRequest) ProtoReflect

func (x *RegisterRequest) ProtoReflect() protoreflect.Message

func (*RegisterRequest) Reset

func (x *RegisterRequest) Reset()

func (*RegisterRequest) String

func (x *RegisterRequest) String() string

type RegisterResponse

type RegisterResponse struct {
	Session string `protobuf:"bytes,1,opt,name=session,proto3" json:"session,omitempty"`
	// contains filtered or unexported fields
}

func (*RegisterResponse) Descriptor deprecated

func (*RegisterResponse) Descriptor() ([]byte, []int)

Deprecated: Use RegisterResponse.ProtoReflect.Descriptor instead.

func (*RegisterResponse) GetSession

func (x *RegisterResponse) GetSession() string

func (*RegisterResponse) ProtoMessage

func (*RegisterResponse) ProtoMessage()

func (*RegisterResponse) ProtoReflect

func (x *RegisterResponse) ProtoReflect() protoreflect.Message

func (*RegisterResponse) Reset

func (x *RegisterResponse) Reset()

func (*RegisterResponse) String

func (x *RegisterResponse) String() string

type StartRequest

type StartRequest struct {
	FlowId string `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
	// start_at_unix_nanos schedules the flow to begin at an absolute time on the
	// agent's own clock (the controller translates a shared target time into each
	// agent's clock using the TimeSync offset, so flows on different hosts begin in
	// lockstep regardless of link latency). 0 (or a past time) starts immediately.
	StartAtUnixNanos int64 `protobuf:"varint,2,opt,name=start_at_unix_nanos,json=startAtUnixNanos,proto3" json:"start_at_unix_nanos,omitempty"`
	// report_interval_nanos is the reporting interval I. The agent emits one
	// telemetry sample per interval boundary at start_at + k*I (anchored to the
	// gate, or to first run when start_at is 0), each carrying that interval's
	// delta. 0 = legacy free-running cadence (back-compat with older controllers).
	ReportIntervalNanos int64 `protobuf:"varint,3,opt,name=report_interval_nanos,json=reportIntervalNanos,proto3" json:"report_interval_nanos,omitempty"`
	// contains filtered or unexported fields
}

func (*StartRequest) Descriptor deprecated

func (*StartRequest) Descriptor() ([]byte, []int)

Deprecated: Use StartRequest.ProtoReflect.Descriptor instead.

func (*StartRequest) GetFlowId

func (x *StartRequest) GetFlowId() string

func (*StartRequest) GetReportIntervalNanos added in v0.4.0

func (x *StartRequest) GetReportIntervalNanos() int64

func (*StartRequest) GetStartAtUnixNanos added in v0.3.0

func (x *StartRequest) GetStartAtUnixNanos() int64

func (*StartRequest) ProtoMessage

func (*StartRequest) ProtoMessage()

func (*StartRequest) ProtoReflect

func (x *StartRequest) ProtoReflect() protoreflect.Message

func (*StartRequest) Reset

func (x *StartRequest) Reset()

func (*StartRequest) String

func (x *StartRequest) String() string

type StartResponse

type StartResponse struct {
	// contains filtered or unexported fields
}

func (*StartResponse) Descriptor deprecated

func (*StartResponse) Descriptor() ([]byte, []int)

Deprecated: Use StartResponse.ProtoReflect.Descriptor instead.

func (*StartResponse) ProtoMessage

func (*StartResponse) ProtoMessage()

func (*StartResponse) ProtoReflect

func (x *StartResponse) ProtoReflect() protoreflect.Message

func (*StartResponse) Reset

func (x *StartResponse) Reset()

func (*StartResponse) String

func (x *StartResponse) String() string

type StopRequest

type StopRequest struct {
	FlowId string `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
	// contains filtered or unexported fields
}

func (*StopRequest) Descriptor deprecated

func (*StopRequest) Descriptor() ([]byte, []int)

Deprecated: Use StopRequest.ProtoReflect.Descriptor instead.

func (*StopRequest) GetFlowId

func (x *StopRequest) GetFlowId() string

func (*StopRequest) ProtoMessage

func (*StopRequest) ProtoMessage()

func (*StopRequest) ProtoReflect

func (x *StopRequest) ProtoReflect() protoreflect.Message

func (*StopRequest) Reset

func (x *StopRequest) Reset()

func (*StopRequest) String

func (x *StopRequest) String() string

type StopResponse

type StopResponse struct {
	// contains filtered or unexported fields
}

func (*StopResponse) Descriptor deprecated

func (*StopResponse) Descriptor() ([]byte, []int)

Deprecated: Use StopResponse.ProtoReflect.Descriptor instead.

func (*StopResponse) ProtoMessage

func (*StopResponse) ProtoMessage()

func (*StopResponse) ProtoReflect

func (x *StopResponse) ProtoReflect() protoreflect.Message

func (*StopResponse) Reset

func (x *StopResponse) Reset()

func (*StopResponse) String

func (x *StopResponse) String() string

type TcpInfo added in v0.8.0

type TcpInfo struct {
	TotalRetrans uint32 `protobuf:"varint,1,opt,name=total_retrans,json=totalRetrans,proto3" json:"total_retrans,omitempty"` // cumulative retransmitted segments
	Lost         uint32 `protobuf:"varint,2,opt,name=lost,proto3" json:"lost,omitempty"`                                     // segments currently considered lost
	RttUs        uint32 `protobuf:"varint,3,opt,name=rtt_us,json=rttUs,proto3" json:"rtt_us,omitempty"`                      // smoothed round-trip time (microseconds)
	RttvarUs     uint32 `protobuf:"varint,4,opt,name=rttvar_us,json=rttvarUs,proto3" json:"rttvar_us,omitempty"`             // round-trip time variance (microseconds)
	SndCwnd      uint32 `protobuf:"varint,5,opt,name=snd_cwnd,json=sndCwnd,proto3" json:"snd_cwnd,omitempty"`                // congestion window (segments)
	SndSsthresh  uint32 `protobuf:"varint,6,opt,name=snd_ssthresh,json=sndSsthresh,proto3" json:"snd_ssthresh,omitempty"`    // slow-start threshold (segments)
	// contains filtered or unexported fields
}

TcpInfo carries a snapshot of the sender socket's kernel TCP_INFO, for link profiling (is TCP entering a bad state?). Populated only for the TCP datapath on the sending side; zero/absent otherwise.

func (*TcpInfo) Descriptor deprecated added in v0.8.0

func (*TcpInfo) Descriptor() ([]byte, []int)

Deprecated: Use TcpInfo.ProtoReflect.Descriptor instead.

func (*TcpInfo) GetLost added in v0.8.0

func (x *TcpInfo) GetLost() uint32

func (*TcpInfo) GetRttUs added in v0.8.0

func (x *TcpInfo) GetRttUs() uint32

func (*TcpInfo) GetRttvarUs added in v0.8.0

func (x *TcpInfo) GetRttvarUs() uint32

func (*TcpInfo) GetSndCwnd added in v0.8.0

func (x *TcpInfo) GetSndCwnd() uint32

func (*TcpInfo) GetSndSsthresh added in v0.8.0

func (x *TcpInfo) GetSndSsthresh() uint32

func (*TcpInfo) GetTotalRetrans added in v0.8.0

func (x *TcpInfo) GetTotalRetrans() uint32

func (*TcpInfo) ProtoMessage added in v0.8.0

func (*TcpInfo) ProtoMessage()

func (*TcpInfo) ProtoReflect added in v0.8.0

func (x *TcpInfo) ProtoReflect() protoreflect.Message

func (*TcpInfo) Reset added in v0.8.0

func (x *TcpInfo) Reset()

func (*TcpInfo) String added in v0.8.0

func (x *TcpInfo) String() string

type TelemetryRequest

type TelemetryRequest struct {
	FlowId string `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"` // empty = all flows
	// contains filtered or unexported fields
}

func (*TelemetryRequest) Descriptor deprecated

func (*TelemetryRequest) Descriptor() ([]byte, []int)

Deprecated: Use TelemetryRequest.ProtoReflect.Descriptor instead.

func (*TelemetryRequest) GetFlowId

func (x *TelemetryRequest) GetFlowId() string

func (*TelemetryRequest) ProtoMessage

func (*TelemetryRequest) ProtoMessage()

func (*TelemetryRequest) ProtoReflect

func (x *TelemetryRequest) ProtoReflect() protoreflect.Message

func (*TelemetryRequest) Reset

func (x *TelemetryRequest) Reset()

func (*TelemetryRequest) String

func (x *TelemetryRequest) String() string

type TelemetrySample

type TelemetrySample struct {
	FlowId     string  `protobuf:"bytes,1,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
	Nanos      int64   `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`                                // agent timestamp of this reading (the boundary)
	Bytes      uint64  `protobuf:"varint,3,opt,name=bytes,proto3" json:"bytes,omitempty"`                                // cumulative bytes
	Packets    uint64  `protobuf:"varint,4,opt,name=packets,proto3" json:"packets,omitempty"`                            // cumulative packets
	BitsPerSec float64 `protobuf:"fixed64,5,opt,name=bits_per_sec,json=bitsPerSec,proto3" json:"bits_per_sec,omitempty"` // legacy; the controller computes rate from the delta
	// Interval accounting, anchored to the scheduled-start gate. The agent reads
	// its counters at each boundary start_at + k*I and reports the interval's delta,
	// so the controller is a pure summer (no central rate clock).
	IntervalIndex   int64    `protobuf:"varint,6,opt,name=interval_index,json=intervalIndex,proto3" json:"interval_index,omitempty"`       // k: 0 for [T,T+I], 1 for [T+I,T+2I], …; -1 on the final sample
	IntervalBytes   uint64   `protobuf:"varint,7,opt,name=interval_bytes,json=intervalBytes,proto3" json:"interval_bytes,omitempty"`       // delta bytes during interval k
	IntervalPackets uint64   `protobuf:"varint,8,opt,name=interval_packets,json=intervalPackets,proto3" json:"interval_packets,omitempty"` // delta packets during interval k
	IntervalNanos   int64    `protobuf:"varint,9,opt,name=interval_nanos,json=intervalNanos,proto3" json:"interval_nanos,omitempty"`       // measured elapsed ns of interval k (rate = interval_bytes*8/interval_nanos)
	Final           bool     `protobuf:"varint,10,opt,name=final,proto3" json:"final,omitempty"`                                           // true on the completion sample (trailing partial interval)
	Tcp             *TcpInfo `protobuf:"bytes,11,opt,name=tcp,proto3" json:"tcp,omitempty"`                                                // sender-side TCP_INFO diagnostics (nil for non-TCP datapaths)
	// contains filtered or unexported fields
}

func (*TelemetrySample) Descriptor deprecated

func (*TelemetrySample) Descriptor() ([]byte, []int)

Deprecated: Use TelemetrySample.ProtoReflect.Descriptor instead.

func (*TelemetrySample) GetBitsPerSec

func (x *TelemetrySample) GetBitsPerSec() float64

func (*TelemetrySample) GetBytes

func (x *TelemetrySample) GetBytes() uint64

func (*TelemetrySample) GetFinal added in v0.4.0

func (x *TelemetrySample) GetFinal() bool

func (*TelemetrySample) GetFlowId

func (x *TelemetrySample) GetFlowId() string

func (*TelemetrySample) GetIntervalBytes added in v0.4.0

func (x *TelemetrySample) GetIntervalBytes() uint64

func (*TelemetrySample) GetIntervalIndex added in v0.4.0

func (x *TelemetrySample) GetIntervalIndex() int64

func (*TelemetrySample) GetIntervalNanos added in v0.4.0

func (x *TelemetrySample) GetIntervalNanos() int64

func (*TelemetrySample) GetIntervalPackets added in v0.4.0

func (x *TelemetrySample) GetIntervalPackets() uint64

func (*TelemetrySample) GetNanos

func (x *TelemetrySample) GetNanos() int64

func (*TelemetrySample) GetPackets

func (x *TelemetrySample) GetPackets() uint64

func (*TelemetrySample) GetTcp added in v0.8.0

func (x *TelemetrySample) GetTcp() *TcpInfo

func (*TelemetrySample) ProtoMessage

func (*TelemetrySample) ProtoMessage()

func (*TelemetrySample) ProtoReflect

func (x *TelemetrySample) ProtoReflect() protoreflect.Message

func (*TelemetrySample) Reset

func (x *TelemetrySample) Reset()

func (*TelemetrySample) String

func (x *TelemetrySample) String() string

type TimeSyncRequest

type TimeSyncRequest struct {
	T1 int64 `protobuf:"varint,1,opt,name=t1,proto3" json:"t1,omitempty"`
	// contains filtered or unexported fields
}

TimeSync four-timestamp exchange: client stamps t1, server stamps t2 (recv) and t3 (send), client stamps t4 on receipt.

func (*TimeSyncRequest) Descriptor deprecated

func (*TimeSyncRequest) Descriptor() ([]byte, []int)

Deprecated: Use TimeSyncRequest.ProtoReflect.Descriptor instead.

func (*TimeSyncRequest) GetT1

func (x *TimeSyncRequest) GetT1() int64

func (*TimeSyncRequest) ProtoMessage

func (*TimeSyncRequest) ProtoMessage()

func (*TimeSyncRequest) ProtoReflect

func (x *TimeSyncRequest) ProtoReflect() protoreflect.Message

func (*TimeSyncRequest) Reset

func (x *TimeSyncRequest) Reset()

func (*TimeSyncRequest) String

func (x *TimeSyncRequest) String() string

type TimeSyncResponse

type TimeSyncResponse struct {
	T1 int64 `protobuf:"varint,1,opt,name=t1,proto3" json:"t1,omitempty"`
	T2 int64 `protobuf:"varint,2,opt,name=t2,proto3" json:"t2,omitempty"`
	T3 int64 `protobuf:"varint,3,opt,name=t3,proto3" json:"t3,omitempty"`
	// contains filtered or unexported fields
}

func (*TimeSyncResponse) Descriptor deprecated

func (*TimeSyncResponse) Descriptor() ([]byte, []int)

Deprecated: Use TimeSyncResponse.ProtoReflect.Descriptor instead.

func (*TimeSyncResponse) GetT1

func (x *TimeSyncResponse) GetT1() int64

func (*TimeSyncResponse) GetT2

func (x *TimeSyncResponse) GetT2() int64

func (*TimeSyncResponse) GetT3

func (x *TimeSyncResponse) GetT3() int64

func (*TimeSyncResponse) ProtoMessage

func (*TimeSyncResponse) ProtoMessage()

func (*TimeSyncResponse) ProtoReflect

func (x *TimeSyncResponse) ProtoReflect() protoreflect.Message

func (*TimeSyncResponse) Reset

func (x *TimeSyncResponse) Reset()

func (*TimeSyncResponse) String

func (x *TimeSyncResponse) String() string

type UnimplementedControlServer

type UnimplementedControlServer struct{}

UnimplementedControlServer must be embedded to have forward compatible implementations.

NOTE: this should be embedded by value instead of pointer to avoid a nil pointer dereference when methods are called.

func (UnimplementedControlServer) Arm

func (UnimplementedControlServer) Capabilities

func (UnimplementedControlServer) Configure

func (UnimplementedControlServer) Destroy

func (UnimplementedControlServer) Health

func (UnimplementedControlServer) Register

func (UnimplementedControlServer) Start

func (UnimplementedControlServer) Stop

func (UnimplementedControlServer) StreamTelemetry

func (UnimplementedControlServer) TimeSync

type UnsafeControlServer

type UnsafeControlServer interface {
	// contains filtered or unexported methods
}

UnsafeControlServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to ControlServer will result in compilation errors.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL