Checker / reload:
- Reload's update-in-place branch now mirrors b.Address onto the
runtime health.Backend. Without this, GetBackend kept returning
the pre-reload address indefinitely after a config edit that
touched addresses but not healthcheck settings — the VPP sync
path reads cfg.Backends directly so the dataplane moved on
while the gRPC and SPA view stayed wedged on the old IPv4/IPv6.
Sync (internal/vpp/lbsync.go):
- reconcileVIP now detects encap mismatch in addition to
src-ip-sticky mismatch and takes the full tear-down / re-add
path via a new shared recreateVIP helper. Triggered when every
backend flips address family (gre4 <-> gre6) and the existing
VIP can no longer accept new ASes — previously the sync wedged
with 'Invalid address family' until a full maglevd restart.
- setASWeight is issued whenever the state machine requests
flush (a.Flush=true), not only on the weight-value transition
edge. Fixes the case where a backend reached StateDisabled
after its effective weight had already been drained to 0 by
pool failover — the sticky-cache entries pointing at it were
previously never cleared.
maglev-frontend:
- signal.Ignore(SIGHUP) so a controlling-terminal disconnect
doesn't kill the daemon.
- debian/vpp-maglev.service grants CAP_SYS_ADMIN in addition to
CAP_NET_RAW so setns(CLONE_NEWNET) can join the healthcheck
netns. Comment documents the 'operation not permitted' symptom
and notes the knob can be dropped if the deployment doesn't use
the 'netns:' healthcheck option.
LB plugin counters (internal/vpp/lbstats.go + friends):
- Fix the VIP counter regex: the LB plugin registers
vlib_simple_counter_main_t names without a leading '/'
(vlib_validate_simple_counter in counter.c:50 uses cm->name
verbatim; only entries that set cm->stat_segment_name get a
slash). first/next/untracked/no-server now read through as
live values instead of zero.
- Drop the per-backend FIB counter block end-to-end (proto,
grpcapi, metrics, vpp.Client, lbstats, maglevc). Traced from
lb/node.c:558 into ip{4,6}_forward.h:141 — the LB plugin
forwards by writing adj_index[VLIB_TX] directly and bypassing
ip{4,6}_lookup_inline, which is the only path that increments
lbm_to_counters. The backend's FIB load_balance stats_index
literally never ticks for LB-forwarded traffic, so the column
was always zero and misleading. docs/implementation/TODO
records the full investigation and the recommended upstream
path (new lb_as_stats_dump API message) for when we're ready
to carry that VPP patch.
- maglevc show vpp lb counters: plain-text tabular headers.
label() wraps strings in ANSI escapes (~11 bytes of overhead),
but tabwriter counts bytes, not rendered width — so a header
row with label()'d cells and data rows with plain cells drifts
column alignment on every row. color.go comment now spells
out the constraint: label() only works when column N is
wrapped identically in every row (key-value layouts are fine,
multi-column tables with header-only labelling are not).
SPA:
- stores/scope.ts is cookie-backed (maglev_scope, 1 year,
SameSite=Lax). App.tsx hydrates from the cookie then validates
against the fetched snapshots: a cookie referencing a maglevd
that no longer exists falls through to snaps[0] instead of
leaving the user on a ghost selection.
- components/Flash.tsx wraps props.value in createMemo. Solid's
on() fires its callback on every dep notification, not on
value change — source is right in solid-js/dist/solid.js:460,
no equality check. Without the memo, flipping scope between
two 'connected' maglevds (or any other cross-store reactive
re-eval that doesn't actually change the concrete string)
replays the animation every time. createMemo's default ===
dedupe fixes it in one place for every Flash consumer,
superseding the local createMemo workaround we'd added in
BackendRow earlier.
2846 lines
86 KiB
Go
2846 lines
86 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// versions:
|
|
// protoc-gen-go v1.36.11
|
|
// protoc v3.21.12
|
|
// source: proto/maglev.proto
|
|
|
|
package grpcapi
|
|
|
|
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)
|
|
)
|
|
|
|
type ListFrontendsRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListFrontendsRequest) Reset() {
|
|
*x = ListFrontendsRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[0]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListFrontendsRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListFrontendsRequest) ProtoMessage() {}
|
|
|
|
func (x *ListFrontendsRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ListFrontendsRequest.ProtoReflect.Descriptor instead.
|
|
func (*ListFrontendsRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{0}
|
|
}
|
|
|
|
type GetFrontendRequest 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 *GetFrontendRequest) Reset() {
|
|
*x = GetFrontendRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[1]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetFrontendRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetFrontendRequest) ProtoMessage() {}
|
|
|
|
func (x *GetFrontendRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 GetFrontendRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetFrontendRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{1}
|
|
}
|
|
|
|
func (x *GetFrontendRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ListBackendsRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListBackendsRequest) Reset() {
|
|
*x = ListBackendsRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[2]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListBackendsRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListBackendsRequest) ProtoMessage() {}
|
|
|
|
func (x *ListBackendsRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ListBackendsRequest.ProtoReflect.Descriptor instead.
|
|
func (*ListBackendsRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{2}
|
|
}
|
|
|
|
type GetBackendRequest 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 *GetBackendRequest) Reset() {
|
|
*x = GetBackendRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[3]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetBackendRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetBackendRequest) ProtoMessage() {}
|
|
|
|
func (x *GetBackendRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 GetBackendRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetBackendRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{3}
|
|
}
|
|
|
|
func (x *GetBackendRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type BackendRequest 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 *BackendRequest) Reset() {
|
|
*x = BackendRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[4]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BackendRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BackendRequest) ProtoMessage() {}
|
|
|
|
func (x *BackendRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 BackendRequest.ProtoReflect.Descriptor instead.
|
|
func (*BackendRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{4}
|
|
}
|
|
|
|
func (x *BackendRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ListHealthChecksRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListHealthChecksRequest) Reset() {
|
|
*x = ListHealthChecksRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[5]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListHealthChecksRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListHealthChecksRequest) ProtoMessage() {}
|
|
|
|
func (x *ListHealthChecksRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ListHealthChecksRequest.ProtoReflect.Descriptor instead.
|
|
func (*ListHealthChecksRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{5}
|
|
}
|
|
|
|
type GetHealthCheckRequest 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 *GetHealthCheckRequest) Reset() {
|
|
*x = GetHealthCheckRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[6]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetHealthCheckRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetHealthCheckRequest) ProtoMessage() {}
|
|
|
|
func (x *GetHealthCheckRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 GetHealthCheckRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetHealthCheckRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{6}
|
|
}
|
|
|
|
func (x *GetHealthCheckRequest) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type CheckConfigRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *CheckConfigRequest) Reset() {
|
|
*x = CheckConfigRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[7]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *CheckConfigRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*CheckConfigRequest) ProtoMessage() {}
|
|
|
|
func (x *CheckConfigRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 CheckConfigRequest.ProtoReflect.Descriptor instead.
|
|
func (*CheckConfigRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{7}
|
|
}
|
|
|
|
type CheckConfigResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`
|
|
ParseError string `protobuf:"bytes,2,opt,name=parse_error,json=parseError,proto3" json:"parse_error,omitempty"` // set when YAML cannot be read or parsed
|
|
SemanticError string `protobuf:"bytes,3,opt,name=semantic_error,json=semanticError,proto3" json:"semantic_error,omitempty"` // set when YAML is valid but semantically incorrect
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *CheckConfigResponse) Reset() {
|
|
*x = CheckConfigResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[8]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *CheckConfigResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*CheckConfigResponse) ProtoMessage() {}
|
|
|
|
func (x *CheckConfigResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 CheckConfigResponse.ProtoReflect.Descriptor instead.
|
|
func (*CheckConfigResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{8}
|
|
}
|
|
|
|
func (x *CheckConfigResponse) GetOk() bool {
|
|
if x != nil {
|
|
return x.Ok
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *CheckConfigResponse) GetParseError() string {
|
|
if x != nil {
|
|
return x.ParseError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *CheckConfigResponse) GetSemanticError() string {
|
|
if x != nil {
|
|
return x.SemanticError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type ReloadConfigRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ReloadConfigRequest) Reset() {
|
|
*x = ReloadConfigRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[9]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ReloadConfigRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ReloadConfigRequest) ProtoMessage() {}
|
|
|
|
func (x *ReloadConfigRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ReloadConfigRequest.ProtoReflect.Descriptor instead.
|
|
func (*ReloadConfigRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{9}
|
|
}
|
|
|
|
type ReloadConfigResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ok bool `protobuf:"varint,1,opt,name=ok,proto3" json:"ok,omitempty"`
|
|
ParseError string `protobuf:"bytes,2,opt,name=parse_error,json=parseError,proto3" json:"parse_error,omitempty"` // set when YAML cannot be read or parsed
|
|
SemanticError string `protobuf:"bytes,3,opt,name=semantic_error,json=semanticError,proto3" json:"semantic_error,omitempty"` // set when YAML is valid but semantically incorrect
|
|
ReloadError string `protobuf:"bytes,4,opt,name=reload_error,json=reloadError,proto3" json:"reload_error,omitempty"` // set when config is valid but the reload itself failed
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) Reset() {
|
|
*x = ReloadConfigResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[10]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ReloadConfigResponse) ProtoMessage() {}
|
|
|
|
func (x *ReloadConfigResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ReloadConfigResponse.ProtoReflect.Descriptor instead.
|
|
func (*ReloadConfigResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{10}
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetOk() bool {
|
|
if x != nil {
|
|
return x.Ok
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetParseError() string {
|
|
if x != nil {
|
|
return x.ParseError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetSemanticError() string {
|
|
if x != nil {
|
|
return x.SemanticError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *ReloadConfigResponse) GetReloadError() string {
|
|
if x != nil {
|
|
return x.ReloadError
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type GetVPPInfoRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetVPPInfoRequest) Reset() {
|
|
*x = GetVPPInfoRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[11]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetVPPInfoRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetVPPInfoRequest) ProtoMessage() {}
|
|
|
|
func (x *GetVPPInfoRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 GetVPPInfoRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetVPPInfoRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{11}
|
|
}
|
|
|
|
type VPPInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
|
|
BuildDate string `protobuf:"bytes,2,opt,name=build_date,json=buildDate,proto3" json:"build_date,omitempty"`
|
|
BuildDirectory string `protobuf:"bytes,3,opt,name=build_directory,json=buildDirectory,proto3" json:"build_directory,omitempty"`
|
|
Pid uint32 `protobuf:"varint,4,opt,name=pid,proto3" json:"pid,omitempty"`
|
|
BoottimeNs int64 `protobuf:"varint,5,opt,name=boottime_ns,json=boottimeNs,proto3" json:"boottime_ns,omitempty"` // unix timestamp (ns) when VPP started (from /sys/boottime)
|
|
ConnecttimeNs int64 `protobuf:"varint,6,opt,name=connecttime_ns,json=connecttimeNs,proto3" json:"connecttime_ns,omitempty"` // unix timestamp (ns) when maglevd connected to VPP
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPInfo) Reset() {
|
|
*x = VPPInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[12]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPInfo) ProtoMessage() {}
|
|
|
|
func (x *VPPInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPInfo.ProtoReflect.Descriptor instead.
|
|
func (*VPPInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{12}
|
|
}
|
|
|
|
func (x *VPPInfo) GetVersion() string {
|
|
if x != nil {
|
|
return x.Version
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPInfo) GetBuildDate() string {
|
|
if x != nil {
|
|
return x.BuildDate
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPInfo) GetBuildDirectory() string {
|
|
if x != nil {
|
|
return x.BuildDirectory
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPInfo) GetPid() uint32 {
|
|
if x != nil {
|
|
return x.Pid
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPInfo) GetBoottimeNs() int64 {
|
|
if x != nil {
|
|
return x.BoottimeNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPInfo) GetConnecttimeNs() int64 {
|
|
if x != nil {
|
|
return x.ConnecttimeNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type GetVPPLBStateRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetVPPLBStateRequest) Reset() {
|
|
*x = GetVPPLBStateRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[13]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetVPPLBStateRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetVPPLBStateRequest) ProtoMessage() {}
|
|
|
|
func (x *GetVPPLBStateRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 GetVPPLBStateRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetVPPLBStateRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{13}
|
|
}
|
|
|
|
// VPPLBConf mirrors VPP's lb_conf_get_reply: global LB plugin settings.
|
|
type VPPLBConf struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ip4SrcAddress string `protobuf:"bytes,1,opt,name=ip4_src_address,json=ip4SrcAddress,proto3" json:"ip4_src_address,omitempty"`
|
|
Ip6SrcAddress string `protobuf:"bytes,2,opt,name=ip6_src_address,json=ip6SrcAddress,proto3" json:"ip6_src_address,omitempty"`
|
|
StickyBucketsPerCore uint32 `protobuf:"varint,3,opt,name=sticky_buckets_per_core,json=stickyBucketsPerCore,proto3" json:"sticky_buckets_per_core,omitempty"`
|
|
FlowTimeout uint32 `protobuf:"varint,4,opt,name=flow_timeout,json=flowTimeout,proto3" json:"flow_timeout,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBConf) Reset() {
|
|
*x = VPPLBConf{}
|
|
mi := &file_proto_maglev_proto_msgTypes[14]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBConf) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBConf) ProtoMessage() {}
|
|
|
|
func (x *VPPLBConf) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPLBConf.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBConf) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{14}
|
|
}
|
|
|
|
func (x *VPPLBConf) GetIp4SrcAddress() string {
|
|
if x != nil {
|
|
return x.Ip4SrcAddress
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBConf) GetIp6SrcAddress() string {
|
|
if x != nil {
|
|
return x.Ip6SrcAddress
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBConf) GetStickyBucketsPerCore() uint32 {
|
|
if x != nil {
|
|
return x.StickyBucketsPerCore
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBConf) GetFlowTimeout() uint32 {
|
|
if x != nil {
|
|
return x.FlowTimeout
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// VPPLBAS is one application server attached to a VIP.
|
|
type VPPLBAS struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
|
|
Weight uint32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` // 0-100
|
|
Flags uint32 `protobuf:"varint,3,opt,name=flags,proto3" json:"flags,omitempty"` // VPP AS flags (bit 0 = used, bit 1 = flushed)
|
|
NumBuckets uint32 `protobuf:"varint,4,opt,name=num_buckets,json=numBuckets,proto3" json:"num_buckets,omitempty"`
|
|
InUseSinceNs int64 `protobuf:"varint,5,opt,name=in_use_since_ns,json=inUseSinceNs,proto3" json:"in_use_since_ns,omitempty"` // unix timestamp (ns), 0 if never used
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBAS) Reset() {
|
|
*x = VPPLBAS{}
|
|
mi := &file_proto_maglev_proto_msgTypes[15]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBAS) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBAS) ProtoMessage() {}
|
|
|
|
func (x *VPPLBAS) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPLBAS.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBAS) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{15}
|
|
}
|
|
|
|
func (x *VPPLBAS) GetAddress() string {
|
|
if x != nil {
|
|
return x.Address
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBAS) GetWeight() uint32 {
|
|
if x != nil {
|
|
return x.Weight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBAS) GetFlags() uint32 {
|
|
if x != nil {
|
|
return x.Flags
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBAS) GetNumBuckets() uint32 {
|
|
if x != nil {
|
|
return x.NumBuckets
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBAS) GetInUseSinceNs() int64 {
|
|
if x != nil {
|
|
return x.InUseSinceNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// VPPLBVIP mirrors VPP's lb_vip_details plus the attached application servers.
|
|
// Note: srv_type, dscp, and target_port are intentionally omitted — maglevd
|
|
// only supports GRE encap, so NAT/L3DSR-specific fields don't apply.
|
|
type VPPLBVIP struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` // CIDR, e.g. 192.0.2.1/32
|
|
Protocol uint32 `protobuf:"varint,2,opt,name=protocol,proto3" json:"protocol,omitempty"` // 6=TCP, 17=UDP, 255=any
|
|
Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` // 0 = all-port VIP
|
|
Encap string `protobuf:"bytes,4,opt,name=encap,proto3" json:"encap,omitempty"` // gre4|gre6|l3dsr|nat4|nat6
|
|
FlowTableLength uint32 `protobuf:"varint,5,opt,name=flow_table_length,json=flowTableLength,proto3" json:"flow_table_length,omitempty"`
|
|
ApplicationServers []*VPPLBAS `protobuf:"bytes,6,rep,name=application_servers,json=applicationServers,proto3" json:"application_servers,omitempty"`
|
|
SrcIpSticky bool `protobuf:"varint,7,opt,name=src_ip_sticky,json=srcIpSticky,proto3" json:"src_ip_sticky,omitempty"` // source-IP based sticky session (scraped via cli_inband)
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBVIP) Reset() {
|
|
*x = VPPLBVIP{}
|
|
mi := &file_proto_maglev_proto_msgTypes[16]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBVIP) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBVIP) ProtoMessage() {}
|
|
|
|
func (x *VPPLBVIP) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPLBVIP.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBVIP) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{16}
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetPrefix() string {
|
|
if x != nil {
|
|
return x.Prefix
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetProtocol() uint32 {
|
|
if x != nil {
|
|
return x.Protocol
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetEncap() string {
|
|
if x != nil {
|
|
return x.Encap
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetFlowTableLength() uint32 {
|
|
if x != nil {
|
|
return x.FlowTableLength
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetApplicationServers() []*VPPLBAS {
|
|
if x != nil {
|
|
return x.ApplicationServers
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *VPPLBVIP) GetSrcIpSticky() bool {
|
|
if x != nil {
|
|
return x.SrcIpSticky
|
|
}
|
|
return false
|
|
}
|
|
|
|
type VPPLBState struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Conf *VPPLBConf `protobuf:"bytes,1,opt,name=conf,proto3" json:"conf,omitempty"`
|
|
Vips []*VPPLBVIP `protobuf:"bytes,2,rep,name=vips,proto3" json:"vips,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBState) Reset() {
|
|
*x = VPPLBState{}
|
|
mi := &file_proto_maglev_proto_msgTypes[17]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBState) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBState) ProtoMessage() {}
|
|
|
|
func (x *VPPLBState) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPLBState.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBState) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{17}
|
|
}
|
|
|
|
func (x *VPPLBState) GetConf() *VPPLBConf {
|
|
if x != nil {
|
|
return x.Conf
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *VPPLBState) GetVips() []*VPPLBVIP {
|
|
if x != nil {
|
|
return x.Vips
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SyncVPPLBStateRequest triggers a reconciliation between the maglev config
|
|
// and the VPP load-balancer dataplane. When frontend_name is set, only that
|
|
// frontend's VIP is synced (SyncLBStateVIP) and no VIPs are removed. When
|
|
// unset, a full reconciliation runs (SyncLBStateAll), which will also remove
|
|
// stale VIPs from VPP.
|
|
type SyncVPPLBStateRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
FrontendName *string `protobuf:"bytes,1,opt,name=frontend_name,json=frontendName,proto3,oneof" json:"frontend_name,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SyncVPPLBStateRequest) Reset() {
|
|
*x = SyncVPPLBStateRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[18]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SyncVPPLBStateRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SyncVPPLBStateRequest) ProtoMessage() {}
|
|
|
|
func (x *SyncVPPLBStateRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 SyncVPPLBStateRequest.ProtoReflect.Descriptor instead.
|
|
func (*SyncVPPLBStateRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{18}
|
|
}
|
|
|
|
func (x *SyncVPPLBStateRequest) GetFrontendName() string {
|
|
if x != nil && x.FrontendName != nil {
|
|
return *x.FrontendName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type SyncVPPLBStateResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SyncVPPLBStateResponse) Reset() {
|
|
*x = SyncVPPLBStateResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[19]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SyncVPPLBStateResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SyncVPPLBStateResponse) ProtoMessage() {}
|
|
|
|
func (x *SyncVPPLBStateResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 SyncVPPLBStateResponse.ProtoReflect.Descriptor instead.
|
|
func (*SyncVPPLBStateResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{19}
|
|
}
|
|
|
|
// GetVPPLBCountersRequest asks maglevd for the most recent per-VIP and
|
|
// per-backend counter snapshot. The data is served from an in-process
|
|
// cache that is refreshed every ~5 seconds server-side; the call itself
|
|
// is cheap and does not hit VPP.
|
|
type GetVPPLBCountersRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *GetVPPLBCountersRequest) Reset() {
|
|
*x = GetVPPLBCountersRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[20]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *GetVPPLBCountersRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*GetVPPLBCountersRequest) ProtoMessage() {}
|
|
|
|
func (x *GetVPPLBCountersRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 GetVPPLBCountersRequest.ProtoReflect.Descriptor instead.
|
|
func (*GetVPPLBCountersRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{20}
|
|
}
|
|
|
|
// VPPLBVIPCounters is the point-in-time counter row for a single VIP.
|
|
// The four lb_* fields are the LB plugin's SimpleCounters (packets only);
|
|
// packets / bytes come from the VPP FIB's combined counter at the VIP's
|
|
// host prefix (/net/route/to).
|
|
type VPPLBVIPCounters struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` // CIDR, e.g. 192.0.2.1/32
|
|
Protocol string `protobuf:"bytes,2,opt,name=protocol,proto3" json:"protocol,omitempty"` // tcp | udp | any
|
|
Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
|
|
NextPacket uint64 `protobuf:"varint,4,opt,name=next_packet,json=nextPacket,proto3" json:"next_packet,omitempty"` // "/packet from existing sessions"
|
|
FirstPacket uint64 `protobuf:"varint,5,opt,name=first_packet,json=firstPacket,proto3" json:"first_packet,omitempty"` // "/first session packet"
|
|
UntrackedPacket uint64 `protobuf:"varint,6,opt,name=untracked_packet,json=untrackedPacket,proto3" json:"untracked_packet,omitempty"` // "/untracked packet"
|
|
NoServer uint64 `protobuf:"varint,7,opt,name=no_server,json=noServer,proto3" json:"no_server,omitempty"` // "/no server configured"
|
|
Packets uint64 `protobuf:"varint,8,opt,name=packets,proto3" json:"packets,omitempty"` // /net/route/to (FIB, summed across workers)
|
|
Bytes uint64 `protobuf:"varint,9,opt,name=bytes,proto3" json:"bytes,omitempty"` // /net/route/to (FIB, summed across workers)
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) Reset() {
|
|
*x = VPPLBVIPCounters{}
|
|
mi := &file_proto_maglev_proto_msgTypes[21]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBVIPCounters) ProtoMessage() {}
|
|
|
|
func (x *VPPLBVIPCounters) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPLBVIPCounters.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBVIPCounters) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{21}
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetPrefix() string {
|
|
if x != nil {
|
|
return x.Prefix
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetProtocol() string {
|
|
if x != nil {
|
|
return x.Protocol
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetNextPacket() uint64 {
|
|
if x != nil {
|
|
return x.NextPacket
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetFirstPacket() uint64 {
|
|
if x != nil {
|
|
return x.FirstPacket
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetUntrackedPacket() uint64 {
|
|
if x != nil {
|
|
return x.UntrackedPacket
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetNoServer() uint64 {
|
|
if x != nil {
|
|
return x.NoServer
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetPackets() uint64 {
|
|
if x != nil {
|
|
return x.Packets
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *VPPLBVIPCounters) GetBytes() uint64 {
|
|
if x != nil {
|
|
return x.Bytes
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// VPPLBCounters wraps the per-VIP counter list returned by
|
|
// GetVPPLBCounters. There is no per-backend counter block: VPP's LB
|
|
// plugin forwarding node bypasses ip{4,6}_lookup_inline and writes
|
|
// adj_index[VLIB_TX] directly, so /net/route/to at a backend's FIB
|
|
// entry never ticks for LB-forwarded traffic — the four per-VIP
|
|
// counters are the only per-VIP-and-coarser signal VPP exposes today.
|
|
type VPPLBCounters struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Vips []*VPPLBVIPCounters `protobuf:"bytes,1,rep,name=vips,proto3" json:"vips,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *VPPLBCounters) Reset() {
|
|
*x = VPPLBCounters{}
|
|
mi := &file_proto_maglev_proto_msgTypes[22]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *VPPLBCounters) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*VPPLBCounters) ProtoMessage() {}
|
|
|
|
func (x *VPPLBCounters) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 VPPLBCounters.ProtoReflect.Descriptor instead.
|
|
func (*VPPLBCounters) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{22}
|
|
}
|
|
|
|
func (x *VPPLBCounters) GetVips() []*VPPLBVIPCounters {
|
|
if x != nil {
|
|
return x.Vips
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type SetWeightRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Frontend string `protobuf:"bytes,1,opt,name=frontend,proto3" json:"frontend,omitempty"`
|
|
Pool string `protobuf:"bytes,2,opt,name=pool,proto3" json:"pool,omitempty"`
|
|
Backend string `protobuf:"bytes,3,opt,name=backend,proto3" json:"backend,omitempty"`
|
|
Weight int32 `protobuf:"varint,4,opt,name=weight,proto3" json:"weight,omitempty"` // 0-100
|
|
// flush, when true, also clears VPP's flow table for this backend
|
|
// so existing sessions are torn down. When false (default), only
|
|
// Maglev's new-bucket mapping is updated and live flows keep
|
|
// draining to this backend.
|
|
Flush bool `protobuf:"varint,5,opt,name=flush,proto3" json:"flush,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *SetWeightRequest) Reset() {
|
|
*x = SetWeightRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[23]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *SetWeightRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*SetWeightRequest) ProtoMessage() {}
|
|
|
|
func (x *SetWeightRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 SetWeightRequest.ProtoReflect.Descriptor instead.
|
|
func (*SetWeightRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{23}
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetFrontend() string {
|
|
if x != nil {
|
|
return x.Frontend
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetPool() string {
|
|
if x != nil {
|
|
return x.Pool
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetBackend() string {
|
|
if x != nil {
|
|
return x.Backend
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetWeight() int32 {
|
|
if x != nil {
|
|
return x.Weight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *SetWeightRequest) GetFlush() bool {
|
|
if x != nil {
|
|
return x.Flush
|
|
}
|
|
return false
|
|
}
|
|
|
|
// WatchRequest controls which event types are streamed. All fields default to
|
|
// true (i.e. an empty request subscribes to everything at info level).
|
|
type WatchRequest struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Log *bool `protobuf:"varint,1,opt,name=log,proto3,oneof" json:"log,omitempty"` // include log events (default: true)
|
|
LogLevel string `protobuf:"bytes,2,opt,name=log_level,json=logLevel,proto3" json:"log_level,omitempty"` // minimum log level: debug|info|warn|error (default: info)
|
|
Backend *bool `protobuf:"varint,3,opt,name=backend,proto3,oneof" json:"backend,omitempty"` // include backend transition events (default: true)
|
|
Frontend *bool `protobuf:"varint,4,opt,name=frontend,proto3,oneof" json:"frontend,omitempty"` // include frontend events (default: true)
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *WatchRequest) Reset() {
|
|
*x = WatchRequest{}
|
|
mi := &file_proto_maglev_proto_msgTypes[24]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *WatchRequest) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*WatchRequest) ProtoMessage() {}
|
|
|
|
func (x *WatchRequest) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 WatchRequest.ProtoReflect.Descriptor instead.
|
|
func (*WatchRequest) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{24}
|
|
}
|
|
|
|
func (x *WatchRequest) GetLog() bool {
|
|
if x != nil && x.Log != nil {
|
|
return *x.Log
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *WatchRequest) GetLogLevel() string {
|
|
if x != nil {
|
|
return x.LogLevel
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *WatchRequest) GetBackend() bool {
|
|
if x != nil && x.Backend != nil {
|
|
return *x.Backend
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *WatchRequest) GetFrontend() bool {
|
|
if x != nil && x.Frontend != nil {
|
|
return *x.Frontend
|
|
}
|
|
return false
|
|
}
|
|
|
|
type ListFrontendsResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
FrontendNames []string `protobuf:"bytes,1,rep,name=frontend_names,json=frontendNames,proto3" json:"frontend_names,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListFrontendsResponse) Reset() {
|
|
*x = ListFrontendsResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[25]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListFrontendsResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListFrontendsResponse) ProtoMessage() {}
|
|
|
|
func (x *ListFrontendsResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ListFrontendsResponse.ProtoReflect.Descriptor instead.
|
|
func (*ListFrontendsResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{25}
|
|
}
|
|
|
|
func (x *ListFrontendsResponse) GetFrontendNames() []string {
|
|
if x != nil {
|
|
return x.FrontendNames
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type PoolBackendInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Weight int32 `protobuf:"varint,2,opt,name=weight,proto3" json:"weight,omitempty"` // configured weight from YAML (0-100)
|
|
EffectiveWeight int32 `protobuf:"varint,3,opt,name=effective_weight,json=effectiveWeight,proto3" json:"effective_weight,omitempty"` // state-aware weight after pool-failover logic
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PoolBackendInfo) Reset() {
|
|
*x = PoolBackendInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[26]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PoolBackendInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PoolBackendInfo) ProtoMessage() {}
|
|
|
|
func (x *PoolBackendInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 PoolBackendInfo.ProtoReflect.Descriptor instead.
|
|
func (*PoolBackendInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{26}
|
|
}
|
|
|
|
func (x *PoolBackendInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PoolBackendInfo) GetWeight() int32 {
|
|
if x != nil {
|
|
return x.Weight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *PoolBackendInfo) GetEffectiveWeight() int32 {
|
|
if x != nil {
|
|
return x.EffectiveWeight
|
|
}
|
|
return 0
|
|
}
|
|
|
|
type PoolInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Backends []*PoolBackendInfo `protobuf:"bytes,2,rep,name=backends,proto3" json:"backends,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *PoolInfo) Reset() {
|
|
*x = PoolInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[27]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *PoolInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*PoolInfo) ProtoMessage() {}
|
|
|
|
func (x *PoolInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 PoolInfo.ProtoReflect.Descriptor instead.
|
|
func (*PoolInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{27}
|
|
}
|
|
|
|
func (x *PoolInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *PoolInfo) GetBackends() []*PoolBackendInfo {
|
|
if x != nil {
|
|
return x.Backends
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type FrontendInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
|
|
Protocol string `protobuf:"bytes,3,opt,name=protocol,proto3" json:"protocol,omitempty"`
|
|
Port uint32 `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
|
|
Pools []*PoolInfo `protobuf:"bytes,5,rep,name=pools,proto3" json:"pools,omitempty"`
|
|
Description string `protobuf:"bytes,6,opt,name=description,proto3" json:"description,omitempty"`
|
|
SrcIpSticky bool `protobuf:"varint,7,opt,name=src_ip_sticky,json=srcIpSticky,proto3" json:"src_ip_sticky,omitempty"` // VPP LB uses src-IP-based stickiness for this VIP
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *FrontendInfo) Reset() {
|
|
*x = FrontendInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[28]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *FrontendInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*FrontendInfo) ProtoMessage() {}
|
|
|
|
func (x *FrontendInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 FrontendInfo.ProtoReflect.Descriptor instead.
|
|
func (*FrontendInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{28}
|
|
}
|
|
|
|
func (x *FrontendInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetAddress() string {
|
|
if x != nil {
|
|
return x.Address
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetProtocol() string {
|
|
if x != nil {
|
|
return x.Protocol
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *FrontendInfo) GetPools() []*PoolInfo {
|
|
if x != nil {
|
|
return x.Pools
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *FrontendInfo) GetDescription() string {
|
|
if x != nil {
|
|
return x.Description
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendInfo) GetSrcIpSticky() bool {
|
|
if x != nil {
|
|
return x.SrcIpSticky
|
|
}
|
|
return false
|
|
}
|
|
|
|
type ListBackendsResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
BackendNames []string `protobuf:"bytes,1,rep,name=backend_names,json=backendNames,proto3" json:"backend_names,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListBackendsResponse) Reset() {
|
|
*x = ListBackendsResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[29]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListBackendsResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListBackendsResponse) ProtoMessage() {}
|
|
|
|
func (x *ListBackendsResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ListBackendsResponse.ProtoReflect.Descriptor instead.
|
|
func (*ListBackendsResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{29}
|
|
}
|
|
|
|
func (x *ListBackendsResponse) GetBackendNames() []string {
|
|
if x != nil {
|
|
return x.BackendNames
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type ListHealthChecksResponse struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *ListHealthChecksResponse) Reset() {
|
|
*x = ListHealthChecksResponse{}
|
|
mi := &file_proto_maglev_proto_msgTypes[30]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *ListHealthChecksResponse) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*ListHealthChecksResponse) ProtoMessage() {}
|
|
|
|
func (x *ListHealthChecksResponse) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 ListHealthChecksResponse.ProtoReflect.Descriptor instead.
|
|
func (*ListHealthChecksResponse) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{30}
|
|
}
|
|
|
|
func (x *ListHealthChecksResponse) GetNames() []string {
|
|
if x != nil {
|
|
return x.Names
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type HTTPCheckParams struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
|
|
Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
|
|
ResponseCodeMin int32 `protobuf:"varint,3,opt,name=response_code_min,json=responseCodeMin,proto3" json:"response_code_min,omitempty"`
|
|
ResponseCodeMax int32 `protobuf:"varint,4,opt,name=response_code_max,json=responseCodeMax,proto3" json:"response_code_max,omitempty"`
|
|
ResponseRegexp string `protobuf:"bytes,5,opt,name=response_regexp,json=responseRegexp,proto3" json:"response_regexp,omitempty"`
|
|
ServerName string `protobuf:"bytes,6,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"`
|
|
InsecureSkipVerify bool `protobuf:"varint,7,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *HTTPCheckParams) Reset() {
|
|
*x = HTTPCheckParams{}
|
|
mi := &file_proto_maglev_proto_msgTypes[31]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *HTTPCheckParams) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*HTTPCheckParams) ProtoMessage() {}
|
|
|
|
func (x *HTTPCheckParams) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 HTTPCheckParams.ProtoReflect.Descriptor instead.
|
|
func (*HTTPCheckParams) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{31}
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetPath() string {
|
|
if x != nil {
|
|
return x.Path
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetHost() string {
|
|
if x != nil {
|
|
return x.Host
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetResponseCodeMin() int32 {
|
|
if x != nil {
|
|
return x.ResponseCodeMin
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetResponseCodeMax() int32 {
|
|
if x != nil {
|
|
return x.ResponseCodeMax
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetResponseRegexp() string {
|
|
if x != nil {
|
|
return x.ResponseRegexp
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetServerName() string {
|
|
if x != nil {
|
|
return x.ServerName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HTTPCheckParams) GetInsecureSkipVerify() bool {
|
|
if x != nil {
|
|
return x.InsecureSkipVerify
|
|
}
|
|
return false
|
|
}
|
|
|
|
type TCPCheckParams struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Ssl bool `protobuf:"varint,1,opt,name=ssl,proto3" json:"ssl,omitempty"`
|
|
ServerName string `protobuf:"bytes,2,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"`
|
|
InsecureSkipVerify bool `protobuf:"varint,3,opt,name=insecure_skip_verify,json=insecureSkipVerify,proto3" json:"insecure_skip_verify,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *TCPCheckParams) Reset() {
|
|
*x = TCPCheckParams{}
|
|
mi := &file_proto_maglev_proto_msgTypes[32]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *TCPCheckParams) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*TCPCheckParams) ProtoMessage() {}
|
|
|
|
func (x *TCPCheckParams) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 TCPCheckParams.ProtoReflect.Descriptor instead.
|
|
func (*TCPCheckParams) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{32}
|
|
}
|
|
|
|
func (x *TCPCheckParams) GetSsl() bool {
|
|
if x != nil {
|
|
return x.Ssl
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *TCPCheckParams) GetServerName() string {
|
|
if x != nil {
|
|
return x.ServerName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *TCPCheckParams) GetInsecureSkipVerify() bool {
|
|
if x != nil {
|
|
return x.InsecureSkipVerify
|
|
}
|
|
return false
|
|
}
|
|
|
|
type HealthCheckInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`
|
|
Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"`
|
|
ProbeIpv4Src string `protobuf:"bytes,4,opt,name=probe_ipv4_src,json=probeIpv4Src,proto3" json:"probe_ipv4_src,omitempty"`
|
|
ProbeIpv6Src string `protobuf:"bytes,5,opt,name=probe_ipv6_src,json=probeIpv6Src,proto3" json:"probe_ipv6_src,omitempty"`
|
|
IntervalNs int64 `protobuf:"varint,6,opt,name=interval_ns,json=intervalNs,proto3" json:"interval_ns,omitempty"`
|
|
FastIntervalNs int64 `protobuf:"varint,7,opt,name=fast_interval_ns,json=fastIntervalNs,proto3" json:"fast_interval_ns,omitempty"`
|
|
DownIntervalNs int64 `protobuf:"varint,8,opt,name=down_interval_ns,json=downIntervalNs,proto3" json:"down_interval_ns,omitempty"`
|
|
TimeoutNs int64 `protobuf:"varint,9,opt,name=timeout_ns,json=timeoutNs,proto3" json:"timeout_ns,omitempty"`
|
|
Rise int32 `protobuf:"varint,10,opt,name=rise,proto3" json:"rise,omitempty"`
|
|
Fall int32 `protobuf:"varint,11,opt,name=fall,proto3" json:"fall,omitempty"`
|
|
Http *HTTPCheckParams `protobuf:"bytes,12,opt,name=http,proto3" json:"http,omitempty"`
|
|
Tcp *TCPCheckParams `protobuf:"bytes,13,opt,name=tcp,proto3" json:"tcp,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *HealthCheckInfo) Reset() {
|
|
*x = HealthCheckInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[33]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *HealthCheckInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*HealthCheckInfo) ProtoMessage() {}
|
|
|
|
func (x *HealthCheckInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 HealthCheckInfo.ProtoReflect.Descriptor instead.
|
|
func (*HealthCheckInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{33}
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetType() string {
|
|
if x != nil {
|
|
return x.Type
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetPort() uint32 {
|
|
if x != nil {
|
|
return x.Port
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetProbeIpv4Src() string {
|
|
if x != nil {
|
|
return x.ProbeIpv4Src
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetProbeIpv6Src() string {
|
|
if x != nil {
|
|
return x.ProbeIpv6Src
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetIntervalNs() int64 {
|
|
if x != nil {
|
|
return x.IntervalNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetFastIntervalNs() int64 {
|
|
if x != nil {
|
|
return x.FastIntervalNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetDownIntervalNs() int64 {
|
|
if x != nil {
|
|
return x.DownIntervalNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetTimeoutNs() int64 {
|
|
if x != nil {
|
|
return x.TimeoutNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetRise() int32 {
|
|
if x != nil {
|
|
return x.Rise
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetFall() int32 {
|
|
if x != nil {
|
|
return x.Fall
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetHttp() *HTTPCheckParams {
|
|
if x != nil {
|
|
return x.Http
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *HealthCheckInfo) GetTcp() *TCPCheckParams {
|
|
if x != nil {
|
|
return x.Tcp
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type BackendInfo struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
|
|
State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"`
|
|
Transitions []*TransitionRecord `protobuf:"bytes,4,rep,name=transitions,proto3" json:"transitions,omitempty"`
|
|
Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"`
|
|
Healthcheck string `protobuf:"bytes,6,opt,name=healthcheck,proto3" json:"healthcheck,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *BackendInfo) Reset() {
|
|
*x = BackendInfo{}
|
|
mi := &file_proto_maglev_proto_msgTypes[34]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BackendInfo) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BackendInfo) ProtoMessage() {}
|
|
|
|
func (x *BackendInfo) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 BackendInfo.ProtoReflect.Descriptor instead.
|
|
func (*BackendInfo) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{34}
|
|
}
|
|
|
|
func (x *BackendInfo) GetName() string {
|
|
if x != nil {
|
|
return x.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendInfo) GetAddress() string {
|
|
if x != nil {
|
|
return x.Address
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendInfo) GetState() string {
|
|
if x != nil {
|
|
return x.State
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendInfo) GetTransitions() []*TransitionRecord {
|
|
if x != nil {
|
|
return x.Transitions
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *BackendInfo) GetEnabled() bool {
|
|
if x != nil {
|
|
return x.Enabled
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (x *BackendInfo) GetHealthcheck() string {
|
|
if x != nil {
|
|
return x.Healthcheck
|
|
}
|
|
return ""
|
|
}
|
|
|
|
type TransitionRecord struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
|
|
To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
|
|
AtUnixNs int64 `protobuf:"varint,3,opt,name=at_unix_ns,json=atUnixNs,proto3" json:"at_unix_ns,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *TransitionRecord) Reset() {
|
|
*x = TransitionRecord{}
|
|
mi := &file_proto_maglev_proto_msgTypes[35]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *TransitionRecord) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*TransitionRecord) ProtoMessage() {}
|
|
|
|
func (x *TransitionRecord) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 TransitionRecord.ProtoReflect.Descriptor instead.
|
|
func (*TransitionRecord) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{35}
|
|
}
|
|
|
|
func (x *TransitionRecord) GetFrom() string {
|
|
if x != nil {
|
|
return x.From
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *TransitionRecord) GetTo() string {
|
|
if x != nil {
|
|
return x.To
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *TransitionRecord) GetAtUnixNs() int64 {
|
|
if x != nil {
|
|
return x.AtUnixNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// LogAttr is a single key/value attribute from a structured log record.
|
|
type LogAttr struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
|
|
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *LogAttr) Reset() {
|
|
*x = LogAttr{}
|
|
mi := &file_proto_maglev_proto_msgTypes[36]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *LogAttr) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LogAttr) ProtoMessage() {}
|
|
|
|
func (x *LogAttr) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 LogAttr.ProtoReflect.Descriptor instead.
|
|
func (*LogAttr) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{36}
|
|
}
|
|
|
|
func (x *LogAttr) GetKey() string {
|
|
if x != nil {
|
|
return x.Key
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LogAttr) GetValue() string {
|
|
if x != nil {
|
|
return x.Value
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// LogEvent carries a single structured log record.
|
|
type LogEvent struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
AtUnixNs int64 `protobuf:"varint,1,opt,name=at_unix_ns,json=atUnixNs,proto3" json:"at_unix_ns,omitempty"`
|
|
Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"`
|
|
Msg string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
|
|
Attrs []*LogAttr `protobuf:"bytes,4,rep,name=attrs,proto3" json:"attrs,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *LogEvent) Reset() {
|
|
*x = LogEvent{}
|
|
mi := &file_proto_maglev_proto_msgTypes[37]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *LogEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*LogEvent) ProtoMessage() {}
|
|
|
|
func (x *LogEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 LogEvent.ProtoReflect.Descriptor instead.
|
|
func (*LogEvent) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{37}
|
|
}
|
|
|
|
func (x *LogEvent) GetAtUnixNs() int64 {
|
|
if x != nil {
|
|
return x.AtUnixNs
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (x *LogEvent) GetLevel() string {
|
|
if x != nil {
|
|
return x.Level
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LogEvent) GetMsg() string {
|
|
if x != nil {
|
|
return x.Msg
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *LogEvent) GetAttrs() []*LogAttr {
|
|
if x != nil {
|
|
return x.Attrs
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// BackendEvent is emitted on every backend state transition.
|
|
type BackendEvent struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
BackendName string `protobuf:"bytes,1,opt,name=backend_name,json=backendName,proto3" json:"backend_name,omitempty"`
|
|
Transition *TransitionRecord `protobuf:"bytes,2,opt,name=transition,proto3" json:"transition,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *BackendEvent) Reset() {
|
|
*x = BackendEvent{}
|
|
mi := &file_proto_maglev_proto_msgTypes[38]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *BackendEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*BackendEvent) ProtoMessage() {}
|
|
|
|
func (x *BackendEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 BackendEvent.ProtoReflect.Descriptor instead.
|
|
func (*BackendEvent) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{38}
|
|
}
|
|
|
|
func (x *BackendEvent) GetBackendName() string {
|
|
if x != nil {
|
|
return x.BackendName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *BackendEvent) GetTransition() *TransitionRecord {
|
|
if x != nil {
|
|
return x.Transition
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// FrontendEvent is emitted when a frontend's aggregate state changes.
|
|
// Frontends have three states: unknown, up, down. See docs/healthchecks.md.
|
|
type FrontendEvent struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
FrontendName string `protobuf:"bytes,1,opt,name=frontend_name,json=frontendName,proto3" json:"frontend_name,omitempty"`
|
|
Transition *TransitionRecord `protobuf:"bytes,2,opt,name=transition,proto3" json:"transition,omitempty"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *FrontendEvent) Reset() {
|
|
*x = FrontendEvent{}
|
|
mi := &file_proto_maglev_proto_msgTypes[39]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *FrontendEvent) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*FrontendEvent) ProtoMessage() {}
|
|
|
|
func (x *FrontendEvent) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 FrontendEvent.ProtoReflect.Descriptor instead.
|
|
func (*FrontendEvent) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{39}
|
|
}
|
|
|
|
func (x *FrontendEvent) GetFrontendName() string {
|
|
if x != nil {
|
|
return x.FrontendName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (x *FrontendEvent) GetTransition() *TransitionRecord {
|
|
if x != nil {
|
|
return x.Transition
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Event is the envelope returned by WatchEvents.
|
|
type Event struct {
|
|
state protoimpl.MessageState `protogen:"open.v1"`
|
|
// Types that are valid to be assigned to Event:
|
|
//
|
|
// *Event_Log
|
|
// *Event_Backend
|
|
// *Event_Frontend
|
|
Event isEvent_Event `protobuf_oneof:"event"`
|
|
unknownFields protoimpl.UnknownFields
|
|
sizeCache protoimpl.SizeCache
|
|
}
|
|
|
|
func (x *Event) Reset() {
|
|
*x = Event{}
|
|
mi := &file_proto_maglev_proto_msgTypes[40]
|
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
ms.StoreMessageInfo(mi)
|
|
}
|
|
|
|
func (x *Event) String() string {
|
|
return protoimpl.X.MessageStringOf(x)
|
|
}
|
|
|
|
func (*Event) ProtoMessage() {}
|
|
|
|
func (x *Event) ProtoReflect() protoreflect.Message {
|
|
mi := &file_proto_maglev_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 Event.ProtoReflect.Descriptor instead.
|
|
func (*Event) Descriptor() ([]byte, []int) {
|
|
return file_proto_maglev_proto_rawDescGZIP(), []int{40}
|
|
}
|
|
|
|
func (x *Event) GetEvent() isEvent_Event {
|
|
if x != nil {
|
|
return x.Event
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Event) GetLog() *LogEvent {
|
|
if x != nil {
|
|
if x, ok := x.Event.(*Event_Log); ok {
|
|
return x.Log
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Event) GetBackend() *BackendEvent {
|
|
if x != nil {
|
|
if x, ok := x.Event.(*Event_Backend); ok {
|
|
return x.Backend
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (x *Event) GetFrontend() *FrontendEvent {
|
|
if x != nil {
|
|
if x, ok := x.Event.(*Event_Frontend); ok {
|
|
return x.Frontend
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type isEvent_Event interface {
|
|
isEvent_Event()
|
|
}
|
|
|
|
type Event_Log struct {
|
|
Log *LogEvent `protobuf:"bytes,1,opt,name=log,proto3,oneof"`
|
|
}
|
|
|
|
type Event_Backend struct {
|
|
Backend *BackendEvent `protobuf:"bytes,2,opt,name=backend,proto3,oneof"`
|
|
}
|
|
|
|
type Event_Frontend struct {
|
|
Frontend *FrontendEvent `protobuf:"bytes,3,opt,name=frontend,proto3,oneof"`
|
|
}
|
|
|
|
func (*Event_Log) isEvent_Event() {}
|
|
|
|
func (*Event_Backend) isEvent_Event() {}
|
|
|
|
func (*Event_Frontend) isEvent_Event() {}
|
|
|
|
var File_proto_maglev_proto protoreflect.FileDescriptor
|
|
|
|
const file_proto_maglev_proto_rawDesc = "" +
|
|
"\n" +
|
|
"\x12proto/maglev.proto\x12\x06maglev\"\x16\n" +
|
|
"\x14ListFrontendsRequest\"(\n" +
|
|
"\x12GetFrontendRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"\x15\n" +
|
|
"\x13ListBackendsRequest\"'\n" +
|
|
"\x11GetBackendRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"$\n" +
|
|
"\x0eBackendRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"\x19\n" +
|
|
"\x17ListHealthChecksRequest\"+\n" +
|
|
"\x15GetHealthCheckRequest\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\"\x14\n" +
|
|
"\x12CheckConfigRequest\"m\n" +
|
|
"\x13CheckConfigResponse\x12\x0e\n" +
|
|
"\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1f\n" +
|
|
"\vparse_error\x18\x02 \x01(\tR\n" +
|
|
"parseError\x12%\n" +
|
|
"\x0esemantic_error\x18\x03 \x01(\tR\rsemanticError\"\x15\n" +
|
|
"\x13ReloadConfigRequest\"\x91\x01\n" +
|
|
"\x14ReloadConfigResponse\x12\x0e\n" +
|
|
"\x02ok\x18\x01 \x01(\bR\x02ok\x12\x1f\n" +
|
|
"\vparse_error\x18\x02 \x01(\tR\n" +
|
|
"parseError\x12%\n" +
|
|
"\x0esemantic_error\x18\x03 \x01(\tR\rsemanticError\x12!\n" +
|
|
"\freload_error\x18\x04 \x01(\tR\vreloadError\"\x13\n" +
|
|
"\x11GetVPPInfoRequest\"\xc5\x01\n" +
|
|
"\aVPPInfo\x12\x18\n" +
|
|
"\aversion\x18\x01 \x01(\tR\aversion\x12\x1d\n" +
|
|
"\n" +
|
|
"build_date\x18\x02 \x01(\tR\tbuildDate\x12'\n" +
|
|
"\x0fbuild_directory\x18\x03 \x01(\tR\x0ebuildDirectory\x12\x10\n" +
|
|
"\x03pid\x18\x04 \x01(\rR\x03pid\x12\x1f\n" +
|
|
"\vboottime_ns\x18\x05 \x01(\x03R\n" +
|
|
"boottimeNs\x12%\n" +
|
|
"\x0econnecttime_ns\x18\x06 \x01(\x03R\rconnecttimeNs\"\x16\n" +
|
|
"\x14GetVPPLBStateRequest\"\xb5\x01\n" +
|
|
"\tVPPLBConf\x12&\n" +
|
|
"\x0fip4_src_address\x18\x01 \x01(\tR\rip4SrcAddress\x12&\n" +
|
|
"\x0fip6_src_address\x18\x02 \x01(\tR\rip6SrcAddress\x125\n" +
|
|
"\x17sticky_buckets_per_core\x18\x03 \x01(\rR\x14stickyBucketsPerCore\x12!\n" +
|
|
"\fflow_timeout\x18\x04 \x01(\rR\vflowTimeout\"\x99\x01\n" +
|
|
"\aVPPLBAS\x12\x18\n" +
|
|
"\aaddress\x18\x01 \x01(\tR\aaddress\x12\x16\n" +
|
|
"\x06weight\x18\x02 \x01(\rR\x06weight\x12\x14\n" +
|
|
"\x05flags\x18\x03 \x01(\rR\x05flags\x12\x1f\n" +
|
|
"\vnum_buckets\x18\x04 \x01(\rR\n" +
|
|
"numBuckets\x12%\n" +
|
|
"\x0fin_use_since_ns\x18\x05 \x01(\x03R\finUseSinceNs\"\xfa\x01\n" +
|
|
"\bVPPLBVIP\x12\x16\n" +
|
|
"\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1a\n" +
|
|
"\bprotocol\x18\x02 \x01(\rR\bprotocol\x12\x12\n" +
|
|
"\x04port\x18\x03 \x01(\rR\x04port\x12\x14\n" +
|
|
"\x05encap\x18\x04 \x01(\tR\x05encap\x12*\n" +
|
|
"\x11flow_table_length\x18\x05 \x01(\rR\x0fflowTableLength\x12@\n" +
|
|
"\x13application_servers\x18\x06 \x03(\v2\x0f.maglev.VPPLBASR\x12applicationServers\x12\"\n" +
|
|
"\rsrc_ip_sticky\x18\a \x01(\bR\vsrcIpSticky\"Y\n" +
|
|
"\n" +
|
|
"VPPLBState\x12%\n" +
|
|
"\x04conf\x18\x01 \x01(\v2\x11.maglev.VPPLBConfR\x04conf\x12$\n" +
|
|
"\x04vips\x18\x02 \x03(\v2\x10.maglev.VPPLBVIPR\x04vips\"S\n" +
|
|
"\x15SyncVPPLBStateRequest\x12(\n" +
|
|
"\rfrontend_name\x18\x01 \x01(\tH\x00R\ffrontendName\x88\x01\x01B\x10\n" +
|
|
"\x0e_frontend_name\"\x18\n" +
|
|
"\x16SyncVPPLBStateResponse\"\x19\n" +
|
|
"\x17GetVPPLBCountersRequest\"\x96\x02\n" +
|
|
"\x10VPPLBVIPCounters\x12\x16\n" +
|
|
"\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1a\n" +
|
|
"\bprotocol\x18\x02 \x01(\tR\bprotocol\x12\x12\n" +
|
|
"\x04port\x18\x03 \x01(\rR\x04port\x12\x1f\n" +
|
|
"\vnext_packet\x18\x04 \x01(\x04R\n" +
|
|
"nextPacket\x12!\n" +
|
|
"\ffirst_packet\x18\x05 \x01(\x04R\vfirstPacket\x12)\n" +
|
|
"\x10untracked_packet\x18\x06 \x01(\x04R\x0funtrackedPacket\x12\x1b\n" +
|
|
"\tno_server\x18\a \x01(\x04R\bnoServer\x12\x18\n" +
|
|
"\apackets\x18\b \x01(\x04R\apackets\x12\x14\n" +
|
|
"\x05bytes\x18\t \x01(\x04R\x05bytes\"C\n" +
|
|
"\rVPPLBCounters\x12,\n" +
|
|
"\x04vips\x18\x01 \x03(\v2\x18.maglev.VPPLBVIPCountersR\x04vipsJ\x04\b\x02\x10\x03\"\x8a\x01\n" +
|
|
"\x10SetWeightRequest\x12\x1a\n" +
|
|
"\bfrontend\x18\x01 \x01(\tR\bfrontend\x12\x12\n" +
|
|
"\x04pool\x18\x02 \x01(\tR\x04pool\x12\x18\n" +
|
|
"\abackend\x18\x03 \x01(\tR\abackend\x12\x16\n" +
|
|
"\x06weight\x18\x04 \x01(\x05R\x06weight\x12\x14\n" +
|
|
"\x05flush\x18\x05 \x01(\bR\x05flush\"\xa3\x01\n" +
|
|
"\fWatchRequest\x12\x15\n" +
|
|
"\x03log\x18\x01 \x01(\bH\x00R\x03log\x88\x01\x01\x12\x1b\n" +
|
|
"\tlog_level\x18\x02 \x01(\tR\blogLevel\x12\x1d\n" +
|
|
"\abackend\x18\x03 \x01(\bH\x01R\abackend\x88\x01\x01\x12\x1f\n" +
|
|
"\bfrontend\x18\x04 \x01(\bH\x02R\bfrontend\x88\x01\x01B\x06\n" +
|
|
"\x04_logB\n" +
|
|
"\n" +
|
|
"\b_backendB\v\n" +
|
|
"\t_frontend\">\n" +
|
|
"\x15ListFrontendsResponse\x12%\n" +
|
|
"\x0efrontend_names\x18\x01 \x03(\tR\rfrontendNames\"h\n" +
|
|
"\x0fPoolBackendInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x16\n" +
|
|
"\x06weight\x18\x02 \x01(\x05R\x06weight\x12)\n" +
|
|
"\x10effective_weight\x18\x03 \x01(\x05R\x0feffectiveWeight\"S\n" +
|
|
"\bPoolInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x123\n" +
|
|
"\bbackends\x18\x02 \x03(\v2\x17.maglev.PoolBackendInfoR\bbackends\"\xda\x01\n" +
|
|
"\fFrontendInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
|
|
"\aaddress\x18\x02 \x01(\tR\aaddress\x12\x1a\n" +
|
|
"\bprotocol\x18\x03 \x01(\tR\bprotocol\x12\x12\n" +
|
|
"\x04port\x18\x04 \x01(\rR\x04port\x12&\n" +
|
|
"\x05pools\x18\x05 \x03(\v2\x10.maglev.PoolInfoR\x05pools\x12 \n" +
|
|
"\vdescription\x18\x06 \x01(\tR\vdescription\x12\"\n" +
|
|
"\rsrc_ip_sticky\x18\a \x01(\bR\vsrcIpSticky\";\n" +
|
|
"\x14ListBackendsResponse\x12#\n" +
|
|
"\rbackend_names\x18\x01 \x03(\tR\fbackendNames\"0\n" +
|
|
"\x18ListHealthChecksResponse\x12\x14\n" +
|
|
"\x05names\x18\x01 \x03(\tR\x05names\"\x8d\x02\n" +
|
|
"\x0fHTTPCheckParams\x12\x12\n" +
|
|
"\x04path\x18\x01 \x01(\tR\x04path\x12\x12\n" +
|
|
"\x04host\x18\x02 \x01(\tR\x04host\x12*\n" +
|
|
"\x11response_code_min\x18\x03 \x01(\x05R\x0fresponseCodeMin\x12*\n" +
|
|
"\x11response_code_max\x18\x04 \x01(\x05R\x0fresponseCodeMax\x12'\n" +
|
|
"\x0fresponse_regexp\x18\x05 \x01(\tR\x0eresponseRegexp\x12\x1f\n" +
|
|
"\vserver_name\x18\x06 \x01(\tR\n" +
|
|
"serverName\x120\n" +
|
|
"\x14insecure_skip_verify\x18\a \x01(\bR\x12insecureSkipVerify\"u\n" +
|
|
"\x0eTCPCheckParams\x12\x10\n" +
|
|
"\x03ssl\x18\x01 \x01(\bR\x03ssl\x12\x1f\n" +
|
|
"\vserver_name\x18\x02 \x01(\tR\n" +
|
|
"serverName\x120\n" +
|
|
"\x14insecure_skip_verify\x18\x03 \x01(\bR\x12insecureSkipVerify\"\xac\x03\n" +
|
|
"\x0fHealthCheckInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x12\n" +
|
|
"\x04type\x18\x02 \x01(\tR\x04type\x12\x12\n" +
|
|
"\x04port\x18\x03 \x01(\rR\x04port\x12$\n" +
|
|
"\x0eprobe_ipv4_src\x18\x04 \x01(\tR\fprobeIpv4Src\x12$\n" +
|
|
"\x0eprobe_ipv6_src\x18\x05 \x01(\tR\fprobeIpv6Src\x12\x1f\n" +
|
|
"\vinterval_ns\x18\x06 \x01(\x03R\n" +
|
|
"intervalNs\x12(\n" +
|
|
"\x10fast_interval_ns\x18\a \x01(\x03R\x0efastIntervalNs\x12(\n" +
|
|
"\x10down_interval_ns\x18\b \x01(\x03R\x0edownIntervalNs\x12\x1d\n" +
|
|
"\n" +
|
|
"timeout_ns\x18\t \x01(\x03R\ttimeoutNs\x12\x12\n" +
|
|
"\x04rise\x18\n" +
|
|
" \x01(\x05R\x04rise\x12\x12\n" +
|
|
"\x04fall\x18\v \x01(\x05R\x04fall\x12+\n" +
|
|
"\x04http\x18\f \x01(\v2\x17.maglev.HTTPCheckParamsR\x04http\x12(\n" +
|
|
"\x03tcp\x18\r \x01(\v2\x16.maglev.TCPCheckParamsR\x03tcp\"\xc9\x01\n" +
|
|
"\vBackendInfo\x12\x12\n" +
|
|
"\x04name\x18\x01 \x01(\tR\x04name\x12\x18\n" +
|
|
"\aaddress\x18\x02 \x01(\tR\aaddress\x12\x14\n" +
|
|
"\x05state\x18\x03 \x01(\tR\x05state\x12:\n" +
|
|
"\vtransitions\x18\x04 \x03(\v2\x18.maglev.TransitionRecordR\vtransitions\x12\x18\n" +
|
|
"\aenabled\x18\x05 \x01(\bR\aenabled\x12 \n" +
|
|
"\vhealthcheck\x18\x06 \x01(\tR\vhealthcheck\"T\n" +
|
|
"\x10TransitionRecord\x12\x12\n" +
|
|
"\x04from\x18\x01 \x01(\tR\x04from\x12\x0e\n" +
|
|
"\x02to\x18\x02 \x01(\tR\x02to\x12\x1c\n" +
|
|
"\n" +
|
|
"at_unix_ns\x18\x03 \x01(\x03R\batUnixNs\"1\n" +
|
|
"\aLogAttr\x12\x10\n" +
|
|
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
|
|
"\x05value\x18\x02 \x01(\tR\x05value\"w\n" +
|
|
"\bLogEvent\x12\x1c\n" +
|
|
"\n" +
|
|
"at_unix_ns\x18\x01 \x01(\x03R\batUnixNs\x12\x14\n" +
|
|
"\x05level\x18\x02 \x01(\tR\x05level\x12\x10\n" +
|
|
"\x03msg\x18\x03 \x01(\tR\x03msg\x12%\n" +
|
|
"\x05attrs\x18\x04 \x03(\v2\x0f.maglev.LogAttrR\x05attrs\"k\n" +
|
|
"\fBackendEvent\x12!\n" +
|
|
"\fbackend_name\x18\x01 \x01(\tR\vbackendName\x128\n" +
|
|
"\n" +
|
|
"transition\x18\x02 \x01(\v2\x18.maglev.TransitionRecordR\n" +
|
|
"transition\"n\n" +
|
|
"\rFrontendEvent\x12#\n" +
|
|
"\rfrontend_name\x18\x01 \x01(\tR\ffrontendName\x128\n" +
|
|
"\n" +
|
|
"transition\x18\x02 \x01(\v2\x18.maglev.TransitionRecordR\n" +
|
|
"transition\"\x9d\x01\n" +
|
|
"\x05Event\x12$\n" +
|
|
"\x03log\x18\x01 \x01(\v2\x10.maglev.LogEventH\x00R\x03log\x120\n" +
|
|
"\abackend\x18\x02 \x01(\v2\x14.maglev.BackendEventH\x00R\abackend\x123\n" +
|
|
"\bfrontend\x18\x03 \x01(\v2\x15.maglev.FrontendEventH\x00R\bfrontendB\a\n" +
|
|
"\x05event2\xec\t\n" +
|
|
"\x06Maglev\x12L\n" +
|
|
"\rListFrontends\x12\x1c.maglev.ListFrontendsRequest\x1a\x1d.maglev.ListFrontendsResponse\x12?\n" +
|
|
"\vGetFrontend\x12\x1a.maglev.GetFrontendRequest\x1a\x14.maglev.FrontendInfo\x12I\n" +
|
|
"\fListBackends\x12\x1b.maglev.ListBackendsRequest\x1a\x1c.maglev.ListBackendsResponse\x12<\n" +
|
|
"\n" +
|
|
"GetBackend\x12\x19.maglev.GetBackendRequest\x1a\x13.maglev.BackendInfo\x12;\n" +
|
|
"\fPauseBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12<\n" +
|
|
"\rResumeBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12<\n" +
|
|
"\rEnableBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12=\n" +
|
|
"\x0eDisableBackend\x12\x16.maglev.BackendRequest\x1a\x13.maglev.BackendInfo\x12U\n" +
|
|
"\x10ListHealthChecks\x12\x1f.maglev.ListHealthChecksRequest\x1a .maglev.ListHealthChecksResponse\x12H\n" +
|
|
"\x0eGetHealthCheck\x12\x1d.maglev.GetHealthCheckRequest\x1a\x17.maglev.HealthCheckInfo\x12N\n" +
|
|
"\x1cSetFrontendPoolBackendWeight\x12\x18.maglev.SetWeightRequest\x1a\x14.maglev.FrontendInfo\x124\n" +
|
|
"\vWatchEvents\x12\x14.maglev.WatchRequest\x1a\r.maglev.Event0\x01\x12F\n" +
|
|
"\vCheckConfig\x12\x1a.maglev.CheckConfigRequest\x1a\x1b.maglev.CheckConfigResponse\x12I\n" +
|
|
"\fReloadConfig\x12\x1b.maglev.ReloadConfigRequest\x1a\x1c.maglev.ReloadConfigResponse\x128\n" +
|
|
"\n" +
|
|
"GetVPPInfo\x12\x19.maglev.GetVPPInfoRequest\x1a\x0f.maglev.VPPInfo\x12A\n" +
|
|
"\rGetVPPLBState\x12\x1c.maglev.GetVPPLBStateRequest\x1a\x12.maglev.VPPLBState\x12O\n" +
|
|
"\x0eSyncVPPLBState\x12\x1d.maglev.SyncVPPLBStateRequest\x1a\x1e.maglev.SyncVPPLBStateResponse\x12J\n" +
|
|
"\x10GetVPPLBCounters\x12\x1f.maglev.GetVPPLBCountersRequest\x1a\x15.maglev.VPPLBCountersB.Z,git.ipng.ch/ipng/vpp-maglev/internal/grpcapib\x06proto3"
|
|
|
|
var (
|
|
file_proto_maglev_proto_rawDescOnce sync.Once
|
|
file_proto_maglev_proto_rawDescData []byte
|
|
)
|
|
|
|
func file_proto_maglev_proto_rawDescGZIP() []byte {
|
|
file_proto_maglev_proto_rawDescOnce.Do(func() {
|
|
file_proto_maglev_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_maglev_proto_rawDesc), len(file_proto_maglev_proto_rawDesc)))
|
|
})
|
|
return file_proto_maglev_proto_rawDescData
|
|
}
|
|
|
|
var file_proto_maglev_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
|
|
var file_proto_maglev_proto_goTypes = []any{
|
|
(*ListFrontendsRequest)(nil), // 0: maglev.ListFrontendsRequest
|
|
(*GetFrontendRequest)(nil), // 1: maglev.GetFrontendRequest
|
|
(*ListBackendsRequest)(nil), // 2: maglev.ListBackendsRequest
|
|
(*GetBackendRequest)(nil), // 3: maglev.GetBackendRequest
|
|
(*BackendRequest)(nil), // 4: maglev.BackendRequest
|
|
(*ListHealthChecksRequest)(nil), // 5: maglev.ListHealthChecksRequest
|
|
(*GetHealthCheckRequest)(nil), // 6: maglev.GetHealthCheckRequest
|
|
(*CheckConfigRequest)(nil), // 7: maglev.CheckConfigRequest
|
|
(*CheckConfigResponse)(nil), // 8: maglev.CheckConfigResponse
|
|
(*ReloadConfigRequest)(nil), // 9: maglev.ReloadConfigRequest
|
|
(*ReloadConfigResponse)(nil), // 10: maglev.ReloadConfigResponse
|
|
(*GetVPPInfoRequest)(nil), // 11: maglev.GetVPPInfoRequest
|
|
(*VPPInfo)(nil), // 12: maglev.VPPInfo
|
|
(*GetVPPLBStateRequest)(nil), // 13: maglev.GetVPPLBStateRequest
|
|
(*VPPLBConf)(nil), // 14: maglev.VPPLBConf
|
|
(*VPPLBAS)(nil), // 15: maglev.VPPLBAS
|
|
(*VPPLBVIP)(nil), // 16: maglev.VPPLBVIP
|
|
(*VPPLBState)(nil), // 17: maglev.VPPLBState
|
|
(*SyncVPPLBStateRequest)(nil), // 18: maglev.SyncVPPLBStateRequest
|
|
(*SyncVPPLBStateResponse)(nil), // 19: maglev.SyncVPPLBStateResponse
|
|
(*GetVPPLBCountersRequest)(nil), // 20: maglev.GetVPPLBCountersRequest
|
|
(*VPPLBVIPCounters)(nil), // 21: maglev.VPPLBVIPCounters
|
|
(*VPPLBCounters)(nil), // 22: maglev.VPPLBCounters
|
|
(*SetWeightRequest)(nil), // 23: maglev.SetWeightRequest
|
|
(*WatchRequest)(nil), // 24: maglev.WatchRequest
|
|
(*ListFrontendsResponse)(nil), // 25: maglev.ListFrontendsResponse
|
|
(*PoolBackendInfo)(nil), // 26: maglev.PoolBackendInfo
|
|
(*PoolInfo)(nil), // 27: maglev.PoolInfo
|
|
(*FrontendInfo)(nil), // 28: maglev.FrontendInfo
|
|
(*ListBackendsResponse)(nil), // 29: maglev.ListBackendsResponse
|
|
(*ListHealthChecksResponse)(nil), // 30: maglev.ListHealthChecksResponse
|
|
(*HTTPCheckParams)(nil), // 31: maglev.HTTPCheckParams
|
|
(*TCPCheckParams)(nil), // 32: maglev.TCPCheckParams
|
|
(*HealthCheckInfo)(nil), // 33: maglev.HealthCheckInfo
|
|
(*BackendInfo)(nil), // 34: maglev.BackendInfo
|
|
(*TransitionRecord)(nil), // 35: maglev.TransitionRecord
|
|
(*LogAttr)(nil), // 36: maglev.LogAttr
|
|
(*LogEvent)(nil), // 37: maglev.LogEvent
|
|
(*BackendEvent)(nil), // 38: maglev.BackendEvent
|
|
(*FrontendEvent)(nil), // 39: maglev.FrontendEvent
|
|
(*Event)(nil), // 40: maglev.Event
|
|
}
|
|
var file_proto_maglev_proto_depIdxs = []int32{
|
|
15, // 0: maglev.VPPLBVIP.application_servers:type_name -> maglev.VPPLBAS
|
|
14, // 1: maglev.VPPLBState.conf:type_name -> maglev.VPPLBConf
|
|
16, // 2: maglev.VPPLBState.vips:type_name -> maglev.VPPLBVIP
|
|
21, // 3: maglev.VPPLBCounters.vips:type_name -> maglev.VPPLBVIPCounters
|
|
26, // 4: maglev.PoolInfo.backends:type_name -> maglev.PoolBackendInfo
|
|
27, // 5: maglev.FrontendInfo.pools:type_name -> maglev.PoolInfo
|
|
31, // 6: maglev.HealthCheckInfo.http:type_name -> maglev.HTTPCheckParams
|
|
32, // 7: maglev.HealthCheckInfo.tcp:type_name -> maglev.TCPCheckParams
|
|
35, // 8: maglev.BackendInfo.transitions:type_name -> maglev.TransitionRecord
|
|
36, // 9: maglev.LogEvent.attrs:type_name -> maglev.LogAttr
|
|
35, // 10: maglev.BackendEvent.transition:type_name -> maglev.TransitionRecord
|
|
35, // 11: maglev.FrontendEvent.transition:type_name -> maglev.TransitionRecord
|
|
37, // 12: maglev.Event.log:type_name -> maglev.LogEvent
|
|
38, // 13: maglev.Event.backend:type_name -> maglev.BackendEvent
|
|
39, // 14: maglev.Event.frontend:type_name -> maglev.FrontendEvent
|
|
0, // 15: maglev.Maglev.ListFrontends:input_type -> maglev.ListFrontendsRequest
|
|
1, // 16: maglev.Maglev.GetFrontend:input_type -> maglev.GetFrontendRequest
|
|
2, // 17: maglev.Maglev.ListBackends:input_type -> maglev.ListBackendsRequest
|
|
3, // 18: maglev.Maglev.GetBackend:input_type -> maglev.GetBackendRequest
|
|
4, // 19: maglev.Maglev.PauseBackend:input_type -> maglev.BackendRequest
|
|
4, // 20: maglev.Maglev.ResumeBackend:input_type -> maglev.BackendRequest
|
|
4, // 21: maglev.Maglev.EnableBackend:input_type -> maglev.BackendRequest
|
|
4, // 22: maglev.Maglev.DisableBackend:input_type -> maglev.BackendRequest
|
|
5, // 23: maglev.Maglev.ListHealthChecks:input_type -> maglev.ListHealthChecksRequest
|
|
6, // 24: maglev.Maglev.GetHealthCheck:input_type -> maglev.GetHealthCheckRequest
|
|
23, // 25: maglev.Maglev.SetFrontendPoolBackendWeight:input_type -> maglev.SetWeightRequest
|
|
24, // 26: maglev.Maglev.WatchEvents:input_type -> maglev.WatchRequest
|
|
7, // 27: maglev.Maglev.CheckConfig:input_type -> maglev.CheckConfigRequest
|
|
9, // 28: maglev.Maglev.ReloadConfig:input_type -> maglev.ReloadConfigRequest
|
|
11, // 29: maglev.Maglev.GetVPPInfo:input_type -> maglev.GetVPPInfoRequest
|
|
13, // 30: maglev.Maglev.GetVPPLBState:input_type -> maglev.GetVPPLBStateRequest
|
|
18, // 31: maglev.Maglev.SyncVPPLBState:input_type -> maglev.SyncVPPLBStateRequest
|
|
20, // 32: maglev.Maglev.GetVPPLBCounters:input_type -> maglev.GetVPPLBCountersRequest
|
|
25, // 33: maglev.Maglev.ListFrontends:output_type -> maglev.ListFrontendsResponse
|
|
28, // 34: maglev.Maglev.GetFrontend:output_type -> maglev.FrontendInfo
|
|
29, // 35: maglev.Maglev.ListBackends:output_type -> maglev.ListBackendsResponse
|
|
34, // 36: maglev.Maglev.GetBackend:output_type -> maglev.BackendInfo
|
|
34, // 37: maglev.Maglev.PauseBackend:output_type -> maglev.BackendInfo
|
|
34, // 38: maglev.Maglev.ResumeBackend:output_type -> maglev.BackendInfo
|
|
34, // 39: maglev.Maglev.EnableBackend:output_type -> maglev.BackendInfo
|
|
34, // 40: maglev.Maglev.DisableBackend:output_type -> maglev.BackendInfo
|
|
30, // 41: maglev.Maglev.ListHealthChecks:output_type -> maglev.ListHealthChecksResponse
|
|
33, // 42: maglev.Maglev.GetHealthCheck:output_type -> maglev.HealthCheckInfo
|
|
28, // 43: maglev.Maglev.SetFrontendPoolBackendWeight:output_type -> maglev.FrontendInfo
|
|
40, // 44: maglev.Maglev.WatchEvents:output_type -> maglev.Event
|
|
8, // 45: maglev.Maglev.CheckConfig:output_type -> maglev.CheckConfigResponse
|
|
10, // 46: maglev.Maglev.ReloadConfig:output_type -> maglev.ReloadConfigResponse
|
|
12, // 47: maglev.Maglev.GetVPPInfo:output_type -> maglev.VPPInfo
|
|
17, // 48: maglev.Maglev.GetVPPLBState:output_type -> maglev.VPPLBState
|
|
19, // 49: maglev.Maglev.SyncVPPLBState:output_type -> maglev.SyncVPPLBStateResponse
|
|
22, // 50: maglev.Maglev.GetVPPLBCounters:output_type -> maglev.VPPLBCounters
|
|
33, // [33:51] is the sub-list for method output_type
|
|
15, // [15:33] is the sub-list for method input_type
|
|
15, // [15:15] is the sub-list for extension type_name
|
|
15, // [15:15] is the sub-list for extension extendee
|
|
0, // [0:15] is the sub-list for field type_name
|
|
}
|
|
|
|
func init() { file_proto_maglev_proto_init() }
|
|
func file_proto_maglev_proto_init() {
|
|
if File_proto_maglev_proto != nil {
|
|
return
|
|
}
|
|
file_proto_maglev_proto_msgTypes[18].OneofWrappers = []any{}
|
|
file_proto_maglev_proto_msgTypes[24].OneofWrappers = []any{}
|
|
file_proto_maglev_proto_msgTypes[40].OneofWrappers = []any{
|
|
(*Event_Log)(nil),
|
|
(*Event_Backend)(nil),
|
|
(*Event_Frontend)(nil),
|
|
}
|
|
type x struct{}
|
|
out := protoimpl.TypeBuilder{
|
|
File: protoimpl.DescBuilder{
|
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_maglev_proto_rawDesc), len(file_proto_maglev_proto_rawDesc)),
|
|
NumEnums: 0,
|
|
NumMessages: 41,
|
|
NumExtensions: 0,
|
|
NumServices: 1,
|
|
},
|
|
GoTypes: file_proto_maglev_proto_goTypes,
|
|
DependencyIndexes: file_proto_maglev_proto_depIdxs,
|
|
MessageInfos: file_proto_maglev_proto_msgTypes,
|
|
}.Build()
|
|
File_proto_maglev_proto = out.File
|
|
file_proto_maglev_proto_goTypes = nil
|
|
file_proto_maglev_proto_depIdxs = nil
|
|
}
|