diff --git a/api/v1/README.md b/api/v1/README.md index 7a363d9676f..fdf47b9b500 100644 --- a/api/v1/README.md +++ b/api/v1/README.md @@ -92,6 +92,8 @@ - [tetragon/sensors.proto](#tetragon_sensors-proto) - [AddTracingPolicyRequest](#tetragon-AddTracingPolicyRequest) - [AddTracingPolicyResponse](#tetragon-AddTracingPolicyResponse) + - [ConfigureTracingPolicyRequest](#tetragon-ConfigureTracingPolicyRequest) + - [ConfigureTracingPolicyResponse](#tetragon-ConfigureTracingPolicyResponse) - [DeleteTracingPolicyRequest](#tetragon-DeleteTracingPolicyRequest) - [DeleteTracingPolicyResponse](#tetragon-DeleteTracingPolicyResponse) - [DisableSensorRequest](#tetragon-DisableSensorRequest) @@ -125,6 +127,7 @@ - [ConfigFlag](#tetragon-ConfigFlag) - [LogLevel](#tetragon-LogLevel) + - [TracingPolicyMode](#tetragon-TracingPolicyMode) - [TracingPolicyState](#tetragon-TracingPolicyState) - [FineGuidanceSensors](#tetragon-FineGuidanceSensors) @@ -1726,6 +1729,34 @@ Determines the behavior of a field filter + + +### ConfigureTracingPolicyRequest + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| name | [string](#string) | | | +| namespace | [string](#string) | | | +| enable | [bool](#bool) | optional | | +| mode | [TracingPolicyMode](#tetragon-TracingPolicyMode) | optional | | + + + + + + + + +### ConfigureTracingPolicyResponse + + + + + + + ### DeleteTracingPolicyRequest @@ -2149,6 +2180,7 @@ Determines the behavior of a field filter | error | [string](#string) | | potential error of the policy | | state | [TracingPolicyState](#tetragon-TracingPolicyState) | | current state of the tracing policy | | kernel_memory_bytes | [uint64](#uint64) | | the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) | +| mode | [TracingPolicyMode](#tetragon-TracingPolicyMode) | | current mode of the tracing policy | @@ -2186,6 +2218,19 @@ For now, we only want to support debug-related config flags to be configurable. + + +### TracingPolicyMode + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| TP_MODE_UNKNOWN | 0 | | +| TP_MODE_ENFORCE | 1 | | +| TP_MODE_MONITOR | 2 | | + + + ### TracingPolicyState @@ -2219,6 +2264,7 @@ For now, we only want to support debug-related config flags to be configurable. | AddTracingPolicy | [AddTracingPolicyRequest](#tetragon-AddTracingPolicyRequest) | [AddTracingPolicyResponse](#tetragon-AddTracingPolicyResponse) | | | DeleteTracingPolicy | [DeleteTracingPolicyRequest](#tetragon-DeleteTracingPolicyRequest) | [DeleteTracingPolicyResponse](#tetragon-DeleteTracingPolicyResponse) | | | ListTracingPolicies | [ListTracingPoliciesRequest](#tetragon-ListTracingPoliciesRequest) | [ListTracingPoliciesResponse](#tetragon-ListTracingPoliciesResponse) | | +| ConfigureTracingPolicy | [ConfigureTracingPolicyRequest](#tetragon-ConfigureTracingPolicyRequest) | [ConfigureTracingPolicyResponse](#tetragon-ConfigureTracingPolicyResponse) | ConfigureTracingPolicy can be used to configure a loaded tracing policy. It can be used to: - enable/disable it - change its mode (enforcement vs monitoring) If multiple changes are requested and an error is encountered, the resulting state might have partial updates applied. In other words, the configuring a tracing policy is not atomic. | | EnableTracingPolicy | [EnableTracingPolicyRequest](#tetragon-EnableTracingPolicyRequest) | [EnableTracingPolicyResponse](#tetragon-EnableTracingPolicyResponse) | | | DisableTracingPolicy | [DisableTracingPolicyRequest](#tetragon-DisableTracingPolicyRequest) | [DisableTracingPolicyResponse](#tetragon-DisableTracingPolicyResponse) | | | ListSensors | [ListSensorsRequest](#tetragon-ListSensorsRequest) | [ListSensorsResponse](#tetragon-ListSensorsResponse) | | diff --git a/api/v1/tetragon/sensors.pb.go b/api/v1/tetragon/sensors.pb.go index b814832d19f..2471e85f262 100644 --- a/api/v1/tetragon/sensors.pb.go +++ b/api/v1/tetragon/sensors.pb.go @@ -92,6 +92,55 @@ func (TracingPolicyState) EnumDescriptor() ([]byte, []int) { return file_tetragon_sensors_proto_rawDescGZIP(), []int{0} } +type TracingPolicyMode int32 + +const ( + TracingPolicyMode_TP_MODE_UNKNOWN TracingPolicyMode = 0 + TracingPolicyMode_TP_MODE_ENFORCE TracingPolicyMode = 1 + TracingPolicyMode_TP_MODE_MONITOR TracingPolicyMode = 2 +) + +// Enum value maps for TracingPolicyMode. +var ( + TracingPolicyMode_name = map[int32]string{ + 0: "TP_MODE_UNKNOWN", + 1: "TP_MODE_ENFORCE", + 2: "TP_MODE_MONITOR", + } + TracingPolicyMode_value = map[string]int32{ + "TP_MODE_UNKNOWN": 0, + "TP_MODE_ENFORCE": 1, + "TP_MODE_MONITOR": 2, + } +) + +func (x TracingPolicyMode) Enum() *TracingPolicyMode { + p := new(TracingPolicyMode) + *p = x + return p +} + +func (x TracingPolicyMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TracingPolicyMode) Descriptor() protoreflect.EnumDescriptor { + return file_tetragon_sensors_proto_enumTypes[1].Descriptor() +} + +func (TracingPolicyMode) Type() protoreflect.EnumType { + return &file_tetragon_sensors_proto_enumTypes[1] +} + +func (x TracingPolicyMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TracingPolicyMode.Descriptor instead. +func (TracingPolicyMode) EnumDescriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{1} +} + // For now, we only want to support debug-related config flags to be configurable. type ConfigFlag int32 @@ -123,11 +172,11 @@ func (x ConfigFlag) String() string { } func (ConfigFlag) Descriptor() protoreflect.EnumDescriptor { - return file_tetragon_sensors_proto_enumTypes[1].Descriptor() + return file_tetragon_sensors_proto_enumTypes[2].Descriptor() } func (ConfigFlag) Type() protoreflect.EnumType { - return &file_tetragon_sensors_proto_enumTypes[1] + return &file_tetragon_sensors_proto_enumTypes[2] } func (x ConfigFlag) Number() protoreflect.EnumNumber { @@ -136,7 +185,7 @@ func (x ConfigFlag) Number() protoreflect.EnumNumber { // Deprecated: Use ConfigFlag.Descriptor instead. func (ConfigFlag) EnumDescriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{1} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{2} } type LogLevel int32 @@ -184,11 +233,11 @@ func (x LogLevel) String() string { } func (LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_tetragon_sensors_proto_enumTypes[2].Descriptor() + return file_tetragon_sensors_proto_enumTypes[3].Descriptor() } func (LogLevel) Type() protoreflect.EnumType { - return &file_tetragon_sensors_proto_enumTypes[2] + return &file_tetragon_sensors_proto_enumTypes[3] } func (x LogLevel) Number() protoreflect.EnumNumber { @@ -197,7 +246,7 @@ func (x LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use LogLevel.Descriptor instead. func (LogLevel) EnumDescriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{2} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{3} } type ListSensorsRequest struct { @@ -403,8 +452,10 @@ type TracingPolicyStatus struct { State TracingPolicyState `protobuf:"varint,9,opt,name=state,proto3,enum=tetragon.TracingPolicyState" json:"state,omitempty"` // the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) KernelMemoryBytes uint64 `protobuf:"varint,10,opt,name=kernel_memory_bytes,json=kernelMemoryBytes,proto3" json:"kernel_memory_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // current mode of the tracing policy + Mode TracingPolicyMode `protobuf:"varint,11,opt,name=mode,proto3,enum=tetragon.TracingPolicyMode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TracingPolicyStatus) Reset() { @@ -508,6 +559,13 @@ func (x *TracingPolicyStatus) GetKernelMemoryBytes() uint64 { return 0 } +func (x *TracingPolicyStatus) GetMode() TracingPolicyMode { + if x != nil { + return x.Mode + } + return TracingPolicyMode_TP_MODE_UNKNOWN +} + type ListTracingPoliciesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Policies []*TracingPolicyStatus `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` @@ -896,6 +954,110 @@ func (*DisableTracingPolicyResponse) Descriptor() ([]byte, []int) { return file_tetragon_sensors_proto_rawDescGZIP(), []int{13} } +type ConfigureTracingPolicyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Enable *bool `protobuf:"varint,3,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + Mode *TracingPolicyMode `protobuf:"varint,4,opt,name=mode,proto3,enum=tetragon.TracingPolicyMode,oneof" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigureTracingPolicyRequest) Reset() { + *x = ConfigureTracingPolicyRequest{} + mi := &file_tetragon_sensors_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigureTracingPolicyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigureTracingPolicyRequest) ProtoMessage() {} + +func (x *ConfigureTracingPolicyRequest) ProtoReflect() protoreflect.Message { + mi := &file_tetragon_sensors_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 ConfigureTracingPolicyRequest.ProtoReflect.Descriptor instead. +func (*ConfigureTracingPolicyRequest) Descriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{14} +} + +func (x *ConfigureTracingPolicyRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ConfigureTracingPolicyRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *ConfigureTracingPolicyRequest) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable + } + return false +} + +func (x *ConfigureTracingPolicyRequest) GetMode() TracingPolicyMode { + if x != nil && x.Mode != nil { + return *x.Mode + } + return TracingPolicyMode_TP_MODE_UNKNOWN +} + +type ConfigureTracingPolicyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigureTracingPolicyResponse) Reset() { + *x = ConfigureTracingPolicyResponse{} + mi := &file_tetragon_sensors_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigureTracingPolicyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigureTracingPolicyResponse) ProtoMessage() {} + +func (x *ConfigureTracingPolicyResponse) ProtoReflect() protoreflect.Message { + mi := &file_tetragon_sensors_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 ConfigureTracingPolicyResponse.ProtoReflect.Descriptor instead. +func (*ConfigureTracingPolicyResponse) Descriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{15} +} + type RemoveSensorRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -905,7 +1067,7 @@ type RemoveSensorRequest struct { func (x *RemoveSensorRequest) Reset() { *x = RemoveSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[14] + mi := &file_tetragon_sensors_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +1079,7 @@ func (x *RemoveSensorRequest) String() string { func (*RemoveSensorRequest) ProtoMessage() {} func (x *RemoveSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[14] + mi := &file_tetragon_sensors_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,7 +1092,7 @@ func (x *RemoveSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSensorRequest.ProtoReflect.Descriptor instead. func (*RemoveSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{14} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{16} } func (x *RemoveSensorRequest) GetName() string { @@ -948,7 +1110,7 @@ type RemoveSensorResponse struct { func (x *RemoveSensorResponse) Reset() { *x = RemoveSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[15] + mi := &file_tetragon_sensors_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -960,7 +1122,7 @@ func (x *RemoveSensorResponse) String() string { func (*RemoveSensorResponse) ProtoMessage() {} func (x *RemoveSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[15] + mi := &file_tetragon_sensors_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -973,7 +1135,7 @@ func (x *RemoveSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSensorResponse.ProtoReflect.Descriptor instead. func (*RemoveSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{15} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{17} } type EnableSensorRequest struct { @@ -985,7 +1147,7 @@ type EnableSensorRequest struct { func (x *EnableSensorRequest) Reset() { *x = EnableSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[16] + mi := &file_tetragon_sensors_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +1159,7 @@ func (x *EnableSensorRequest) String() string { func (*EnableSensorRequest) ProtoMessage() {} func (x *EnableSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[16] + mi := &file_tetragon_sensors_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +1172,7 @@ func (x *EnableSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableSensorRequest.ProtoReflect.Descriptor instead. func (*EnableSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{16} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{18} } func (x *EnableSensorRequest) GetName() string { @@ -1028,7 +1190,7 @@ type EnableSensorResponse struct { func (x *EnableSensorResponse) Reset() { *x = EnableSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[17] + mi := &file_tetragon_sensors_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1040,7 +1202,7 @@ func (x *EnableSensorResponse) String() string { func (*EnableSensorResponse) ProtoMessage() {} func (x *EnableSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[17] + mi := &file_tetragon_sensors_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1053,7 +1215,7 @@ func (x *EnableSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableSensorResponse.ProtoReflect.Descriptor instead. func (*EnableSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{17} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{19} } type DisableSensorRequest struct { @@ -1065,7 +1227,7 @@ type DisableSensorRequest struct { func (x *DisableSensorRequest) Reset() { *x = DisableSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[18] + mi := &file_tetragon_sensors_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1077,7 +1239,7 @@ func (x *DisableSensorRequest) String() string { func (*DisableSensorRequest) ProtoMessage() {} func (x *DisableSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[18] + mi := &file_tetragon_sensors_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1090,7 +1252,7 @@ func (x *DisableSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableSensorRequest.ProtoReflect.Descriptor instead. func (*DisableSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{18} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{20} } func (x *DisableSensorRequest) GetName() string { @@ -1108,7 +1270,7 @@ type DisableSensorResponse struct { func (x *DisableSensorResponse) Reset() { *x = DisableSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[19] + mi := &file_tetragon_sensors_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1120,7 +1282,7 @@ func (x *DisableSensorResponse) String() string { func (*DisableSensorResponse) ProtoMessage() {} func (x *DisableSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[19] + mi := &file_tetragon_sensors_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1133,7 +1295,7 @@ func (x *DisableSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableSensorResponse.ProtoReflect.Descriptor instead. func (*DisableSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{19} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{21} } type GetStackTraceTreeRequest struct { @@ -1145,7 +1307,7 @@ type GetStackTraceTreeRequest struct { func (x *GetStackTraceTreeRequest) Reset() { *x = GetStackTraceTreeRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[20] + mi := &file_tetragon_sensors_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1319,7 @@ func (x *GetStackTraceTreeRequest) String() string { func (*GetStackTraceTreeRequest) ProtoMessage() {} func (x *GetStackTraceTreeRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[20] + mi := &file_tetragon_sensors_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1332,7 @@ func (x *GetStackTraceTreeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStackTraceTreeRequest.ProtoReflect.Descriptor instead. func (*GetStackTraceTreeRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{20} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{22} } func (x *GetStackTraceTreeRequest) GetName() string { @@ -1189,7 +1351,7 @@ type GetStackTraceTreeResponse struct { func (x *GetStackTraceTreeResponse) Reset() { *x = GetStackTraceTreeResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[21] + mi := &file_tetragon_sensors_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1201,7 +1363,7 @@ func (x *GetStackTraceTreeResponse) String() string { func (*GetStackTraceTreeResponse) ProtoMessage() {} func (x *GetStackTraceTreeResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[21] + mi := &file_tetragon_sensors_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1214,7 +1376,7 @@ func (x *GetStackTraceTreeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStackTraceTreeResponse.ProtoReflect.Descriptor instead. func (*GetStackTraceTreeResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{21} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{23} } func (x *GetStackTraceTreeResponse) GetRoot() *StackTraceNode { @@ -1232,7 +1394,7 @@ type GetVersionRequest struct { func (x *GetVersionRequest) Reset() { *x = GetVersionRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[22] + mi := &file_tetragon_sensors_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1244,7 +1406,7 @@ func (x *GetVersionRequest) String() string { func (*GetVersionRequest) ProtoMessage() {} func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[22] + mi := &file_tetragon_sensors_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1257,7 +1419,7 @@ func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. func (*GetVersionRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{22} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{24} } type GetVersionResponse struct { @@ -1269,7 +1431,7 @@ type GetVersionResponse struct { func (x *GetVersionResponse) Reset() { *x = GetVersionResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[23] + mi := &file_tetragon_sensors_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1281,7 +1443,7 @@ func (x *GetVersionResponse) String() string { func (*GetVersionResponse) ProtoMessage() {} func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[23] + mi := &file_tetragon_sensors_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1294,7 +1456,7 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{23} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{25} } func (x *GetVersionResponse) GetVersion() string { @@ -1314,7 +1476,7 @@ type DumpProcessCacheReqArgs struct { func (x *DumpProcessCacheReqArgs) Reset() { *x = DumpProcessCacheReqArgs{} - mi := &file_tetragon_sensors_proto_msgTypes[24] + mi := &file_tetragon_sensors_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1326,7 +1488,7 @@ func (x *DumpProcessCacheReqArgs) String() string { func (*DumpProcessCacheReqArgs) ProtoMessage() {} func (x *DumpProcessCacheReqArgs) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[24] + mi := &file_tetragon_sensors_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1339,7 +1501,7 @@ func (x *DumpProcessCacheReqArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use DumpProcessCacheReqArgs.ProtoReflect.Descriptor instead. func (*DumpProcessCacheReqArgs) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{24} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{26} } func (x *DumpProcessCacheReqArgs) GetSkipZeroRefcnt() bool { @@ -1376,7 +1538,7 @@ type ProcessInternal struct { func (x *ProcessInternal) Reset() { *x = ProcessInternal{} - mi := &file_tetragon_sensors_proto_msgTypes[25] + mi := &file_tetragon_sensors_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1550,7 @@ func (x *ProcessInternal) String() string { func (*ProcessInternal) ProtoMessage() {} func (x *ProcessInternal) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[25] + mi := &file_tetragon_sensors_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1563,7 @@ func (x *ProcessInternal) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessInternal.ProtoReflect.Descriptor instead. func (*ProcessInternal) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{25} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{27} } func (x *ProcessInternal) GetProcess() *Process { @@ -1441,7 +1603,7 @@ type DumpProcessCacheResArgs struct { func (x *DumpProcessCacheResArgs) Reset() { *x = DumpProcessCacheResArgs{} - mi := &file_tetragon_sensors_proto_msgTypes[26] + mi := &file_tetragon_sensors_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1453,7 +1615,7 @@ func (x *DumpProcessCacheResArgs) String() string { func (*DumpProcessCacheResArgs) ProtoMessage() {} func (x *DumpProcessCacheResArgs) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[26] + mi := &file_tetragon_sensors_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1628,7 @@ func (x *DumpProcessCacheResArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use DumpProcessCacheResArgs.ProtoReflect.Descriptor instead. func (*DumpProcessCacheResArgs) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{26} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{28} } func (x *DumpProcessCacheResArgs) GetProcesses() []*ProcessInternal { @@ -1489,7 +1651,7 @@ type GetDebugRequest struct { func (x *GetDebugRequest) Reset() { *x = GetDebugRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[27] + mi := &file_tetragon_sensors_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1501,7 +1663,7 @@ func (x *GetDebugRequest) String() string { func (*GetDebugRequest) ProtoMessage() {} func (x *GetDebugRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[27] + mi := &file_tetragon_sensors_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1514,7 +1676,7 @@ func (x *GetDebugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDebugRequest.ProtoReflect.Descriptor instead. func (*GetDebugRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{27} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{29} } func (x *GetDebugRequest) GetFlag() ConfigFlag { @@ -1564,7 +1726,7 @@ type GetDebugResponse struct { func (x *GetDebugResponse) Reset() { *x = GetDebugResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[28] + mi := &file_tetragon_sensors_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1738,7 @@ func (x *GetDebugResponse) String() string { func (*GetDebugResponse) ProtoMessage() {} func (x *GetDebugResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[28] + mi := &file_tetragon_sensors_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1751,7 @@ func (x *GetDebugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDebugResponse.ProtoReflect.Descriptor instead. func (*GetDebugResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{28} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{30} } func (x *GetDebugResponse) GetFlag() ConfigFlag { @@ -1653,7 +1815,7 @@ type SetDebugRequest struct { func (x *SetDebugRequest) Reset() { *x = SetDebugRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[29] + mi := &file_tetragon_sensors_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1665,7 +1827,7 @@ func (x *SetDebugRequest) String() string { func (*SetDebugRequest) ProtoMessage() {} func (x *SetDebugRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[29] + mi := &file_tetragon_sensors_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1678,7 +1840,7 @@ func (x *SetDebugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDebugRequest.ProtoReflect.Descriptor instead. func (*SetDebugRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{29} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{31} } func (x *SetDebugRequest) GetFlag() ConfigFlag { @@ -1727,7 +1889,7 @@ type SetDebugResponse struct { func (x *SetDebugResponse) Reset() { *x = SetDebugResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[30] + mi := &file_tetragon_sensors_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1739,7 +1901,7 @@ func (x *SetDebugResponse) String() string { func (*SetDebugResponse) ProtoMessage() {} func (x *SetDebugResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[30] + mi := &file_tetragon_sensors_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1752,7 +1914,7 @@ func (x *SetDebugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDebugResponse.ProtoReflect.Descriptor instead. func (*SetDebugResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{30} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{32} } func (x *SetDebugResponse) GetFlag() ConfigFlag { @@ -1813,7 +1975,7 @@ var file_tetragon_sensors_proto_rawDesc = []byte{ 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x65, 0x73, 0x74, 0x22, 0xeb, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, @@ -1833,244 +1995,273 @@ var file_tetragon_sensors_proto_rawDesc = []byte{ 0x12, 0x2e, 0x0a, 0x13, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0x58, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x41, 0x64, + 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x58, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x41, + 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x84, 0x01, 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x5a, 0x65, 0x72, 0x6f, 0x52, - 0x65, 0x66, 0x63, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x34, 0x0a, - 0x06, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x66, - 0x63, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x6f, 0x70, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, - 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x17, 0x44, 0x75, - 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, - 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, - 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, + 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x16, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, + 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x5a, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x66, + 0x63, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x06, 0x72, + 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x66, 0x63, 0x6e, + 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x09, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x65, + 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, + 0x72, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, + 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x75, 0x6d, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x64, 0x75, + 0x6d, 0x70, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, + 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6c, + 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0x6e, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, - 0x75, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, - 0x64, 0x75, 0x6d, 0x70, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0xb2, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, - 0x22, 0x6e, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, - 0x22, 0x6f, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, - 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, - 0x67, 0x2a, 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, - 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, - 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x16, - 0x0a, 0x12, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x41, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x4b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x00, 0x12, - 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x44, - 0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, 0x43, 0x48, - 0x45, 0x10, 0x01, 0x2a, 0x9b, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x50, 0x41, - 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, - 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, - 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, - 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, - 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, - 0x06, 0x32, 0xfe, 0x0a, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, - 0x63, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, - 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x12, 0x20, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x64, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, + 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0x6f, + 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, + 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x2a, + 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, + 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x50, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, + 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x49, + 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x52, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x50, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, + 0x0a, 0x0f, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x4e, 0x46, 0x4f, 0x52, 0x43, + 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x4b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, + 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, 0x4c, 0x41, 0x47, + 0x5f, 0x44, 0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, + 0x43, 0x48, 0x45, 0x10, 0x01, 0x2a, 0x9b, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, + 0x50, 0x41, 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, + 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, + 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, + 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x13, + 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x10, 0x06, 0x32, 0xf3, 0x0b, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x75, 0x69, 0x64, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x12, 0x20, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, + 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x27, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1c, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, - 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, - 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x88, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, - 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, - 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, - 0x08, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x63, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x2f, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x67, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x14, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, + 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, + 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, + 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x2f, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2085,109 +2276,116 @@ func file_tetragon_sensors_proto_rawDescGZIP() []byte { return file_tetragon_sensors_proto_rawDescData } -var file_tetragon_sensors_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_tetragon_sensors_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_tetragon_sensors_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_tetragon_sensors_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_tetragon_sensors_proto_goTypes = []any{ - (TracingPolicyState)(0), // 0: tetragon.TracingPolicyState - (ConfigFlag)(0), // 1: tetragon.ConfigFlag - (LogLevel)(0), // 2: tetragon.LogLevel - (*ListSensorsRequest)(nil), // 3: tetragon.ListSensorsRequest - (*SensorStatus)(nil), // 4: tetragon.SensorStatus - (*ListSensorsResponse)(nil), // 5: tetragon.ListSensorsResponse - (*ListTracingPoliciesRequest)(nil), // 6: tetragon.ListTracingPoliciesRequest - (*TracingPolicyStatus)(nil), // 7: tetragon.TracingPolicyStatus - (*ListTracingPoliciesResponse)(nil), // 8: tetragon.ListTracingPoliciesResponse - (*AddTracingPolicyRequest)(nil), // 9: tetragon.AddTracingPolicyRequest - (*AddTracingPolicyResponse)(nil), // 10: tetragon.AddTracingPolicyResponse - (*DeleteTracingPolicyRequest)(nil), // 11: tetragon.DeleteTracingPolicyRequest - (*DeleteTracingPolicyResponse)(nil), // 12: tetragon.DeleteTracingPolicyResponse - (*EnableTracingPolicyRequest)(nil), // 13: tetragon.EnableTracingPolicyRequest - (*EnableTracingPolicyResponse)(nil), // 14: tetragon.EnableTracingPolicyResponse - (*DisableTracingPolicyRequest)(nil), // 15: tetragon.DisableTracingPolicyRequest - (*DisableTracingPolicyResponse)(nil), // 16: tetragon.DisableTracingPolicyResponse - (*RemoveSensorRequest)(nil), // 17: tetragon.RemoveSensorRequest - (*RemoveSensorResponse)(nil), // 18: tetragon.RemoveSensorResponse - (*EnableSensorRequest)(nil), // 19: tetragon.EnableSensorRequest - (*EnableSensorResponse)(nil), // 20: tetragon.EnableSensorResponse - (*DisableSensorRequest)(nil), // 21: tetragon.DisableSensorRequest - (*DisableSensorResponse)(nil), // 22: tetragon.DisableSensorResponse - (*GetStackTraceTreeRequest)(nil), // 23: tetragon.GetStackTraceTreeRequest - (*GetStackTraceTreeResponse)(nil), // 24: tetragon.GetStackTraceTreeResponse - (*GetVersionRequest)(nil), // 25: tetragon.GetVersionRequest - (*GetVersionResponse)(nil), // 26: tetragon.GetVersionResponse - (*DumpProcessCacheReqArgs)(nil), // 27: tetragon.DumpProcessCacheReqArgs - (*ProcessInternal)(nil), // 28: tetragon.ProcessInternal - (*DumpProcessCacheResArgs)(nil), // 29: tetragon.DumpProcessCacheResArgs - (*GetDebugRequest)(nil), // 30: tetragon.GetDebugRequest - (*GetDebugResponse)(nil), // 31: tetragon.GetDebugResponse - (*SetDebugRequest)(nil), // 32: tetragon.SetDebugRequest - (*SetDebugResponse)(nil), // 33: tetragon.SetDebugResponse - nil, // 34: tetragon.ProcessInternal.RefcntOpsEntry - (*StackTraceNode)(nil), // 35: tetragon.StackTraceNode - (*Process)(nil), // 36: tetragon.Process - (*wrapperspb.UInt32Value)(nil), // 37: google.protobuf.UInt32Value - (*GetEventsRequest)(nil), // 38: tetragon.GetEventsRequest - (*GetHealthStatusRequest)(nil), // 39: tetragon.GetHealthStatusRequest - (*RuntimeHookRequest)(nil), // 40: tetragon.RuntimeHookRequest - (*GetEventsResponse)(nil), // 41: tetragon.GetEventsResponse - (*GetHealthStatusResponse)(nil), // 42: tetragon.GetHealthStatusResponse - (*RuntimeHookResponse)(nil), // 43: tetragon.RuntimeHookResponse + (TracingPolicyState)(0), // 0: tetragon.TracingPolicyState + (TracingPolicyMode)(0), // 1: tetragon.TracingPolicyMode + (ConfigFlag)(0), // 2: tetragon.ConfigFlag + (LogLevel)(0), // 3: tetragon.LogLevel + (*ListSensorsRequest)(nil), // 4: tetragon.ListSensorsRequest + (*SensorStatus)(nil), // 5: tetragon.SensorStatus + (*ListSensorsResponse)(nil), // 6: tetragon.ListSensorsResponse + (*ListTracingPoliciesRequest)(nil), // 7: tetragon.ListTracingPoliciesRequest + (*TracingPolicyStatus)(nil), // 8: tetragon.TracingPolicyStatus + (*ListTracingPoliciesResponse)(nil), // 9: tetragon.ListTracingPoliciesResponse + (*AddTracingPolicyRequest)(nil), // 10: tetragon.AddTracingPolicyRequest + (*AddTracingPolicyResponse)(nil), // 11: tetragon.AddTracingPolicyResponse + (*DeleteTracingPolicyRequest)(nil), // 12: tetragon.DeleteTracingPolicyRequest + (*DeleteTracingPolicyResponse)(nil), // 13: tetragon.DeleteTracingPolicyResponse + (*EnableTracingPolicyRequest)(nil), // 14: tetragon.EnableTracingPolicyRequest + (*EnableTracingPolicyResponse)(nil), // 15: tetragon.EnableTracingPolicyResponse + (*DisableTracingPolicyRequest)(nil), // 16: tetragon.DisableTracingPolicyRequest + (*DisableTracingPolicyResponse)(nil), // 17: tetragon.DisableTracingPolicyResponse + (*ConfigureTracingPolicyRequest)(nil), // 18: tetragon.ConfigureTracingPolicyRequest + (*ConfigureTracingPolicyResponse)(nil), // 19: tetragon.ConfigureTracingPolicyResponse + (*RemoveSensorRequest)(nil), // 20: tetragon.RemoveSensorRequest + (*RemoveSensorResponse)(nil), // 21: tetragon.RemoveSensorResponse + (*EnableSensorRequest)(nil), // 22: tetragon.EnableSensorRequest + (*EnableSensorResponse)(nil), // 23: tetragon.EnableSensorResponse + (*DisableSensorRequest)(nil), // 24: tetragon.DisableSensorRequest + (*DisableSensorResponse)(nil), // 25: tetragon.DisableSensorResponse + (*GetStackTraceTreeRequest)(nil), // 26: tetragon.GetStackTraceTreeRequest + (*GetStackTraceTreeResponse)(nil), // 27: tetragon.GetStackTraceTreeResponse + (*GetVersionRequest)(nil), // 28: tetragon.GetVersionRequest + (*GetVersionResponse)(nil), // 29: tetragon.GetVersionResponse + (*DumpProcessCacheReqArgs)(nil), // 30: tetragon.DumpProcessCacheReqArgs + (*ProcessInternal)(nil), // 31: tetragon.ProcessInternal + (*DumpProcessCacheResArgs)(nil), // 32: tetragon.DumpProcessCacheResArgs + (*GetDebugRequest)(nil), // 33: tetragon.GetDebugRequest + (*GetDebugResponse)(nil), // 34: tetragon.GetDebugResponse + (*SetDebugRequest)(nil), // 35: tetragon.SetDebugRequest + (*SetDebugResponse)(nil), // 36: tetragon.SetDebugResponse + nil, // 37: tetragon.ProcessInternal.RefcntOpsEntry + (*StackTraceNode)(nil), // 38: tetragon.StackTraceNode + (*Process)(nil), // 39: tetragon.Process + (*wrapperspb.UInt32Value)(nil), // 40: google.protobuf.UInt32Value + (*GetEventsRequest)(nil), // 41: tetragon.GetEventsRequest + (*GetHealthStatusRequest)(nil), // 42: tetragon.GetHealthStatusRequest + (*RuntimeHookRequest)(nil), // 43: tetragon.RuntimeHookRequest + (*GetEventsResponse)(nil), // 44: tetragon.GetEventsResponse + (*GetHealthStatusResponse)(nil), // 45: tetragon.GetHealthStatusResponse + (*RuntimeHookResponse)(nil), // 46: tetragon.RuntimeHookResponse } var file_tetragon_sensors_proto_depIdxs = []int32{ - 4, // 0: tetragon.ListSensorsResponse.sensors:type_name -> tetragon.SensorStatus + 5, // 0: tetragon.ListSensorsResponse.sensors:type_name -> tetragon.SensorStatus 0, // 1: tetragon.TracingPolicyStatus.state:type_name -> tetragon.TracingPolicyState - 7, // 2: tetragon.ListTracingPoliciesResponse.policies:type_name -> tetragon.TracingPolicyStatus - 35, // 3: tetragon.GetStackTraceTreeResponse.root:type_name -> tetragon.StackTraceNode - 36, // 4: tetragon.ProcessInternal.process:type_name -> tetragon.Process - 37, // 5: tetragon.ProcessInternal.refcnt:type_name -> google.protobuf.UInt32Value - 34, // 6: tetragon.ProcessInternal.refcnt_ops:type_name -> tetragon.ProcessInternal.RefcntOpsEntry - 28, // 7: tetragon.DumpProcessCacheResArgs.processes:type_name -> tetragon.ProcessInternal - 1, // 8: tetragon.GetDebugRequest.flag:type_name -> tetragon.ConfigFlag - 27, // 9: tetragon.GetDebugRequest.dump:type_name -> tetragon.DumpProcessCacheReqArgs - 1, // 10: tetragon.GetDebugResponse.flag:type_name -> tetragon.ConfigFlag - 2, // 11: tetragon.GetDebugResponse.level:type_name -> tetragon.LogLevel - 29, // 12: tetragon.GetDebugResponse.processes:type_name -> tetragon.DumpProcessCacheResArgs - 1, // 13: tetragon.SetDebugRequest.flag:type_name -> tetragon.ConfigFlag - 2, // 14: tetragon.SetDebugRequest.level:type_name -> tetragon.LogLevel - 1, // 15: tetragon.SetDebugResponse.flag:type_name -> tetragon.ConfigFlag - 2, // 16: tetragon.SetDebugResponse.level:type_name -> tetragon.LogLevel - 38, // 17: tetragon.FineGuidanceSensors.GetEvents:input_type -> tetragon.GetEventsRequest - 39, // 18: tetragon.FineGuidanceSensors.GetHealth:input_type -> tetragon.GetHealthStatusRequest - 9, // 19: tetragon.FineGuidanceSensors.AddTracingPolicy:input_type -> tetragon.AddTracingPolicyRequest - 11, // 20: tetragon.FineGuidanceSensors.DeleteTracingPolicy:input_type -> tetragon.DeleteTracingPolicyRequest - 6, // 21: tetragon.FineGuidanceSensors.ListTracingPolicies:input_type -> tetragon.ListTracingPoliciesRequest - 13, // 22: tetragon.FineGuidanceSensors.EnableTracingPolicy:input_type -> tetragon.EnableTracingPolicyRequest - 15, // 23: tetragon.FineGuidanceSensors.DisableTracingPolicy:input_type -> tetragon.DisableTracingPolicyRequest - 3, // 24: tetragon.FineGuidanceSensors.ListSensors:input_type -> tetragon.ListSensorsRequest - 19, // 25: tetragon.FineGuidanceSensors.EnableSensor:input_type -> tetragon.EnableSensorRequest - 21, // 26: tetragon.FineGuidanceSensors.DisableSensor:input_type -> tetragon.DisableSensorRequest - 17, // 27: tetragon.FineGuidanceSensors.RemoveSensor:input_type -> tetragon.RemoveSensorRequest - 23, // 28: tetragon.FineGuidanceSensors.GetStackTraceTree:input_type -> tetragon.GetStackTraceTreeRequest - 25, // 29: tetragon.FineGuidanceSensors.GetVersion:input_type -> tetragon.GetVersionRequest - 40, // 30: tetragon.FineGuidanceSensors.RuntimeHook:input_type -> tetragon.RuntimeHookRequest - 30, // 31: tetragon.FineGuidanceSensors.GetDebug:input_type -> tetragon.GetDebugRequest - 32, // 32: tetragon.FineGuidanceSensors.SetDebug:input_type -> tetragon.SetDebugRequest - 41, // 33: tetragon.FineGuidanceSensors.GetEvents:output_type -> tetragon.GetEventsResponse - 42, // 34: tetragon.FineGuidanceSensors.GetHealth:output_type -> tetragon.GetHealthStatusResponse - 10, // 35: tetragon.FineGuidanceSensors.AddTracingPolicy:output_type -> tetragon.AddTracingPolicyResponse - 12, // 36: tetragon.FineGuidanceSensors.DeleteTracingPolicy:output_type -> tetragon.DeleteTracingPolicyResponse - 8, // 37: tetragon.FineGuidanceSensors.ListTracingPolicies:output_type -> tetragon.ListTracingPoliciesResponse - 14, // 38: tetragon.FineGuidanceSensors.EnableTracingPolicy:output_type -> tetragon.EnableTracingPolicyResponse - 16, // 39: tetragon.FineGuidanceSensors.DisableTracingPolicy:output_type -> tetragon.DisableTracingPolicyResponse - 5, // 40: tetragon.FineGuidanceSensors.ListSensors:output_type -> tetragon.ListSensorsResponse - 20, // 41: tetragon.FineGuidanceSensors.EnableSensor:output_type -> tetragon.EnableSensorResponse - 22, // 42: tetragon.FineGuidanceSensors.DisableSensor:output_type -> tetragon.DisableSensorResponse - 18, // 43: tetragon.FineGuidanceSensors.RemoveSensor:output_type -> tetragon.RemoveSensorResponse - 24, // 44: tetragon.FineGuidanceSensors.GetStackTraceTree:output_type -> tetragon.GetStackTraceTreeResponse - 26, // 45: tetragon.FineGuidanceSensors.GetVersion:output_type -> tetragon.GetVersionResponse - 43, // 46: tetragon.FineGuidanceSensors.RuntimeHook:output_type -> tetragon.RuntimeHookResponse - 31, // 47: tetragon.FineGuidanceSensors.GetDebug:output_type -> tetragon.GetDebugResponse - 33, // 48: tetragon.FineGuidanceSensors.SetDebug:output_type -> tetragon.SetDebugResponse - 33, // [33:49] is the sub-list for method output_type - 17, // [17:33] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 1, // 2: tetragon.TracingPolicyStatus.mode:type_name -> tetragon.TracingPolicyMode + 8, // 3: tetragon.ListTracingPoliciesResponse.policies:type_name -> tetragon.TracingPolicyStatus + 1, // 4: tetragon.ConfigureTracingPolicyRequest.mode:type_name -> tetragon.TracingPolicyMode + 38, // 5: tetragon.GetStackTraceTreeResponse.root:type_name -> tetragon.StackTraceNode + 39, // 6: tetragon.ProcessInternal.process:type_name -> tetragon.Process + 40, // 7: tetragon.ProcessInternal.refcnt:type_name -> google.protobuf.UInt32Value + 37, // 8: tetragon.ProcessInternal.refcnt_ops:type_name -> tetragon.ProcessInternal.RefcntOpsEntry + 31, // 9: tetragon.DumpProcessCacheResArgs.processes:type_name -> tetragon.ProcessInternal + 2, // 10: tetragon.GetDebugRequest.flag:type_name -> tetragon.ConfigFlag + 30, // 11: tetragon.GetDebugRequest.dump:type_name -> tetragon.DumpProcessCacheReqArgs + 2, // 12: tetragon.GetDebugResponse.flag:type_name -> tetragon.ConfigFlag + 3, // 13: tetragon.GetDebugResponse.level:type_name -> tetragon.LogLevel + 32, // 14: tetragon.GetDebugResponse.processes:type_name -> tetragon.DumpProcessCacheResArgs + 2, // 15: tetragon.SetDebugRequest.flag:type_name -> tetragon.ConfigFlag + 3, // 16: tetragon.SetDebugRequest.level:type_name -> tetragon.LogLevel + 2, // 17: tetragon.SetDebugResponse.flag:type_name -> tetragon.ConfigFlag + 3, // 18: tetragon.SetDebugResponse.level:type_name -> tetragon.LogLevel + 41, // 19: tetragon.FineGuidanceSensors.GetEvents:input_type -> tetragon.GetEventsRequest + 42, // 20: tetragon.FineGuidanceSensors.GetHealth:input_type -> tetragon.GetHealthStatusRequest + 10, // 21: tetragon.FineGuidanceSensors.AddTracingPolicy:input_type -> tetragon.AddTracingPolicyRequest + 12, // 22: tetragon.FineGuidanceSensors.DeleteTracingPolicy:input_type -> tetragon.DeleteTracingPolicyRequest + 7, // 23: tetragon.FineGuidanceSensors.ListTracingPolicies:input_type -> tetragon.ListTracingPoliciesRequest + 18, // 24: tetragon.FineGuidanceSensors.ConfigureTracingPolicy:input_type -> tetragon.ConfigureTracingPolicyRequest + 14, // 25: tetragon.FineGuidanceSensors.EnableTracingPolicy:input_type -> tetragon.EnableTracingPolicyRequest + 16, // 26: tetragon.FineGuidanceSensors.DisableTracingPolicy:input_type -> tetragon.DisableTracingPolicyRequest + 4, // 27: tetragon.FineGuidanceSensors.ListSensors:input_type -> tetragon.ListSensorsRequest + 22, // 28: tetragon.FineGuidanceSensors.EnableSensor:input_type -> tetragon.EnableSensorRequest + 24, // 29: tetragon.FineGuidanceSensors.DisableSensor:input_type -> tetragon.DisableSensorRequest + 20, // 30: tetragon.FineGuidanceSensors.RemoveSensor:input_type -> tetragon.RemoveSensorRequest + 26, // 31: tetragon.FineGuidanceSensors.GetStackTraceTree:input_type -> tetragon.GetStackTraceTreeRequest + 28, // 32: tetragon.FineGuidanceSensors.GetVersion:input_type -> tetragon.GetVersionRequest + 43, // 33: tetragon.FineGuidanceSensors.RuntimeHook:input_type -> tetragon.RuntimeHookRequest + 33, // 34: tetragon.FineGuidanceSensors.GetDebug:input_type -> tetragon.GetDebugRequest + 35, // 35: tetragon.FineGuidanceSensors.SetDebug:input_type -> tetragon.SetDebugRequest + 44, // 36: tetragon.FineGuidanceSensors.GetEvents:output_type -> tetragon.GetEventsResponse + 45, // 37: tetragon.FineGuidanceSensors.GetHealth:output_type -> tetragon.GetHealthStatusResponse + 11, // 38: tetragon.FineGuidanceSensors.AddTracingPolicy:output_type -> tetragon.AddTracingPolicyResponse + 13, // 39: tetragon.FineGuidanceSensors.DeleteTracingPolicy:output_type -> tetragon.DeleteTracingPolicyResponse + 9, // 40: tetragon.FineGuidanceSensors.ListTracingPolicies:output_type -> tetragon.ListTracingPoliciesResponse + 19, // 41: tetragon.FineGuidanceSensors.ConfigureTracingPolicy:output_type -> tetragon.ConfigureTracingPolicyResponse + 15, // 42: tetragon.FineGuidanceSensors.EnableTracingPolicy:output_type -> tetragon.EnableTracingPolicyResponse + 17, // 43: tetragon.FineGuidanceSensors.DisableTracingPolicy:output_type -> tetragon.DisableTracingPolicyResponse + 6, // 44: tetragon.FineGuidanceSensors.ListSensors:output_type -> tetragon.ListSensorsResponse + 23, // 45: tetragon.FineGuidanceSensors.EnableSensor:output_type -> tetragon.EnableSensorResponse + 25, // 46: tetragon.FineGuidanceSensors.DisableSensor:output_type -> tetragon.DisableSensorResponse + 21, // 47: tetragon.FineGuidanceSensors.RemoveSensor:output_type -> tetragon.RemoveSensorResponse + 27, // 48: tetragon.FineGuidanceSensors.GetStackTraceTree:output_type -> tetragon.GetStackTraceTreeResponse + 29, // 49: tetragon.FineGuidanceSensors.GetVersion:output_type -> tetragon.GetVersionResponse + 46, // 50: tetragon.FineGuidanceSensors.RuntimeHook:output_type -> tetragon.RuntimeHookResponse + 34, // 51: tetragon.FineGuidanceSensors.GetDebug:output_type -> tetragon.GetDebugResponse + 36, // 52: tetragon.FineGuidanceSensors.SetDebug:output_type -> tetragon.SetDebugResponse + 36, // [36:53] is the sub-list for method output_type + 19, // [19:36] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_tetragon_sensors_proto_init() } @@ -2198,17 +2396,18 @@ func file_tetragon_sensors_proto_init() { file_tetragon_events_proto_init() file_tetragon_stack_proto_init() file_tetragon_tetragon_proto_init() - file_tetragon_sensors_proto_msgTypes[27].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[14].OneofWrappers = []any{} + file_tetragon_sensors_proto_msgTypes[29].OneofWrappers = []any{ (*GetDebugRequest_Dump)(nil), } - file_tetragon_sensors_proto_msgTypes[28].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[30].OneofWrappers = []any{ (*GetDebugResponse_Level)(nil), (*GetDebugResponse_Processes)(nil), } - file_tetragon_sensors_proto_msgTypes[29].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[31].OneofWrappers = []any{ (*SetDebugRequest_Level)(nil), } - file_tetragon_sensors_proto_msgTypes[30].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[32].OneofWrappers = []any{ (*SetDebugResponse_Level)(nil), } type x struct{} @@ -2216,8 +2415,8 @@ func file_tetragon_sensors_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tetragon_sensors_proto_rawDesc, - NumEnums: 3, - NumMessages: 32, + NumEnums: 4, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/api/v1/tetragon/sensors.pb.json.go b/api/v1/tetragon/sensors.pb.json.go index 13c3e29ca9e..b649a949140 100644 --- a/api/v1/tetragon/sensors.pb.json.go +++ b/api/v1/tetragon/sensors.pb.json.go @@ -178,6 +178,30 @@ func (msg *DisableTracingPolicyResponse) UnmarshalJSON(b []byte) error { return protojson.UnmarshalOptions{}.Unmarshal(b, msg) } +// MarshalJSON implements json.Marshaler +func (msg *ConfigureTracingPolicyRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ConfigureTracingPolicyRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *ConfigureTracingPolicyResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ConfigureTracingPolicyResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + // MarshalJSON implements json.Marshaler func (msg *RemoveSensorRequest) MarshalJSON() ([]byte, error) { return protojson.MarshalOptions{ diff --git a/api/v1/tetragon/sensors.proto b/api/v1/tetragon/sensors.proto index 730bfb0adbe..ce99ce30314 100644 --- a/api/v1/tetragon/sensors.proto +++ b/api/v1/tetragon/sensors.proto @@ -49,6 +49,12 @@ enum TracingPolicyState { TP_STATE_UNLOADING = 6; } +enum TracingPolicyMode { + TP_MODE_UNKNOWN = 0; + TP_MODE_ENFORCE = 1; + TP_MODE_MONITOR = 2; +} + message TracingPolicyStatus { // id is the id of the policy uint64 id = 1; @@ -70,6 +76,8 @@ message TracingPolicyStatus { TracingPolicyState state = 9; // the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) uint64 kernel_memory_bytes = 10; + // current mode of the tracing policy + TracingPolicyMode mode = 11; } message ListTracingPoliciesResponse { @@ -99,6 +107,16 @@ message DisableTracingPolicyRequest { } message DisableTracingPolicyResponse {} +message ConfigureTracingPolicyRequest { + string name = 1; + string namespace = 2; + + optional bool enable = 3; + optional TracingPolicyMode mode = 4; +} + +message ConfigureTracingPolicyResponse {} + message RemoveSensorRequest { string name = 1; } @@ -203,8 +221,22 @@ service FineGuidanceSensors { rpc AddTracingPolicy(AddTracingPolicyRequest) returns (AddTracingPolicyResponse) {} rpc DeleteTracingPolicy(DeleteTracingPolicyRequest) returns (DeleteTracingPolicyResponse) {} rpc ListTracingPolicies(ListTracingPoliciesRequest) returns (ListTracingPoliciesResponse) {} - rpc EnableTracingPolicy(EnableTracingPolicyRequest) returns (EnableTracingPolicyResponse) {} - rpc DisableTracingPolicy(DisableTracingPolicyRequest) returns (DisableTracingPolicyResponse) {} + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + rpc ConfigureTracingPolicy(ConfigureTracingPolicyRequest) returns (ConfigureTracingPolicyResponse) {} + + rpc EnableTracingPolicy(EnableTracingPolicyRequest) returns (EnableTracingPolicyResponse) { + // use ConfigureTracingPolicy instead + option deprecated = true; + } + rpc DisableTracingPolicy(DisableTracingPolicyRequest) returns (DisableTracingPolicyResponse) { + // use ConfigureTracingPolicy instead + option deprecated = true; + } rpc ListSensors(ListSensorsRequest) returns (ListSensorsResponse) { option deprecated = true; diff --git a/api/v1/tetragon/sensors_grpc.pb.go b/api/v1/tetragon/sensors_grpc.pb.go index 613710e7002..d14fbe03a74 100644 --- a/api/v1/tetragon/sensors_grpc.pb.go +++ b/api/v1/tetragon/sensors_grpc.pb.go @@ -22,22 +22,23 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - FineGuidanceSensors_GetEvents_FullMethodName = "/tetragon.FineGuidanceSensors/GetEvents" - FineGuidanceSensors_GetHealth_FullMethodName = "/tetragon.FineGuidanceSensors/GetHealth" - FineGuidanceSensors_AddTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/AddTracingPolicy" - FineGuidanceSensors_DeleteTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DeleteTracingPolicy" - FineGuidanceSensors_ListTracingPolicies_FullMethodName = "/tetragon.FineGuidanceSensors/ListTracingPolicies" - FineGuidanceSensors_EnableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/EnableTracingPolicy" - FineGuidanceSensors_DisableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DisableTracingPolicy" - FineGuidanceSensors_ListSensors_FullMethodName = "/tetragon.FineGuidanceSensors/ListSensors" - FineGuidanceSensors_EnableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/EnableSensor" - FineGuidanceSensors_DisableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/DisableSensor" - FineGuidanceSensors_RemoveSensor_FullMethodName = "/tetragon.FineGuidanceSensors/RemoveSensor" - FineGuidanceSensors_GetStackTraceTree_FullMethodName = "/tetragon.FineGuidanceSensors/GetStackTraceTree" - FineGuidanceSensors_GetVersion_FullMethodName = "/tetragon.FineGuidanceSensors/GetVersion" - FineGuidanceSensors_RuntimeHook_FullMethodName = "/tetragon.FineGuidanceSensors/RuntimeHook" - FineGuidanceSensors_GetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/GetDebug" - FineGuidanceSensors_SetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/SetDebug" + FineGuidanceSensors_GetEvents_FullMethodName = "/tetragon.FineGuidanceSensors/GetEvents" + FineGuidanceSensors_GetHealth_FullMethodName = "/tetragon.FineGuidanceSensors/GetHealth" + FineGuidanceSensors_AddTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/AddTracingPolicy" + FineGuidanceSensors_DeleteTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DeleteTracingPolicy" + FineGuidanceSensors_ListTracingPolicies_FullMethodName = "/tetragon.FineGuidanceSensors/ListTracingPolicies" + FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/ConfigureTracingPolicy" + FineGuidanceSensors_EnableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/EnableTracingPolicy" + FineGuidanceSensors_DisableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DisableTracingPolicy" + FineGuidanceSensors_ListSensors_FullMethodName = "/tetragon.FineGuidanceSensors/ListSensors" + FineGuidanceSensors_EnableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/EnableSensor" + FineGuidanceSensors_DisableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/DisableSensor" + FineGuidanceSensors_RemoveSensor_FullMethodName = "/tetragon.FineGuidanceSensors/RemoveSensor" + FineGuidanceSensors_GetStackTraceTree_FullMethodName = "/tetragon.FineGuidanceSensors/GetStackTraceTree" + FineGuidanceSensors_GetVersion_FullMethodName = "/tetragon.FineGuidanceSensors/GetVersion" + FineGuidanceSensors_RuntimeHook_FullMethodName = "/tetragon.FineGuidanceSensors/RuntimeHook" + FineGuidanceSensors_GetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/GetDebug" + FineGuidanceSensors_SetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/SetDebug" ) // FineGuidanceSensorsClient is the client API for FineGuidanceSensors service. @@ -49,7 +50,17 @@ type FineGuidanceSensorsClient interface { AddTracingPolicy(ctx context.Context, in *AddTracingPolicyRequest, opts ...grpc.CallOption) (*AddTracingPolicyResponse, error) DeleteTracingPolicy(ctx context.Context, in *DeleteTracingPolicyRequest, opts ...grpc.CallOption) (*DeleteTracingPolicyResponse, error) ListTracingPolicies(ctx context.Context, in *ListTracingPoliciesRequest, opts ...grpc.CallOption) (*ListTracingPoliciesResponse, error) + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + ConfigureTracingPolicy(ctx context.Context, in *ConfigureTracingPolicyRequest, opts ...grpc.CallOption) (*ConfigureTracingPolicyResponse, error) + // Deprecated: Do not use. EnableTracingPolicy(ctx context.Context, in *EnableTracingPolicyRequest, opts ...grpc.CallOption) (*EnableTracingPolicyResponse, error) + // Deprecated: Do not use. DisableTracingPolicy(ctx context.Context, in *DisableTracingPolicyRequest, opts ...grpc.CallOption) (*DisableTracingPolicyResponse, error) // Deprecated: Do not use. ListSensors(ctx context.Context, in *ListSensorsRequest, opts ...grpc.CallOption) (*ListSensorsResponse, error) @@ -133,6 +144,17 @@ func (c *fineGuidanceSensorsClient) ListTracingPolicies(ctx context.Context, in return out, nil } +func (c *fineGuidanceSensorsClient) ConfigureTracingPolicy(ctx context.Context, in *ConfigureTracingPolicyRequest, opts ...grpc.CallOption) (*ConfigureTracingPolicyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ConfigureTracingPolicyResponse) + err := c.cc.Invoke(ctx, FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Deprecated: Do not use. func (c *fineGuidanceSensorsClient) EnableTracingPolicy(ctx context.Context, in *EnableTracingPolicyRequest, opts ...grpc.CallOption) (*EnableTracingPolicyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(EnableTracingPolicyResponse) @@ -143,6 +165,7 @@ func (c *fineGuidanceSensorsClient) EnableTracingPolicy(ctx context.Context, in return out, nil } +// Deprecated: Do not use. func (c *fineGuidanceSensorsClient) DisableTracingPolicy(ctx context.Context, in *DisableTracingPolicyRequest, opts ...grpc.CallOption) (*DisableTracingPolicyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DisableTracingPolicyResponse) @@ -256,7 +279,17 @@ type FineGuidanceSensorsServer interface { AddTracingPolicy(context.Context, *AddTracingPolicyRequest) (*AddTracingPolicyResponse, error) DeleteTracingPolicy(context.Context, *DeleteTracingPolicyRequest) (*DeleteTracingPolicyResponse, error) ListTracingPolicies(context.Context, *ListTracingPoliciesRequest) (*ListTracingPoliciesResponse, error) + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + ConfigureTracingPolicy(context.Context, *ConfigureTracingPolicyRequest) (*ConfigureTracingPolicyResponse, error) + // Deprecated: Do not use. EnableTracingPolicy(context.Context, *EnableTracingPolicyRequest) (*EnableTracingPolicyResponse, error) + // Deprecated: Do not use. DisableTracingPolicy(context.Context, *DisableTracingPolicyRequest) (*DisableTracingPolicyResponse, error) // Deprecated: Do not use. ListSensors(context.Context, *ListSensorsRequest) (*ListSensorsResponse, error) @@ -296,6 +329,9 @@ func (UnimplementedFineGuidanceSensorsServer) DeleteTracingPolicy(context.Contex func (UnimplementedFineGuidanceSensorsServer) ListTracingPolicies(context.Context, *ListTracingPoliciesRequest) (*ListTracingPoliciesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTracingPolicies not implemented") } +func (UnimplementedFineGuidanceSensorsServer) ConfigureTracingPolicy(context.Context, *ConfigureTracingPolicyRequest) (*ConfigureTracingPolicyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ConfigureTracingPolicy not implemented") +} func (UnimplementedFineGuidanceSensorsServer) EnableTracingPolicy(context.Context, *EnableTracingPolicyRequest) (*EnableTracingPolicyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableTracingPolicy not implemented") } @@ -433,6 +469,24 @@ func _FineGuidanceSensors_ListTracingPolicies_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _FineGuidanceSensors_ConfigureTracingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ConfigureTracingPolicyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FineGuidanceSensorsServer).ConfigureTracingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FineGuidanceSensorsServer).ConfigureTracingPolicy(ctx, req.(*ConfigureTracingPolicyRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _FineGuidanceSensors_EnableTracingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(EnableTracingPolicyRequest) if err := dec(in); err != nil { @@ -654,6 +708,10 @@ var FineGuidanceSensors_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTracingPolicies", Handler: _FineGuidanceSensors_ListTracingPolicies_Handler, }, + { + MethodName: "ConfigureTracingPolicy", + Handler: _FineGuidanceSensors_ConfigureTracingPolicy_Handler, + }, { MethodName: "EnableTracingPolicy", Handler: _FineGuidanceSensors_EnableTracingPolicy_Handler, diff --git a/bpf/lib/policy_conf.h b/bpf/lib/policy_conf.h new file mode 100644 index 00000000000..5da06bb453b --- /dev/null +++ b/bpf/lib/policy_conf.h @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +/* Copyright Authors of Tetragon */ + +#ifndef BPF_POLICYCONF_H__ +#define BPF_POLICYCONF_H__ + +// NB: values should match the ones defined in go (EnforceMode, MonitorMode) +enum { + POLICY_MODE_ENFORCE = 0, + POLICY_MODE_MONITOR = 1, +}; + +struct policy_conf { + __u8 mode; +} __attribute__((packed)); + +struct { + __uint(type, BPF_MAP_TYPE_ARRAY); + __uint(max_entries, 1); + __type(key, __u32); + __type(value, struct policy_conf); +} policy_conf SEC(".maps"); + +#endif /* BPF_POLICYCONF_H__ */ diff --git a/bpf/process/generic_calls.h b/bpf/process/generic_calls.h index c2dfafa24c8..afddd197cca 100644 --- a/bpf/process/generic_calls.h +++ b/bpf/process/generic_calls.h @@ -9,6 +9,7 @@ #include "policy_filter.h" #include "types/basic.h" #include "vmlinux.h" +#include "policy_conf.h" #define MAX_TOTAL 9000 @@ -283,7 +284,7 @@ do_override_action(__s32 error) #endif FUNC_LOCAL __u32 -do_action(void *ctx, __u32 i, struct selector_action *actions, bool *post) +do_action(void *ctx, __u32 i, struct selector_action *actions, bool *post, bool monitor_mode) { int signal __maybe_unused = FGS_SIGKILL; int action = actions->act[i]; @@ -354,11 +355,13 @@ do_action(void *ctx, __u32 i, struct selector_action *actions, bool *post) case ACTION_SIGNAL: signal = actions->act[++i]; case ACTION_SIGKILL: - do_action_signal(signal); + if (!monitor_mode) + do_action_signal(signal); break; case ACTION_OVERRIDE: error = actions->act[++i]; - do_override_action(error); + if (!monitor_mode) + do_override_action(error); break; case ACTION_GETURL: case ACTION_DNSLOOKUP: @@ -374,7 +377,8 @@ do_action(void *ctx, __u32 i, struct selector_action *actions, bool *post) error = actions->act[++i]; signal = actions->act[++i]; argi = actions->act[++i]; - do_action_notify_enforcer(e, error, signal, argi); + if (!monitor_mode) + do_action_notify_enforcer(e, error, signal, argi); break; case ACTION_CLEANUP_ENFORCER_NOTIFICATION: do_enforcer_cleanup(); @@ -401,7 +405,16 @@ FUNC_INLINE bool do_actions(void *ctx, struct selector_action *actions) { bool post = true; - __u32 l, i = 0; + __u32 l, i = 0, zero = 0; + struct policy_conf *pcnf; + bool monitor_mode = false; + + /* check if policy is in monitor (non-enforcement) mode and, if it is, skip enforcement + * actions + */ + pcnf = map_lookup_elem(&policy_conf, &zero); + if (pcnf && pcnf->mode == POLICY_MODE_MONITOR) + monitor_mode = true; #ifndef __LARGE_BPF_PROG #pragma unroll @@ -409,7 +422,7 @@ do_actions(void *ctx, struct selector_action *actions) for (l = 0; l < MAX_ACTIONS; l++) { if (!has_action(actions, i)) break; - i = do_action(ctx, i, actions, &post); + i = do_action(ctx, i, actions, &post, monitor_mode); } return post; diff --git a/cmd/tetra/common/utils.go b/cmd/tetra/common/utils.go index 0abf1a1a109..0657df3ae74 100644 --- a/cmd/tetra/common/utils.go +++ b/cmd/tetra/common/utils.go @@ -32,7 +32,7 @@ func HumanizeByteCount(b int) string { func PrintTracingPolicies(output io.Writer, policies []*tetragon.TracingPolicyStatus, skipPolicy func(pol *tetragon.TracingPolicyStatus) bool) { // tabwriter config imitates kubectl default output, i.e. 3 spaces padding w := tabwriter.NewWriter(output, 0, 0, 3, ' ', 0) - fmt.Fprintln(w, "ID\tNAME\tSTATE\tFILTERID\tNAMESPACE\tSENSORS\tKERNELMEMORY") + fmt.Fprintln(w, "ID\tNAME\tSTATE\tFILTERID\tNAMESPACE\tSENSORS\tKERNELMEMORY\tMODE") for _, pol := range policies { if skipPolicy != nil && skipPolicy(pol) { @@ -70,7 +70,7 @@ func PrintTracingPolicies(output io.Writer, policies []*tetragon.TracingPolicySt } } - fmt.Fprintf(w, "%d\t%s\t%s\t%d\t%s\t%s\t%s\t\n", + fmt.Fprintf(w, "%d\t%s\t%s\t%d\t%s\t%s\t%s\t%s\t\n", pol.Id, pol.Name, strings.TrimPrefix(strings.ToLower(pol.State.String()), "tp_state_"), @@ -78,6 +78,7 @@ func PrintTracingPolicies(output io.Writer, policies []*tetragon.TracingPolicySt namespace, sensors, HumanizeByteCount(int(pol.KernelMemoryBytes)), + strings.TrimPrefix(strings.ToLower(pol.Mode.String()), "tp_mode_"), ) } w.Flush() diff --git a/cmd/tetra/getevents/io_reader_client.go b/cmd/tetra/getevents/io_reader_client.go index f8aaeee06b7..821527b9e9b 100644 --- a/cmd/tetra/getevents/io_reader_client.go +++ b/cmd/tetra/getevents/io_reader_client.go @@ -140,3 +140,7 @@ func (i *ioReaderClient) GetDebug(_ context.Context, _ *tetragon.GetDebugRequest func (i *ioReaderClient) SetDebug(_ context.Context, _ *tetragon.SetDebugRequest, _ ...grpc.CallOption) (*tetragon.SetDebugResponse, error) { panic("stub") } + +func (i *ioReaderClient) ConfigureTracingPolicy(_ context.Context, _ *tetragon.ConfigureTracingPolicyRequest, _ ...grpc.CallOption) (*tetragon.ConfigureTracingPolicyResponse, error) { + panic("stub") +} diff --git a/cmd/tetra/tracingpolicy/tracingpolicy.go b/cmd/tetra/tracingpolicy/tracingpolicy.go index 2c7024a79c9..a6717bc4eb7 100644 --- a/cmd/tetra/tracingpolicy/tracingpolicy.go +++ b/cmd/tetra/tracingpolicy/tracingpolicy.go @@ -10,19 +10,64 @@ import ( "github.com/cilium/tetragon/api/v1/tetragon" "github.com/cilium/tetragon/cmd/tetra/common" "github.com/cilium/tetragon/cmd/tetra/tracingpolicy/generate" + "github.com/cilium/tetragon/pkg/tracingpolicy" "github.com/spf13/cobra" ) -func New() *cobra.Command { - tpCmd := &cobra.Command{ - Use: "tracingpolicy", - Aliases: []string{"tp"}, - Short: "Manage tracing policies", +func tpConfigure(name, namespace string, enable *bool, mode *tetragon.TracingPolicyMode) error { + c, err := common.NewClientWithDefaultContextAndAddress() + if err != nil { + return fmt.Errorf("failed create gRPC client: %w", err) + } + defer c.Close() + + _, err = c.Client.ConfigureTracingPolicy(c.Ctx, &tetragon.ConfigureTracingPolicyRequest{ + Name: name, + Namespace: namespace, + Enable: enable, + Mode: mode, + }) + return err +} + +func tpModifyCmd() *cobra.Command { + var mode string + ret := &cobra.Command{ + Use: "modify ", + Short: "modify a tracing policy yaml file", + Args: cobra.ExactArgs(1), + RunE: func(_ *cobra.Command, args []string) error { + c, err := common.NewClientWithDefaultContextAndAddress() + if err != nil { + return fmt.Errorf("failed create gRPC client: %w", err) + } + defer c.Close() + + yamlb, err := os.ReadFile(args[0]) + if err != nil { + return fmt.Errorf("failed to read yaml file %s: %w", args[0], err) + } + + if mode != "" { + yamlb, err = tracingpolicy.PolicyYAMLSetMode(yamlb, mode) + if err != nil { + return fmt.Errorf("failed to apply mode %q to yaml file %s: %w", mode, args[0], err) + } + } + _, err = os.Stdout.Write(yamlb) + return err + }, } + flags := ret.Flags() + flags.StringVarP(&mode, "mode", "m", "", "Tracing policy mode (enforce|monitor)") + return ret +} - tpAddCmd := &cobra.Command{ +func tpAddCmd() *cobra.Command { + var mode string + ret := &cobra.Command{ Use: "add ", - Short: "add a new sensor based on a tracing policy", + Short: "add a tracing policy", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { c, err := common.NewClientWithDefaultContextAndAddress() @@ -36,6 +81,13 @@ func New() *cobra.Command { return fmt.Errorf("failed to read yaml file %s: %w", args[0], err) } + if mode != "" { + yamlb, err = tracingpolicy.PolicyYAMLSetMode(yamlb, mode) + if err != nil { + return fmt.Errorf("failed to apply mode %q to yaml file %s: %w", mode, args[0], err) + } + } + _, err = c.Client.AddTracingPolicy(c.Ctx, &tetragon.AddTracingPolicyRequest{ Yaml: string(yamlb), }) @@ -47,9 +99,14 @@ func New() *cobra.Command { return nil }, } + flags := ret.Flags() + flags.StringVarP(&mode, "mode", "m", "", "Tracing policy mode (enforce|monitor)") + return ret +} - var tpDelNamespaceFlag string - tpDelCmd := &cobra.Command{ +func tpDelCmd() *cobra.Command { + var namespace string + ret := &cobra.Command{ Use: "delete ", Short: "delete a tracing policy", Args: cobra.ExactArgs(1), @@ -62,7 +119,7 @@ func New() *cobra.Command { _, err = c.Client.DeleteTracingPolicy(c.Ctx, &tetragon.DeleteTracingPolicyRequest{ Name: args[0], - Namespace: tpDelNamespaceFlag, + Namespace: namespace, }) if err != nil { return fmt.Errorf("failed to delete tracing policy: %w", err) @@ -72,70 +129,66 @@ func New() *cobra.Command { return nil }, } + flags := ret.Flags() + flags.StringVarP(&namespace, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") + return ret +} - var tpEnableNamespaceFlag string - tpEnableCmd := &cobra.Command{ +func tpEnableCmd() *cobra.Command { + var namespace string + ret := &cobra.Command{ Use: "enable ", Short: "enable a tracing policy", Long: "Enable a disabled tracing policy. Use disable to re-disable the tracing policy.", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - c, err := common.NewClientWithDefaultContextAndAddress() - if err != nil { - return fmt.Errorf("failed create gRPC client: %w", err) - } - defer c.Close() - - _, err = c.Client.EnableTracingPolicy(c.Ctx, &tetragon.EnableTracingPolicyRequest{ - Name: args[0], - Namespace: tpEnableNamespaceFlag, - }) + enable := true + err := tpConfigure(args[0], namespace, &enable, nil) if err != nil { return fmt.Errorf("failed to enable tracing policy: %w", err) } cmd.Printf("tracing policy %q enabled\n", args[0]) - return nil }, } + flags := ret.Flags() + flags.StringVarP(&namespace, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") + return ret +} - var tpDisableNamespaceFlag string - tpDisableCmd := &cobra.Command{ +func tpDisableCmd() *cobra.Command { + var namespace string + ret := &cobra.Command{ Use: "disable ", Short: "disable a tracing policy", Long: "Disable an enabled tracing policy. Use enable to re-enable the tracing policy.", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { - c, err := common.NewClientWithDefaultContextAndAddress() - if err != nil { - return fmt.Errorf("failed create gRPC client: %w", err) - } - defer c.Close() - - _, err = c.Client.DisableTracingPolicy(c.Ctx, &tetragon.DisableTracingPolicyRequest{ - Name: args[0], - Namespace: tpDisableNamespaceFlag, - }) - + enable := false + err := tpConfigure(args[0], namespace, &enable, nil) if err != nil { return fmt.Errorf("failed to disable tracing policy: %w", err) } - cmd.Printf("tracing policy %q disabled\n", args[0]) - return nil }, } - var tpListOutputFlag string - tpListCmd := &cobra.Command{ + flags := ret.Flags() + flags.StringVarP(&namespace, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") + return ret +} + +func tpListCmd() *cobra.Command { + var output string + ret := &cobra.Command{ Use: "list", Short: "list loaded tracing policies", Long: "List loaded tracing policies, use the JSON output format for full output.", Args: cobra.ExactArgs(0), PreRunE: func(_ *cobra.Command, _ []string) error { - if tpListOutputFlag != "json" && tpListOutputFlag != "text" { - return fmt.Errorf("invalid value for %q flag: %s", common.KeyOutput, tpListOutputFlag) + if output != "json" && output != "text" { + return fmt.Errorf("invalid value for %q flag: %s", common.KeyOutput, output) } return nil }, @@ -151,7 +204,7 @@ func New() *cobra.Command { return fmt.Errorf("failed to list tracing policies: %w", err) } - switch tpListOutputFlag { + switch output { case "json": b, err := res.MarshalJSON() if err != nil { @@ -165,21 +218,59 @@ func New() *cobra.Command { return nil }, } - tpDelFlags := tpDelCmd.Flags() - tpDelFlags.StringVarP(&tpDelNamespaceFlag, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") - tpEnableFlags := tpEnableCmd.Flags() - tpEnableFlags.StringVarP(&tpEnableNamespaceFlag, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") - tpDisableFlags := tpDisableCmd.Flags() - tpDisableFlags.StringVarP(&tpDisableNamespaceFlag, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") - tpListFlags := tpListCmd.Flags() - tpListFlags.StringVarP(&tpListOutputFlag, common.KeyOutput, "o", "text", "Output format. text or json") + flags := ret.Flags() + flags.StringVarP(&output, common.KeyOutput, "o", "text", "Output format. text or json") + return ret +} + +func tpSetModeCmd() *cobra.Command { + var namespace string + ret := &cobra.Command{ + Use: "set-mode ", + Short: "set the mode of a tracing policy", + Long: "Set a tracing policy to monitor or enforce mode.", + Args: cobra.ExactArgs(2), + RunE: func(cmd *cobra.Command, args []string) error { + + var mode tetragon.TracingPolicyMode + switch args[1] { + case "enforce": + mode = tetragon.TracingPolicyMode_TP_MODE_ENFORCE + case "monitor": + mode = tetragon.TracingPolicyMode_TP_MODE_MONITOR + default: + return fmt.Errorf("invalid mode %q", args[1]) + } + + err := tpConfigure(args[0], namespace, nil, &mode) + if err != nil { + return fmt.Errorf("failed set mode to %q tracing policy: %w", args[1], err) + } + cmd.Printf("tracing policy %q set to mode %q\n", args[0], args[1]) + return nil + }, + } + + flags := ret.Flags() + flags.StringVarP(&namespace, common.KeyNamespace, "n", "", "Namespace of the tracing policy.") + return ret +} + +func New() *cobra.Command { + tpCmd := &cobra.Command{ + Use: "tracingpolicy", + Aliases: []string{"tp"}, + Short: "Manage tracing policies", + } tpCmd.AddCommand( - tpAddCmd, - tpDelCmd, - tpEnableCmd, - tpDisableCmd, - tpListCmd, + tpModifyCmd(), + tpAddCmd(), + tpDelCmd(), + tpEnableCmd(), + tpDisableCmd(), + tpListCmd(), + tpSetModeCmd(), generate.New(), ) diff --git a/contrib/tester-progs/.gitignore b/contrib/tester-progs/.gitignore index cf908508469..bd39b382140 100644 --- a/contrib/tester-progs/.gitignore +++ b/contrib/tester-progs/.gitignore @@ -25,3 +25,4 @@ direct-write-tester user-stacktrace pause /test-helper +/raisesigkill diff --git a/contrib/tester-progs/Makefile b/contrib/tester-progs/Makefile index 48f7a575ef2..d2ab683c87a 100644 --- a/contrib/tester-progs/Makefile +++ b/contrib/tester-progs/Makefile @@ -26,7 +26,8 @@ PROGS = sigkill-tester \ change-capabilities \ user-stacktrace \ test-helper \ - pause + pause \ + raisesigkill all: $(PROGS) diff --git a/contrib/tester-progs/raisesigkill.c b/contrib/tester-progs/raisesigkill.c new file mode 100644 index 00000000000..b563219292b --- /dev/null +++ b/contrib/tester-progs/raisesigkill.c @@ -0,0 +1,6 @@ +#include + +int main(int argc, char **argv) +{ + raise(SIGKILL); +} diff --git a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go index b814832d19f..2471e85f262 100644 --- a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go +++ b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go @@ -92,6 +92,55 @@ func (TracingPolicyState) EnumDescriptor() ([]byte, []int) { return file_tetragon_sensors_proto_rawDescGZIP(), []int{0} } +type TracingPolicyMode int32 + +const ( + TracingPolicyMode_TP_MODE_UNKNOWN TracingPolicyMode = 0 + TracingPolicyMode_TP_MODE_ENFORCE TracingPolicyMode = 1 + TracingPolicyMode_TP_MODE_MONITOR TracingPolicyMode = 2 +) + +// Enum value maps for TracingPolicyMode. +var ( + TracingPolicyMode_name = map[int32]string{ + 0: "TP_MODE_UNKNOWN", + 1: "TP_MODE_ENFORCE", + 2: "TP_MODE_MONITOR", + } + TracingPolicyMode_value = map[string]int32{ + "TP_MODE_UNKNOWN": 0, + "TP_MODE_ENFORCE": 1, + "TP_MODE_MONITOR": 2, + } +) + +func (x TracingPolicyMode) Enum() *TracingPolicyMode { + p := new(TracingPolicyMode) + *p = x + return p +} + +func (x TracingPolicyMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TracingPolicyMode) Descriptor() protoreflect.EnumDescriptor { + return file_tetragon_sensors_proto_enumTypes[1].Descriptor() +} + +func (TracingPolicyMode) Type() protoreflect.EnumType { + return &file_tetragon_sensors_proto_enumTypes[1] +} + +func (x TracingPolicyMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TracingPolicyMode.Descriptor instead. +func (TracingPolicyMode) EnumDescriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{1} +} + // For now, we only want to support debug-related config flags to be configurable. type ConfigFlag int32 @@ -123,11 +172,11 @@ func (x ConfigFlag) String() string { } func (ConfigFlag) Descriptor() protoreflect.EnumDescriptor { - return file_tetragon_sensors_proto_enumTypes[1].Descriptor() + return file_tetragon_sensors_proto_enumTypes[2].Descriptor() } func (ConfigFlag) Type() protoreflect.EnumType { - return &file_tetragon_sensors_proto_enumTypes[1] + return &file_tetragon_sensors_proto_enumTypes[2] } func (x ConfigFlag) Number() protoreflect.EnumNumber { @@ -136,7 +185,7 @@ func (x ConfigFlag) Number() protoreflect.EnumNumber { // Deprecated: Use ConfigFlag.Descriptor instead. func (ConfigFlag) EnumDescriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{1} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{2} } type LogLevel int32 @@ -184,11 +233,11 @@ func (x LogLevel) String() string { } func (LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_tetragon_sensors_proto_enumTypes[2].Descriptor() + return file_tetragon_sensors_proto_enumTypes[3].Descriptor() } func (LogLevel) Type() protoreflect.EnumType { - return &file_tetragon_sensors_proto_enumTypes[2] + return &file_tetragon_sensors_proto_enumTypes[3] } func (x LogLevel) Number() protoreflect.EnumNumber { @@ -197,7 +246,7 @@ func (x LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use LogLevel.Descriptor instead. func (LogLevel) EnumDescriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{2} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{3} } type ListSensorsRequest struct { @@ -403,8 +452,10 @@ type TracingPolicyStatus struct { State TracingPolicyState `protobuf:"varint,9,opt,name=state,proto3,enum=tetragon.TracingPolicyState" json:"state,omitempty"` // the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) KernelMemoryBytes uint64 `protobuf:"varint,10,opt,name=kernel_memory_bytes,json=kernelMemoryBytes,proto3" json:"kernel_memory_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // current mode of the tracing policy + Mode TracingPolicyMode `protobuf:"varint,11,opt,name=mode,proto3,enum=tetragon.TracingPolicyMode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TracingPolicyStatus) Reset() { @@ -508,6 +559,13 @@ func (x *TracingPolicyStatus) GetKernelMemoryBytes() uint64 { return 0 } +func (x *TracingPolicyStatus) GetMode() TracingPolicyMode { + if x != nil { + return x.Mode + } + return TracingPolicyMode_TP_MODE_UNKNOWN +} + type ListTracingPoliciesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Policies []*TracingPolicyStatus `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` @@ -896,6 +954,110 @@ func (*DisableTracingPolicyResponse) Descriptor() ([]byte, []int) { return file_tetragon_sensors_proto_rawDescGZIP(), []int{13} } +type ConfigureTracingPolicyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Enable *bool `protobuf:"varint,3,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + Mode *TracingPolicyMode `protobuf:"varint,4,opt,name=mode,proto3,enum=tetragon.TracingPolicyMode,oneof" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigureTracingPolicyRequest) Reset() { + *x = ConfigureTracingPolicyRequest{} + mi := &file_tetragon_sensors_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigureTracingPolicyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigureTracingPolicyRequest) ProtoMessage() {} + +func (x *ConfigureTracingPolicyRequest) ProtoReflect() protoreflect.Message { + mi := &file_tetragon_sensors_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 ConfigureTracingPolicyRequest.ProtoReflect.Descriptor instead. +func (*ConfigureTracingPolicyRequest) Descriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{14} +} + +func (x *ConfigureTracingPolicyRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ConfigureTracingPolicyRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *ConfigureTracingPolicyRequest) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable + } + return false +} + +func (x *ConfigureTracingPolicyRequest) GetMode() TracingPolicyMode { + if x != nil && x.Mode != nil { + return *x.Mode + } + return TracingPolicyMode_TP_MODE_UNKNOWN +} + +type ConfigureTracingPolicyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigureTracingPolicyResponse) Reset() { + *x = ConfigureTracingPolicyResponse{} + mi := &file_tetragon_sensors_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigureTracingPolicyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigureTracingPolicyResponse) ProtoMessage() {} + +func (x *ConfigureTracingPolicyResponse) ProtoReflect() protoreflect.Message { + mi := &file_tetragon_sensors_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 ConfigureTracingPolicyResponse.ProtoReflect.Descriptor instead. +func (*ConfigureTracingPolicyResponse) Descriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{15} +} + type RemoveSensorRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -905,7 +1067,7 @@ type RemoveSensorRequest struct { func (x *RemoveSensorRequest) Reset() { *x = RemoveSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[14] + mi := &file_tetragon_sensors_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +1079,7 @@ func (x *RemoveSensorRequest) String() string { func (*RemoveSensorRequest) ProtoMessage() {} func (x *RemoveSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[14] + mi := &file_tetragon_sensors_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,7 +1092,7 @@ func (x *RemoveSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSensorRequest.ProtoReflect.Descriptor instead. func (*RemoveSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{14} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{16} } func (x *RemoveSensorRequest) GetName() string { @@ -948,7 +1110,7 @@ type RemoveSensorResponse struct { func (x *RemoveSensorResponse) Reset() { *x = RemoveSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[15] + mi := &file_tetragon_sensors_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -960,7 +1122,7 @@ func (x *RemoveSensorResponse) String() string { func (*RemoveSensorResponse) ProtoMessage() {} func (x *RemoveSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[15] + mi := &file_tetragon_sensors_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -973,7 +1135,7 @@ func (x *RemoveSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSensorResponse.ProtoReflect.Descriptor instead. func (*RemoveSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{15} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{17} } type EnableSensorRequest struct { @@ -985,7 +1147,7 @@ type EnableSensorRequest struct { func (x *EnableSensorRequest) Reset() { *x = EnableSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[16] + mi := &file_tetragon_sensors_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +1159,7 @@ func (x *EnableSensorRequest) String() string { func (*EnableSensorRequest) ProtoMessage() {} func (x *EnableSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[16] + mi := &file_tetragon_sensors_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +1172,7 @@ func (x *EnableSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableSensorRequest.ProtoReflect.Descriptor instead. func (*EnableSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{16} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{18} } func (x *EnableSensorRequest) GetName() string { @@ -1028,7 +1190,7 @@ type EnableSensorResponse struct { func (x *EnableSensorResponse) Reset() { *x = EnableSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[17] + mi := &file_tetragon_sensors_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1040,7 +1202,7 @@ func (x *EnableSensorResponse) String() string { func (*EnableSensorResponse) ProtoMessage() {} func (x *EnableSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[17] + mi := &file_tetragon_sensors_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1053,7 +1215,7 @@ func (x *EnableSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableSensorResponse.ProtoReflect.Descriptor instead. func (*EnableSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{17} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{19} } type DisableSensorRequest struct { @@ -1065,7 +1227,7 @@ type DisableSensorRequest struct { func (x *DisableSensorRequest) Reset() { *x = DisableSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[18] + mi := &file_tetragon_sensors_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1077,7 +1239,7 @@ func (x *DisableSensorRequest) String() string { func (*DisableSensorRequest) ProtoMessage() {} func (x *DisableSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[18] + mi := &file_tetragon_sensors_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1090,7 +1252,7 @@ func (x *DisableSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableSensorRequest.ProtoReflect.Descriptor instead. func (*DisableSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{18} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{20} } func (x *DisableSensorRequest) GetName() string { @@ -1108,7 +1270,7 @@ type DisableSensorResponse struct { func (x *DisableSensorResponse) Reset() { *x = DisableSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[19] + mi := &file_tetragon_sensors_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1120,7 +1282,7 @@ func (x *DisableSensorResponse) String() string { func (*DisableSensorResponse) ProtoMessage() {} func (x *DisableSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[19] + mi := &file_tetragon_sensors_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1133,7 +1295,7 @@ func (x *DisableSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableSensorResponse.ProtoReflect.Descriptor instead. func (*DisableSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{19} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{21} } type GetStackTraceTreeRequest struct { @@ -1145,7 +1307,7 @@ type GetStackTraceTreeRequest struct { func (x *GetStackTraceTreeRequest) Reset() { *x = GetStackTraceTreeRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[20] + mi := &file_tetragon_sensors_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1319,7 @@ func (x *GetStackTraceTreeRequest) String() string { func (*GetStackTraceTreeRequest) ProtoMessage() {} func (x *GetStackTraceTreeRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[20] + mi := &file_tetragon_sensors_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1332,7 @@ func (x *GetStackTraceTreeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStackTraceTreeRequest.ProtoReflect.Descriptor instead. func (*GetStackTraceTreeRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{20} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{22} } func (x *GetStackTraceTreeRequest) GetName() string { @@ -1189,7 +1351,7 @@ type GetStackTraceTreeResponse struct { func (x *GetStackTraceTreeResponse) Reset() { *x = GetStackTraceTreeResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[21] + mi := &file_tetragon_sensors_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1201,7 +1363,7 @@ func (x *GetStackTraceTreeResponse) String() string { func (*GetStackTraceTreeResponse) ProtoMessage() {} func (x *GetStackTraceTreeResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[21] + mi := &file_tetragon_sensors_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1214,7 +1376,7 @@ func (x *GetStackTraceTreeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStackTraceTreeResponse.ProtoReflect.Descriptor instead. func (*GetStackTraceTreeResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{21} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{23} } func (x *GetStackTraceTreeResponse) GetRoot() *StackTraceNode { @@ -1232,7 +1394,7 @@ type GetVersionRequest struct { func (x *GetVersionRequest) Reset() { *x = GetVersionRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[22] + mi := &file_tetragon_sensors_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1244,7 +1406,7 @@ func (x *GetVersionRequest) String() string { func (*GetVersionRequest) ProtoMessage() {} func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[22] + mi := &file_tetragon_sensors_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1257,7 +1419,7 @@ func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. func (*GetVersionRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{22} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{24} } type GetVersionResponse struct { @@ -1269,7 +1431,7 @@ type GetVersionResponse struct { func (x *GetVersionResponse) Reset() { *x = GetVersionResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[23] + mi := &file_tetragon_sensors_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1281,7 +1443,7 @@ func (x *GetVersionResponse) String() string { func (*GetVersionResponse) ProtoMessage() {} func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[23] + mi := &file_tetragon_sensors_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1294,7 +1456,7 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{23} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{25} } func (x *GetVersionResponse) GetVersion() string { @@ -1314,7 +1476,7 @@ type DumpProcessCacheReqArgs struct { func (x *DumpProcessCacheReqArgs) Reset() { *x = DumpProcessCacheReqArgs{} - mi := &file_tetragon_sensors_proto_msgTypes[24] + mi := &file_tetragon_sensors_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1326,7 +1488,7 @@ func (x *DumpProcessCacheReqArgs) String() string { func (*DumpProcessCacheReqArgs) ProtoMessage() {} func (x *DumpProcessCacheReqArgs) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[24] + mi := &file_tetragon_sensors_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1339,7 +1501,7 @@ func (x *DumpProcessCacheReqArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use DumpProcessCacheReqArgs.ProtoReflect.Descriptor instead. func (*DumpProcessCacheReqArgs) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{24} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{26} } func (x *DumpProcessCacheReqArgs) GetSkipZeroRefcnt() bool { @@ -1376,7 +1538,7 @@ type ProcessInternal struct { func (x *ProcessInternal) Reset() { *x = ProcessInternal{} - mi := &file_tetragon_sensors_proto_msgTypes[25] + mi := &file_tetragon_sensors_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1550,7 @@ func (x *ProcessInternal) String() string { func (*ProcessInternal) ProtoMessage() {} func (x *ProcessInternal) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[25] + mi := &file_tetragon_sensors_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1563,7 @@ func (x *ProcessInternal) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessInternal.ProtoReflect.Descriptor instead. func (*ProcessInternal) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{25} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{27} } func (x *ProcessInternal) GetProcess() *Process { @@ -1441,7 +1603,7 @@ type DumpProcessCacheResArgs struct { func (x *DumpProcessCacheResArgs) Reset() { *x = DumpProcessCacheResArgs{} - mi := &file_tetragon_sensors_proto_msgTypes[26] + mi := &file_tetragon_sensors_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1453,7 +1615,7 @@ func (x *DumpProcessCacheResArgs) String() string { func (*DumpProcessCacheResArgs) ProtoMessage() {} func (x *DumpProcessCacheResArgs) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[26] + mi := &file_tetragon_sensors_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1628,7 @@ func (x *DumpProcessCacheResArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use DumpProcessCacheResArgs.ProtoReflect.Descriptor instead. func (*DumpProcessCacheResArgs) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{26} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{28} } func (x *DumpProcessCacheResArgs) GetProcesses() []*ProcessInternal { @@ -1489,7 +1651,7 @@ type GetDebugRequest struct { func (x *GetDebugRequest) Reset() { *x = GetDebugRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[27] + mi := &file_tetragon_sensors_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1501,7 +1663,7 @@ func (x *GetDebugRequest) String() string { func (*GetDebugRequest) ProtoMessage() {} func (x *GetDebugRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[27] + mi := &file_tetragon_sensors_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1514,7 +1676,7 @@ func (x *GetDebugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDebugRequest.ProtoReflect.Descriptor instead. func (*GetDebugRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{27} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{29} } func (x *GetDebugRequest) GetFlag() ConfigFlag { @@ -1564,7 +1726,7 @@ type GetDebugResponse struct { func (x *GetDebugResponse) Reset() { *x = GetDebugResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[28] + mi := &file_tetragon_sensors_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1738,7 @@ func (x *GetDebugResponse) String() string { func (*GetDebugResponse) ProtoMessage() {} func (x *GetDebugResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[28] + mi := &file_tetragon_sensors_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1751,7 @@ func (x *GetDebugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDebugResponse.ProtoReflect.Descriptor instead. func (*GetDebugResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{28} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{30} } func (x *GetDebugResponse) GetFlag() ConfigFlag { @@ -1653,7 +1815,7 @@ type SetDebugRequest struct { func (x *SetDebugRequest) Reset() { *x = SetDebugRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[29] + mi := &file_tetragon_sensors_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1665,7 +1827,7 @@ func (x *SetDebugRequest) String() string { func (*SetDebugRequest) ProtoMessage() {} func (x *SetDebugRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[29] + mi := &file_tetragon_sensors_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1678,7 +1840,7 @@ func (x *SetDebugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDebugRequest.ProtoReflect.Descriptor instead. func (*SetDebugRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{29} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{31} } func (x *SetDebugRequest) GetFlag() ConfigFlag { @@ -1727,7 +1889,7 @@ type SetDebugResponse struct { func (x *SetDebugResponse) Reset() { *x = SetDebugResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[30] + mi := &file_tetragon_sensors_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1739,7 +1901,7 @@ func (x *SetDebugResponse) String() string { func (*SetDebugResponse) ProtoMessage() {} func (x *SetDebugResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[30] + mi := &file_tetragon_sensors_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1752,7 +1914,7 @@ func (x *SetDebugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDebugResponse.ProtoReflect.Descriptor instead. func (*SetDebugResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{30} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{32} } func (x *SetDebugResponse) GetFlag() ConfigFlag { @@ -1813,7 +1975,7 @@ var file_tetragon_sensors_proto_rawDesc = []byte{ 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x65, 0x73, 0x74, 0x22, 0xeb, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, @@ -1833,244 +1995,273 @@ var file_tetragon_sensors_proto_rawDesc = []byte{ 0x12, 0x2e, 0x0a, 0x13, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0x58, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x41, 0x64, + 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x58, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x41, + 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x84, 0x01, 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x5a, 0x65, 0x72, 0x6f, 0x52, - 0x65, 0x66, 0x63, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x34, 0x0a, - 0x06, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x66, - 0x63, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x6f, 0x70, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, - 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x17, 0x44, 0x75, - 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, - 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, - 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, + 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x16, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, + 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x5a, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x66, + 0x63, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x06, 0x72, + 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x66, 0x63, 0x6e, + 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x09, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x65, + 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, + 0x72, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, + 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x75, 0x6d, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x64, 0x75, + 0x6d, 0x70, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, + 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6c, + 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0x6e, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, - 0x75, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, - 0x64, 0x75, 0x6d, 0x70, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0xb2, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, - 0x22, 0x6e, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, - 0x22, 0x6f, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, - 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, - 0x67, 0x2a, 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, - 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, - 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x16, - 0x0a, 0x12, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x41, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x4b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x00, 0x12, - 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x44, - 0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, 0x43, 0x48, - 0x45, 0x10, 0x01, 0x2a, 0x9b, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x50, 0x41, - 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, - 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, - 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, - 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, - 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, - 0x06, 0x32, 0xfe, 0x0a, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, - 0x63, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, - 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x12, 0x20, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x64, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, + 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0x6f, + 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, + 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x2a, + 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, + 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x50, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, + 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x49, + 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x52, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x50, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, + 0x0a, 0x0f, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x4e, 0x46, 0x4f, 0x52, 0x43, + 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x4b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, + 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, 0x4c, 0x41, 0x47, + 0x5f, 0x44, 0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, + 0x43, 0x48, 0x45, 0x10, 0x01, 0x2a, 0x9b, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, + 0x50, 0x41, 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, + 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, + 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, + 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x13, + 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x10, 0x06, 0x32, 0xf3, 0x0b, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x75, 0x69, 0x64, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x12, 0x20, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, + 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x27, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1c, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, - 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, - 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x88, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, - 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, - 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, - 0x08, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x63, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x2f, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x67, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x14, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, + 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, + 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, + 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x2f, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2085,109 +2276,116 @@ func file_tetragon_sensors_proto_rawDescGZIP() []byte { return file_tetragon_sensors_proto_rawDescData } -var file_tetragon_sensors_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_tetragon_sensors_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_tetragon_sensors_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_tetragon_sensors_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_tetragon_sensors_proto_goTypes = []any{ - (TracingPolicyState)(0), // 0: tetragon.TracingPolicyState - (ConfigFlag)(0), // 1: tetragon.ConfigFlag - (LogLevel)(0), // 2: tetragon.LogLevel - (*ListSensorsRequest)(nil), // 3: tetragon.ListSensorsRequest - (*SensorStatus)(nil), // 4: tetragon.SensorStatus - (*ListSensorsResponse)(nil), // 5: tetragon.ListSensorsResponse - (*ListTracingPoliciesRequest)(nil), // 6: tetragon.ListTracingPoliciesRequest - (*TracingPolicyStatus)(nil), // 7: tetragon.TracingPolicyStatus - (*ListTracingPoliciesResponse)(nil), // 8: tetragon.ListTracingPoliciesResponse - (*AddTracingPolicyRequest)(nil), // 9: tetragon.AddTracingPolicyRequest - (*AddTracingPolicyResponse)(nil), // 10: tetragon.AddTracingPolicyResponse - (*DeleteTracingPolicyRequest)(nil), // 11: tetragon.DeleteTracingPolicyRequest - (*DeleteTracingPolicyResponse)(nil), // 12: tetragon.DeleteTracingPolicyResponse - (*EnableTracingPolicyRequest)(nil), // 13: tetragon.EnableTracingPolicyRequest - (*EnableTracingPolicyResponse)(nil), // 14: tetragon.EnableTracingPolicyResponse - (*DisableTracingPolicyRequest)(nil), // 15: tetragon.DisableTracingPolicyRequest - (*DisableTracingPolicyResponse)(nil), // 16: tetragon.DisableTracingPolicyResponse - (*RemoveSensorRequest)(nil), // 17: tetragon.RemoveSensorRequest - (*RemoveSensorResponse)(nil), // 18: tetragon.RemoveSensorResponse - (*EnableSensorRequest)(nil), // 19: tetragon.EnableSensorRequest - (*EnableSensorResponse)(nil), // 20: tetragon.EnableSensorResponse - (*DisableSensorRequest)(nil), // 21: tetragon.DisableSensorRequest - (*DisableSensorResponse)(nil), // 22: tetragon.DisableSensorResponse - (*GetStackTraceTreeRequest)(nil), // 23: tetragon.GetStackTraceTreeRequest - (*GetStackTraceTreeResponse)(nil), // 24: tetragon.GetStackTraceTreeResponse - (*GetVersionRequest)(nil), // 25: tetragon.GetVersionRequest - (*GetVersionResponse)(nil), // 26: tetragon.GetVersionResponse - (*DumpProcessCacheReqArgs)(nil), // 27: tetragon.DumpProcessCacheReqArgs - (*ProcessInternal)(nil), // 28: tetragon.ProcessInternal - (*DumpProcessCacheResArgs)(nil), // 29: tetragon.DumpProcessCacheResArgs - (*GetDebugRequest)(nil), // 30: tetragon.GetDebugRequest - (*GetDebugResponse)(nil), // 31: tetragon.GetDebugResponse - (*SetDebugRequest)(nil), // 32: tetragon.SetDebugRequest - (*SetDebugResponse)(nil), // 33: tetragon.SetDebugResponse - nil, // 34: tetragon.ProcessInternal.RefcntOpsEntry - (*StackTraceNode)(nil), // 35: tetragon.StackTraceNode - (*Process)(nil), // 36: tetragon.Process - (*wrapperspb.UInt32Value)(nil), // 37: google.protobuf.UInt32Value - (*GetEventsRequest)(nil), // 38: tetragon.GetEventsRequest - (*GetHealthStatusRequest)(nil), // 39: tetragon.GetHealthStatusRequest - (*RuntimeHookRequest)(nil), // 40: tetragon.RuntimeHookRequest - (*GetEventsResponse)(nil), // 41: tetragon.GetEventsResponse - (*GetHealthStatusResponse)(nil), // 42: tetragon.GetHealthStatusResponse - (*RuntimeHookResponse)(nil), // 43: tetragon.RuntimeHookResponse + (TracingPolicyState)(0), // 0: tetragon.TracingPolicyState + (TracingPolicyMode)(0), // 1: tetragon.TracingPolicyMode + (ConfigFlag)(0), // 2: tetragon.ConfigFlag + (LogLevel)(0), // 3: tetragon.LogLevel + (*ListSensorsRequest)(nil), // 4: tetragon.ListSensorsRequest + (*SensorStatus)(nil), // 5: tetragon.SensorStatus + (*ListSensorsResponse)(nil), // 6: tetragon.ListSensorsResponse + (*ListTracingPoliciesRequest)(nil), // 7: tetragon.ListTracingPoliciesRequest + (*TracingPolicyStatus)(nil), // 8: tetragon.TracingPolicyStatus + (*ListTracingPoliciesResponse)(nil), // 9: tetragon.ListTracingPoliciesResponse + (*AddTracingPolicyRequest)(nil), // 10: tetragon.AddTracingPolicyRequest + (*AddTracingPolicyResponse)(nil), // 11: tetragon.AddTracingPolicyResponse + (*DeleteTracingPolicyRequest)(nil), // 12: tetragon.DeleteTracingPolicyRequest + (*DeleteTracingPolicyResponse)(nil), // 13: tetragon.DeleteTracingPolicyResponse + (*EnableTracingPolicyRequest)(nil), // 14: tetragon.EnableTracingPolicyRequest + (*EnableTracingPolicyResponse)(nil), // 15: tetragon.EnableTracingPolicyResponse + (*DisableTracingPolicyRequest)(nil), // 16: tetragon.DisableTracingPolicyRequest + (*DisableTracingPolicyResponse)(nil), // 17: tetragon.DisableTracingPolicyResponse + (*ConfigureTracingPolicyRequest)(nil), // 18: tetragon.ConfigureTracingPolicyRequest + (*ConfigureTracingPolicyResponse)(nil), // 19: tetragon.ConfigureTracingPolicyResponse + (*RemoveSensorRequest)(nil), // 20: tetragon.RemoveSensorRequest + (*RemoveSensorResponse)(nil), // 21: tetragon.RemoveSensorResponse + (*EnableSensorRequest)(nil), // 22: tetragon.EnableSensorRequest + (*EnableSensorResponse)(nil), // 23: tetragon.EnableSensorResponse + (*DisableSensorRequest)(nil), // 24: tetragon.DisableSensorRequest + (*DisableSensorResponse)(nil), // 25: tetragon.DisableSensorResponse + (*GetStackTraceTreeRequest)(nil), // 26: tetragon.GetStackTraceTreeRequest + (*GetStackTraceTreeResponse)(nil), // 27: tetragon.GetStackTraceTreeResponse + (*GetVersionRequest)(nil), // 28: tetragon.GetVersionRequest + (*GetVersionResponse)(nil), // 29: tetragon.GetVersionResponse + (*DumpProcessCacheReqArgs)(nil), // 30: tetragon.DumpProcessCacheReqArgs + (*ProcessInternal)(nil), // 31: tetragon.ProcessInternal + (*DumpProcessCacheResArgs)(nil), // 32: tetragon.DumpProcessCacheResArgs + (*GetDebugRequest)(nil), // 33: tetragon.GetDebugRequest + (*GetDebugResponse)(nil), // 34: tetragon.GetDebugResponse + (*SetDebugRequest)(nil), // 35: tetragon.SetDebugRequest + (*SetDebugResponse)(nil), // 36: tetragon.SetDebugResponse + nil, // 37: tetragon.ProcessInternal.RefcntOpsEntry + (*StackTraceNode)(nil), // 38: tetragon.StackTraceNode + (*Process)(nil), // 39: tetragon.Process + (*wrapperspb.UInt32Value)(nil), // 40: google.protobuf.UInt32Value + (*GetEventsRequest)(nil), // 41: tetragon.GetEventsRequest + (*GetHealthStatusRequest)(nil), // 42: tetragon.GetHealthStatusRequest + (*RuntimeHookRequest)(nil), // 43: tetragon.RuntimeHookRequest + (*GetEventsResponse)(nil), // 44: tetragon.GetEventsResponse + (*GetHealthStatusResponse)(nil), // 45: tetragon.GetHealthStatusResponse + (*RuntimeHookResponse)(nil), // 46: tetragon.RuntimeHookResponse } var file_tetragon_sensors_proto_depIdxs = []int32{ - 4, // 0: tetragon.ListSensorsResponse.sensors:type_name -> tetragon.SensorStatus + 5, // 0: tetragon.ListSensorsResponse.sensors:type_name -> tetragon.SensorStatus 0, // 1: tetragon.TracingPolicyStatus.state:type_name -> tetragon.TracingPolicyState - 7, // 2: tetragon.ListTracingPoliciesResponse.policies:type_name -> tetragon.TracingPolicyStatus - 35, // 3: tetragon.GetStackTraceTreeResponse.root:type_name -> tetragon.StackTraceNode - 36, // 4: tetragon.ProcessInternal.process:type_name -> tetragon.Process - 37, // 5: tetragon.ProcessInternal.refcnt:type_name -> google.protobuf.UInt32Value - 34, // 6: tetragon.ProcessInternal.refcnt_ops:type_name -> tetragon.ProcessInternal.RefcntOpsEntry - 28, // 7: tetragon.DumpProcessCacheResArgs.processes:type_name -> tetragon.ProcessInternal - 1, // 8: tetragon.GetDebugRequest.flag:type_name -> tetragon.ConfigFlag - 27, // 9: tetragon.GetDebugRequest.dump:type_name -> tetragon.DumpProcessCacheReqArgs - 1, // 10: tetragon.GetDebugResponse.flag:type_name -> tetragon.ConfigFlag - 2, // 11: tetragon.GetDebugResponse.level:type_name -> tetragon.LogLevel - 29, // 12: tetragon.GetDebugResponse.processes:type_name -> tetragon.DumpProcessCacheResArgs - 1, // 13: tetragon.SetDebugRequest.flag:type_name -> tetragon.ConfigFlag - 2, // 14: tetragon.SetDebugRequest.level:type_name -> tetragon.LogLevel - 1, // 15: tetragon.SetDebugResponse.flag:type_name -> tetragon.ConfigFlag - 2, // 16: tetragon.SetDebugResponse.level:type_name -> tetragon.LogLevel - 38, // 17: tetragon.FineGuidanceSensors.GetEvents:input_type -> tetragon.GetEventsRequest - 39, // 18: tetragon.FineGuidanceSensors.GetHealth:input_type -> tetragon.GetHealthStatusRequest - 9, // 19: tetragon.FineGuidanceSensors.AddTracingPolicy:input_type -> tetragon.AddTracingPolicyRequest - 11, // 20: tetragon.FineGuidanceSensors.DeleteTracingPolicy:input_type -> tetragon.DeleteTracingPolicyRequest - 6, // 21: tetragon.FineGuidanceSensors.ListTracingPolicies:input_type -> tetragon.ListTracingPoliciesRequest - 13, // 22: tetragon.FineGuidanceSensors.EnableTracingPolicy:input_type -> tetragon.EnableTracingPolicyRequest - 15, // 23: tetragon.FineGuidanceSensors.DisableTracingPolicy:input_type -> tetragon.DisableTracingPolicyRequest - 3, // 24: tetragon.FineGuidanceSensors.ListSensors:input_type -> tetragon.ListSensorsRequest - 19, // 25: tetragon.FineGuidanceSensors.EnableSensor:input_type -> tetragon.EnableSensorRequest - 21, // 26: tetragon.FineGuidanceSensors.DisableSensor:input_type -> tetragon.DisableSensorRequest - 17, // 27: tetragon.FineGuidanceSensors.RemoveSensor:input_type -> tetragon.RemoveSensorRequest - 23, // 28: tetragon.FineGuidanceSensors.GetStackTraceTree:input_type -> tetragon.GetStackTraceTreeRequest - 25, // 29: tetragon.FineGuidanceSensors.GetVersion:input_type -> tetragon.GetVersionRequest - 40, // 30: tetragon.FineGuidanceSensors.RuntimeHook:input_type -> tetragon.RuntimeHookRequest - 30, // 31: tetragon.FineGuidanceSensors.GetDebug:input_type -> tetragon.GetDebugRequest - 32, // 32: tetragon.FineGuidanceSensors.SetDebug:input_type -> tetragon.SetDebugRequest - 41, // 33: tetragon.FineGuidanceSensors.GetEvents:output_type -> tetragon.GetEventsResponse - 42, // 34: tetragon.FineGuidanceSensors.GetHealth:output_type -> tetragon.GetHealthStatusResponse - 10, // 35: tetragon.FineGuidanceSensors.AddTracingPolicy:output_type -> tetragon.AddTracingPolicyResponse - 12, // 36: tetragon.FineGuidanceSensors.DeleteTracingPolicy:output_type -> tetragon.DeleteTracingPolicyResponse - 8, // 37: tetragon.FineGuidanceSensors.ListTracingPolicies:output_type -> tetragon.ListTracingPoliciesResponse - 14, // 38: tetragon.FineGuidanceSensors.EnableTracingPolicy:output_type -> tetragon.EnableTracingPolicyResponse - 16, // 39: tetragon.FineGuidanceSensors.DisableTracingPolicy:output_type -> tetragon.DisableTracingPolicyResponse - 5, // 40: tetragon.FineGuidanceSensors.ListSensors:output_type -> tetragon.ListSensorsResponse - 20, // 41: tetragon.FineGuidanceSensors.EnableSensor:output_type -> tetragon.EnableSensorResponse - 22, // 42: tetragon.FineGuidanceSensors.DisableSensor:output_type -> tetragon.DisableSensorResponse - 18, // 43: tetragon.FineGuidanceSensors.RemoveSensor:output_type -> tetragon.RemoveSensorResponse - 24, // 44: tetragon.FineGuidanceSensors.GetStackTraceTree:output_type -> tetragon.GetStackTraceTreeResponse - 26, // 45: tetragon.FineGuidanceSensors.GetVersion:output_type -> tetragon.GetVersionResponse - 43, // 46: tetragon.FineGuidanceSensors.RuntimeHook:output_type -> tetragon.RuntimeHookResponse - 31, // 47: tetragon.FineGuidanceSensors.GetDebug:output_type -> tetragon.GetDebugResponse - 33, // 48: tetragon.FineGuidanceSensors.SetDebug:output_type -> tetragon.SetDebugResponse - 33, // [33:49] is the sub-list for method output_type - 17, // [17:33] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 1, // 2: tetragon.TracingPolicyStatus.mode:type_name -> tetragon.TracingPolicyMode + 8, // 3: tetragon.ListTracingPoliciesResponse.policies:type_name -> tetragon.TracingPolicyStatus + 1, // 4: tetragon.ConfigureTracingPolicyRequest.mode:type_name -> tetragon.TracingPolicyMode + 38, // 5: tetragon.GetStackTraceTreeResponse.root:type_name -> tetragon.StackTraceNode + 39, // 6: tetragon.ProcessInternal.process:type_name -> tetragon.Process + 40, // 7: tetragon.ProcessInternal.refcnt:type_name -> google.protobuf.UInt32Value + 37, // 8: tetragon.ProcessInternal.refcnt_ops:type_name -> tetragon.ProcessInternal.RefcntOpsEntry + 31, // 9: tetragon.DumpProcessCacheResArgs.processes:type_name -> tetragon.ProcessInternal + 2, // 10: tetragon.GetDebugRequest.flag:type_name -> tetragon.ConfigFlag + 30, // 11: tetragon.GetDebugRequest.dump:type_name -> tetragon.DumpProcessCacheReqArgs + 2, // 12: tetragon.GetDebugResponse.flag:type_name -> tetragon.ConfigFlag + 3, // 13: tetragon.GetDebugResponse.level:type_name -> tetragon.LogLevel + 32, // 14: tetragon.GetDebugResponse.processes:type_name -> tetragon.DumpProcessCacheResArgs + 2, // 15: tetragon.SetDebugRequest.flag:type_name -> tetragon.ConfigFlag + 3, // 16: tetragon.SetDebugRequest.level:type_name -> tetragon.LogLevel + 2, // 17: tetragon.SetDebugResponse.flag:type_name -> tetragon.ConfigFlag + 3, // 18: tetragon.SetDebugResponse.level:type_name -> tetragon.LogLevel + 41, // 19: tetragon.FineGuidanceSensors.GetEvents:input_type -> tetragon.GetEventsRequest + 42, // 20: tetragon.FineGuidanceSensors.GetHealth:input_type -> tetragon.GetHealthStatusRequest + 10, // 21: tetragon.FineGuidanceSensors.AddTracingPolicy:input_type -> tetragon.AddTracingPolicyRequest + 12, // 22: tetragon.FineGuidanceSensors.DeleteTracingPolicy:input_type -> tetragon.DeleteTracingPolicyRequest + 7, // 23: tetragon.FineGuidanceSensors.ListTracingPolicies:input_type -> tetragon.ListTracingPoliciesRequest + 18, // 24: tetragon.FineGuidanceSensors.ConfigureTracingPolicy:input_type -> tetragon.ConfigureTracingPolicyRequest + 14, // 25: tetragon.FineGuidanceSensors.EnableTracingPolicy:input_type -> tetragon.EnableTracingPolicyRequest + 16, // 26: tetragon.FineGuidanceSensors.DisableTracingPolicy:input_type -> tetragon.DisableTracingPolicyRequest + 4, // 27: tetragon.FineGuidanceSensors.ListSensors:input_type -> tetragon.ListSensorsRequest + 22, // 28: tetragon.FineGuidanceSensors.EnableSensor:input_type -> tetragon.EnableSensorRequest + 24, // 29: tetragon.FineGuidanceSensors.DisableSensor:input_type -> tetragon.DisableSensorRequest + 20, // 30: tetragon.FineGuidanceSensors.RemoveSensor:input_type -> tetragon.RemoveSensorRequest + 26, // 31: tetragon.FineGuidanceSensors.GetStackTraceTree:input_type -> tetragon.GetStackTraceTreeRequest + 28, // 32: tetragon.FineGuidanceSensors.GetVersion:input_type -> tetragon.GetVersionRequest + 43, // 33: tetragon.FineGuidanceSensors.RuntimeHook:input_type -> tetragon.RuntimeHookRequest + 33, // 34: tetragon.FineGuidanceSensors.GetDebug:input_type -> tetragon.GetDebugRequest + 35, // 35: tetragon.FineGuidanceSensors.SetDebug:input_type -> tetragon.SetDebugRequest + 44, // 36: tetragon.FineGuidanceSensors.GetEvents:output_type -> tetragon.GetEventsResponse + 45, // 37: tetragon.FineGuidanceSensors.GetHealth:output_type -> tetragon.GetHealthStatusResponse + 11, // 38: tetragon.FineGuidanceSensors.AddTracingPolicy:output_type -> tetragon.AddTracingPolicyResponse + 13, // 39: tetragon.FineGuidanceSensors.DeleteTracingPolicy:output_type -> tetragon.DeleteTracingPolicyResponse + 9, // 40: tetragon.FineGuidanceSensors.ListTracingPolicies:output_type -> tetragon.ListTracingPoliciesResponse + 19, // 41: tetragon.FineGuidanceSensors.ConfigureTracingPolicy:output_type -> tetragon.ConfigureTracingPolicyResponse + 15, // 42: tetragon.FineGuidanceSensors.EnableTracingPolicy:output_type -> tetragon.EnableTracingPolicyResponse + 17, // 43: tetragon.FineGuidanceSensors.DisableTracingPolicy:output_type -> tetragon.DisableTracingPolicyResponse + 6, // 44: tetragon.FineGuidanceSensors.ListSensors:output_type -> tetragon.ListSensorsResponse + 23, // 45: tetragon.FineGuidanceSensors.EnableSensor:output_type -> tetragon.EnableSensorResponse + 25, // 46: tetragon.FineGuidanceSensors.DisableSensor:output_type -> tetragon.DisableSensorResponse + 21, // 47: tetragon.FineGuidanceSensors.RemoveSensor:output_type -> tetragon.RemoveSensorResponse + 27, // 48: tetragon.FineGuidanceSensors.GetStackTraceTree:output_type -> tetragon.GetStackTraceTreeResponse + 29, // 49: tetragon.FineGuidanceSensors.GetVersion:output_type -> tetragon.GetVersionResponse + 46, // 50: tetragon.FineGuidanceSensors.RuntimeHook:output_type -> tetragon.RuntimeHookResponse + 34, // 51: tetragon.FineGuidanceSensors.GetDebug:output_type -> tetragon.GetDebugResponse + 36, // 52: tetragon.FineGuidanceSensors.SetDebug:output_type -> tetragon.SetDebugResponse + 36, // [36:53] is the sub-list for method output_type + 19, // [19:36] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_tetragon_sensors_proto_init() } @@ -2198,17 +2396,18 @@ func file_tetragon_sensors_proto_init() { file_tetragon_events_proto_init() file_tetragon_stack_proto_init() file_tetragon_tetragon_proto_init() - file_tetragon_sensors_proto_msgTypes[27].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[14].OneofWrappers = []any{} + file_tetragon_sensors_proto_msgTypes[29].OneofWrappers = []any{ (*GetDebugRequest_Dump)(nil), } - file_tetragon_sensors_proto_msgTypes[28].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[30].OneofWrappers = []any{ (*GetDebugResponse_Level)(nil), (*GetDebugResponse_Processes)(nil), } - file_tetragon_sensors_proto_msgTypes[29].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[31].OneofWrappers = []any{ (*SetDebugRequest_Level)(nil), } - file_tetragon_sensors_proto_msgTypes[30].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[32].OneofWrappers = []any{ (*SetDebugResponse_Level)(nil), } type x struct{} @@ -2216,8 +2415,8 @@ func file_tetragon_sensors_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tetragon_sensors_proto_rawDesc, - NumEnums: 3, - NumMessages: 32, + NumEnums: 4, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go index 13c3e29ca9e..b649a949140 100644 --- a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go +++ b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go @@ -178,6 +178,30 @@ func (msg *DisableTracingPolicyResponse) UnmarshalJSON(b []byte) error { return protojson.UnmarshalOptions{}.Unmarshal(b, msg) } +// MarshalJSON implements json.Marshaler +func (msg *ConfigureTracingPolicyRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ConfigureTracingPolicyRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *ConfigureTracingPolicyResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ConfigureTracingPolicyResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + // MarshalJSON implements json.Marshaler func (msg *RemoveSensorRequest) MarshalJSON() ([]byte, error) { return protojson.MarshalOptions{ diff --git a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto index 730bfb0adbe..ce99ce30314 100644 --- a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto +++ b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto @@ -49,6 +49,12 @@ enum TracingPolicyState { TP_STATE_UNLOADING = 6; } +enum TracingPolicyMode { + TP_MODE_UNKNOWN = 0; + TP_MODE_ENFORCE = 1; + TP_MODE_MONITOR = 2; +} + message TracingPolicyStatus { // id is the id of the policy uint64 id = 1; @@ -70,6 +76,8 @@ message TracingPolicyStatus { TracingPolicyState state = 9; // the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) uint64 kernel_memory_bytes = 10; + // current mode of the tracing policy + TracingPolicyMode mode = 11; } message ListTracingPoliciesResponse { @@ -99,6 +107,16 @@ message DisableTracingPolicyRequest { } message DisableTracingPolicyResponse {} +message ConfigureTracingPolicyRequest { + string name = 1; + string namespace = 2; + + optional bool enable = 3; + optional TracingPolicyMode mode = 4; +} + +message ConfigureTracingPolicyResponse {} + message RemoveSensorRequest { string name = 1; } @@ -203,8 +221,22 @@ service FineGuidanceSensors { rpc AddTracingPolicy(AddTracingPolicyRequest) returns (AddTracingPolicyResponse) {} rpc DeleteTracingPolicy(DeleteTracingPolicyRequest) returns (DeleteTracingPolicyResponse) {} rpc ListTracingPolicies(ListTracingPoliciesRequest) returns (ListTracingPoliciesResponse) {} - rpc EnableTracingPolicy(EnableTracingPolicyRequest) returns (EnableTracingPolicyResponse) {} - rpc DisableTracingPolicy(DisableTracingPolicyRequest) returns (DisableTracingPolicyResponse) {} + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + rpc ConfigureTracingPolicy(ConfigureTracingPolicyRequest) returns (ConfigureTracingPolicyResponse) {} + + rpc EnableTracingPolicy(EnableTracingPolicyRequest) returns (EnableTracingPolicyResponse) { + // use ConfigureTracingPolicy instead + option deprecated = true; + } + rpc DisableTracingPolicy(DisableTracingPolicyRequest) returns (DisableTracingPolicyResponse) { + // use ConfigureTracingPolicy instead + option deprecated = true; + } rpc ListSensors(ListSensorsRequest) returns (ListSensorsResponse) { option deprecated = true; diff --git a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go index 613710e7002..d14fbe03a74 100644 --- a/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go +++ b/contrib/tetragon-rthooks/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go @@ -22,22 +22,23 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - FineGuidanceSensors_GetEvents_FullMethodName = "/tetragon.FineGuidanceSensors/GetEvents" - FineGuidanceSensors_GetHealth_FullMethodName = "/tetragon.FineGuidanceSensors/GetHealth" - FineGuidanceSensors_AddTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/AddTracingPolicy" - FineGuidanceSensors_DeleteTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DeleteTracingPolicy" - FineGuidanceSensors_ListTracingPolicies_FullMethodName = "/tetragon.FineGuidanceSensors/ListTracingPolicies" - FineGuidanceSensors_EnableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/EnableTracingPolicy" - FineGuidanceSensors_DisableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DisableTracingPolicy" - FineGuidanceSensors_ListSensors_FullMethodName = "/tetragon.FineGuidanceSensors/ListSensors" - FineGuidanceSensors_EnableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/EnableSensor" - FineGuidanceSensors_DisableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/DisableSensor" - FineGuidanceSensors_RemoveSensor_FullMethodName = "/tetragon.FineGuidanceSensors/RemoveSensor" - FineGuidanceSensors_GetStackTraceTree_FullMethodName = "/tetragon.FineGuidanceSensors/GetStackTraceTree" - FineGuidanceSensors_GetVersion_FullMethodName = "/tetragon.FineGuidanceSensors/GetVersion" - FineGuidanceSensors_RuntimeHook_FullMethodName = "/tetragon.FineGuidanceSensors/RuntimeHook" - FineGuidanceSensors_GetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/GetDebug" - FineGuidanceSensors_SetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/SetDebug" + FineGuidanceSensors_GetEvents_FullMethodName = "/tetragon.FineGuidanceSensors/GetEvents" + FineGuidanceSensors_GetHealth_FullMethodName = "/tetragon.FineGuidanceSensors/GetHealth" + FineGuidanceSensors_AddTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/AddTracingPolicy" + FineGuidanceSensors_DeleteTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DeleteTracingPolicy" + FineGuidanceSensors_ListTracingPolicies_FullMethodName = "/tetragon.FineGuidanceSensors/ListTracingPolicies" + FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/ConfigureTracingPolicy" + FineGuidanceSensors_EnableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/EnableTracingPolicy" + FineGuidanceSensors_DisableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DisableTracingPolicy" + FineGuidanceSensors_ListSensors_FullMethodName = "/tetragon.FineGuidanceSensors/ListSensors" + FineGuidanceSensors_EnableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/EnableSensor" + FineGuidanceSensors_DisableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/DisableSensor" + FineGuidanceSensors_RemoveSensor_FullMethodName = "/tetragon.FineGuidanceSensors/RemoveSensor" + FineGuidanceSensors_GetStackTraceTree_FullMethodName = "/tetragon.FineGuidanceSensors/GetStackTraceTree" + FineGuidanceSensors_GetVersion_FullMethodName = "/tetragon.FineGuidanceSensors/GetVersion" + FineGuidanceSensors_RuntimeHook_FullMethodName = "/tetragon.FineGuidanceSensors/RuntimeHook" + FineGuidanceSensors_GetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/GetDebug" + FineGuidanceSensors_SetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/SetDebug" ) // FineGuidanceSensorsClient is the client API for FineGuidanceSensors service. @@ -49,7 +50,17 @@ type FineGuidanceSensorsClient interface { AddTracingPolicy(ctx context.Context, in *AddTracingPolicyRequest, opts ...grpc.CallOption) (*AddTracingPolicyResponse, error) DeleteTracingPolicy(ctx context.Context, in *DeleteTracingPolicyRequest, opts ...grpc.CallOption) (*DeleteTracingPolicyResponse, error) ListTracingPolicies(ctx context.Context, in *ListTracingPoliciesRequest, opts ...grpc.CallOption) (*ListTracingPoliciesResponse, error) + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + ConfigureTracingPolicy(ctx context.Context, in *ConfigureTracingPolicyRequest, opts ...grpc.CallOption) (*ConfigureTracingPolicyResponse, error) + // Deprecated: Do not use. EnableTracingPolicy(ctx context.Context, in *EnableTracingPolicyRequest, opts ...grpc.CallOption) (*EnableTracingPolicyResponse, error) + // Deprecated: Do not use. DisableTracingPolicy(ctx context.Context, in *DisableTracingPolicyRequest, opts ...grpc.CallOption) (*DisableTracingPolicyResponse, error) // Deprecated: Do not use. ListSensors(ctx context.Context, in *ListSensorsRequest, opts ...grpc.CallOption) (*ListSensorsResponse, error) @@ -133,6 +144,17 @@ func (c *fineGuidanceSensorsClient) ListTracingPolicies(ctx context.Context, in return out, nil } +func (c *fineGuidanceSensorsClient) ConfigureTracingPolicy(ctx context.Context, in *ConfigureTracingPolicyRequest, opts ...grpc.CallOption) (*ConfigureTracingPolicyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ConfigureTracingPolicyResponse) + err := c.cc.Invoke(ctx, FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Deprecated: Do not use. func (c *fineGuidanceSensorsClient) EnableTracingPolicy(ctx context.Context, in *EnableTracingPolicyRequest, opts ...grpc.CallOption) (*EnableTracingPolicyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(EnableTracingPolicyResponse) @@ -143,6 +165,7 @@ func (c *fineGuidanceSensorsClient) EnableTracingPolicy(ctx context.Context, in return out, nil } +// Deprecated: Do not use. func (c *fineGuidanceSensorsClient) DisableTracingPolicy(ctx context.Context, in *DisableTracingPolicyRequest, opts ...grpc.CallOption) (*DisableTracingPolicyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DisableTracingPolicyResponse) @@ -256,7 +279,17 @@ type FineGuidanceSensorsServer interface { AddTracingPolicy(context.Context, *AddTracingPolicyRequest) (*AddTracingPolicyResponse, error) DeleteTracingPolicy(context.Context, *DeleteTracingPolicyRequest) (*DeleteTracingPolicyResponse, error) ListTracingPolicies(context.Context, *ListTracingPoliciesRequest) (*ListTracingPoliciesResponse, error) + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + ConfigureTracingPolicy(context.Context, *ConfigureTracingPolicyRequest) (*ConfigureTracingPolicyResponse, error) + // Deprecated: Do not use. EnableTracingPolicy(context.Context, *EnableTracingPolicyRequest) (*EnableTracingPolicyResponse, error) + // Deprecated: Do not use. DisableTracingPolicy(context.Context, *DisableTracingPolicyRequest) (*DisableTracingPolicyResponse, error) // Deprecated: Do not use. ListSensors(context.Context, *ListSensorsRequest) (*ListSensorsResponse, error) @@ -296,6 +329,9 @@ func (UnimplementedFineGuidanceSensorsServer) DeleteTracingPolicy(context.Contex func (UnimplementedFineGuidanceSensorsServer) ListTracingPolicies(context.Context, *ListTracingPoliciesRequest) (*ListTracingPoliciesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTracingPolicies not implemented") } +func (UnimplementedFineGuidanceSensorsServer) ConfigureTracingPolicy(context.Context, *ConfigureTracingPolicyRequest) (*ConfigureTracingPolicyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ConfigureTracingPolicy not implemented") +} func (UnimplementedFineGuidanceSensorsServer) EnableTracingPolicy(context.Context, *EnableTracingPolicyRequest) (*EnableTracingPolicyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableTracingPolicy not implemented") } @@ -433,6 +469,24 @@ func _FineGuidanceSensors_ListTracingPolicies_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _FineGuidanceSensors_ConfigureTracingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ConfigureTracingPolicyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FineGuidanceSensorsServer).ConfigureTracingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FineGuidanceSensorsServer).ConfigureTracingPolicy(ctx, req.(*ConfigureTracingPolicyRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _FineGuidanceSensors_EnableTracingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(EnableTracingPolicyRequest) if err := dec(in); err != nil { @@ -654,6 +708,10 @@ var FineGuidanceSensors_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTracingPolicies", Handler: _FineGuidanceSensors_ListTracingPolicies_Handler, }, + { + MethodName: "ConfigureTracingPolicy", + Handler: _FineGuidanceSensors_ConfigureTracingPolicy_Handler, + }, { MethodName: "EnableTracingPolicy", Handler: _FineGuidanceSensors_EnableTracingPolicy_Handler, diff --git a/docs/content/en/docs/concepts/tracing-policy/mode.md b/docs/content/en/docs/concepts/tracing-policy/mode.md new file mode 100644 index 00000000000..405b034b72b --- /dev/null +++ b/docs/content/en/docs/concepts/tracing-policy/mode.md @@ -0,0 +1,70 @@ +--- +title: "Enforcement Mode" +weight: 5 +description: "Configuring enforcement in tracing policies" +--- + +Beyond monitoring, Tetragon tracing policies include [enforcement]({{< ref "/docs/concepts/enforcement" >}}) actions. +Configuring the mode of a policy allows you to disable enforcement in a policy, without modifying +the policy itself. + +A tracing policy can be set in two modes: + - `monitoring`: enforcement operations are elided + - `enforcement`: enforcement operations are respected and performed + +Using the `tetra` CLI, you can inspect the mode of each policy. +For example: + +``` +tetra tracingpolicy list +``` + +Will produce out similar to: +``` +ID NAME STATE FILTERID NAMESPACE SENSORS KERNELMEMORY MODE +1 enforce-security enabled 1 pizza generic_kprobe 7.53 MB enforce +2 allsyscalls enabled 0 (global) generic_tracepoint 4.25 MB monitor +``` + +There are three ways that a policy mode can be set. From lower to higher priority, they are: + +1. Setting the mode in the policy itself +2. Setting the mode when loading the policy +3. Setting the mode at runtime (via gRPC) + +## Setting the mode in the policy itself + +The policy mode can be set in the `spec.options` field, under the `policy-mode` key. +For example: + +```yaml +apiVersion: cilium.io/v1alpha1 +kind: TracingPolicyNamespaced +metadata: + name: "enforce-policy" + namespace: "default" +spec: + options: + - name: "policy-mode" + value: "monitor" + ... +``` + +## Setting the mode when loading the policy + +This can be done via the `tetra` CLI: + +```shell +tetra tracingpolicy add --mode monitor policy.yaml +``` + +Will load `policy.yaml` in _monitor_ mode. + +## Setting the policy at runtime + +You can use the `tetra` CLI to set the policy mode once the policy is loaded. +For example: + +```shell +tetra tp set-mode --namespace pizza enforce-security enforce +``` diff --git a/go.mod b/go.mod index 3f8997efdfa..417c3768d31 100644 --- a/go.mod +++ b/go.mod @@ -46,6 +46,7 @@ require ( golang.org/x/time v0.10.0 google.golang.org/grpc v1.70.0 google.golang.org/protobuf v1.36.5 + gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.32.2 k8s.io/apiextensions-apiserver v0.32.2 @@ -163,7 +164,6 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect k8s.io/component-base v0.32.2 // indirect k8s.io/gengo/v2 v2.0.0-20240911193312-2b36238f13e9 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect diff --git a/pkg/cgtracker/test/cgtracker_test.go b/pkg/cgtracker/test/cgtracker_test.go index 8b2f83a855f..9354e5785c4 100644 --- a/pkg/cgtracker/test/cgtracker_test.go +++ b/pkg/cgtracker/test/cgtracker_test.go @@ -11,7 +11,6 @@ import ( "path/filepath" "slices" "strings" - "syscall" "testing" "time" @@ -33,6 +32,7 @@ import ( testsensor "github.com/cilium/tetragon/pkg/sensors/test" _ "github.com/cilium/tetragon/pkg/sensors/tracing" // NB: needed so that the exec tracing sensor can load its policy handlers on init "github.com/cilium/tetragon/pkg/testutils" + tucg "github.com/cilium/tetragon/pkg/testutils/cgroup" tuo "github.com/cilium/tetragon/pkg/testutils/observer" "github.com/cilium/tetragon/pkg/testutils/perfring" testprogs "github.com/cilium/tetragon/pkg/testutils/progs" @@ -43,7 +43,6 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "golang.org/x/sys/unix" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -73,33 +72,6 @@ func loadCgTrackerSensor(t *testing.T) *sensors.Sensor { return s } -func cgfsMkdirTemp(t *testing.T, cgfsPath string) string { - var st syscall.Statfs_t - if err := syscall.Statfs(cgfsPath, &st); err != nil { - t.Fatalf("error accessing cgroup path '%s': %s", cgfsPath, err) - } - if st.Type == unix.CGROUP2_SUPER_MAGIC { - t.Logf("'%s' is cgroup v2", cgfsPath) - } else if st.Type == unix.TMPFS_MAGIC { - t.Logf("'%s' is cgroup v1", cgfsPath) - } else { - t.Fatalf("'%s' not a cgroup fs", cgfsPath) - } - - // create tempdir - dir, err := os.MkdirTemp(cgfsPath, "cgtracker-test-*") - if err != nil { - t.Skipf("skipping test, failed to create test dir: %s", err) - } - t.Cleanup(func() { - err := os.RemoveAll(dir) - if err != nil { - t.Logf("failed to remove '%s': %s", dir, err) - } - }) - return dir -} - func doMapTest(t *testing.T, cgfsPath string) { testutils.CaptureLog(t, logger.GetLogger().(*logrus.Logger)) @@ -345,7 +317,7 @@ type testCgroupFS struct { } func newTestCgroupFS(t *testing.T, cgfsPath string) *testCgroupFS { - dir := cgfsMkdirTemp(t, cgfsPath) + dir := tucg.CgfsMkTemp(t, cgfsPath, "cgtracker-test-*") t.Logf("created cgroup dir '%s'", dir) mapFname := filepath.Join(bpf.MapPrefixPath(), cgtracker.MapName) diff --git a/pkg/policyconf/policyconf.go b/pkg/policyconf/policyconf.go new file mode 100644 index 00000000000..bc34481a821 --- /dev/null +++ b/pkg/policyconf/policyconf.go @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package policyconf + +import ( + "fmt" + "path/filepath" + + "github.com/cilium/ebpf" + "github.com/cilium/tetragon/pkg/bpf" + "github.com/cilium/tetragon/pkg/tracingpolicy" +) + +type Mode uint8 + +const ( + InvalidMode Mode = Mode(^uint8(0)) + // NB: values below should match the ones in bpf/lib/policy_conf.h + EnforceMode Mode = 0 + MonitorMode Mode = 1 + + PolicyConfMapName = "policy_conf" +) + +// NB: if we add more fields here, we would need to modify SetModeInBPFMap to do a read-modify +// operation to set the mode. +type PolicyConf struct { + Mode Mode +} + +func ParseMode(s string) (Mode, error) { + switch s { + case "enforce": + return EnforceMode, nil + case "monitor": + return MonitorMode, nil + } + + return InvalidMode, fmt.Errorf("invalid mode: %q", s) +} + +func ModeFromBPFMap(fname string) (Mode, error) { + m, err := ebpf.LoadPinnedMap(fname, &ebpf.LoadPinOptions{ReadOnly: true}) + if err != nil { + return InvalidMode, err + } + defer m.Close() + + var ret PolicyConf + zero := uint32(0) + if err = m.Lookup(&zero, &ret); err != nil { + return InvalidMode, err + } + return ret.Mode, nil +} + +func PolicyMode(tp tracingpolicy.TracingPolicy) (Mode, error) { + fname := filepath.Join(bpf.MapPrefixPath(), tracingpolicy.PolicyDir(tracingpolicy.Namespace(tp), tp.TpName()), PolicyConfMapName) + return ModeFromBPFMap(fname) +} + +func SetModeInBPFMap(fname string, mode Mode) error { + m, err := ebpf.LoadPinnedMap(fname, &ebpf.LoadPinOptions{}) + if err != nil { + return fmt.Errorf("failed to load map %q: %v", fname, err) + } + defer m.Close() + + conf := PolicyConf{ + Mode: mode, + } + zero := uint32(0) + if err = m.Update(&zero, &conf, ebpf.UpdateExist); err != nil { + return fmt.Errorf("failed to update map %q with val %v: %v", fname, conf, err) + } + return nil +} + +func SetPolicyMode(tp tracingpolicy.TracingPolicy, m Mode) error { + fname := filepath.Join(bpf.MapPrefixPath(), tracingpolicy.PolicyDir(tracingpolicy.Namespace(tp), tp.TpName()), PolicyConfMapName) + return SetModeInBPFMap(fname, m) +} diff --git a/pkg/policyconf/test/mode_test.go b/pkg/policyconf/test/mode_test.go new file mode 100644 index 00000000000..3dcec86cbc5 --- /dev/null +++ b/pkg/policyconf/test/mode_test.go @@ -0,0 +1,235 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package test + +import ( + "context" + "fmt" + "os" + "strings" + "testing" + + "github.com/cilium/tetragon/pkg/bpf" + "github.com/cilium/tetragon/pkg/grpc/tracing" + "github.com/cilium/tetragon/pkg/k8s/apis/cilium.io/v1alpha1" + "github.com/cilium/tetragon/pkg/logger" + "github.com/cilium/tetragon/pkg/policyconf" + "github.com/cilium/tetragon/pkg/reader/notify" + _ "github.com/cilium/tetragon/pkg/sensors/exec" // NB: needed so that the exec sensor can load the execve probe on its init + stracing "github.com/cilium/tetragon/pkg/sensors/tracing" // NB: needed so that the exec tracing sensor can load its policy handlers on init + "github.com/cilium/tetragon/pkg/testutils" + "github.com/cilium/tetragon/pkg/testutils/perfring" + pft "github.com/cilium/tetragon/pkg/testutils/policyfilter/tester" + tus "github.com/cilium/tetragon/pkg/testutils/sensors" + "github.com/cilium/tetragon/pkg/tracingpolicy" + + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/require" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +func TestMain(m *testing.M) { + ec := tus.TestSensorsRun(m, "policyconf-test") + os.Exit(ec) +} + +func TestModeSigKill(t *testing.T) { + if !bpf.HasSignalHelper() { + t.Skip("skipping test, bpf_send_signal helper not available") + } + + testutils.CaptureLog(t, logger.GetLogger().(*logrus.Logger)) + ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime) + defer cancel() + + pft := pft.Start(t, ctx) + + tp := &tracingpolicy.GenericTracingPolicyNamespaced{ + Metadata: v1.ObjectMeta{ + Name: "tp-test", + Namespace: "namespace", + }, + Spec: v1alpha1.TracingPolicySpec{ + KProbes: []v1alpha1.KProbeSpec{{ + Call: "sys_getcpu", + Return: true, + Syscall: true, + ReturnArg: &v1alpha1.KProbeArg{ + Index: 0, + Type: "int", + }, + Selectors: []v1alpha1.KProbeSelector{{ + MatchActions: []v1alpha1.ActionSelector{ + {Action: "Signal", ArgSig: 9}, + }, + }}, + }}, + }, + } + + pft.AddPolicy(t, ctx, tp) + + getcpuProg := testutils.RepoRootPath("contrib/tester-progs/getcpu") + var progOut string + var progErr error + ops := func() { + progOut, progErr = pft.ProgTester.ExecMayFail(getcpuProg) + t.Logf("prog:%s out:%q err:%v", getcpuProg, progOut, progErr) + } + + checkEnforce := func() { + cnt := perfring.RunTestEventReduceCount(t, ctx, ops, perfring.FilterTestMessages, + func(x notify.Message) int { + if kprobe, ok := x.(*tracing.MsgGenericKprobeUnix); ok { + if strings.HasSuffix(kprobe.FuncName, "sys_getcpu") { + return 1 + } + return -1 + } + return 0 + }) + require.NoError(t, progErr) + require.Contains(t, progOut, "signal: killed") + require.Equal(t, cnt[1], 1, fmt.Sprintf("count=%v", cnt)) + } + + checkMonitor := func() { + cnt := perfring.RunTestEventReduceCount(t, ctx, ops, perfring.FilterTestMessages, + func(x notify.Message) int { + if kprobe, ok := x.(*tracing.MsgGenericKprobeUnix); ok { + if strings.HasSuffix(kprobe.FuncName, "sys_getcpu") { + return 1 + } + return -1 + } + return 0 + }) + require.NoError(t, progErr) + require.NotContains(t, progOut, "signal: killed") + require.Contains(t, progOut, "returned without an error") + require.Equal(t, cnt[1], 1, fmt.Sprintf("count=%v", cnt)) + } + + // finally, we can do the test + checkEnforce() + policyconf.SetPolicyMode(tp, policyconf.MonitorMode) + checkMonitor() + policyconf.SetPolicyMode(tp, policyconf.EnforceMode) + checkEnforce() +} + +func TestModeEnforcer(t *testing.T) { + // NB: the policy below checks for both enforcer and override at the same time, which is why + // we need both (and, also, why fmod_ret is not enough) + if !bpf.HasSignalHelper() { + t.Skip("skipping test, bpf_send_signal helper not available") + } + if !bpf.HasOverrideHelper() { + t.Skip("skipping test, neither bpf_override_return not available") + } + + testutils.CaptureLog(t, logger.GetLogger().(*logrus.Logger)) + ctx, cancel := context.WithTimeout(context.Background(), tus.Conf().CmdWaitTime) + defer cancel() + + pft := pft.Start(t, ctx) + + polName := "tp-test" + polNamespace := "namespace" + tp := &tracingpolicy.GenericTracingPolicyNamespaced{ + Metadata: v1.ObjectMeta{ + Name: polName, + Namespace: polNamespace, + }, + Spec: v1alpha1.TracingPolicySpec{ + Enforcers: []v1alpha1.EnforcerSpec{{ + // NB: add another enforcer call so that we can just check the map + Calls: []string{"sys_lseek"}, + }}, + KProbes: []v1alpha1.KProbeSpec{{ + Call: "sys_getcpu", + Return: true, + Syscall: true, + ReturnArg: &v1alpha1.KProbeArg{ + Index: 0, + Type: "int", + }, + Selectors: []v1alpha1.KProbeSelector{{ + MatchActions: []v1alpha1.ActionSelector{ + {Action: "NotifyEnforcer", ArgSig: 9}, + {Action: "Override", ArgError: -1}, + }, + }}, + }}, + }, + } + + pft.AddPolicy(t, ctx, tp) + + pid := pft.ProgTester.Cmd.Process.Pid + + var cmdOut string + var cmdErr error + ops := func() { + cmdOut, cmdErr = pft.ProgTester.Command("getcpu") + t.Logf("command getcpu out:%q err:%v", cmdOut, cmdErr) + } + + checkEnforce := func() { + cnt := perfring.RunTestEventReduceCount(t, ctx, ops, perfring.FilterTestMessages, + func(x notify.Message) int { + if kprobe, ok := x.(*tracing.MsgGenericKprobeUnix); ok { + if strings.HasSuffix(kprobe.FuncName, "sys_getcpu") { + return 1 + } + return -1 + } + return 0 + }) + require.NoError(t, cmdErr) + require.Equal(t, cnt[1], 1, fmt.Sprintf("count=%v", cnt)) + enfDump, enfDumpErr := stracing.DumpEnforcerMap(polName, polNamespace) + require.NoError(t, enfDumpErr) + require.Len(t, enfDump, 1) + require.Contains(t, cmdOut, "operation not permitted") + for key, val := range enfDump { + require.Equal(t, pid, int(key.PidTgid>>32)) + require.Equal(t, val.Sig, int16(9)) + break + } + } + + resetEnforcerMap := func() { + err := stracing.ResetEnforcerMap(t, polName, polNamespace) + require.NoError(t, err) + } + + checkMonitor := func() { + cnt := perfring.RunTestEventReduceCount(t, ctx, ops, perfring.FilterTestMessages, + func(x notify.Message) int { + if kprobe, ok := x.(*tracing.MsgGenericKprobeUnix); ok { + if strings.HasSuffix(kprobe.FuncName, "sys_getcpu") { + return 1 + } + return -1 + } + return 0 + }) + require.NoError(t, cmdErr) + require.Equal(t, cnt[1], 1, fmt.Sprintf("count=%v", cnt)) + require.NotContains(t, cmdOut, "operation not permitted") + enfDump, enfDumpErr := stracing.DumpEnforcerMap(polName, polNamespace) + require.NoError(t, enfDumpErr) + require.Len(t, enfDump, 0) + } + + // finally, we can do the test + checkEnforce() + resetEnforcerMap() + policyconf.SetPolicyMode(tp, policyconf.MonitorMode) + checkMonitor() + resetEnforcerMap() + policyconf.SetPolicyMode(tp, policyconf.EnforceMode) + checkEnforce() +} diff --git a/pkg/sensors/collection.go b/pkg/sensors/collection.go index 2f6cc2a16fc..220da125b6d 100644 --- a/pkg/sensors/collection.go +++ b/pkg/sensors/collection.go @@ -4,10 +4,12 @@ package sensors import ( + "errors" "fmt" "sync" "github.com/cilium/tetragon/api/v1/tetragon" + "github.com/cilium/tetragon/pkg/policyconf" "github.com/cilium/tetragon/pkg/tracingpolicy" "go.uber.org/multierr" ) @@ -91,6 +93,49 @@ func (c *collection) info() string { return c.name } +func (c *collection) mode() tetragon.TracingPolicyMode { + if c.tracingpolicy == nil || c.state != EnabledState { + return tetragon.TracingPolicyMode_TP_MODE_UNKNOWN + } + mode, err := policyconf.PolicyMode(c.tracingpolicy) + if err != nil { + return tetragon.TracingPolicyMode_TP_MODE_UNKNOWN + } + + switch mode { + case policyconf.EnforceMode: + return tetragon.TracingPolicyMode_TP_MODE_ENFORCE + case policyconf.MonitorMode: + return tetragon.TracingPolicyMode_TP_MODE_MONITOR + } + + return tetragon.TracingPolicyMode_TP_MODE_UNKNOWN +} + +func policyconfMode(mode tetragon.TracingPolicyMode) (policyconf.Mode, error) { + switch mode { + case tetragon.TracingPolicyMode_TP_MODE_ENFORCE: + return policyconf.EnforceMode, nil + case tetragon.TracingPolicyMode_TP_MODE_MONITOR: + return policyconf.MonitorMode, nil + } + + return policyconf.InvalidMode, fmt.Errorf("unexpected mode: %v", mode) +} + +func (c *collection) setMode(mode tetragon.TracingPolicyMode) error { + if c.tracingpolicy == nil { + return errors.New("unexpected error: setMode called in a collection that is not a tracing policy") + } + + m, err := policyconfMode(mode) + if err != nil { + return err + } + + return policyconf.SetPolicyMode(c.tracingpolicy, m) +} + // load will attempt to load a collection of sensors. If loading one of the sensors fails, it // will attempt to unload the already loaded sensors. func (c *collection) load(bpfDir string) error { diff --git a/pkg/sensors/handler.go b/pkg/sensors/handler.go index 9f83b6fcdf7..81e9cbd6194 100644 --- a/pkg/sensors/handler.go +++ b/pkg/sensors/handler.go @@ -4,6 +4,7 @@ package sensors import ( + "errors" "fmt" "sync" @@ -198,9 +199,14 @@ func (h *handler) disableTracingPolicy(op *tracingPolicyDisable) error { if !exists { return fmt.Errorf("tracing policy %s does not exist", op.ck) } + return h.doDisableTracingPolicy(col) +} + +// should be called with h.collections.mu locked (for writing) +func (h *handler) doDisableTracingPolicy(col *collection) error { if col.state != EnabledState { - return fmt.Errorf("tracing policy %s is not enabled", op.ck) + return fmt.Errorf("tracing policy %s is not enabled", col.name) } col.state = UnloadingState @@ -230,8 +236,13 @@ func (h *handler) enableTracingPolicy(op *tracingPolicyEnable) error { return fmt.Errorf("tracing policy %s does not exist", op.ck) } + return h.doEnableTracingPolicy(col) +} + +// should be called with h.collections.mu locked (for writing) +func (h *handler) doEnableTracingPolicy(col *collection) error { if col.state != DisabledState { - return fmt.Errorf("tracing policy %s is not disabled", op.ck) + return fmt.Errorf("tracing policy %s is not disabled", col.name) } col.state = LoadingState @@ -250,6 +261,38 @@ func (h *handler) enableTracingPolicy(op *tracingPolicyEnable) error { return nil } +func (h *handler) configureTracingPolicy( + ck collectionKey, + mode *tetragon.TracingPolicyMode, + enable *bool, +) error { + h.collections.mu.Lock() + defer h.collections.mu.Unlock() + collections := h.collections.c + col, exists := collections[ck] + if !exists { + return fmt.Errorf("tracing policy %s does not exist", ck) + } + + var err error + + // change mode of policy + if mode != nil { + err = errors.Join(err, col.setMode(*mode)) + } + + // enable or disable policy + if enable != nil { + if *enable { + err = errors.Join(err, h.doEnableTracingPolicy(col)) + } else { + err = errors.Join(err, h.doDisableTracingPolicy(col)) + } + } + + return err +} + func (h *handler) addSensor(op *sensorAdd) error { h.collections.mu.Lock() defer h.collections.mu.Unlock() @@ -387,16 +430,14 @@ func (h *handler) listPolicies() []*tetragon.TracingPolicyStatus { Enabled: col.state == EnabledState, FilterId: col.policyfilterID, State: col.state.ToTetragonState(), + Mode: col.mode(), } if col.err != nil { pol.Error = col.err.Error() } - pol.Namespace = "" - if tpNs, ok := col.tracingpolicy.(tracingpolicy.TracingPolicyNamespaced); ok { - pol.Namespace = tpNs.TpNamespace() - } + pol.Namespace = tracingpolicy.Namespace(col.tracingpolicy) for _, sens := range col.sensors { pol.Sensors = append(pol.Sensors, sens.GetName()) diff --git a/pkg/sensors/load.go b/pkg/sensors/load.go index 6f796b3e12e..4a0103abe63 100644 --- a/pkg/sensors/load.go +++ b/pkg/sensors/load.go @@ -17,6 +17,7 @@ import ( "github.com/cilium/tetragon/pkg/logger" "github.com/cilium/tetragon/pkg/option" "github.com/cilium/tetragon/pkg/sensors/program" + "github.com/cilium/tetragon/pkg/tracingpolicy" "github.com/sirupsen/logrus" ) @@ -64,10 +65,7 @@ func LoadConfig(bpfDir string, sens []*Sensor) error { } func (s *Sensor) policyDir() string { - if s.Namespace == "" { - return sanitize(s.Policy) - } - return fmt.Sprintf("%s:%s", s.Namespace, sanitize(s.Policy)) + return tracingpolicy.PolicyDir(s.Namespace, s.Policy) } func (s *Sensor) createDirs(bpfDir string) { diff --git a/pkg/sensors/manager.go b/pkg/sensors/manager.go index a59b911e317..e2607173e68 100644 --- a/pkg/sensors/manager.go +++ b/pkg/sensors/manager.go @@ -164,6 +164,11 @@ func (h *Manager) DisableTracingPolicy(ctx context.Context, name, namespace stri return h.handler.disableTracingPolicy(op) } +func (h *Manager) ConfigureTracingPolicy(_ context.Context, conf *tetragon.ConfigureTracingPolicyRequest) error { + ck := collectionKey{conf.GetName(), conf.GetNamespace()} + return h.handler.configureTracingPolicy(ck, conf.Mode, conf.Enable) +} + // ListTracingPolicies returns a list of the active tracing policies func (h *Manager) ListTracingPolicies(_ context.Context) (*tetragon.ListTracingPoliciesResponse, error) { ret := &tetragon.ListTracingPoliciesResponse{} diff --git a/pkg/sensors/sensors.go b/pkg/sensors/sensors.go index e2a9cfa1f2d..66cee35c1d8 100644 --- a/pkg/sensors/sensors.go +++ b/pkg/sensors/sensors.go @@ -7,7 +7,6 @@ import ( "errors" "fmt" "sort" - "strings" "sync" "github.com/cilium/tetragon/pkg/bpf" @@ -89,10 +88,6 @@ func (s *Sensor) AddPostUnloadHook(hook SensorHook) { } } -func sanitize(name string) string { - return strings.ReplaceAll(name, "/", "_") -} - type Prog struct { Namespace string Policy string diff --git a/pkg/sensors/tracing/enforcer.go b/pkg/sensors/tracing/enforcer.go index 5644f6202c0..3ca0f1e2158 100644 --- a/pkg/sensors/tracing/enforcer.go +++ b/pkg/sensors/tracing/enforcer.go @@ -21,10 +21,6 @@ import ( "github.com/cilium/tetragon/pkg/tracingpolicy" ) -const ( - enforcerDataMapName = "enforcer_data" -) - type enforcerHandler struct { syscallsSyms []string } @@ -51,7 +47,7 @@ func init() { } func enforcerMapsUser(load *program.Program) []*program.Map { - edm := program.MapUserPolicy(enforcerDataMapName, load) + edm := program.MapUserPolicy(EnforcerDataMapName, load) edm.SetMaxEntries(enforcerMapMaxEntries) return []*program.Map{ edm, @@ -60,7 +56,7 @@ func enforcerMapsUser(load *program.Program) []*program.Map { } func enforcerMaps(load *program.Program) []*program.Map { - edm := program.MapBuilderPolicy(enforcerDataMapName, load) + edm := program.MapBuilderPolicy(EnforcerDataMapName, load) edm.SetMaxEntries(enforcerMapMaxEntries) return []*program.Map{ edm, diff --git a/pkg/sensors/tracing/enforcer_map.go b/pkg/sensors/tracing/enforcer_map.go new file mode 100644 index 00000000000..73a91719786 --- /dev/null +++ b/pkg/sensors/tracing/enforcer_map.go @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package tracing + +import ( + "errors" + "fmt" + "path/filepath" + "testing" + + "github.com/cilium/ebpf" + "github.com/cilium/tetragon/pkg/bpf" + "github.com/cilium/tetragon/pkg/tracingpolicy" +) + +const ( + EnforcerDataMapName = "enforcer_data" +) + +type EnforcerMap struct { + *ebpf.Map +} + +func openEnforcerMap(polName, polNamespace string, opts *ebpf.LoadPinOptions) (EnforcerMap, error) { + fname := filepath.Join( + bpf.MapPrefixPath(), + tracingpolicy.PolicyDir(polNamespace, polName), + EnforcerDataMapName) + m, err := ebpf.LoadPinnedMap(fname, opts) + if err != nil { + return EnforcerMap{nil}, fmt.Errorf("failed to open enforcer map %q: %w", fname, err) + } + + return EnforcerMap{m}, nil +} + +// open policy enforecer map for reading +func OpenEnforcerMap(polName, polNamespace string) (EnforcerMap, error) { + return openEnforcerMap(polName, polNamespace, &ebpf.LoadPinOptions{ReadOnly: true}) +} + +type EnforcerMapKey struct { + PidTgid uint64 // pidtgid +} + +type EnforcerMapVal struct { + Err int16 + Sig int16 + FuncID uint32 + Arg uint32 +} + +func (m EnforcerMap) Dump() (map[EnforcerMapKey]EnforcerMapVal, error) { + ret := make(map[EnforcerMapKey]EnforcerMapVal) + + var key EnforcerMapKey + var val EnforcerMapVal + + iter := m.Iterate() + for iter.Next(&key, &val) { + ret[key] = val + } + + return ret, iter.Err() +} + +func DumpEnforcerMap(polName, polNamespace string) (map[EnforcerMapKey]EnforcerMapVal, error) { + m, err := OpenEnforcerMap(polName, polNamespace) + if err != nil { + return nil, err + } + defer m.Close() + return m.Dump() +} + +// NB: only meant for testing +func ResetEnforcerMap(_ *testing.T, polName, polNamespace string) error { + m, err := openEnforcerMap(polName, polNamespace, &ebpf.LoadPinOptions{ReadOnly: false}) + if err != nil { + return err + } + defer m.Close() + + for { + var key EnforcerMapKey + if err := m.NextKey(nil, &key); err != nil { + if errors.Is(err, ebpf.ErrKeyNotExist) { + return nil + } + return err + } + if err := m.Delete(&key); err != nil { + return err + } + } +} diff --git a/pkg/sensors/tracing/generickprobe.go b/pkg/sensors/tracing/generickprobe.go index a8ab46ec98a..a7581e89e34 100644 --- a/pkg/sensors/tracing/generickprobe.go +++ b/pkg/sensors/tracing/generickprobe.go @@ -272,7 +272,7 @@ func filterMaps(load *program.Program, kprobeEntry *genericKprobe) []*program.Ma return maps } -func createMultiKprobeSensor(policyName string, multiIDs []idtable.EntryID, has hasMaps) ([]*program.Program, []*program.Map, error) { +func createMultiKprobeSensor(polInfo *policyInfo, multiIDs []idtable.EntryID, has hasMaps) ([]*program.Program, []*program.Map, error) { var multiRetIDs []idtable.EntryID var progs []*program.Program var maps []*program.Map @@ -311,7 +311,7 @@ func createMultiKprobeSensor(policyName string, multiIDs []idtable.EntryID, has "multi_kprobe", "generic_kprobe"). SetLoaderData(multiIDs). - SetPolicy(policyName) + SetPolicy(polInfo.name) progs = append(progs, load) fdinstall := program.MapBuilderSensor("fdinstall_map", load) @@ -381,6 +381,8 @@ func createMultiKprobeSensor(policyName string, multiIDs []idtable.EntryID, has } maps = append(maps, overrideTasksMap) + maps = append(maps, polInfo.policyConfMap(load)) + if len(multiRetIDs) != 0 { loadret := program.Builder( path.Join(option.Config.HubbleLib, loadProgRetName), @@ -390,7 +392,7 @@ func createMultiKprobeSensor(policyName string, multiIDs []idtable.EntryID, has "generic_kprobe"). SetRetProbe(true). SetLoaderData(multiRetIDs). - SetPolicy(policyName) + SetPolicy(polInfo.name) progs = append(progs, loadret) retProbe := program.MapBuilderSensor("retprobe_map", loadret) @@ -595,10 +597,7 @@ func hasMapsSetup(spec *v1alpha1.TracingPolicySpec) hasMaps { func createGenericKprobeSensor( spec *v1alpha1.TracingPolicySpec, name string, - policyID policyfilter.PolicyID, - policyName string, - namespace string, - customHandler eventhandler.Handler, + polInfo *policyInfo, ) (*sensors.Sensor, error) { var progs []*program.Program var maps []*program.Map @@ -609,16 +608,11 @@ func createGenericKprobeSensor( kprobes := spec.KProbes lists := spec.Lists - specOpts, err := getSpecOptions(spec.Options) - if err != nil { - return nil, fmt.Errorf("failed to get spec options: %s", err) - } - // use multi kprobe only if: // - it's not disabled by spec option // - it's not disabled by command line option // - there's support detected - if !specOpts.DisableKprobeMulti { + if !polInfo.specOpts.DisableKprobeMulti { useMulti = !option.Config.DisableKprobeMulti && bpf.HasKprobeMulti() } @@ -629,9 +623,9 @@ func createGenericKprobeSensor( in := addKprobeIn{ useMulti: useMulti, sensorPath: name, - policyID: policyID, - policyName: policyName, - customHandler: customHandler, + policyID: polInfo.policyID, + policyName: polInfo.name, + customHandler: polInfo.customHandler, selMaps: selMaps, } @@ -663,10 +657,11 @@ func createGenericKprobeSensor( } } + var err error if useMulti { - progs, maps, err = createMultiKprobeSensor(in.policyName, ids, has) + progs, maps, err = createMultiKprobeSensor(polInfo, ids, has) } else { - progs, maps, err = createSingleKprobeSensor(ids, has) + progs, maps, err = createSingleKprobeSensor(polInfo, ids, has) } if err != nil { @@ -679,8 +674,8 @@ func createGenericKprobeSensor( Name: name, Progs: progs, Maps: maps, - Policy: policyName, - Namespace: namespace, + Policy: polInfo.name, + Namespace: polInfo.namespace, DestroyHook: func() error { var errs error for _, id := range ids { @@ -931,7 +926,7 @@ func addKprobe(funcName string, instance int, f *v1alpha1.KProbeSpec, in *addKpr return kprobeEntry.tableId, nil } -func createKprobeSensorFromEntry(kprobeEntry *genericKprobe, +func createKprobeSensorFromEntry(polInfo *policyInfo, kprobeEntry *genericKprobe, progs []*program.Program, maps []*program.Map, has hasMaps) ([]*program.Program, []*program.Map) { loadProgName, loadProgRetName := kernels.GenericKprobeObjs() @@ -1031,6 +1026,8 @@ func createKprobeSensorFromEntry(kprobeEntry *genericKprobe, } maps = append(maps, overrideTasksMap) + maps = append(maps, polInfo.policyConfMap(load)) + if kprobeEntry.loadArgs.retprobe { pinRetProg := sensors.PathJoin(fmt.Sprintf("%s_return", kprobeEntry.funcName)) if kprobeEntry.instance != 0 { @@ -1082,7 +1079,7 @@ func createKprobeSensorFromEntry(kprobeEntry *genericKprobe, return progs, maps } -func createSingleKprobeSensor(ids []idtable.EntryID, has hasMaps) ([]*program.Program, []*program.Map, error) { +func createSingleKprobeSensor(polInfo *policyInfo, ids []idtable.EntryID, has hasMaps) ([]*program.Program, []*program.Map, error) { var progs []*program.Program var maps []*program.Map @@ -1098,7 +1095,7 @@ func createSingleKprobeSensor(ids []idtable.EntryID, has hasMaps) ([]*program.Pr has.rateLimit = gk.hasRatelimit has.override = gk.hasOverride - progs, maps = createKprobeSensorFromEntry(gk, progs, maps, has) + progs, maps = createKprobeSensorFromEntry(polInfo, gk, progs, maps, has) } return progs, maps, nil diff --git a/pkg/sensors/tracing/generickprobe_test.go b/pkg/sensors/tracing/generickprobe_test.go index 59c788ae3e7..88efe5f83c3 100644 --- a/pkg/sensors/tracing/generickprobe_test.go +++ b/pkg/sensors/tracing/generickprobe_test.go @@ -13,6 +13,7 @@ import ( "github.com/cilium/tetragon/pkg/bpf" "github.com/cilium/tetragon/pkg/idtable" "github.com/cilium/tetragon/pkg/k8s/apis/cilium.io/v1alpha1" + "github.com/cilium/tetragon/pkg/policyfilter" "github.com/cilium/tetragon/pkg/sensors" tus "github.com/cilium/tetragon/pkg/testutils/sensors" "github.com/stretchr/testify/assert" @@ -82,7 +83,9 @@ func Test_SensorDestroyHook(t *testing.T) { // insertion in the table in AddKprobe, but this is done by the caller to // have just DestroyHook that regroups all the potential multiple kprobes // contained in one sensor. - sensor, err := createGenericKprobeSensor(spec, "test_sensor", 0, "test_policy", "", nil) + policyInfo, err := newPolicyInfoFromSpec("", "test_policy", policyfilter.NoFilterID, spec, nil) + require.NoError(t, err) + sensor, err := createGenericKprobeSensor(spec, "test_sensor", policyInfo) if err != nil { t.Errorf("createGenericKprobeSensor err expected: nil, got: %s", err) } diff --git a/pkg/sensors/tracing/genericlsm.go b/pkg/sensors/tracing/genericlsm.go index 0c9b91b5f35..035bda37915 100644 --- a/pkg/sensors/tracing/genericlsm.go +++ b/pkg/sensors/tracing/genericlsm.go @@ -343,9 +343,7 @@ func addLsm(f *v1alpha1.LsmHookSpec, in *addLsmIn) (id idtable.EntryID, err erro func createGenericLsmSensor( spec *v1alpha1.TracingPolicySpec, name string, - policyID policyfilter.PolicyID, - policyName string, - namespace string, + polInfo *policyInfo, ) (*sensors.Sensor, error) { var progs []*program.Program var maps []*program.Map @@ -362,8 +360,8 @@ func createGenericLsmSensor( in := addLsmIn{ sensorPath: name, - policyID: policyID, - policyName: policyName, + policyID: polInfo.policyID, + policyName: polInfo.name, selMaps: selMaps, } @@ -380,7 +378,7 @@ func createGenericLsmSensor( if err != nil { return nil, err } - progs, maps = createLsmSensorFromEntry(gl, progs, maps) + progs, maps = createLsmSensorFromEntry(polInfo, gl, progs, maps) } if err != nil { @@ -403,8 +401,8 @@ func createGenericLsmSensor( } return errs }, - Policy: policyName, - Namespace: namespace, + Policy: polInfo.name, + Namespace: polInfo.namespace, }, nil } @@ -446,7 +444,7 @@ func imaProgName(lsmEntry *genericLsm) (string, string) { return pName, pType } -func createLsmSensorFromEntry(lsmEntry *genericLsm, +func createLsmSensorFromEntry(polInfo *policyInfo, lsmEntry *genericLsm, progs []*program.Program, maps []*program.Map) ([]*program.Program, []*program.Map) { loadProgCoreName := "bpf_generic_lsm_core.o" @@ -543,6 +541,8 @@ func createLsmSensorFromEntry(lsmEntry *genericLsm, overrideTasksMapOutput := program.MapBuilderProgram("override_tasks", loadOutput) maps = append(maps, overrideTasksMapOutput) + maps = append(maps, polInfo.policyConfMap(load)) + logger.GetLogger(). Infof("Added generic lsm sensor: %s -> %s", load.Name, load.Attach) return progs, maps diff --git a/pkg/sensors/tracing/generictracepoint.go b/pkg/sensors/tracing/generictracepoint.go index da9c7bbc187..07ed1abd52a 100644 --- a/pkg/sensors/tracing/generictracepoint.go +++ b/pkg/sensors/tracing/generictracepoint.go @@ -310,9 +310,7 @@ func buildGenericTracepointArgs(info *tracepoint.Tracepoint, specArgs []v1alpha1 func createGenericTracepoint( sensorName string, conf *v1alpha1.TracepointSpec, - policyID policyfilter.PolicyID, - policyName string, - customHandler eventhandler.Handler, + polInfo *policyInfo, ) (*genericTracepoint, error) { if conf == nil { return nil, errors.New("failed creating generic tracepoint, conf is nil") @@ -327,7 +325,7 @@ func createGenericTracepoint( if errors.Is(err, ErrMsgSyntaxShort) || errors.Is(err, ErrMsgSyntaxEscape) { return nil, err } else if errors.Is(err, ErrMsgSyntaxLong) { - logger.GetLogger().WithField("policy-name", policyName).Warnf("TracingPolicy 'message' field too long, truncated to %d characters", TpMaxMessageLen) + logger.GetLogger().WithField("policy-name", polInfo.name).Warnf("TracingPolicy 'message' field too long, truncated to %d characters", TpMaxMessageLen) } tagsField, err := getPolicyTags(conf.Tags) @@ -348,9 +346,9 @@ func createGenericTracepoint( Info: &tp, Spec: conf, args: tpArgs, - policyID: policyID, - policyName: policyName, - customHandler: customHandler, + policyID: polInfo.policyID, + policyName: polInfo.name, + customHandler: polInfo.customHandler, message: msgField, tags: tagsField, } @@ -428,28 +426,25 @@ func tpValidateAndAdjustEnforcerAction( func createGenericTracepointSensor( spec *v1alpha1.TracingPolicySpec, name string, - policyID policyfilter.PolicyID, - policyName string, - namespace string, - customHandler eventhandler.Handler, + polInfo *policyInfo, ) (*sensors.Sensor, error) { confs := spec.Tracepoints lists := spec.Lists ret := &sensors.Sensor{ Name: name, - Policy: policyName, - Namespace: namespace, + Policy: polInfo.name, + Namespace: polInfo.namespace, } tracepoints := make([]*genericTracepoint, 0, len(confs)) for i := range confs { tpSpec := &confs[i] - err := tpValidateAndAdjustEnforcerAction(ret, tpSpec, i, policyName, spec) + err := tpValidateAndAdjustEnforcerAction(ret, tpSpec, i, polInfo.name, spec) if err != nil { return nil, err } - tp, err := createGenericTracepoint(name, tpSpec, policyID, policyName, customHandler) + tp, err := createGenericTracepoint(name, tpSpec, polInfo) if err != nil { return nil, err } @@ -480,7 +475,7 @@ func createGenericTracepointSensor( "tracepoint/generic_tracepoint", pinProg, "generic_tracepoint", - ).SetPolicy(policyName) + ).SetPolicy(polInfo.name) err := tp.InitKernelSelectors(lists) if err != nil { @@ -582,6 +577,8 @@ func createGenericTracepointSensor( selMatchBinariesMap := program.MapBuilderProgram("tg_mb_sel_opts", prog0) maps = append(maps, selMatchBinariesMap) + + maps = append(maps, polInfo.policyConfMap(prog0)) } maps = append(maps, program.MapUserFrom(base.ExecveMap)) diff --git a/pkg/sensors/tracing/genericuprobe.go b/pkg/sensors/tracing/genericuprobe.go index 7346b3fb399..a06899399f7 100644 --- a/pkg/sensors/tracing/genericuprobe.go +++ b/pkg/sensors/tracing/genericuprobe.go @@ -245,27 +245,21 @@ type addUprobeIn struct { func createGenericUprobeSensor( spec *v1alpha1.TracingPolicySpec, name string, - policyName string, - namespace string, + polInfo *policyInfo, ) (*sensors.Sensor, error) { var progs []*program.Program var maps []*program.Map var ids []idtable.EntryID var err error - options, err := getSpecOptions(spec.Options) - if err != nil { - return nil, fmt.Errorf("failed to set options: %s", err) - } - in := addUprobeIn{ sensorPath: name, - policyName: policyName, + policyName: polInfo.name, // use multi kprobe only if: // - it's not disabled by spec option // - there's support detected - useMulti: !options.DisableUprobeMulti && bpf.HasUprobeMulti(), + useMulti: !polInfo.specOpts.DisableUprobeMulti && bpf.HasUprobeMulti(), } for _, uprobe := range spec.UProbes { @@ -276,7 +270,7 @@ func createGenericUprobeSensor( } if in.useMulti { - progs, maps, err = createMultiUprobeSensor(name, ids, policyName) + progs, maps, err = createMultiUprobeSensor(name, ids, polInfo.name) } else { progs, maps, err = createSingleUprobeSensor(ids) } @@ -291,8 +285,8 @@ func createGenericUprobeSensor( Name: name, Progs: progs, Maps: maps, - Policy: policyName, - Namespace: namespace, + Policy: polInfo.name, + Namespace: polInfo.namespace, }, nil } diff --git a/pkg/sensors/tracing/options.go b/pkg/sensors/tracing/options.go index e618c41d5d5..7ded7643a3b 100644 --- a/pkg/sensors/tracing/options.go +++ b/pkg/sensors/tracing/options.go @@ -10,6 +10,7 @@ import ( "github.com/cilium/tetragon/pkg/k8s/apis/cilium.io/v1alpha1" "github.com/cilium/tetragon/pkg/logger" "github.com/cilium/tetragon/pkg/option" + "github.com/cilium/tetragon/pkg/policyconf" ) type OverrideMethod int @@ -18,6 +19,7 @@ const ( keyOverrideMethod = "override-method" valFmodRet = "fmod-ret" valOverrideReturn = "override-return" + keyPolicyMode = "policy-mode" ) const ( @@ -42,6 +44,7 @@ type specOptions struct { DisableKprobeMulti bool DisableUprobeMulti bool OverrideMethod OverrideMethod + policyMode policyconf.Mode } type opt struct { @@ -79,6 +82,16 @@ var opts = map[string]opt{ return nil }, }, + keyPolicyMode: opt{ + set: func(str string, options *specOptions) (err error) { + mode, err := policyconf.ParseMode(str) + if err != nil { + return err + } + options.policyMode = mode + return nil + }, + }, } func getSpecOptions(specs []v1alpha1.OptionSpec) (*specOptions, error) { diff --git a/pkg/sensors/tracing/policyhandler.go b/pkg/sensors/tracing/policyhandler.go index 6cc10db9810..5bb691199cc 100644 --- a/pkg/sensors/tracing/policyhandler.go +++ b/pkg/sensors/tracing/policyhandler.go @@ -7,9 +7,13 @@ import ( "errors" "fmt" + "github.com/cilium/ebpf" "github.com/cilium/tetragon/pkg/eventhandler" + "github.com/cilium/tetragon/pkg/k8s/apis/cilium.io/v1alpha1" + "github.com/cilium/tetragon/pkg/policyconf" "github.com/cilium/tetragon/pkg/policyfilter" "github.com/cilium/tetragon/pkg/sensors" + "github.com/cilium/tetragon/pkg/sensors/program" "github.com/cilium/tetragon/pkg/tracingpolicy" ) @@ -19,19 +23,83 @@ func init() { sensors.RegisterPolicyHandlerAtInit("tracing", policyHandler{}) } -func (h policyHandler) PolicyHandler( +type policyInfo struct { + name string + namespace string + policyID policyfilter.PolicyID + customHandler eventhandler.Handler + policyConf *program.Map + specOpts *specOptions +} + +func newPolicyInfo( policy tracingpolicy.TracingPolicy, policyID policyfilter.PolicyID, -) (sensors.SensorIface, error) { - - policyName := policy.TpName() - spec := policy.TpSpec() - +) (*policyInfo, error) { namespace := "" if tpn, ok := policy.(tracingpolicy.TracingPolicyNamespaced); ok { namespace = tpn.TpNamespace() } + return newPolicyInfoFromSpec( + namespace, + policy.TpName(), + policyID, + policy.TpSpec(), + eventhandler.GetCustomEventhandler(policy), + ) + +} + +func newPolicyInfoFromSpec( + namespace, name string, + policyID policyfilter.PolicyID, + spec *v1alpha1.TracingPolicySpec, + customHandler eventhandler.Handler, +) (*policyInfo, error) { + opts, err := getSpecOptions(spec.Options) + if err != nil { + return nil, err + } + return &policyInfo{ + name: name, + namespace: namespace, + policyID: policyID, + customHandler: customHandler, + policyConf: nil, + specOpts: opts, + }, nil +} + +func (pi *policyInfo) policyConfMap(prog *program.Program) *program.Map { + if pi.policyConf != nil { + return program.MapUserFrom(pi.policyConf) + } + pi.policyConf = program.MapBuilderPolicy("policy_conf", prog) + prog.MapLoad = append(prog.MapLoad, &program.MapLoad{ + Index: 0, + Name: policyconf.PolicyConfMapName, + Load: func(m *ebpf.Map, _ string, _ uint32) error { + mode := policyconf.EnforceMode + if pi.specOpts != nil { + mode = pi.specOpts.policyMode + } + conf := policyconf.PolicyConf{ + Mode: mode, + } + key := uint32(0) + return m.Update(key, &conf, ebpf.UpdateAny) + }, + }) + return pi.policyConf +} + +func (h policyHandler) PolicyHandler( + policy tracingpolicy.TracingPolicy, + policyID policyfilter.PolicyID, +) (sensors.SensorIface, error) { + + spec := policy.TpSpec() sections := 0 if len(spec.KProbes) > 0 { sections++ @@ -42,27 +110,34 @@ func (h policyHandler) PolicyHandler( if len(spec.LsmHooks) > 0 { sections++ } + if len(spec.UProbes) > 0 { + sections++ + } if sections > 1 { - return nil, errors.New("tracing policies with multiple sections of kprobes, tracepoints, or lsm hooks are currently not supported") + return nil, errors.New("tracing policies with multiple sections of kprobes, tracepoints, lsm hooks, or uprobes are currently not supported") + } + + polInfo, err := newPolicyInfo(policy, policyID) + if err != nil { + return nil, fmt.Errorf("failed to parse options: %w", err) } - handler := eventhandler.GetCustomEventhandler(policy) if len(spec.KProbes) > 0 { name := "generic_kprobe" err := preValidateKprobes(name, spec.KProbes, spec.Lists) if err != nil { return nil, fmt.Errorf("validation failed: %w", err) } - return createGenericKprobeSensor(spec, name, policyID, policyName, namespace, handler) + return createGenericKprobeSensor(spec, name, polInfo) } if len(spec.Tracepoints) > 0 { - return createGenericTracepointSensor(spec, "generic_tracepoint", policyID, policyName, namespace, handler) + return createGenericTracepointSensor(spec, "generic_tracepoint", polInfo) } if len(spec.LsmHooks) > 0 { - return createGenericLsmSensor(spec, "generic_lsm", policyID, policyName, namespace) + return createGenericLsmSensor(spec, "generic_lsm", polInfo) } if len(spec.UProbes) > 0 { - return createGenericUprobeSensor(spec, "generic_lsm", policyName, namespace) + return createGenericUprobeSensor(spec, "generic_uprobe", polInfo) } return nil, nil } diff --git a/pkg/sensors/tracing/tracepoint_test.go b/pkg/sensors/tracing/tracepoint_test.go index 57f6e965421..4ded479691c 100644 --- a/pkg/sensors/tracing/tracepoint_test.go +++ b/pkg/sensors/tracing/tracepoint_test.go @@ -84,7 +84,9 @@ func TestGenericTracepointSimple(t *testing.T) { sm := tuo.GetTestSensorManager(t) // create and add sensor - sensor, err := createGenericTracepointSensor(&spec, "GtpLseekTest", policyfilter.NoFilterID, "policyName", "", nil) + policyInfo, err := newPolicyInfoFromSpec("", "policyName", policyfilter.NoFilterID, &spec, nil) + require.NoError(t, err) + sensor, err := createGenericTracepointSensor(&spec, "GtpLseekTest", policyInfo) if err != nil { t.Fatalf("failed to create generic tracepoint sensor: %s", err) } @@ -148,7 +150,9 @@ func doTestGenericTracepointPidFilter(t *testing.T, conf v1alpha1.TracepointSpec sm := tuo.GetTestSensorManager(t) // create and add sensor - sensor, err := createGenericTracepointSensor(&spec, "GtpLseekTest", policyfilter.NoFilterID, "policyName", "", nil) + policyInfo, err := newPolicyInfoFromSpec("", "policyName", policyfilter.NoFilterID, &spec, nil) + require.NoError(t, err) + sensor, err := createGenericTracepointSensor(&spec, "GtpLseekTest", policyInfo) if err != nil { t.Fatalf("failed to create generic tracepoint sensor: %s", err) } @@ -544,7 +548,9 @@ func TestTracepointCloneThreads(t *testing.T) { sm := tuo.GetTestSensorManager(t) // create and add sensor - sensor, err := createGenericTracepointSensor(&spec, "GtpLseekTest", policyfilter.NoFilterID, "policyName", "", nil) + policyInfo, err := newPolicyInfoFromSpec("", "policyName", policyfilter.NoFilterID, &spec, nil) + require.NoError(t, err) + sensor, err := createGenericTracepointSensor(&spec, "GtpLseekTest", policyInfo) if err != nil { t.Fatalf("failed to create generic tracepoint sensor: %s", err) } diff --git a/pkg/server/fake_observer.go b/pkg/server/fake_observer.go index 12758f279e4..364b94b1588 100644 --- a/pkg/server/fake_observer.go +++ b/pkg/server/fake_observer.go @@ -53,3 +53,7 @@ func (f *FakeObserver) RemoveSensor(ctx context.Context, sensorName string) erro func (f *FakeObserver) ListTracingPolicies(ctx context.Context) (*tetragon.ListTracingPoliciesResponse, error) { return nil, nil } + +func (h *FakeObserver) ConfigureTracingPolicy(_ context.Context, _ *tetragon.ConfigureTracingPolicyRequest) error { + return nil +} diff --git a/pkg/server/server.go b/pkg/server/server.go index cef963d06a4..476bda78bae 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -46,11 +46,13 @@ type observer interface { DeleteTracingPolicy(ctx context.Context, name string, namespace string) error // ListTracingPolicies lists active traing policies ListTracingPolicies(ctx context.Context) (*tetragon.ListTracingPoliciesResponse, error) + ConfigureTracingPolicy(ctx context.Context, conf *tetragon.ConfigureTracingPolicyRequest) error + + // {Disable, Enable}TracingPolicy are deprecated, use ConfigureTracingPolicy instead DisableTracingPolicy(ctx context.Context, name string, namespace string) error EnableTracingPolicy(ctx context.Context, name string, namespace string) error - // ListTracingPolicies lists active traing policies - // ListTracingPolicies lists active traing policies + // The Sensor API is deprecated EnableSensor(ctx context.Context, name string) error DisableSensor(ctx context.Context, name string) error ListSensors(ctx context.Context) (*[]sensors.SensorStatus, error) @@ -296,6 +298,17 @@ func (s *Server) EnableTracingPolicy(ctx context.Context, req *tetragon.EnableTr } return &tetragon.EnableTracingPolicyResponse{}, nil } +func (s *Server) ConfigureTracingPolicy(ctx context.Context, req *tetragon.ConfigureTracingPolicyRequest) (*tetragon.ConfigureTracingPolicyResponse, error) { + logger.GetLogger().WithFields(logrus.Fields{ + "name": req.GetName(), + }).Debug("Received a ConfigureTrcingPolicy request") + + if err := s.observer.ConfigureTracingPolicy(ctx, req); err != nil { + return nil, err + } + + return &tetragon.ConfigureTracingPolicyResponse{}, nil +} func (s *Server) DisableTracingPolicy(ctx context.Context, req *tetragon.DisableTracingPolicyRequest) (*tetragon.DisableTracingPolicyResponse, error) { logger.GetLogger().WithFields(logrus.Fields{ diff --git a/pkg/testutils/cgroup/cgroup_fs.go b/pkg/testutils/cgroup/cgroup_fs.go new file mode 100644 index 00000000000..76a402d2da4 --- /dev/null +++ b/pkg/testutils/cgroup/cgroup_fs.go @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package cgroup + +import ( + "os" + "syscall" + "testing" + + "golang.org/x/sys/unix" +) + +// cgfsMkdirTemp creates a temp directory under the provided cgroup fs mountpoint +func CgfsMkTemp(t *testing.T, cgfsPath string, pattern string) string { + var st syscall.Statfs_t + if err := syscall.Statfs(cgfsPath, &st); err != nil { + t.Fatalf("error accessing cgroup path '%s': %s", cgfsPath, err) + } + if st.Type == unix.CGROUP2_SUPER_MAGIC { + t.Logf("'%s' is cgroup v2", cgfsPath) + } else if st.Type == unix.TMPFS_MAGIC { + t.Logf("'%s' is cgroup v1", cgfsPath) + } else { + t.Fatalf("'%s' not a cgroup fs", cgfsPath) + } + + // create tempdir + dir, err := os.MkdirTemp(cgfsPath, pattern) + if err != nil { + t.Skipf("skipping test, failed to create test dir: %s", err) + } + t.Cleanup(func() { + err := os.Remove(dir) + if err != nil { + t.Logf("failed to remove '%s': %s", dir, err) + } + }) + return dir +} diff --git a/pkg/testutils/policyfilter/tester/pftester.go b/pkg/testutils/policyfilter/tester/pftester.go new file mode 100644 index 00000000000..3c198e78c37 --- /dev/null +++ b/pkg/testutils/policyfilter/tester/pftester.go @@ -0,0 +1,116 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package tester + +// revive:disable:context-as-argument + +import ( + "context" + "fmt" + "os" + "path/filepath" + "testing" + + "github.com/cilium/tetragon/pkg/bpf" + "github.com/cilium/tetragon/pkg/cgroups" + "github.com/cilium/tetragon/pkg/logger" + "github.com/cilium/tetragon/pkg/observer" + "github.com/cilium/tetragon/pkg/policyfilter" + "github.com/cilium/tetragon/pkg/sensors" + "github.com/cilium/tetragon/pkg/sensors/config/confmap" + testsensor "github.com/cilium/tetragon/pkg/sensors/test" + "github.com/cilium/tetragon/pkg/testutils" + cgt "github.com/cilium/tetragon/pkg/testutils/cgroup" + testprogs "github.com/cilium/tetragon/pkg/testutils/progs" + tus "github.com/cilium/tetragon/pkg/testutils/sensors" + "github.com/cilium/tetragon/pkg/tracingpolicy" + + "github.com/google/uuid" + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/require" +) + +const ( + cgfsRoot = "/sys/fs/cgroup" + envVar = "policyfilterTester" +) + +type Tester struct { + SensorMgr *sensors.Manager + Pfstate policyfilter.State + ProgTester *testprogs.Tester + CgPath string + CgID uint64 +} + +func Start(t *testing.T, ctx context.Context) *Tester { + // capture tetragon log in the t + testutils.CaptureLog(t, logger.GetLogger().(*logrus.Logger)) + + // initialize things + policyfilter.TestingEnableAndReset(t) + err := observer.InitDataCache(1024) + require.NoError(t, err) + // NB: this is needed so that we can properly configure cgroupv2 + err = confmap.UpdateTgRuntimeConf(bpf.MapPrefixPath(), os.Getpid()) + require.NoError(t, err) + + // initialize base and test sensor + // NB: using ret.SensorMgr to load these sensors does not seem to work as expected + tus.LoadInitialSensor(t) + tus.LoadSensor(t, testsensor.GetTestSensor()) + + // start sensor manager (and policyfilter) + ret := &Tester{} + ret.Pfstate, err = policyfilter.GetState() + require.NoError(t, err) + ret.SensorMgr, err = sensors.StartSensorManagerWithPF(bpf.MapPrefixPath(), ret.Pfstate) + require.NoError(t, err) + + // create a cgroup path + ret.CgPath = cgt.CgfsMkTemp(t, cgfsRoot, fmt.Sprintf("test-%s-*", t.Name())) + ret.CgID, err = cgroups.GetCgroupIdFromPath(ret.CgPath) + require.NoError(t, err) + t.Logf("cgroup path:%s id:%d", ret.CgPath, ret.CgID) + + // create a progTester and add it to the cgroup + ret.ProgTester = testprogs.StartTester(t, ctx) + ret.ProgTester.AddToCgroup(t, ret.CgPath) + t.Cleanup(func() { + // stop progTester. We need to do this here, so that the Cleanup() of CgfsMkTemp + // that removes the cgroup test will succeed. + ret.ProgTester.Stop() + }) + if false { + out, err := ret.ProgTester.Command("exec /usr/bin/cat /proc/self/cgroup") + require.NoError(t, err, out) + t.Logf("progtester cgroup: %s", out) + } + + return ret +} + +func (pft *Tester) AddPolicy(t *testing.T, ctx context.Context, tp *tracingpolicy.GenericTracingPolicyNamespaced) { + err := pft.SensorMgr.AddTracingPolicy(ctx, tp) + require.NoError(t, err) + err = pft.Pfstate.AddPodContainer( + policyfilter.PodID(uuid.New()), + tracingpolicy.Namespace(tp), "workload", "kind", nil, + "pod-container", policyfilter.CgroupID(pft.CgID), "container-name") + require.NoError(t, err) + + // NB: make true if you want to see a dump of the policyfilter maps + if false { + fname := filepath.Join(bpf.MapPrefixPath(), policyfilter.MapName) + pfMap, err := policyfilter.OpenMap(fname) + require.NoError(t, err) + pfData, err := pfMap.Dump() + require.NoError(t, err) + t.Logf("pfMap(%s):\n%+v\n", fname, pfData) + } + + t.Cleanup(func() { + pft.SensorMgr.DeleteTracingPolicy(ctx, tp.TpName(), tracingpolicy.Namespace(tp)) + }) +} diff --git a/pkg/testutils/progs/tester.go b/pkg/testutils/progs/tester.go index 4c651d2262a..e7c8e16abb5 100644 --- a/pkg/testutils/progs/tester.go +++ b/pkg/testutils/progs/tester.go @@ -14,6 +14,7 @@ import ( "strconv" "strings" "testing" + "unsafe" "github.com/cilium/tetragon/pkg/testutils" @@ -33,10 +34,15 @@ type Tester struct { func TestHelperMain() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { - switch cmd := scanner.Text(); { + execMayFail := false + cmd := scanner.Text() + switch { case cmd == "ping": fmt.Println("pong") + case strings.HasPrefix(cmd, "exec_mayfail "): + execMayFail = true + fallthrough case strings.HasPrefix(cmd, "exec "): fields := strings.Fields(cmd) if len(fields) < 2 { @@ -50,11 +56,15 @@ func TestHelperMain() { } cmd := exec.Command(cmdName, cmdArgs...) out, err := cmd.CombinedOutput() - if err != nil { - fmt.Fprintf(os.Stderr, "cmd='%s' returned an error (%s)\n", cmd, err) + if err == nil { + fmt.Fprintf(os.Stdout, "cmd=%q returned without an error. Combined output was: %q\n", cmd, out) + continue + } + if !execMayFail { + fmt.Fprintf(os.Stderr, "cmd=%q returned an error (%s)\n", cmd, err) os.Exit(1) } - fmt.Fprintf(os.Stdout, "cmd='%s' returned without an error. Combined output was: %q\n", cmd, out) + fmt.Fprintf(os.Stdout, "cmd=%q returned an error %q\n", cmd, err) case strings.HasPrefix(cmd, "lseek "): fields := strings.Fields(cmd) @@ -77,6 +87,16 @@ func TestHelperMain() { o, err := unix.Seek(int(fd), off, int(whence)) fmt.Fprintf(os.Stdout, "cmd=%q returned o=%d err=%v\n", cmd, o, err) + case cmd == "getcpu": + var cpu, node int + _, _, err := unix.Syscall( + unix.SYS_GETCPU, + uintptr(unsafe.Pointer(&cpu)), + uintptr(unsafe.Pointer(&node)), + 0, + ) + fmt.Fprintf(os.Stdout, "getpcu returned: err:%v\n", err) + case cmd == "exit": fmt.Fprintf(os.Stderr, "Exiting...\n") os.Exit(0) @@ -174,6 +194,16 @@ func (pt *Tester) Exec(cmd string) (string, error) { return out, nil } +// similar to Exec, but command may fail +func (pt *Tester) ExecMayFail(cmd string) (string, error) { + execCmd := fmt.Sprintf("exec_mayfail %s", cmd) + out, err := pt.Command(execCmd) + if err != nil { + return "", fmt.Errorf("exec_mayfail failed: %w", err) + } + return out, nil +} + func (pt *Tester) Lseek(fd, off, whence int) (string, error) { lseekCmd := fmt.Sprintf("lseek %d %d %d", fd, off, whence) out, err := pt.Command(lseekCmd) diff --git a/pkg/testutils/progs/tester_test.go b/pkg/testutils/progs/tester_test.go index 43ddcd8ee97..cd488c3398b 100644 --- a/pkg/testutils/progs/tester_test.go +++ b/pkg/testutils/progs/tester_test.go @@ -8,6 +8,7 @@ import ( "testing" "time" + "github.com/cilium/tetragon/pkg/testutils" "github.com/stretchr/testify/require" ) @@ -27,7 +28,19 @@ func TestExec(t *testing.T) { pt := StartTester(t, ctx) out, err := pt.Exec("/bin/echo hello") require.NoError(t, err) - require.Equal(t, "cmd='/bin/echo hello' returned without an error. Combined output was: \"hello\\n\"", out) + require.Equal(t, "cmd=\"/bin/echo hello\" returned without an error. Combined output was: \"hello\\n\"", out) + err = pt.Stop() + require.Nil(t, err) +} + +func TestSigkill(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + raisesigkillProg := testutils.RepoRootPath("contrib/tester-progs/raisesigkill") + pt := StartTester(t, ctx) + out, err := pt.ExecMayFail(raisesigkillProg) + require.NoError(t, err) + require.Contains(t, out, "signal: killed") err = pt.Stop() require.Nil(t, err) } diff --git a/pkg/tracingpolicy/utils.go b/pkg/tracingpolicy/utils.go new file mode 100644 index 00000000000..a81e48e200b --- /dev/null +++ b/pkg/tracingpolicy/utils.go @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package tracingpolicy + +import ( + "fmt" + "path/filepath" + "strings" + // "sigs.k8s.io/yaml" +) + +// Namespace returns the namespace of a policy, or "" if the poilcy is not namespaced +func Namespace(tp TracingPolicy) string { + if tpNs, ok := tp.(TracingPolicyNamespaced); ok { + return tpNs.TpNamespace() + } + return "" +} + +func sanitize(name string) string { + return strings.ReplaceAll(name, "/", "_") +} + +func policyDir(namespace, policyName string) string { + if namespace == "" { + return sanitize(policyName) + } + return fmt.Sprintf("%s:%s", namespace, sanitize(policyName)) +} + +// PolicyDir returns the directory of the policy in tetragon's bpf fs hierearchy +func PolicyDir(namespace, policyName string) string { + return filepath.Join(policyDir(namespace, policyName)) +} diff --git a/pkg/tracingpolicy/yaml.go b/pkg/tracingpolicy/yaml.go new file mode 100644 index 00000000000..52bba6a94f7 --- /dev/null +++ b/pkg/tracingpolicy/yaml.go @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package tracingpolicy + +import ( + "errors" + "fmt" + + "gopkg.in/yaml.v2" +) + +func specSetMode(spec map[interface{}]interface{}, mode string) error { + optsRaw, hasOpts := spec["options"] + if !hasOpts { // if there are no options, just add them + spec["options"] = []map[string]string{ + {"name": "policy-mode", "value": mode}, + } + return nil + } + + opts, optsOK := optsRaw.([]interface{}) + if !optsOK { + return fmt.Errorf("spec.options has unexpected type: %T", optsRaw) + } + + var newOpts = []interface{}{} + for i := range opts { + optRaw := opts[i] + opt, optOK := optRaw.(map[interface{}]interface{}) + if !optOK { + return fmt.Errorf("spec.options[%d] has unexpected type: %T", i, optRaw) + } + + optMap := make(map[string]interface{}) + for optKeyRaw, optValRaw := range opt { + optKey, optKeyOk := optKeyRaw.(string) + if !optKeyOk { + return fmt.Errorf("spec.options[%d] key has unexpected type: %T", i, optKeyRaw) + } + optMap[optKey] = optValRaw + } + + nameVal := optMap["name"] + if nameVal != "policy-mode" { + newOpts = append(newOpts, optRaw) + } + } + + spec["options"] = append(newOpts, map[interface{}]interface{}{ + "name": "policy-mode", + "value": mode, + }) + + return nil +} + +// PolicyYAMLSetMode modifies a yaml file to set the mode of the policy +func PolicyYAMLSetMode(data []byte, mode string) ([]byte, error) { + m := make(map[interface{}]interface{}) + if err := yaml.Unmarshal(data, &m); err != nil { + return nil, err + } + + switch mode { + case "": + return yaml.Marshal(m) + case "enforce", "monitor": + default: + return nil, fmt.Errorf("invalid mode: %q", mode) + } + + specRaw, hasSpec := m["spec"] + if !hasSpec { + return nil, errors.New("yaml does not include spec section") + } + + spec, specOK := specRaw.(map[interface{}]interface{}) + if !specOK { + return nil, fmt.Errorf("spec has unexpected type: %T", specRaw) + } + + if err := specSetMode(spec, mode); err != nil { + return nil, err + } + + return yaml.Marshal(m) +} diff --git a/pkg/tracingpolicy/yaml_test.go b/pkg/tracingpolicy/yaml_test.go new file mode 100644 index 00000000000..99616876aba --- /dev/null +++ b/pkg/tracingpolicy/yaml_test.go @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: Apache-2.0 +// Copyright Authors of Tetragon + +package tracingpolicy + +import ( + "fmt" + "strings" + "testing" + "text/template" + + "github.com/stretchr/testify/require" +) + +var yamlTemplate = `apiVersion: cilium.io/v1alpha1 +kind: TracingPolicyNamespaced +metadata: + name: example_yaml + namespace: default +spec: + kprobes: + - call: __x64_sys_connect + selectors: + - matchActions: + - action: Override + argError: -111 + syscall: true + - call: __x64_sys_listen + selectors: + - matchActions: + - action: Override + argError: -111 + syscall: true +{{- if .IncludeOpts }} + options: +{{- range $k, $v := .Opts }} + - name: {{ $k }} + value: {{ $v }} +{{- end }} +{{- end}} +` + +type tmplData struct { + IncludeOpts bool + Opts map[string]string +} + +func TestPolicyYAMLSetMode(t *testing.T) { + type tc struct { + desc string + iData tmplData + mode string + oData tmplData + } + + tcs := []tc{ + { + "no options", + tmplData{false, nil}, + "", + tmplData{false, nil}, + }, { + "other options unchanged", + tmplData{true, map[string]string{"foo": "lala"}}, + "", + tmplData{true, map[string]string{"foo": "lala"}}, + }, { + "no options, set to enforce", + tmplData{false, nil}, + "enforce", + tmplData{true, map[string]string{"policy-mode": "enforce"}}, + }, { + "other options, set to monitor", + tmplData{true, map[string]string{"foo": "lala"}}, + "monitor", + tmplData{true, map[string]string{"foo": "lala", "policy-mode": "monitor"}}, + }, { + "policy mode set to enforce, set to monitor", + tmplData{true, map[string]string{"policy-mode": "enforce"}}, + "monitor", + tmplData{true, map[string]string{"policy-mode": "monitor"}}, + }, { + "policy mode set to enforce and other options, set to monitor", + tmplData{true, map[string]string{"a": "b", "policy-mode": "enforce"}}, + "monitor", + tmplData{true, map[string]string{"a": "b", "policy-mode": "monitor"}}, + }, + } + + tmpl := template.Must(template.New("yaml").Parse(yamlTemplate)) + for i := range tcs { + c := &tcs[i] + var inBld strings.Builder + err := tmpl.Execute(&inBld, c.iData) + require.NoError(t, err) + in := inBld.String() + + var outBld strings.Builder + err = tmpl.Execute(&outBld, c.oData) + require.NoError(t, err) + out := outBld.String() + ret, err := PolicyYAMLSetMode([]byte(in), c.mode) + require.NoError(t, err, fmt.Sprintf("unexpected error test %q", c.desc)) + require.Equal(t, out, string(ret), fmt.Sprintf("test %q failed", c.desc)) + } + +} diff --git a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go index b814832d19f..2471e85f262 100644 --- a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go +++ b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.go @@ -92,6 +92,55 @@ func (TracingPolicyState) EnumDescriptor() ([]byte, []int) { return file_tetragon_sensors_proto_rawDescGZIP(), []int{0} } +type TracingPolicyMode int32 + +const ( + TracingPolicyMode_TP_MODE_UNKNOWN TracingPolicyMode = 0 + TracingPolicyMode_TP_MODE_ENFORCE TracingPolicyMode = 1 + TracingPolicyMode_TP_MODE_MONITOR TracingPolicyMode = 2 +) + +// Enum value maps for TracingPolicyMode. +var ( + TracingPolicyMode_name = map[int32]string{ + 0: "TP_MODE_UNKNOWN", + 1: "TP_MODE_ENFORCE", + 2: "TP_MODE_MONITOR", + } + TracingPolicyMode_value = map[string]int32{ + "TP_MODE_UNKNOWN": 0, + "TP_MODE_ENFORCE": 1, + "TP_MODE_MONITOR": 2, + } +) + +func (x TracingPolicyMode) Enum() *TracingPolicyMode { + p := new(TracingPolicyMode) + *p = x + return p +} + +func (x TracingPolicyMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TracingPolicyMode) Descriptor() protoreflect.EnumDescriptor { + return file_tetragon_sensors_proto_enumTypes[1].Descriptor() +} + +func (TracingPolicyMode) Type() protoreflect.EnumType { + return &file_tetragon_sensors_proto_enumTypes[1] +} + +func (x TracingPolicyMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TracingPolicyMode.Descriptor instead. +func (TracingPolicyMode) EnumDescriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{1} +} + // For now, we only want to support debug-related config flags to be configurable. type ConfigFlag int32 @@ -123,11 +172,11 @@ func (x ConfigFlag) String() string { } func (ConfigFlag) Descriptor() protoreflect.EnumDescriptor { - return file_tetragon_sensors_proto_enumTypes[1].Descriptor() + return file_tetragon_sensors_proto_enumTypes[2].Descriptor() } func (ConfigFlag) Type() protoreflect.EnumType { - return &file_tetragon_sensors_proto_enumTypes[1] + return &file_tetragon_sensors_proto_enumTypes[2] } func (x ConfigFlag) Number() protoreflect.EnumNumber { @@ -136,7 +185,7 @@ func (x ConfigFlag) Number() protoreflect.EnumNumber { // Deprecated: Use ConfigFlag.Descriptor instead. func (ConfigFlag) EnumDescriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{1} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{2} } type LogLevel int32 @@ -184,11 +233,11 @@ func (x LogLevel) String() string { } func (LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_tetragon_sensors_proto_enumTypes[2].Descriptor() + return file_tetragon_sensors_proto_enumTypes[3].Descriptor() } func (LogLevel) Type() protoreflect.EnumType { - return &file_tetragon_sensors_proto_enumTypes[2] + return &file_tetragon_sensors_proto_enumTypes[3] } func (x LogLevel) Number() protoreflect.EnumNumber { @@ -197,7 +246,7 @@ func (x LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use LogLevel.Descriptor instead. func (LogLevel) EnumDescriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{2} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{3} } type ListSensorsRequest struct { @@ -403,8 +452,10 @@ type TracingPolicyStatus struct { State TracingPolicyState `protobuf:"varint,9,opt,name=state,proto3,enum=tetragon.TracingPolicyState" json:"state,omitempty"` // the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) KernelMemoryBytes uint64 `protobuf:"varint,10,opt,name=kernel_memory_bytes,json=kernelMemoryBytes,proto3" json:"kernel_memory_bytes,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // current mode of the tracing policy + Mode TracingPolicyMode `protobuf:"varint,11,opt,name=mode,proto3,enum=tetragon.TracingPolicyMode" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TracingPolicyStatus) Reset() { @@ -508,6 +559,13 @@ func (x *TracingPolicyStatus) GetKernelMemoryBytes() uint64 { return 0 } +func (x *TracingPolicyStatus) GetMode() TracingPolicyMode { + if x != nil { + return x.Mode + } + return TracingPolicyMode_TP_MODE_UNKNOWN +} + type ListTracingPoliciesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Policies []*TracingPolicyStatus `protobuf:"bytes,1,rep,name=policies,proto3" json:"policies,omitempty"` @@ -896,6 +954,110 @@ func (*DisableTracingPolicyResponse) Descriptor() ([]byte, []int) { return file_tetragon_sensors_proto_rawDescGZIP(), []int{13} } +type ConfigureTracingPolicyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Enable *bool `protobuf:"varint,3,opt,name=enable,proto3,oneof" json:"enable,omitempty"` + Mode *TracingPolicyMode `protobuf:"varint,4,opt,name=mode,proto3,enum=tetragon.TracingPolicyMode,oneof" json:"mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigureTracingPolicyRequest) Reset() { + *x = ConfigureTracingPolicyRequest{} + mi := &file_tetragon_sensors_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigureTracingPolicyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigureTracingPolicyRequest) ProtoMessage() {} + +func (x *ConfigureTracingPolicyRequest) ProtoReflect() protoreflect.Message { + mi := &file_tetragon_sensors_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 ConfigureTracingPolicyRequest.ProtoReflect.Descriptor instead. +func (*ConfigureTracingPolicyRequest) Descriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{14} +} + +func (x *ConfigureTracingPolicyRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ConfigureTracingPolicyRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *ConfigureTracingPolicyRequest) GetEnable() bool { + if x != nil && x.Enable != nil { + return *x.Enable + } + return false +} + +func (x *ConfigureTracingPolicyRequest) GetMode() TracingPolicyMode { + if x != nil && x.Mode != nil { + return *x.Mode + } + return TracingPolicyMode_TP_MODE_UNKNOWN +} + +type ConfigureTracingPolicyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfigureTracingPolicyResponse) Reset() { + *x = ConfigureTracingPolicyResponse{} + mi := &file_tetragon_sensors_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfigureTracingPolicyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigureTracingPolicyResponse) ProtoMessage() {} + +func (x *ConfigureTracingPolicyResponse) ProtoReflect() protoreflect.Message { + mi := &file_tetragon_sensors_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 ConfigureTracingPolicyResponse.ProtoReflect.Descriptor instead. +func (*ConfigureTracingPolicyResponse) Descriptor() ([]byte, []int) { + return file_tetragon_sensors_proto_rawDescGZIP(), []int{15} +} + type RemoveSensorRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` @@ -905,7 +1067,7 @@ type RemoveSensorRequest struct { func (x *RemoveSensorRequest) Reset() { *x = RemoveSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[14] + mi := &file_tetragon_sensors_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +1079,7 @@ func (x *RemoveSensorRequest) String() string { func (*RemoveSensorRequest) ProtoMessage() {} func (x *RemoveSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[14] + mi := &file_tetragon_sensors_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,7 +1092,7 @@ func (x *RemoveSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSensorRequest.ProtoReflect.Descriptor instead. func (*RemoveSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{14} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{16} } func (x *RemoveSensorRequest) GetName() string { @@ -948,7 +1110,7 @@ type RemoveSensorResponse struct { func (x *RemoveSensorResponse) Reset() { *x = RemoveSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[15] + mi := &file_tetragon_sensors_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -960,7 +1122,7 @@ func (x *RemoveSensorResponse) String() string { func (*RemoveSensorResponse) ProtoMessage() {} func (x *RemoveSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[15] + mi := &file_tetragon_sensors_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -973,7 +1135,7 @@ func (x *RemoveSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveSensorResponse.ProtoReflect.Descriptor instead. func (*RemoveSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{15} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{17} } type EnableSensorRequest struct { @@ -985,7 +1147,7 @@ type EnableSensorRequest struct { func (x *EnableSensorRequest) Reset() { *x = EnableSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[16] + mi := &file_tetragon_sensors_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -997,7 +1159,7 @@ func (x *EnableSensorRequest) String() string { func (*EnableSensorRequest) ProtoMessage() {} func (x *EnableSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[16] + mi := &file_tetragon_sensors_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1010,7 +1172,7 @@ func (x *EnableSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableSensorRequest.ProtoReflect.Descriptor instead. func (*EnableSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{16} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{18} } func (x *EnableSensorRequest) GetName() string { @@ -1028,7 +1190,7 @@ type EnableSensorResponse struct { func (x *EnableSensorResponse) Reset() { *x = EnableSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[17] + mi := &file_tetragon_sensors_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1040,7 +1202,7 @@ func (x *EnableSensorResponse) String() string { func (*EnableSensorResponse) ProtoMessage() {} func (x *EnableSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[17] + mi := &file_tetragon_sensors_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1053,7 +1215,7 @@ func (x *EnableSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EnableSensorResponse.ProtoReflect.Descriptor instead. func (*EnableSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{17} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{19} } type DisableSensorRequest struct { @@ -1065,7 +1227,7 @@ type DisableSensorRequest struct { func (x *DisableSensorRequest) Reset() { *x = DisableSensorRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[18] + mi := &file_tetragon_sensors_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1077,7 +1239,7 @@ func (x *DisableSensorRequest) String() string { func (*DisableSensorRequest) ProtoMessage() {} func (x *DisableSensorRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[18] + mi := &file_tetragon_sensors_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1090,7 +1252,7 @@ func (x *DisableSensorRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableSensorRequest.ProtoReflect.Descriptor instead. func (*DisableSensorRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{18} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{20} } func (x *DisableSensorRequest) GetName() string { @@ -1108,7 +1270,7 @@ type DisableSensorResponse struct { func (x *DisableSensorResponse) Reset() { *x = DisableSensorResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[19] + mi := &file_tetragon_sensors_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1120,7 +1282,7 @@ func (x *DisableSensorResponse) String() string { func (*DisableSensorResponse) ProtoMessage() {} func (x *DisableSensorResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[19] + mi := &file_tetragon_sensors_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1133,7 +1295,7 @@ func (x *DisableSensorResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DisableSensorResponse.ProtoReflect.Descriptor instead. func (*DisableSensorResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{19} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{21} } type GetStackTraceTreeRequest struct { @@ -1145,7 +1307,7 @@ type GetStackTraceTreeRequest struct { func (x *GetStackTraceTreeRequest) Reset() { *x = GetStackTraceTreeRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[20] + mi := &file_tetragon_sensors_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1319,7 @@ func (x *GetStackTraceTreeRequest) String() string { func (*GetStackTraceTreeRequest) ProtoMessage() {} func (x *GetStackTraceTreeRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[20] + mi := &file_tetragon_sensors_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1332,7 @@ func (x *GetStackTraceTreeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStackTraceTreeRequest.ProtoReflect.Descriptor instead. func (*GetStackTraceTreeRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{20} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{22} } func (x *GetStackTraceTreeRequest) GetName() string { @@ -1189,7 +1351,7 @@ type GetStackTraceTreeResponse struct { func (x *GetStackTraceTreeResponse) Reset() { *x = GetStackTraceTreeResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[21] + mi := &file_tetragon_sensors_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1201,7 +1363,7 @@ func (x *GetStackTraceTreeResponse) String() string { func (*GetStackTraceTreeResponse) ProtoMessage() {} func (x *GetStackTraceTreeResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[21] + mi := &file_tetragon_sensors_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1214,7 +1376,7 @@ func (x *GetStackTraceTreeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStackTraceTreeResponse.ProtoReflect.Descriptor instead. func (*GetStackTraceTreeResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{21} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{23} } func (x *GetStackTraceTreeResponse) GetRoot() *StackTraceNode { @@ -1232,7 +1394,7 @@ type GetVersionRequest struct { func (x *GetVersionRequest) Reset() { *x = GetVersionRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[22] + mi := &file_tetragon_sensors_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1244,7 +1406,7 @@ func (x *GetVersionRequest) String() string { func (*GetVersionRequest) ProtoMessage() {} func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[22] + mi := &file_tetragon_sensors_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1257,7 +1419,7 @@ func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. func (*GetVersionRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{22} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{24} } type GetVersionResponse struct { @@ -1269,7 +1431,7 @@ type GetVersionResponse struct { func (x *GetVersionResponse) Reset() { *x = GetVersionResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[23] + mi := &file_tetragon_sensors_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1281,7 +1443,7 @@ func (x *GetVersionResponse) String() string { func (*GetVersionResponse) ProtoMessage() {} func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[23] + mi := &file_tetragon_sensors_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1294,7 +1456,7 @@ func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. func (*GetVersionResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{23} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{25} } func (x *GetVersionResponse) GetVersion() string { @@ -1314,7 +1476,7 @@ type DumpProcessCacheReqArgs struct { func (x *DumpProcessCacheReqArgs) Reset() { *x = DumpProcessCacheReqArgs{} - mi := &file_tetragon_sensors_proto_msgTypes[24] + mi := &file_tetragon_sensors_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1326,7 +1488,7 @@ func (x *DumpProcessCacheReqArgs) String() string { func (*DumpProcessCacheReqArgs) ProtoMessage() {} func (x *DumpProcessCacheReqArgs) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[24] + mi := &file_tetragon_sensors_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1339,7 +1501,7 @@ func (x *DumpProcessCacheReqArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use DumpProcessCacheReqArgs.ProtoReflect.Descriptor instead. func (*DumpProcessCacheReqArgs) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{24} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{26} } func (x *DumpProcessCacheReqArgs) GetSkipZeroRefcnt() bool { @@ -1376,7 +1538,7 @@ type ProcessInternal struct { func (x *ProcessInternal) Reset() { *x = ProcessInternal{} - mi := &file_tetragon_sensors_proto_msgTypes[25] + mi := &file_tetragon_sensors_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1388,7 +1550,7 @@ func (x *ProcessInternal) String() string { func (*ProcessInternal) ProtoMessage() {} func (x *ProcessInternal) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[25] + mi := &file_tetragon_sensors_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1401,7 +1563,7 @@ func (x *ProcessInternal) ProtoReflect() protoreflect.Message { // Deprecated: Use ProcessInternal.ProtoReflect.Descriptor instead. func (*ProcessInternal) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{25} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{27} } func (x *ProcessInternal) GetProcess() *Process { @@ -1441,7 +1603,7 @@ type DumpProcessCacheResArgs struct { func (x *DumpProcessCacheResArgs) Reset() { *x = DumpProcessCacheResArgs{} - mi := &file_tetragon_sensors_proto_msgTypes[26] + mi := &file_tetragon_sensors_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1453,7 +1615,7 @@ func (x *DumpProcessCacheResArgs) String() string { func (*DumpProcessCacheResArgs) ProtoMessage() {} func (x *DumpProcessCacheResArgs) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[26] + mi := &file_tetragon_sensors_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1628,7 @@ func (x *DumpProcessCacheResArgs) ProtoReflect() protoreflect.Message { // Deprecated: Use DumpProcessCacheResArgs.ProtoReflect.Descriptor instead. func (*DumpProcessCacheResArgs) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{26} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{28} } func (x *DumpProcessCacheResArgs) GetProcesses() []*ProcessInternal { @@ -1489,7 +1651,7 @@ type GetDebugRequest struct { func (x *GetDebugRequest) Reset() { *x = GetDebugRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[27] + mi := &file_tetragon_sensors_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1501,7 +1663,7 @@ func (x *GetDebugRequest) String() string { func (*GetDebugRequest) ProtoMessage() {} func (x *GetDebugRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[27] + mi := &file_tetragon_sensors_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1514,7 +1676,7 @@ func (x *GetDebugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDebugRequest.ProtoReflect.Descriptor instead. func (*GetDebugRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{27} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{29} } func (x *GetDebugRequest) GetFlag() ConfigFlag { @@ -1564,7 +1726,7 @@ type GetDebugResponse struct { func (x *GetDebugResponse) Reset() { *x = GetDebugResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[28] + mi := &file_tetragon_sensors_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1576,7 +1738,7 @@ func (x *GetDebugResponse) String() string { func (*GetDebugResponse) ProtoMessage() {} func (x *GetDebugResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[28] + mi := &file_tetragon_sensors_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1589,7 +1751,7 @@ func (x *GetDebugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDebugResponse.ProtoReflect.Descriptor instead. func (*GetDebugResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{28} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{30} } func (x *GetDebugResponse) GetFlag() ConfigFlag { @@ -1653,7 +1815,7 @@ type SetDebugRequest struct { func (x *SetDebugRequest) Reset() { *x = SetDebugRequest{} - mi := &file_tetragon_sensors_proto_msgTypes[29] + mi := &file_tetragon_sensors_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1665,7 +1827,7 @@ func (x *SetDebugRequest) String() string { func (*SetDebugRequest) ProtoMessage() {} func (x *SetDebugRequest) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[29] + mi := &file_tetragon_sensors_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1678,7 +1840,7 @@ func (x *SetDebugRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDebugRequest.ProtoReflect.Descriptor instead. func (*SetDebugRequest) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{29} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{31} } func (x *SetDebugRequest) GetFlag() ConfigFlag { @@ -1727,7 +1889,7 @@ type SetDebugResponse struct { func (x *SetDebugResponse) Reset() { *x = SetDebugResponse{} - mi := &file_tetragon_sensors_proto_msgTypes[30] + mi := &file_tetragon_sensors_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1739,7 +1901,7 @@ func (x *SetDebugResponse) String() string { func (*SetDebugResponse) ProtoMessage() {} func (x *SetDebugResponse) ProtoReflect() protoreflect.Message { - mi := &file_tetragon_sensors_proto_msgTypes[30] + mi := &file_tetragon_sensors_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1752,7 +1914,7 @@ func (x *SetDebugResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetDebugResponse.ProtoReflect.Descriptor instead. func (*SetDebugResponse) Descriptor() ([]byte, []int) { - return file_tetragon_sensors_proto_rawDescGZIP(), []int{30} + return file_tetragon_sensors_proto_rawDescGZIP(), []int{32} } func (x *SetDebugResponse) GetFlag() ConfigFlag { @@ -1813,7 +1975,7 @@ var file_tetragon_sensors_proto_rawDesc = []byte{ 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0xba, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x65, 0x73, 0x74, 0x22, 0xeb, 0x02, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, @@ -1833,244 +1995,273 @@ var file_tetragon_sensors_proto_rawDesc = []byte{ 0x12, 0x2e, 0x0a, 0x13, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73, - 0x22, 0x58, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x41, 0x64, + 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x58, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x39, 0x0a, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x08, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x17, 0x41, + 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x22, 0x1a, 0x0a, 0x18, 0x41, 0x64, 0x64, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x0a, 0x1a, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2e, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, - 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x84, 0x01, 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, - 0x6b, 0x69, 0x70, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x5a, 0x65, 0x72, 0x6f, 0x52, - 0x65, 0x66, 0x63, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x5f, 0x65, 0x78, 0x65, 0x63, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x65, 0x78, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, - 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, - 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x34, 0x0a, - 0x06, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x66, - 0x63, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x6f, 0x70, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x09, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, - 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x17, 0x44, 0x75, - 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, - 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, - 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x1d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, + 0x65, 0x48, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, + 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x22, 0x16, 0x0a, 0x14, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x49, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, + 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, + 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6b, 0x69, + 0x70, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x6b, 0x69, 0x70, 0x5a, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x66, + 0x63, 0x6e, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, + 0x78, 0x65, 0x63, 0x76, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x65, 0x78, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x45, 0x78, 0x65, 0x63, 0x76, 0x65, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x22, 0x91, 0x02, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x07, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x06, 0x72, + 0x65, 0x66, 0x63, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, + 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x72, 0x65, 0x66, 0x63, 0x6e, + 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x5f, 0x6f, 0x70, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x2e, 0x52, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x09, 0x72, 0x65, 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x52, 0x65, + 0x66, 0x63, 0x6e, 0x74, 0x4f, 0x70, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x52, 0x0a, 0x17, 0x44, 0x75, 0x6d, 0x70, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, + 0x72, 0x67, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, + 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x75, 0x6d, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x64, 0x75, + 0x6d, 0x70, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0xb2, 0x01, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, + 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6c, + 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x43, 0x61, + 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0x6e, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, - 0x75, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x71, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, - 0x64, 0x75, 0x6d, 0x70, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0xb2, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x75, 0x6d, 0x70, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x52, 0x65, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, - 0x22, 0x6e, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, - 0x22, 0x6f, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, - 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, - 0x67, 0x2a, 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, - 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, - 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x16, - 0x0a, 0x12, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x41, - 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x4b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x46, 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, - 0x4c, 0x41, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x00, 0x12, - 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x44, - 0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, 0x43, 0x48, - 0x45, 0x10, 0x01, 0x2a, 0x9b, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x50, 0x41, - 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, - 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, - 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, - 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, - 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, - 0x06, 0x32, 0xfe, 0x0a, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x75, 0x69, 0x64, 0x61, 0x6e, - 0x63, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, - 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x12, 0x20, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, - 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, - 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x64, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, + 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, 0x6c, + 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x74, + 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x22, 0x6f, + 0x0a, 0x10, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x14, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x12, 0x2a, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, + 0x00, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x05, 0x0a, 0x03, 0x61, 0x72, 0x67, 0x2a, + 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, + 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x50, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, + 0x54, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x49, + 0x4e, 0x47, 0x10, 0x06, 0x2a, 0x52, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x50, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, + 0x0a, 0x0f, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x4e, 0x46, 0x4f, 0x52, 0x43, + 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, + 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x4b, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x5f, 0x46, 0x4c, 0x41, 0x47, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, + 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x46, 0x4c, 0x41, 0x47, + 0x5f, 0x44, 0x55, 0x4d, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, + 0x43, 0x48, 0x45, 0x10, 0x01, 0x2a, 0x9b, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, + 0x50, 0x41, 0x4e, 0x49, 0x43, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, + 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, + 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, + 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, + 0x41, 0x52, 0x4e, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, + 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x05, 0x12, 0x13, + 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x43, + 0x45, 0x10, 0x06, 0x32, 0xf3, 0x0b, 0x0a, 0x13, 0x46, 0x69, 0x6e, 0x65, 0x47, 0x75, 0x69, 0x64, + 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x47, + 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x12, 0x20, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, + 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x10, 0x41, 0x64, 0x64, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x22, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x67, 0x0a, 0x14, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x25, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, + 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x6d, 0x0a, 0x16, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x27, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x4f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1c, - 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, - 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, - 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, - 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x03, 0x88, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, - 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, - 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, - 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x72, 0x65, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, - 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, - 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x65, 0x74, - 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, - 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, - 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, - 0x08, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, - 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, - 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x63, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x2f, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x67, 0x0a, 0x13, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, + 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x6a, 0x0a, 0x14, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x65, 0x74, 0x72, + 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, + 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x12, 0x1e, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, + 0x02, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, + 0x6f, 0x72, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x5e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x4c, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, + 0x12, 0x1c, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, + 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x48, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x12, 0x19, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, + 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, + 0x12, 0x19, 0x2e, 0x74, 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, + 0x65, 0x62, 0x75, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x74, 0x65, + 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x44, 0x65, 0x62, 0x75, 0x67, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2c, 0x5a, 0x2a, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x69, 0x6c, 0x69, 0x75, 0x6d, 0x2f, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, + 0x65, 0x74, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2085,109 +2276,116 @@ func file_tetragon_sensors_proto_rawDescGZIP() []byte { return file_tetragon_sensors_proto_rawDescData } -var file_tetragon_sensors_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_tetragon_sensors_proto_msgTypes = make([]protoimpl.MessageInfo, 32) +var file_tetragon_sensors_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_tetragon_sensors_proto_msgTypes = make([]protoimpl.MessageInfo, 34) var file_tetragon_sensors_proto_goTypes = []any{ - (TracingPolicyState)(0), // 0: tetragon.TracingPolicyState - (ConfigFlag)(0), // 1: tetragon.ConfigFlag - (LogLevel)(0), // 2: tetragon.LogLevel - (*ListSensorsRequest)(nil), // 3: tetragon.ListSensorsRequest - (*SensorStatus)(nil), // 4: tetragon.SensorStatus - (*ListSensorsResponse)(nil), // 5: tetragon.ListSensorsResponse - (*ListTracingPoliciesRequest)(nil), // 6: tetragon.ListTracingPoliciesRequest - (*TracingPolicyStatus)(nil), // 7: tetragon.TracingPolicyStatus - (*ListTracingPoliciesResponse)(nil), // 8: tetragon.ListTracingPoliciesResponse - (*AddTracingPolicyRequest)(nil), // 9: tetragon.AddTracingPolicyRequest - (*AddTracingPolicyResponse)(nil), // 10: tetragon.AddTracingPolicyResponse - (*DeleteTracingPolicyRequest)(nil), // 11: tetragon.DeleteTracingPolicyRequest - (*DeleteTracingPolicyResponse)(nil), // 12: tetragon.DeleteTracingPolicyResponse - (*EnableTracingPolicyRequest)(nil), // 13: tetragon.EnableTracingPolicyRequest - (*EnableTracingPolicyResponse)(nil), // 14: tetragon.EnableTracingPolicyResponse - (*DisableTracingPolicyRequest)(nil), // 15: tetragon.DisableTracingPolicyRequest - (*DisableTracingPolicyResponse)(nil), // 16: tetragon.DisableTracingPolicyResponse - (*RemoveSensorRequest)(nil), // 17: tetragon.RemoveSensorRequest - (*RemoveSensorResponse)(nil), // 18: tetragon.RemoveSensorResponse - (*EnableSensorRequest)(nil), // 19: tetragon.EnableSensorRequest - (*EnableSensorResponse)(nil), // 20: tetragon.EnableSensorResponse - (*DisableSensorRequest)(nil), // 21: tetragon.DisableSensorRequest - (*DisableSensorResponse)(nil), // 22: tetragon.DisableSensorResponse - (*GetStackTraceTreeRequest)(nil), // 23: tetragon.GetStackTraceTreeRequest - (*GetStackTraceTreeResponse)(nil), // 24: tetragon.GetStackTraceTreeResponse - (*GetVersionRequest)(nil), // 25: tetragon.GetVersionRequest - (*GetVersionResponse)(nil), // 26: tetragon.GetVersionResponse - (*DumpProcessCacheReqArgs)(nil), // 27: tetragon.DumpProcessCacheReqArgs - (*ProcessInternal)(nil), // 28: tetragon.ProcessInternal - (*DumpProcessCacheResArgs)(nil), // 29: tetragon.DumpProcessCacheResArgs - (*GetDebugRequest)(nil), // 30: tetragon.GetDebugRequest - (*GetDebugResponse)(nil), // 31: tetragon.GetDebugResponse - (*SetDebugRequest)(nil), // 32: tetragon.SetDebugRequest - (*SetDebugResponse)(nil), // 33: tetragon.SetDebugResponse - nil, // 34: tetragon.ProcessInternal.RefcntOpsEntry - (*StackTraceNode)(nil), // 35: tetragon.StackTraceNode - (*Process)(nil), // 36: tetragon.Process - (*wrapperspb.UInt32Value)(nil), // 37: google.protobuf.UInt32Value - (*GetEventsRequest)(nil), // 38: tetragon.GetEventsRequest - (*GetHealthStatusRequest)(nil), // 39: tetragon.GetHealthStatusRequest - (*RuntimeHookRequest)(nil), // 40: tetragon.RuntimeHookRequest - (*GetEventsResponse)(nil), // 41: tetragon.GetEventsResponse - (*GetHealthStatusResponse)(nil), // 42: tetragon.GetHealthStatusResponse - (*RuntimeHookResponse)(nil), // 43: tetragon.RuntimeHookResponse + (TracingPolicyState)(0), // 0: tetragon.TracingPolicyState + (TracingPolicyMode)(0), // 1: tetragon.TracingPolicyMode + (ConfigFlag)(0), // 2: tetragon.ConfigFlag + (LogLevel)(0), // 3: tetragon.LogLevel + (*ListSensorsRequest)(nil), // 4: tetragon.ListSensorsRequest + (*SensorStatus)(nil), // 5: tetragon.SensorStatus + (*ListSensorsResponse)(nil), // 6: tetragon.ListSensorsResponse + (*ListTracingPoliciesRequest)(nil), // 7: tetragon.ListTracingPoliciesRequest + (*TracingPolicyStatus)(nil), // 8: tetragon.TracingPolicyStatus + (*ListTracingPoliciesResponse)(nil), // 9: tetragon.ListTracingPoliciesResponse + (*AddTracingPolicyRequest)(nil), // 10: tetragon.AddTracingPolicyRequest + (*AddTracingPolicyResponse)(nil), // 11: tetragon.AddTracingPolicyResponse + (*DeleteTracingPolicyRequest)(nil), // 12: tetragon.DeleteTracingPolicyRequest + (*DeleteTracingPolicyResponse)(nil), // 13: tetragon.DeleteTracingPolicyResponse + (*EnableTracingPolicyRequest)(nil), // 14: tetragon.EnableTracingPolicyRequest + (*EnableTracingPolicyResponse)(nil), // 15: tetragon.EnableTracingPolicyResponse + (*DisableTracingPolicyRequest)(nil), // 16: tetragon.DisableTracingPolicyRequest + (*DisableTracingPolicyResponse)(nil), // 17: tetragon.DisableTracingPolicyResponse + (*ConfigureTracingPolicyRequest)(nil), // 18: tetragon.ConfigureTracingPolicyRequest + (*ConfigureTracingPolicyResponse)(nil), // 19: tetragon.ConfigureTracingPolicyResponse + (*RemoveSensorRequest)(nil), // 20: tetragon.RemoveSensorRequest + (*RemoveSensorResponse)(nil), // 21: tetragon.RemoveSensorResponse + (*EnableSensorRequest)(nil), // 22: tetragon.EnableSensorRequest + (*EnableSensorResponse)(nil), // 23: tetragon.EnableSensorResponse + (*DisableSensorRequest)(nil), // 24: tetragon.DisableSensorRequest + (*DisableSensorResponse)(nil), // 25: tetragon.DisableSensorResponse + (*GetStackTraceTreeRequest)(nil), // 26: tetragon.GetStackTraceTreeRequest + (*GetStackTraceTreeResponse)(nil), // 27: tetragon.GetStackTraceTreeResponse + (*GetVersionRequest)(nil), // 28: tetragon.GetVersionRequest + (*GetVersionResponse)(nil), // 29: tetragon.GetVersionResponse + (*DumpProcessCacheReqArgs)(nil), // 30: tetragon.DumpProcessCacheReqArgs + (*ProcessInternal)(nil), // 31: tetragon.ProcessInternal + (*DumpProcessCacheResArgs)(nil), // 32: tetragon.DumpProcessCacheResArgs + (*GetDebugRequest)(nil), // 33: tetragon.GetDebugRequest + (*GetDebugResponse)(nil), // 34: tetragon.GetDebugResponse + (*SetDebugRequest)(nil), // 35: tetragon.SetDebugRequest + (*SetDebugResponse)(nil), // 36: tetragon.SetDebugResponse + nil, // 37: tetragon.ProcessInternal.RefcntOpsEntry + (*StackTraceNode)(nil), // 38: tetragon.StackTraceNode + (*Process)(nil), // 39: tetragon.Process + (*wrapperspb.UInt32Value)(nil), // 40: google.protobuf.UInt32Value + (*GetEventsRequest)(nil), // 41: tetragon.GetEventsRequest + (*GetHealthStatusRequest)(nil), // 42: tetragon.GetHealthStatusRequest + (*RuntimeHookRequest)(nil), // 43: tetragon.RuntimeHookRequest + (*GetEventsResponse)(nil), // 44: tetragon.GetEventsResponse + (*GetHealthStatusResponse)(nil), // 45: tetragon.GetHealthStatusResponse + (*RuntimeHookResponse)(nil), // 46: tetragon.RuntimeHookResponse } var file_tetragon_sensors_proto_depIdxs = []int32{ - 4, // 0: tetragon.ListSensorsResponse.sensors:type_name -> tetragon.SensorStatus + 5, // 0: tetragon.ListSensorsResponse.sensors:type_name -> tetragon.SensorStatus 0, // 1: tetragon.TracingPolicyStatus.state:type_name -> tetragon.TracingPolicyState - 7, // 2: tetragon.ListTracingPoliciesResponse.policies:type_name -> tetragon.TracingPolicyStatus - 35, // 3: tetragon.GetStackTraceTreeResponse.root:type_name -> tetragon.StackTraceNode - 36, // 4: tetragon.ProcessInternal.process:type_name -> tetragon.Process - 37, // 5: tetragon.ProcessInternal.refcnt:type_name -> google.protobuf.UInt32Value - 34, // 6: tetragon.ProcessInternal.refcnt_ops:type_name -> tetragon.ProcessInternal.RefcntOpsEntry - 28, // 7: tetragon.DumpProcessCacheResArgs.processes:type_name -> tetragon.ProcessInternal - 1, // 8: tetragon.GetDebugRequest.flag:type_name -> tetragon.ConfigFlag - 27, // 9: tetragon.GetDebugRequest.dump:type_name -> tetragon.DumpProcessCacheReqArgs - 1, // 10: tetragon.GetDebugResponse.flag:type_name -> tetragon.ConfigFlag - 2, // 11: tetragon.GetDebugResponse.level:type_name -> tetragon.LogLevel - 29, // 12: tetragon.GetDebugResponse.processes:type_name -> tetragon.DumpProcessCacheResArgs - 1, // 13: tetragon.SetDebugRequest.flag:type_name -> tetragon.ConfigFlag - 2, // 14: tetragon.SetDebugRequest.level:type_name -> tetragon.LogLevel - 1, // 15: tetragon.SetDebugResponse.flag:type_name -> tetragon.ConfigFlag - 2, // 16: tetragon.SetDebugResponse.level:type_name -> tetragon.LogLevel - 38, // 17: tetragon.FineGuidanceSensors.GetEvents:input_type -> tetragon.GetEventsRequest - 39, // 18: tetragon.FineGuidanceSensors.GetHealth:input_type -> tetragon.GetHealthStatusRequest - 9, // 19: tetragon.FineGuidanceSensors.AddTracingPolicy:input_type -> tetragon.AddTracingPolicyRequest - 11, // 20: tetragon.FineGuidanceSensors.DeleteTracingPolicy:input_type -> tetragon.DeleteTracingPolicyRequest - 6, // 21: tetragon.FineGuidanceSensors.ListTracingPolicies:input_type -> tetragon.ListTracingPoliciesRequest - 13, // 22: tetragon.FineGuidanceSensors.EnableTracingPolicy:input_type -> tetragon.EnableTracingPolicyRequest - 15, // 23: tetragon.FineGuidanceSensors.DisableTracingPolicy:input_type -> tetragon.DisableTracingPolicyRequest - 3, // 24: tetragon.FineGuidanceSensors.ListSensors:input_type -> tetragon.ListSensorsRequest - 19, // 25: tetragon.FineGuidanceSensors.EnableSensor:input_type -> tetragon.EnableSensorRequest - 21, // 26: tetragon.FineGuidanceSensors.DisableSensor:input_type -> tetragon.DisableSensorRequest - 17, // 27: tetragon.FineGuidanceSensors.RemoveSensor:input_type -> tetragon.RemoveSensorRequest - 23, // 28: tetragon.FineGuidanceSensors.GetStackTraceTree:input_type -> tetragon.GetStackTraceTreeRequest - 25, // 29: tetragon.FineGuidanceSensors.GetVersion:input_type -> tetragon.GetVersionRequest - 40, // 30: tetragon.FineGuidanceSensors.RuntimeHook:input_type -> tetragon.RuntimeHookRequest - 30, // 31: tetragon.FineGuidanceSensors.GetDebug:input_type -> tetragon.GetDebugRequest - 32, // 32: tetragon.FineGuidanceSensors.SetDebug:input_type -> tetragon.SetDebugRequest - 41, // 33: tetragon.FineGuidanceSensors.GetEvents:output_type -> tetragon.GetEventsResponse - 42, // 34: tetragon.FineGuidanceSensors.GetHealth:output_type -> tetragon.GetHealthStatusResponse - 10, // 35: tetragon.FineGuidanceSensors.AddTracingPolicy:output_type -> tetragon.AddTracingPolicyResponse - 12, // 36: tetragon.FineGuidanceSensors.DeleteTracingPolicy:output_type -> tetragon.DeleteTracingPolicyResponse - 8, // 37: tetragon.FineGuidanceSensors.ListTracingPolicies:output_type -> tetragon.ListTracingPoliciesResponse - 14, // 38: tetragon.FineGuidanceSensors.EnableTracingPolicy:output_type -> tetragon.EnableTracingPolicyResponse - 16, // 39: tetragon.FineGuidanceSensors.DisableTracingPolicy:output_type -> tetragon.DisableTracingPolicyResponse - 5, // 40: tetragon.FineGuidanceSensors.ListSensors:output_type -> tetragon.ListSensorsResponse - 20, // 41: tetragon.FineGuidanceSensors.EnableSensor:output_type -> tetragon.EnableSensorResponse - 22, // 42: tetragon.FineGuidanceSensors.DisableSensor:output_type -> tetragon.DisableSensorResponse - 18, // 43: tetragon.FineGuidanceSensors.RemoveSensor:output_type -> tetragon.RemoveSensorResponse - 24, // 44: tetragon.FineGuidanceSensors.GetStackTraceTree:output_type -> tetragon.GetStackTraceTreeResponse - 26, // 45: tetragon.FineGuidanceSensors.GetVersion:output_type -> tetragon.GetVersionResponse - 43, // 46: tetragon.FineGuidanceSensors.RuntimeHook:output_type -> tetragon.RuntimeHookResponse - 31, // 47: tetragon.FineGuidanceSensors.GetDebug:output_type -> tetragon.GetDebugResponse - 33, // 48: tetragon.FineGuidanceSensors.SetDebug:output_type -> tetragon.SetDebugResponse - 33, // [33:49] is the sub-list for method output_type - 17, // [17:33] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 1, // 2: tetragon.TracingPolicyStatus.mode:type_name -> tetragon.TracingPolicyMode + 8, // 3: tetragon.ListTracingPoliciesResponse.policies:type_name -> tetragon.TracingPolicyStatus + 1, // 4: tetragon.ConfigureTracingPolicyRequest.mode:type_name -> tetragon.TracingPolicyMode + 38, // 5: tetragon.GetStackTraceTreeResponse.root:type_name -> tetragon.StackTraceNode + 39, // 6: tetragon.ProcessInternal.process:type_name -> tetragon.Process + 40, // 7: tetragon.ProcessInternal.refcnt:type_name -> google.protobuf.UInt32Value + 37, // 8: tetragon.ProcessInternal.refcnt_ops:type_name -> tetragon.ProcessInternal.RefcntOpsEntry + 31, // 9: tetragon.DumpProcessCacheResArgs.processes:type_name -> tetragon.ProcessInternal + 2, // 10: tetragon.GetDebugRequest.flag:type_name -> tetragon.ConfigFlag + 30, // 11: tetragon.GetDebugRequest.dump:type_name -> tetragon.DumpProcessCacheReqArgs + 2, // 12: tetragon.GetDebugResponse.flag:type_name -> tetragon.ConfigFlag + 3, // 13: tetragon.GetDebugResponse.level:type_name -> tetragon.LogLevel + 32, // 14: tetragon.GetDebugResponse.processes:type_name -> tetragon.DumpProcessCacheResArgs + 2, // 15: tetragon.SetDebugRequest.flag:type_name -> tetragon.ConfigFlag + 3, // 16: tetragon.SetDebugRequest.level:type_name -> tetragon.LogLevel + 2, // 17: tetragon.SetDebugResponse.flag:type_name -> tetragon.ConfigFlag + 3, // 18: tetragon.SetDebugResponse.level:type_name -> tetragon.LogLevel + 41, // 19: tetragon.FineGuidanceSensors.GetEvents:input_type -> tetragon.GetEventsRequest + 42, // 20: tetragon.FineGuidanceSensors.GetHealth:input_type -> tetragon.GetHealthStatusRequest + 10, // 21: tetragon.FineGuidanceSensors.AddTracingPolicy:input_type -> tetragon.AddTracingPolicyRequest + 12, // 22: tetragon.FineGuidanceSensors.DeleteTracingPolicy:input_type -> tetragon.DeleteTracingPolicyRequest + 7, // 23: tetragon.FineGuidanceSensors.ListTracingPolicies:input_type -> tetragon.ListTracingPoliciesRequest + 18, // 24: tetragon.FineGuidanceSensors.ConfigureTracingPolicy:input_type -> tetragon.ConfigureTracingPolicyRequest + 14, // 25: tetragon.FineGuidanceSensors.EnableTracingPolicy:input_type -> tetragon.EnableTracingPolicyRequest + 16, // 26: tetragon.FineGuidanceSensors.DisableTracingPolicy:input_type -> tetragon.DisableTracingPolicyRequest + 4, // 27: tetragon.FineGuidanceSensors.ListSensors:input_type -> tetragon.ListSensorsRequest + 22, // 28: tetragon.FineGuidanceSensors.EnableSensor:input_type -> tetragon.EnableSensorRequest + 24, // 29: tetragon.FineGuidanceSensors.DisableSensor:input_type -> tetragon.DisableSensorRequest + 20, // 30: tetragon.FineGuidanceSensors.RemoveSensor:input_type -> tetragon.RemoveSensorRequest + 26, // 31: tetragon.FineGuidanceSensors.GetStackTraceTree:input_type -> tetragon.GetStackTraceTreeRequest + 28, // 32: tetragon.FineGuidanceSensors.GetVersion:input_type -> tetragon.GetVersionRequest + 43, // 33: tetragon.FineGuidanceSensors.RuntimeHook:input_type -> tetragon.RuntimeHookRequest + 33, // 34: tetragon.FineGuidanceSensors.GetDebug:input_type -> tetragon.GetDebugRequest + 35, // 35: tetragon.FineGuidanceSensors.SetDebug:input_type -> tetragon.SetDebugRequest + 44, // 36: tetragon.FineGuidanceSensors.GetEvents:output_type -> tetragon.GetEventsResponse + 45, // 37: tetragon.FineGuidanceSensors.GetHealth:output_type -> tetragon.GetHealthStatusResponse + 11, // 38: tetragon.FineGuidanceSensors.AddTracingPolicy:output_type -> tetragon.AddTracingPolicyResponse + 13, // 39: tetragon.FineGuidanceSensors.DeleteTracingPolicy:output_type -> tetragon.DeleteTracingPolicyResponse + 9, // 40: tetragon.FineGuidanceSensors.ListTracingPolicies:output_type -> tetragon.ListTracingPoliciesResponse + 19, // 41: tetragon.FineGuidanceSensors.ConfigureTracingPolicy:output_type -> tetragon.ConfigureTracingPolicyResponse + 15, // 42: tetragon.FineGuidanceSensors.EnableTracingPolicy:output_type -> tetragon.EnableTracingPolicyResponse + 17, // 43: tetragon.FineGuidanceSensors.DisableTracingPolicy:output_type -> tetragon.DisableTracingPolicyResponse + 6, // 44: tetragon.FineGuidanceSensors.ListSensors:output_type -> tetragon.ListSensorsResponse + 23, // 45: tetragon.FineGuidanceSensors.EnableSensor:output_type -> tetragon.EnableSensorResponse + 25, // 46: tetragon.FineGuidanceSensors.DisableSensor:output_type -> tetragon.DisableSensorResponse + 21, // 47: tetragon.FineGuidanceSensors.RemoveSensor:output_type -> tetragon.RemoveSensorResponse + 27, // 48: tetragon.FineGuidanceSensors.GetStackTraceTree:output_type -> tetragon.GetStackTraceTreeResponse + 29, // 49: tetragon.FineGuidanceSensors.GetVersion:output_type -> tetragon.GetVersionResponse + 46, // 50: tetragon.FineGuidanceSensors.RuntimeHook:output_type -> tetragon.RuntimeHookResponse + 34, // 51: tetragon.FineGuidanceSensors.GetDebug:output_type -> tetragon.GetDebugResponse + 36, // 52: tetragon.FineGuidanceSensors.SetDebug:output_type -> tetragon.SetDebugResponse + 36, // [36:53] is the sub-list for method output_type + 19, // [19:36] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_tetragon_sensors_proto_init() } @@ -2198,17 +2396,18 @@ func file_tetragon_sensors_proto_init() { file_tetragon_events_proto_init() file_tetragon_stack_proto_init() file_tetragon_tetragon_proto_init() - file_tetragon_sensors_proto_msgTypes[27].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[14].OneofWrappers = []any{} + file_tetragon_sensors_proto_msgTypes[29].OneofWrappers = []any{ (*GetDebugRequest_Dump)(nil), } - file_tetragon_sensors_proto_msgTypes[28].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[30].OneofWrappers = []any{ (*GetDebugResponse_Level)(nil), (*GetDebugResponse_Processes)(nil), } - file_tetragon_sensors_proto_msgTypes[29].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[31].OneofWrappers = []any{ (*SetDebugRequest_Level)(nil), } - file_tetragon_sensors_proto_msgTypes[30].OneofWrappers = []any{ + file_tetragon_sensors_proto_msgTypes[32].OneofWrappers = []any{ (*SetDebugResponse_Level)(nil), } type x struct{} @@ -2216,8 +2415,8 @@ func file_tetragon_sensors_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_tetragon_sensors_proto_rawDesc, - NumEnums: 3, - NumMessages: 32, + NumEnums: 4, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go index 13c3e29ca9e..b649a949140 100644 --- a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go +++ b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.pb.json.go @@ -178,6 +178,30 @@ func (msg *DisableTracingPolicyResponse) UnmarshalJSON(b []byte) error { return protojson.UnmarshalOptions{}.Unmarshal(b, msg) } +// MarshalJSON implements json.Marshaler +func (msg *ConfigureTracingPolicyRequest) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ConfigureTracingPolicyRequest) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + +// MarshalJSON implements json.Marshaler +func (msg *ConfigureTracingPolicyResponse) MarshalJSON() ([]byte, error) { + return protojson.MarshalOptions{ + UseProtoNames: true, + }.Marshal(msg) +} + +// UnmarshalJSON implements json.Unmarshaler +func (msg *ConfigureTracingPolicyResponse) UnmarshalJSON(b []byte) error { + return protojson.UnmarshalOptions{}.Unmarshal(b, msg) +} + // MarshalJSON implements json.Marshaler func (msg *RemoveSensorRequest) MarshalJSON() ([]byte, error) { return protojson.MarshalOptions{ diff --git a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto index 730bfb0adbe..ce99ce30314 100644 --- a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto +++ b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors.proto @@ -49,6 +49,12 @@ enum TracingPolicyState { TP_STATE_UNLOADING = 6; } +enum TracingPolicyMode { + TP_MODE_UNKNOWN = 0; + TP_MODE_ENFORCE = 1; + TP_MODE_MONITOR = 2; +} + message TracingPolicyStatus { // id is the id of the policy uint64 id = 1; @@ -70,6 +76,8 @@ message TracingPolicyStatus { TracingPolicyState state = 9; // the amount of kernel memory in bytes used by policy's sensors non-shared BPF maps (memlock) uint64 kernel_memory_bytes = 10; + // current mode of the tracing policy + TracingPolicyMode mode = 11; } message ListTracingPoliciesResponse { @@ -99,6 +107,16 @@ message DisableTracingPolicyRequest { } message DisableTracingPolicyResponse {} +message ConfigureTracingPolicyRequest { + string name = 1; + string namespace = 2; + + optional bool enable = 3; + optional TracingPolicyMode mode = 4; +} + +message ConfigureTracingPolicyResponse {} + message RemoveSensorRequest { string name = 1; } @@ -203,8 +221,22 @@ service FineGuidanceSensors { rpc AddTracingPolicy(AddTracingPolicyRequest) returns (AddTracingPolicyResponse) {} rpc DeleteTracingPolicy(DeleteTracingPolicyRequest) returns (DeleteTracingPolicyResponse) {} rpc ListTracingPolicies(ListTracingPoliciesRequest) returns (ListTracingPoliciesResponse) {} - rpc EnableTracingPolicy(EnableTracingPolicyRequest) returns (EnableTracingPolicyResponse) {} - rpc DisableTracingPolicy(DisableTracingPolicyRequest) returns (DisableTracingPolicyResponse) {} + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + rpc ConfigureTracingPolicy(ConfigureTracingPolicyRequest) returns (ConfigureTracingPolicyResponse) {} + + rpc EnableTracingPolicy(EnableTracingPolicyRequest) returns (EnableTracingPolicyResponse) { + // use ConfigureTracingPolicy instead + option deprecated = true; + } + rpc DisableTracingPolicy(DisableTracingPolicyRequest) returns (DisableTracingPolicyResponse) { + // use ConfigureTracingPolicy instead + option deprecated = true; + } rpc ListSensors(ListSensorsRequest) returns (ListSensorsResponse) { option deprecated = true; diff --git a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go index 613710e7002..d14fbe03a74 100644 --- a/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go +++ b/vendor/github.com/cilium/tetragon/api/v1/tetragon/sensors_grpc.pb.go @@ -22,22 +22,23 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - FineGuidanceSensors_GetEvents_FullMethodName = "/tetragon.FineGuidanceSensors/GetEvents" - FineGuidanceSensors_GetHealth_FullMethodName = "/tetragon.FineGuidanceSensors/GetHealth" - FineGuidanceSensors_AddTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/AddTracingPolicy" - FineGuidanceSensors_DeleteTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DeleteTracingPolicy" - FineGuidanceSensors_ListTracingPolicies_FullMethodName = "/tetragon.FineGuidanceSensors/ListTracingPolicies" - FineGuidanceSensors_EnableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/EnableTracingPolicy" - FineGuidanceSensors_DisableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DisableTracingPolicy" - FineGuidanceSensors_ListSensors_FullMethodName = "/tetragon.FineGuidanceSensors/ListSensors" - FineGuidanceSensors_EnableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/EnableSensor" - FineGuidanceSensors_DisableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/DisableSensor" - FineGuidanceSensors_RemoveSensor_FullMethodName = "/tetragon.FineGuidanceSensors/RemoveSensor" - FineGuidanceSensors_GetStackTraceTree_FullMethodName = "/tetragon.FineGuidanceSensors/GetStackTraceTree" - FineGuidanceSensors_GetVersion_FullMethodName = "/tetragon.FineGuidanceSensors/GetVersion" - FineGuidanceSensors_RuntimeHook_FullMethodName = "/tetragon.FineGuidanceSensors/RuntimeHook" - FineGuidanceSensors_GetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/GetDebug" - FineGuidanceSensors_SetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/SetDebug" + FineGuidanceSensors_GetEvents_FullMethodName = "/tetragon.FineGuidanceSensors/GetEvents" + FineGuidanceSensors_GetHealth_FullMethodName = "/tetragon.FineGuidanceSensors/GetHealth" + FineGuidanceSensors_AddTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/AddTracingPolicy" + FineGuidanceSensors_DeleteTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DeleteTracingPolicy" + FineGuidanceSensors_ListTracingPolicies_FullMethodName = "/tetragon.FineGuidanceSensors/ListTracingPolicies" + FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/ConfigureTracingPolicy" + FineGuidanceSensors_EnableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/EnableTracingPolicy" + FineGuidanceSensors_DisableTracingPolicy_FullMethodName = "/tetragon.FineGuidanceSensors/DisableTracingPolicy" + FineGuidanceSensors_ListSensors_FullMethodName = "/tetragon.FineGuidanceSensors/ListSensors" + FineGuidanceSensors_EnableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/EnableSensor" + FineGuidanceSensors_DisableSensor_FullMethodName = "/tetragon.FineGuidanceSensors/DisableSensor" + FineGuidanceSensors_RemoveSensor_FullMethodName = "/tetragon.FineGuidanceSensors/RemoveSensor" + FineGuidanceSensors_GetStackTraceTree_FullMethodName = "/tetragon.FineGuidanceSensors/GetStackTraceTree" + FineGuidanceSensors_GetVersion_FullMethodName = "/tetragon.FineGuidanceSensors/GetVersion" + FineGuidanceSensors_RuntimeHook_FullMethodName = "/tetragon.FineGuidanceSensors/RuntimeHook" + FineGuidanceSensors_GetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/GetDebug" + FineGuidanceSensors_SetDebug_FullMethodName = "/tetragon.FineGuidanceSensors/SetDebug" ) // FineGuidanceSensorsClient is the client API for FineGuidanceSensors service. @@ -49,7 +50,17 @@ type FineGuidanceSensorsClient interface { AddTracingPolicy(ctx context.Context, in *AddTracingPolicyRequest, opts ...grpc.CallOption) (*AddTracingPolicyResponse, error) DeleteTracingPolicy(ctx context.Context, in *DeleteTracingPolicyRequest, opts ...grpc.CallOption) (*DeleteTracingPolicyResponse, error) ListTracingPolicies(ctx context.Context, in *ListTracingPoliciesRequest, opts ...grpc.CallOption) (*ListTracingPoliciesResponse, error) + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + ConfigureTracingPolicy(ctx context.Context, in *ConfigureTracingPolicyRequest, opts ...grpc.CallOption) (*ConfigureTracingPolicyResponse, error) + // Deprecated: Do not use. EnableTracingPolicy(ctx context.Context, in *EnableTracingPolicyRequest, opts ...grpc.CallOption) (*EnableTracingPolicyResponse, error) + // Deprecated: Do not use. DisableTracingPolicy(ctx context.Context, in *DisableTracingPolicyRequest, opts ...grpc.CallOption) (*DisableTracingPolicyResponse, error) // Deprecated: Do not use. ListSensors(ctx context.Context, in *ListSensorsRequest, opts ...grpc.CallOption) (*ListSensorsResponse, error) @@ -133,6 +144,17 @@ func (c *fineGuidanceSensorsClient) ListTracingPolicies(ctx context.Context, in return out, nil } +func (c *fineGuidanceSensorsClient) ConfigureTracingPolicy(ctx context.Context, in *ConfigureTracingPolicyRequest, opts ...grpc.CallOption) (*ConfigureTracingPolicyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ConfigureTracingPolicyResponse) + err := c.cc.Invoke(ctx, FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Deprecated: Do not use. func (c *fineGuidanceSensorsClient) EnableTracingPolicy(ctx context.Context, in *EnableTracingPolicyRequest, opts ...grpc.CallOption) (*EnableTracingPolicyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(EnableTracingPolicyResponse) @@ -143,6 +165,7 @@ func (c *fineGuidanceSensorsClient) EnableTracingPolicy(ctx context.Context, in return out, nil } +// Deprecated: Do not use. func (c *fineGuidanceSensorsClient) DisableTracingPolicy(ctx context.Context, in *DisableTracingPolicyRequest, opts ...grpc.CallOption) (*DisableTracingPolicyResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(DisableTracingPolicyResponse) @@ -256,7 +279,17 @@ type FineGuidanceSensorsServer interface { AddTracingPolicy(context.Context, *AddTracingPolicyRequest) (*AddTracingPolicyResponse, error) DeleteTracingPolicy(context.Context, *DeleteTracingPolicyRequest) (*DeleteTracingPolicyResponse, error) ListTracingPolicies(context.Context, *ListTracingPoliciesRequest) (*ListTracingPoliciesResponse, error) + // ConfigureTracingPolicy can be used to configure a loaded tracing policy. + // It can be used to: + // - enable/disable it + // - change its mode (enforcement vs monitoring) + // + // If multiple changes are requested and an error is encountered, the resulting state might have + // partial updates applied. In other words, the configuring a tracing policy is not atomic. + ConfigureTracingPolicy(context.Context, *ConfigureTracingPolicyRequest) (*ConfigureTracingPolicyResponse, error) + // Deprecated: Do not use. EnableTracingPolicy(context.Context, *EnableTracingPolicyRequest) (*EnableTracingPolicyResponse, error) + // Deprecated: Do not use. DisableTracingPolicy(context.Context, *DisableTracingPolicyRequest) (*DisableTracingPolicyResponse, error) // Deprecated: Do not use. ListSensors(context.Context, *ListSensorsRequest) (*ListSensorsResponse, error) @@ -296,6 +329,9 @@ func (UnimplementedFineGuidanceSensorsServer) DeleteTracingPolicy(context.Contex func (UnimplementedFineGuidanceSensorsServer) ListTracingPolicies(context.Context, *ListTracingPoliciesRequest) (*ListTracingPoliciesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListTracingPolicies not implemented") } +func (UnimplementedFineGuidanceSensorsServer) ConfigureTracingPolicy(context.Context, *ConfigureTracingPolicyRequest) (*ConfigureTracingPolicyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ConfigureTracingPolicy not implemented") +} func (UnimplementedFineGuidanceSensorsServer) EnableTracingPolicy(context.Context, *EnableTracingPolicyRequest) (*EnableTracingPolicyResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableTracingPolicy not implemented") } @@ -433,6 +469,24 @@ func _FineGuidanceSensors_ListTracingPolicies_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _FineGuidanceSensors_ConfigureTracingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ConfigureTracingPolicyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FineGuidanceSensorsServer).ConfigureTracingPolicy(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FineGuidanceSensors_ConfigureTracingPolicy_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FineGuidanceSensorsServer).ConfigureTracingPolicy(ctx, req.(*ConfigureTracingPolicyRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _FineGuidanceSensors_EnableTracingPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(EnableTracingPolicyRequest) if err := dec(in); err != nil { @@ -654,6 +708,10 @@ var FineGuidanceSensors_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListTracingPolicies", Handler: _FineGuidanceSensors_ListTracingPolicies_Handler, }, + { + MethodName: "ConfigureTracingPolicy", + Handler: _FineGuidanceSensors_ConfigureTracingPolicy_Handler, + }, { MethodName: "EnableTracingPolicy", Handler: _FineGuidanceSensors_EnableTracingPolicy_Handler,