diff --git a/go/http_types/http_types.pb.go b/go/http_types/http_types.pb.go index 6d2634da4..c394c9226 100644 --- a/go/http_types/http_types.pb.go +++ b/go/http_types/http_types.pb.go @@ -59,7 +59,7 @@ func (x HttpMethod_Registered) String() string { return proto.EnumName(HttpMethod_Registered_name, int32(x)) } func (HttpMethod_Registered) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_http_types_1aa39c1a8b7d0445, []int{0, 0} + return fileDescriptor_http_types_81aff5bddbdfddd3, []int{0, 0} } type Scheme_Registered int32 @@ -82,7 +82,7 @@ func (x Scheme_Registered) String() string { return proto.EnumName(Scheme_Registered_name, int32(x)) } func (Scheme_Registered) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_http_types_1aa39c1a8b7d0445, []int{1, 0} + return fileDescriptor_http_types_81aff5bddbdfddd3, []int{1, 0} } type HttpMethod struct { @@ -99,7 +99,7 @@ func (m *HttpMethod) Reset() { *m = HttpMethod{} } func (m *HttpMethod) String() string { return proto.CompactTextString(m) } func (*HttpMethod) ProtoMessage() {} func (*HttpMethod) Descriptor() ([]byte, []int) { - return fileDescriptor_http_types_1aa39c1a8b7d0445, []int{0} + return fileDescriptor_http_types_81aff5bddbdfddd3, []int{0} } func (m *HttpMethod) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_HttpMethod.Unmarshal(m, b) @@ -235,7 +235,7 @@ func (m *Scheme) Reset() { *m = Scheme{} } func (m *Scheme) String() string { return proto.CompactTextString(m) } func (*Scheme) ProtoMessage() {} func (*Scheme) Descriptor() ([]byte, []int) { - return fileDescriptor_http_types_1aa39c1a8b7d0445, []int{1} + return fileDescriptor_http_types_81aff5bddbdfddd3, []int{1} } func (m *Scheme) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Scheme.Unmarshal(m, b) @@ -357,35 +357,125 @@ func _Scheme_OneofSizer(msg proto.Message) (n int) { return n } +type Headers struct { + Headers []*Headers_Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Headers) Reset() { *m = Headers{} } +func (m *Headers) String() string { return proto.CompactTextString(m) } +func (*Headers) ProtoMessage() {} +func (*Headers) Descriptor() ([]byte, []int) { + return fileDescriptor_http_types_81aff5bddbdfddd3, []int{2} +} +func (m *Headers) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Headers.Unmarshal(m, b) +} +func (m *Headers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Headers.Marshal(b, m, deterministic) +} +func (dst *Headers) XXX_Merge(src proto.Message) { + xxx_messageInfo_Headers.Merge(dst, src) +} +func (m *Headers) XXX_Size() int { + return xxx_messageInfo_Headers.Size(m) +} +func (m *Headers) XXX_DiscardUnknown() { + xxx_messageInfo_Headers.DiscardUnknown(m) +} + +var xxx_messageInfo_Headers proto.InternalMessageInfo + +func (m *Headers) GetHeaders() []*Headers_Header { + if m != nil { + return m.Headers + } + return nil +} + +type Headers_Header struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *Headers_Header) Reset() { *m = Headers_Header{} } +func (m *Headers_Header) String() string { return proto.CompactTextString(m) } +func (*Headers_Header) ProtoMessage() {} +func (*Headers_Header) Descriptor() ([]byte, []int) { + return fileDescriptor_http_types_81aff5bddbdfddd3, []int{2, 0} +} +func (m *Headers_Header) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Headers_Header.Unmarshal(m, b) +} +func (m *Headers_Header) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Headers_Header.Marshal(b, m, deterministic) +} +func (dst *Headers_Header) XXX_Merge(src proto.Message) { + xxx_messageInfo_Headers_Header.Merge(dst, src) +} +func (m *Headers_Header) XXX_Size() int { + return xxx_messageInfo_Headers_Header.Size(m) +} +func (m *Headers_Header) XXX_DiscardUnknown() { + xxx_messageInfo_Headers_Header.DiscardUnknown(m) +} + +var xxx_messageInfo_Headers_Header proto.InternalMessageInfo + +func (m *Headers_Header) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *Headers_Header) GetValue() []byte { + if m != nil { + return m.Value + } + return nil +} + func init() { proto.RegisterType((*HttpMethod)(nil), "io.linkerd.proxy.http_types.HttpMethod") proto.RegisterType((*Scheme)(nil), "io.linkerd.proxy.http_types.Scheme") + proto.RegisterType((*Headers)(nil), "io.linkerd.proxy.http_types.Headers") + proto.RegisterType((*Headers_Header)(nil), "io.linkerd.proxy.http_types.Headers.Header") proto.RegisterEnum("io.linkerd.proxy.http_types.HttpMethod_Registered", HttpMethod_Registered_name, HttpMethod_Registered_value) proto.RegisterEnum("io.linkerd.proxy.http_types.Scheme_Registered", Scheme_Registered_name, Scheme_Registered_value) } -func init() { proto.RegisterFile("http_types.proto", fileDescriptor_http_types_1aa39c1a8b7d0445) } - -var fileDescriptor_http_types_1aa39c1a8b7d0445 = []byte{ - // 310 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x92, 0x4f, 0x6b, 0xfa, 0x30, - 0x18, 0xc7, 0x1b, 0xff, 0x54, 0x7d, 0x7e, 0x3f, 0xc6, 0x43, 0x4e, 0x83, 0x5d, 0x9c, 0xec, 0xe0, - 0xc5, 0x08, 0xca, 0x5e, 0x80, 0xd6, 0xb0, 0x0e, 0x36, 0x1b, 0xda, 0xec, 0xb2, 0xcb, 0x98, 0x36, - 0xb4, 0x65, 0xb3, 0x29, 0x35, 0xc2, 0xbc, 0xed, 0xfd, 0xec, 0x4d, 0x8e, 0xb8, 0xb9, 0x2a, 0x0c, - 0x2f, 0x3b, 0x25, 0x79, 0x78, 0xbe, 0x5f, 0x3e, 0x1f, 0x08, 0x60, 0x6a, 0x4c, 0xf1, 0x64, 0xb6, - 0x85, 0x5a, 0xb3, 0xa2, 0xd4, 0x46, 0xd3, 0x8b, 0x4c, 0xb3, 0xd7, 0x2c, 0x7f, 0x51, 0x65, 0x6c, - 0x27, 0x6f, 0x5b, 0x56, 0xad, 0xf4, 0xde, 0x6b, 0x00, 0xbe, 0x31, 0xc5, 0xbd, 0x32, 0xa9, 0x8e, - 0xa9, 0x04, 0x28, 0x55, 0x92, 0xad, 0x8d, 0x2a, 0x55, 0x7c, 0x4e, 0xba, 0xa4, 0x7f, 0x36, 0x1a, - 0xb1, 0x13, 0x05, 0xac, 0x0a, 0xb3, 0xf0, 0x27, 0xe9, 0x3b, 0xe1, 0x41, 0x0f, 0xbd, 0x82, 0xff, - 0x9b, 0xfc, 0xa0, 0xb7, 0xd6, 0x25, 0xfd, 0x8e, 0xef, 0x84, 0x47, 0xd3, 0x5e, 0x0e, 0x50, 0x35, - 0xd0, 0x16, 0xd4, 0x6f, 0xb8, 0x44, 0x87, 0xb6, 0xa1, 0x21, 0x82, 0x48, 0x22, 0xb1, 0x23, 0xf1, - 0x20, 0xb1, 0x46, 0x01, 0xdc, 0x19, 0xbf, 0xe3, 0x92, 0x63, 0x9d, 0x76, 0xa0, 0x29, 0x26, 0xd2, - 0xf3, 0xb1, 0x41, 0xff, 0x41, 0x2b, 0x10, 0xf2, 0x36, 0x98, 0x47, 0xd8, 0xb4, 0x0f, 0x2f, 0x98, - 0xcf, 0xb9, 0x27, 0xd1, 0xb5, 0x1d, 0x3e, 0x9f, 0xcc, 0xb0, 0x65, 0xd7, 0x65, 0x38, 0xf1, 0x38, - 0xb6, 0xa7, 0x2e, 0x34, 0xac, 0x42, 0xef, 0x83, 0x80, 0x1b, 0x2d, 0x53, 0xb5, 0x52, 0x54, 0xfc, - 0xa2, 0xcf, 0x4e, 0xea, 0x7f, 0x05, 0xff, 0xaa, 0x7e, 0x79, 0xa4, 0x6e, 0x69, 0xa5, 0x14, 0xe8, - 0x58, 0x5a, 0x7b, 0x8b, 0x90, 0xec, 0x69, 0xa7, 0xd7, 0x8f, 0xe3, 0x24, 0x33, 0xe9, 0x66, 0xc1, - 0x96, 0x7a, 0x35, 0xfc, 0xe6, 0xda, 0x9f, 0xa3, 0xc1, 0x0e, 0x70, 0xf0, 0x5c, 0x64, 0xc3, 0x44, - 0x0f, 0x2b, 0xce, 0x85, 0xbb, 0xfb, 0x0b, 0xe3, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x87, - 0x83, 0x2e, 0x1f, 0x02, 0x00, 0x00, +func init() { proto.RegisterFile("http_types.proto", fileDescriptor_http_types_81aff5bddbdfddd3) } + +var fileDescriptor_http_types_81aff5bddbdfddd3 = []byte{ + // 370 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x52, 0x41, 0x8b, 0xda, 0x40, + 0x14, 0xce, 0x68, 0x4c, 0xf4, 0x29, 0x65, 0x18, 0x7a, 0x90, 0xf6, 0x62, 0xa5, 0x07, 0xa1, 0x38, + 0x42, 0xa4, 0x3f, 0x40, 0xe3, 0xd0, 0x14, 0x5a, 0x13, 0x92, 0xe9, 0xa5, 0x97, 0x12, 0xcd, 0x60, + 0x42, 0x35, 0x09, 0x71, 0x5c, 0xd6, 0xdb, 0x1e, 0xf6, 0xdf, 0xec, 0x9f, 0x5c, 0x26, 0x51, 0xa3, + 0xb0, 0x78, 0xd9, 0xd3, 0x7b, 0xef, 0xe3, 0x7d, 0xdf, 0xfb, 0x3e, 0x66, 0x00, 0xc7, 0x52, 0xe6, + 0xff, 0xe4, 0x31, 0x17, 0x7b, 0x9a, 0x17, 0x99, 0xcc, 0xc8, 0xe7, 0x24, 0xa3, 0xdb, 0x24, 0xfd, + 0x2f, 0x8a, 0x48, 0x21, 0x8f, 0x47, 0x5a, 0xaf, 0x0c, 0x9f, 0x1a, 0x00, 0x8e, 0x94, 0xf9, 0x6f, + 0x21, 0xe3, 0x2c, 0x22, 0x1c, 0xa0, 0x10, 0x9b, 0x64, 0x2f, 0x45, 0x21, 0xa2, 0x3e, 0x1a, 0xa0, + 0xd1, 0x07, 0xcb, 0xa2, 0x77, 0x04, 0x68, 0x4d, 0xa6, 0xfe, 0x85, 0xe9, 0x68, 0xfe, 0x95, 0x0e, + 0xf9, 0x0a, 0xbd, 0x43, 0x7a, 0xa5, 0xdb, 0x18, 0xa0, 0x51, 0xc7, 0xd1, 0xfc, 0x1b, 0x74, 0x98, + 0x02, 0xd4, 0x0a, 0xc4, 0x84, 0xe6, 0x0f, 0xc6, 0xb1, 0x46, 0xda, 0xa0, 0x7b, 0x6e, 0xc0, 0x31, + 0x52, 0x90, 0xf7, 0x87, 0xe3, 0x06, 0x01, 0x30, 0x16, 0xec, 0x17, 0xe3, 0x0c, 0x37, 0x49, 0x07, + 0x5a, 0xde, 0x8c, 0xdb, 0x0e, 0xd6, 0x49, 0x17, 0x4c, 0xd7, 0xe3, 0x3f, 0xdd, 0x65, 0x80, 0x5b, + 0x6a, 0xb0, 0xdd, 0xe5, 0x92, 0xd9, 0x1c, 0x1b, 0x4a, 0xc3, 0x61, 0xb3, 0x05, 0x36, 0xd5, 0x3a, + 0xf7, 0x67, 0x36, 0xc3, 0xed, 0xb9, 0x01, 0xba, 0x8a, 0x30, 0x7c, 0x41, 0x60, 0x04, 0xeb, 0x58, + 0xec, 0x04, 0xf1, 0xde, 0x88, 0x4f, 0xef, 0xc6, 0xaf, 0x88, 0xef, 0x8d, 0xfe, 0xe5, 0x26, 0xba, + 0x72, 0xcb, 0xb9, 0x87, 0x35, 0xe5, 0x56, 0x75, 0x01, 0x46, 0x17, 0xb7, 0xcf, 0x08, 0x4c, 0x47, + 0x84, 0x91, 0x28, 0xf6, 0x84, 0x81, 0x19, 0x57, 0x6d, 0x1f, 0x0d, 0x9a, 0xa3, 0xae, 0xf5, 0xed, + 0xfe, 0x53, 0x55, 0xbb, 0xa7, 0xea, 0x9f, 0xb9, 0x9f, 0x2c, 0x30, 0x2a, 0x88, 0x10, 0xd0, 0xd3, + 0x70, 0x27, 0xca, 0xe4, 0x1d, 0xbf, 0xec, 0xc9, 0x47, 0x68, 0x3d, 0x84, 0xdb, 0x83, 0x28, 0xad, + 0xf7, 0xfc, 0x6a, 0x98, 0x7f, 0xff, 0x3b, 0xdd, 0x24, 0x32, 0x3e, 0xac, 0xe8, 0x3a, 0xdb, 0x4d, + 0x4e, 0x27, 0xcf, 0xd5, 0x1a, 0x97, 0xb7, 0xc7, 0x61, 0x9e, 0x4c, 0x36, 0xd9, 0xa4, 0xb6, 0xb0, + 0x32, 0xca, 0x2f, 0x39, 0x7d, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x3c, 0x7e, 0x28, 0xa6, 0x02, + 0x00, 0x00, } diff --git a/go/tap/tap.pb.go b/go/tap/tap.pb.go index 892ed5405..0b0c9fb9e 100644 --- a/go/tap/tap.pb.go +++ b/go/tap/tap.pb.go @@ -49,24 +49,27 @@ func (x TapEvent_ProxyDirection) String() string { return proto.EnumName(TapEvent_ProxyDirection_name, int32(x)) } func (TapEvent_ProxyDirection) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 0} } type ObserveRequest struct { // Limits the number of event keys that will be returned by this tap. Limit uint32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // Encodes request-matching logic. - Match *ObserveRequest_Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Match *ObserveRequest_Match `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` + // Conditionally extracts components from requests and responses to include + // in tap events + Extract *ObserveRequest_Extract `protobuf:"bytes,3,opt,name=extract,proto3" json:"extract,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ObserveRequest) Reset() { *m = ObserveRequest{} } func (m *ObserveRequest) String() string { return proto.CompactTextString(m) } func (*ObserveRequest) ProtoMessage() {} func (*ObserveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0} + return fileDescriptor_tap_ba85d314b39db450, []int{0} } func (m *ObserveRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest.Unmarshal(m, b) @@ -100,6 +103,13 @@ func (m *ObserveRequest) GetMatch() *ObserveRequest_Match { return nil } +func (m *ObserveRequest) GetExtract() *ObserveRequest_Extract { + if m != nil { + return m.Extract + } + return nil +} + type ObserveRequest_Match struct { // Types that are valid to be assigned to Match: // *ObserveRequest_Match_All @@ -120,7 +130,7 @@ func (m *ObserveRequest_Match) Reset() { *m = ObserveRequest_Match{} } func (m *ObserveRequest_Match) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match) ProtoMessage() {} func (*ObserveRequest_Match) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0} } func (m *ObserveRequest_Match) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match.Unmarshal(m, b) @@ -454,7 +464,7 @@ func (m *ObserveRequest_Match_Seq) Reset() { *m = ObserveRequest_Match_S func (m *ObserveRequest_Match_Seq) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Seq) ProtoMessage() {} func (*ObserveRequest_Match_Seq) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 0} } func (m *ObserveRequest_Match_Seq) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Seq.Unmarshal(m, b) @@ -493,7 +503,7 @@ func (m *ObserveRequest_Match_Label) Reset() { *m = ObserveRequest_Match func (m *ObserveRequest_Match_Label) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Label) ProtoMessage() {} func (*ObserveRequest_Match_Label) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 1} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 1} } func (m *ObserveRequest_Match_Label) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Label.Unmarshal(m, b) @@ -541,7 +551,7 @@ func (m *ObserveRequest_Match_Tcp) Reset() { *m = ObserveRequest_Match_T func (m *ObserveRequest_Match_Tcp) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Tcp) ProtoMessage() {} func (*ObserveRequest_Match_Tcp) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 2} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 2} } func (m *ObserveRequest_Match_Tcp) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Tcp.Unmarshal(m, b) @@ -684,7 +694,7 @@ func (m *ObserveRequest_Match_Tcp_Netmask) Reset() { *m = ObserveRequest func (m *ObserveRequest_Match_Tcp_Netmask) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Tcp_Netmask) ProtoMessage() {} func (*ObserveRequest_Match_Tcp_Netmask) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 2, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 2, 0} } func (m *ObserveRequest_Match_Tcp_Netmask) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Tcp_Netmask.Unmarshal(m, b) @@ -734,7 +744,7 @@ func (m *ObserveRequest_Match_Tcp_PortRange) Reset() { *m = ObserveReque func (m *ObserveRequest_Match_Tcp_PortRange) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Tcp_PortRange) ProtoMessage() {} func (*ObserveRequest_Match_Tcp_PortRange) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 2, 1} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 2, 1} } func (m *ObserveRequest_Match_Tcp_PortRange) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Tcp_PortRange.Unmarshal(m, b) @@ -784,7 +794,7 @@ func (m *ObserveRequest_Match_Http) Reset() { *m = ObserveRequest_Match_ func (m *ObserveRequest_Match_Http) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Http) ProtoMessage() {} func (*ObserveRequest_Match_Http) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 3} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 3} } func (m *ObserveRequest_Match_Http) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Http.Unmarshal(m, b) @@ -993,7 +1003,7 @@ func (m *ObserveRequest_Match_Http_StringMatch) Reset() { *m = ObserveRe func (m *ObserveRequest_Match_Http_StringMatch) String() string { return proto.CompactTextString(m) } func (*ObserveRequest_Match_Http_StringMatch) ProtoMessage() {} func (*ObserveRequest_Match_Http_StringMatch) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{0, 0, 3, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{0, 0, 3, 0} } func (m *ObserveRequest_Match_Http_StringMatch) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ObserveRequest_Match_Http_StringMatch.Unmarshal(m, b) @@ -1116,6 +1126,260 @@ func _ObserveRequest_Match_Http_StringMatch_OneofSizer(msg proto.Message) (n int return n } +type ObserveRequest_Extract struct { + // Types that are valid to be assigned to Extract: + // *ObserveRequest_Extract_Http_ + Extract isObserveRequest_Extract_Extract `protobuf_oneof:"extract"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ObserveRequest_Extract) Reset() { *m = ObserveRequest_Extract{} } +func (m *ObserveRequest_Extract) String() string { return proto.CompactTextString(m) } +func (*ObserveRequest_Extract) ProtoMessage() {} +func (*ObserveRequest_Extract) Descriptor() ([]byte, []int) { + return fileDescriptor_tap_ba85d314b39db450, []int{0, 1} +} +func (m *ObserveRequest_Extract) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ObserveRequest_Extract.Unmarshal(m, b) +} +func (m *ObserveRequest_Extract) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ObserveRequest_Extract.Marshal(b, m, deterministic) +} +func (dst *ObserveRequest_Extract) XXX_Merge(src proto.Message) { + xxx_messageInfo_ObserveRequest_Extract.Merge(dst, src) +} +func (m *ObserveRequest_Extract) XXX_Size() int { + return xxx_messageInfo_ObserveRequest_Extract.Size(m) +} +func (m *ObserveRequest_Extract) XXX_DiscardUnknown() { + xxx_messageInfo_ObserveRequest_Extract.DiscardUnknown(m) +} + +var xxx_messageInfo_ObserveRequest_Extract proto.InternalMessageInfo + +type isObserveRequest_Extract_Extract interface { + isObserveRequest_Extract_Extract() +} + +type ObserveRequest_Extract_Http_ struct { + Http *ObserveRequest_Extract_Http `protobuf:"bytes,1,opt,name=http,proto3,oneof"` +} + +func (*ObserveRequest_Extract_Http_) isObserveRequest_Extract_Extract() {} + +func (m *ObserveRequest_Extract) GetExtract() isObserveRequest_Extract_Extract { + if m != nil { + return m.Extract + } + return nil +} + +func (m *ObserveRequest_Extract) GetHttp() *ObserveRequest_Extract_Http { + if x, ok := m.GetExtract().(*ObserveRequest_Extract_Http_); ok { + return x.Http + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ObserveRequest_Extract) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ObserveRequest_Extract_OneofMarshaler, _ObserveRequest_Extract_OneofUnmarshaler, _ObserveRequest_Extract_OneofSizer, []interface{}{ + (*ObserveRequest_Extract_Http_)(nil), + } +} + +func _ObserveRequest_Extract_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ObserveRequest_Extract) + // extract + switch x := m.Extract.(type) { + case *ObserveRequest_Extract_Http_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Http); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ObserveRequest_Extract.Extract has unexpected type %T", x) + } + return nil +} + +func _ObserveRequest_Extract_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ObserveRequest_Extract) + switch tag { + case 1: // extract.http + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ObserveRequest_Extract_Http) + err := b.DecodeMessage(msg) + m.Extract = &ObserveRequest_Extract_Http_{msg} + return true, err + default: + return false, nil + } +} + +func _ObserveRequest_Extract_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ObserveRequest_Extract) + // extract + switch x := m.Extract.(type) { + case *ObserveRequest_Extract_Http_: + s := proto.Size(x.Http) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type ObserveRequest_Extract_Http struct { + // Types that are valid to be assigned to Extract: + // *ObserveRequest_Extract_Http_Headers_ + Extract isObserveRequest_Extract_Http_Extract `protobuf_oneof:"extract"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ObserveRequest_Extract_Http) Reset() { *m = ObserveRequest_Extract_Http{} } +func (m *ObserveRequest_Extract_Http) String() string { return proto.CompactTextString(m) } +func (*ObserveRequest_Extract_Http) ProtoMessage() {} +func (*ObserveRequest_Extract_Http) Descriptor() ([]byte, []int) { + return fileDescriptor_tap_ba85d314b39db450, []int{0, 1, 0} +} +func (m *ObserveRequest_Extract_Http) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ObserveRequest_Extract_Http.Unmarshal(m, b) +} +func (m *ObserveRequest_Extract_Http) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ObserveRequest_Extract_Http.Marshal(b, m, deterministic) +} +func (dst *ObserveRequest_Extract_Http) XXX_Merge(src proto.Message) { + xxx_messageInfo_ObserveRequest_Extract_Http.Merge(dst, src) +} +func (m *ObserveRequest_Extract_Http) XXX_Size() int { + return xxx_messageInfo_ObserveRequest_Extract_Http.Size(m) +} +func (m *ObserveRequest_Extract_Http) XXX_DiscardUnknown() { + xxx_messageInfo_ObserveRequest_Extract_Http.DiscardUnknown(m) +} + +var xxx_messageInfo_ObserveRequest_Extract_Http proto.InternalMessageInfo + +type isObserveRequest_Extract_Http_Extract interface { + isObserveRequest_Extract_Http_Extract() +} + +type ObserveRequest_Extract_Http_Headers_ struct { + Headers *ObserveRequest_Extract_Http_Headers `protobuf:"bytes,1,opt,name=headers,proto3,oneof"` +} + +func (*ObserveRequest_Extract_Http_Headers_) isObserveRequest_Extract_Http_Extract() {} + +func (m *ObserveRequest_Extract_Http) GetExtract() isObserveRequest_Extract_Http_Extract { + if m != nil { + return m.Extract + } + return nil +} + +func (m *ObserveRequest_Extract_Http) GetHeaders() *ObserveRequest_Extract_Http_Headers { + if x, ok := m.GetExtract().(*ObserveRequest_Extract_Http_Headers_); ok { + return x.Headers + } + return nil +} + +// XXX_OneofFuncs is for the internal use of the proto package. +func (*ObserveRequest_Extract_Http) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { + return _ObserveRequest_Extract_Http_OneofMarshaler, _ObserveRequest_Extract_Http_OneofUnmarshaler, _ObserveRequest_Extract_Http_OneofSizer, []interface{}{ + (*ObserveRequest_Extract_Http_Headers_)(nil), + } +} + +func _ObserveRequest_Extract_Http_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { + m := msg.(*ObserveRequest_Extract_Http) + // extract + switch x := m.Extract.(type) { + case *ObserveRequest_Extract_Http_Headers_: + b.EncodeVarint(1<<3 | proto.WireBytes) + if err := b.EncodeMessage(x.Headers); err != nil { + return err + } + case nil: + default: + return fmt.Errorf("ObserveRequest_Extract_Http.Extract has unexpected type %T", x) + } + return nil +} + +func _ObserveRequest_Extract_Http_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) { + m := msg.(*ObserveRequest_Extract_Http) + switch tag { + case 1: // extract.headers + if wire != proto.WireBytes { + return true, proto.ErrInternalBadWireType + } + msg := new(ObserveRequest_Extract_Http_Headers) + err := b.DecodeMessage(msg) + m.Extract = &ObserveRequest_Extract_Http_Headers_{msg} + return true, err + default: + return false, nil + } +} + +func _ObserveRequest_Extract_Http_OneofSizer(msg proto.Message) (n int) { + m := msg.(*ObserveRequest_Extract_Http) + // extract + switch x := m.Extract.(type) { + case *ObserveRequest_Extract_Http_Headers_: + s := proto.Size(x.Headers) + n += 1 // tag and wire + n += proto.SizeVarint(uint64(s)) + n += s + case nil: + default: + panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) + } + return n +} + +type ObserveRequest_Extract_Http_Headers struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ObserveRequest_Extract_Http_Headers) Reset() { *m = ObserveRequest_Extract_Http_Headers{} } +func (m *ObserveRequest_Extract_Http_Headers) String() string { return proto.CompactTextString(m) } +func (*ObserveRequest_Extract_Http_Headers) ProtoMessage() {} +func (*ObserveRequest_Extract_Http_Headers) Descriptor() ([]byte, []int) { + return fileDescriptor_tap_ba85d314b39db450, []int{0, 1, 0, 0} +} +func (m *ObserveRequest_Extract_Http_Headers) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ObserveRequest_Extract_Http_Headers.Unmarshal(m, b) +} +func (m *ObserveRequest_Extract_Http_Headers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ObserveRequest_Extract_Http_Headers.Marshal(b, m, deterministic) +} +func (dst *ObserveRequest_Extract_Http_Headers) XXX_Merge(src proto.Message) { + xxx_messageInfo_ObserveRequest_Extract_Http_Headers.Merge(dst, src) +} +func (m *ObserveRequest_Extract_Http_Headers) XXX_Size() int { + return xxx_messageInfo_ObserveRequest_Extract_Http_Headers.Size(m) +} +func (m *ObserveRequest_Extract_Http_Headers) XXX_DiscardUnknown() { + xxx_messageInfo_ObserveRequest_Extract_Http_Headers.DiscardUnknown(m) +} + +var xxx_messageInfo_ObserveRequest_Extract_Http_Headers proto.InternalMessageInfo + type Eos struct { // Types that are valid to be assigned to End: // *Eos_GrpcStatusCode @@ -1130,7 +1394,7 @@ func (m *Eos) Reset() { *m = Eos{} } func (m *Eos) String() string { return proto.CompactTextString(m) } func (*Eos) ProtoMessage() {} func (*Eos) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{1} + return fileDescriptor_tap_ba85d314b39db450, []int{1} } func (m *Eos) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Eos.Unmarshal(m, b) @@ -1270,7 +1534,7 @@ func (m *TapEvent) Reset() { *m = TapEvent{} } func (m *TapEvent) String() string { return proto.CompactTextString(m) } func (*TapEvent) ProtoMessage() {} func (*TapEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2} + return fileDescriptor_tap_ba85d314b39db450, []int{2} } func (m *TapEvent) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent.Unmarshal(m, b) @@ -1422,7 +1686,7 @@ func (m *TapEvent_EndpointMeta) Reset() { *m = TapEvent_EndpointMeta{} } func (m *TapEvent_EndpointMeta) String() string { return proto.CompactTextString(m) } func (*TapEvent_EndpointMeta) ProtoMessage() {} func (*TapEvent_EndpointMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 0} } func (m *TapEvent_EndpointMeta) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_EndpointMeta.Unmarshal(m, b) @@ -1460,7 +1724,7 @@ func (m *TapEvent_RouteMeta) Reset() { *m = TapEvent_RouteMeta{} } func (m *TapEvent_RouteMeta) String() string { return proto.CompactTextString(m) } func (*TapEvent_RouteMeta) ProtoMessage() {} func (*TapEvent_RouteMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 1} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 1} } func (m *TapEvent_RouteMeta) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_RouteMeta.Unmarshal(m, b) @@ -1502,7 +1766,7 @@ func (m *TapEvent_Http) Reset() { *m = TapEvent_Http{} } func (m *TapEvent_Http) String() string { return proto.CompactTextString(m) } func (*TapEvent_Http) ProtoMessage() {} func (*TapEvent_Http) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 2} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 2} } func (m *TapEvent_Http) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_Http.Unmarshal(m, b) @@ -1679,7 +1943,7 @@ func (m *TapEvent_Http_StreamId) Reset() { *m = TapEvent_Http_StreamId{} func (m *TapEvent_Http_StreamId) String() string { return proto.CompactTextString(m) } func (*TapEvent_Http_StreamId) ProtoMessage() {} func (*TapEvent_Http_StreamId) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 2, 0} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 2, 0} } func (m *TapEvent_Http_StreamId) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_Http_StreamId.Unmarshal(m, b) @@ -1719,6 +1983,7 @@ type TapEvent_Http_RequestInit struct { Scheme *http_types.Scheme `protobuf:"bytes,3,opt,name=scheme,proto3" json:"scheme,omitempty"` Authority string `protobuf:"bytes,4,opt,name=authority,proto3" json:"authority,omitempty"` Path string `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` + Headers *http_types.Headers `protobuf:"bytes,6,opt,name=headers,proto3" json:"headers,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1728,7 +1993,7 @@ func (m *TapEvent_Http_RequestInit) Reset() { *m = TapEvent_Http_Request func (m *TapEvent_Http_RequestInit) String() string { return proto.CompactTextString(m) } func (*TapEvent_Http_RequestInit) ProtoMessage() {} func (*TapEvent_Http_RequestInit) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 2, 1} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 2, 1} } func (m *TapEvent_Http_RequestInit) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_Http_RequestInit.Unmarshal(m, b) @@ -1783,10 +2048,18 @@ func (m *TapEvent_Http_RequestInit) GetPath() string { return "" } +func (m *TapEvent_Http_RequestInit) GetHeaders() *http_types.Headers { + if m != nil { + return m.Headers + } + return nil +} + type TapEvent_Http_ResponseInit struct { Id *TapEvent_Http_StreamId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SinceRequestInit *duration.Duration `protobuf:"bytes,2,opt,name=since_request_init,json=sinceRequestInit,proto3" json:"since_request_init,omitempty"` HttpStatus uint32 `protobuf:"varint,3,opt,name=http_status,json=httpStatus,proto3" json:"http_status,omitempty"` + Headers *http_types.Headers `protobuf:"bytes,4,opt,name=headers,proto3" json:"headers,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1796,7 +2069,7 @@ func (m *TapEvent_Http_ResponseInit) Reset() { *m = TapEvent_Http_Respon func (m *TapEvent_Http_ResponseInit) String() string { return proto.CompactTextString(m) } func (*TapEvent_Http_ResponseInit) ProtoMessage() {} func (*TapEvent_Http_ResponseInit) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 2, 2} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 2, 2} } func (m *TapEvent_Http_ResponseInit) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_Http_ResponseInit.Unmarshal(m, b) @@ -1837,12 +2110,20 @@ func (m *TapEvent_Http_ResponseInit) GetHttpStatus() uint32 { return 0 } +func (m *TapEvent_Http_ResponseInit) GetHeaders() *http_types.Headers { + if m != nil { + return m.Headers + } + return nil +} + type TapEvent_Http_ResponseEnd struct { Id *TapEvent_Http_StreamId `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` SinceRequestInit *duration.Duration `protobuf:"bytes,2,opt,name=since_request_init,json=sinceRequestInit,proto3" json:"since_request_init,omitempty"` SinceResponseInit *duration.Duration `protobuf:"bytes,3,opt,name=since_response_init,json=sinceResponseInit,proto3" json:"since_response_init,omitempty"` ResponseBytes uint64 `protobuf:"varint,4,opt,name=response_bytes,json=responseBytes,proto3" json:"response_bytes,omitempty"` Eos *Eos `protobuf:"bytes,5,opt,name=eos,proto3" json:"eos,omitempty"` + Trailers *http_types.Headers `protobuf:"bytes,6,opt,name=trailers,proto3" json:"trailers,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1852,7 +2133,7 @@ func (m *TapEvent_Http_ResponseEnd) Reset() { *m = TapEvent_Http_Respons func (m *TapEvent_Http_ResponseEnd) String() string { return proto.CompactTextString(m) } func (*TapEvent_Http_ResponseEnd) ProtoMessage() {} func (*TapEvent_Http_ResponseEnd) Descriptor() ([]byte, []int) { - return fileDescriptor_tap_5fb463e7ef1c5557, []int{2, 2, 3} + return fileDescriptor_tap_ba85d314b39db450, []int{2, 2, 3} } func (m *TapEvent_Http_ResponseEnd) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TapEvent_Http_ResponseEnd.Unmarshal(m, b) @@ -1907,6 +2188,13 @@ func (m *TapEvent_Http_ResponseEnd) GetEos() *Eos { return nil } +func (m *TapEvent_Http_ResponseEnd) GetTrailers() *http_types.Headers { + if m != nil { + return m.Trailers + } + return nil +} + func init() { proto.RegisterType((*ObserveRequest)(nil), "io.linkerd.proxy.tap.ObserveRequest") proto.RegisterType((*ObserveRequest_Match)(nil), "io.linkerd.proxy.tap.ObserveRequest.Match") @@ -1917,6 +2205,9 @@ func init() { proto.RegisterType((*ObserveRequest_Match_Tcp_PortRange)(nil), "io.linkerd.proxy.tap.ObserveRequest.Match.Tcp.PortRange") proto.RegisterType((*ObserveRequest_Match_Http)(nil), "io.linkerd.proxy.tap.ObserveRequest.Match.Http") proto.RegisterType((*ObserveRequest_Match_Http_StringMatch)(nil), "io.linkerd.proxy.tap.ObserveRequest.Match.Http.StringMatch") + proto.RegisterType((*ObserveRequest_Extract)(nil), "io.linkerd.proxy.tap.ObserveRequest.Extract") + proto.RegisterType((*ObserveRequest_Extract_Http)(nil), "io.linkerd.proxy.tap.ObserveRequest.Extract.Http") + proto.RegisterType((*ObserveRequest_Extract_Http_Headers)(nil), "io.linkerd.proxy.tap.ObserveRequest.Extract.Http.Headers") proto.RegisterType((*Eos)(nil), "io.linkerd.proxy.tap.Eos") proto.RegisterType((*TapEvent)(nil), "io.linkerd.proxy.tap.TapEvent") proto.RegisterType((*TapEvent_EndpointMeta)(nil), "io.linkerd.proxy.tap.TapEvent.EndpointMeta") @@ -2030,87 +2321,93 @@ var _Tap_serviceDesc = grpc.ServiceDesc{ Metadata: "tap.proto", } -func init() { proto.RegisterFile("tap.proto", fileDescriptor_tap_5fb463e7ef1c5557) } - -var fileDescriptor_tap_5fb463e7ef1c5557 = []byte{ - // 1253 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0x5b, 0x8f, 0xd3, 0x46, - 0x14, 0x4e, 0xec, 0x5c, 0x36, 0x27, 0xd9, 0x10, 0xa6, 0x08, 0x05, 0xab, 0x82, 0xd5, 0xb6, 0x55, - 0x11, 0x17, 0x07, 0x6d, 0x2b, 0xba, 0x94, 0xde, 0x48, 0x37, 0x22, 0x2b, 0x20, 0xbb, 0x9d, 0x04, - 0x90, 0xe8, 0x43, 0xe4, 0xd8, 0x43, 0x62, 0x91, 0x78, 0xcc, 0xcc, 0x04, 0x91, 0xdf, 0xd0, 0xd7, - 0x3e, 0xf5, 0xb1, 0x7f, 0xa1, 0x6a, 0xab, 0x3e, 0xf4, 0x97, 0xf5, 0xa5, 0x9a, 0x8b, 0x8d, 0x03, - 0x0b, 0xc4, 0xd0, 0x87, 0x3e, 0xe5, 0x9c, 0x99, 0x39, 0x9f, 0xcf, 0x9c, 0x73, 0xfc, 0x7d, 0x0e, - 0xd4, 0x84, 0x17, 0xbb, 0x31, 0xa3, 0x82, 0xa2, 0x33, 0x21, 0x75, 0xe7, 0x61, 0xf4, 0x84, 0xb0, - 0x40, 0xae, 0x3c, 0x5f, 0xb9, 0xc2, 0x8b, 0x9d, 0xf3, 0x53, 0x4a, 0xa7, 0x73, 0xd2, 0x51, 0x67, - 0x26, 0xcb, 0xc7, 0x9d, 0x60, 0xc9, 0x3c, 0x11, 0xd2, 0x48, 0x47, 0x39, 0xad, 0x99, 0x10, 0xf1, - 0x58, 0xac, 0x62, 0xc2, 0xcd, 0x4a, 0x2d, 0x22, 0x42, 0x9b, 0xbb, 0xbf, 0x36, 0xa0, 0x79, 0x34, - 0xe1, 0x84, 0x3d, 0x23, 0x98, 0x3c, 0x5d, 0x12, 0x2e, 0xd0, 0x19, 0x28, 0xcf, 0xc3, 0x45, 0x28, - 0xda, 0xc5, 0x9d, 0xe2, 0xc5, 0x6d, 0xac, 0x1d, 0xf4, 0x1d, 0x94, 0x17, 0x9e, 0xf0, 0x67, 0x6d, - 0x6b, 0xa7, 0x78, 0xb1, 0xbe, 0x77, 0xc9, 0x3d, 0x29, 0x17, 0x77, 0x1d, 0xca, 0xbd, 0x27, 0x23, - 0xb0, 0x0e, 0x74, 0xfe, 0xac, 0x43, 0x59, 0x2d, 0xa0, 0x2e, 0xd8, 0xde, 0x7c, 0xae, 0xf0, 0xeb, - 0x7b, 0xee, 0xe6, 0x48, 0xee, 0x90, 0x3c, 0xed, 0x17, 0xb0, 0x0c, 0x56, 0x18, 0xd1, 0xca, 0x64, - 0xf3, 0x2e, 0x18, 0xd1, 0x0a, 0x7d, 0x03, 0x76, 0x44, 0x45, 0xdb, 0xce, 0x7b, 0x23, 0x19, 0x1f, - 0x51, 0x81, 0xfa, 0x50, 0xe1, 0x74, 0xc9, 0x7c, 0xd2, 0x2e, 0xe5, 0x4e, 0x63, 0xe4, 0xc7, 0xfd, - 0x02, 0x36, 0xf1, 0x08, 0x43, 0x3d, 0x20, 0x5c, 0x84, 0x91, 0x6a, 0x5c, 0xbb, 0xfc, 0x8e, 0x70, - 0x59, 0x10, 0xd4, 0x83, 0x92, 0xec, 0x7c, 0xbb, 0xa2, 0xc0, 0x3a, 0x39, 0xc0, 0xfa, 0x42, 0x48, - 0x34, 0x15, 0x8e, 0xc6, 0x70, 0x3a, 0x83, 0x3a, 0x9e, 0x7b, 0x13, 0x32, 0x6f, 0x57, 0x15, 0xe6, - 0xb5, 0x1c, 0x98, 0x77, 0x65, 0x5c, 0xbf, 0x80, 0x5b, 0x19, 0x30, 0xb5, 0x86, 0x86, 0x50, 0x67, - 0x74, 0x29, 0x88, 0x81, 0xde, 0x7a, 0x67, 0x68, 0x50, 0x30, 0xca, 0x73, 0xee, 0x80, 0x3d, 0x24, - 0x4f, 0xd1, 0x01, 0x54, 0xd5, 0xf0, 0x11, 0xde, 0x2e, 0xee, 0xd8, 0x39, 0xe7, 0x36, 0x09, 0x75, - 0x3a, 0x50, 0xd6, 0xa9, 0xb6, 0xc0, 0x7e, 0x42, 0x56, 0x6a, 0x70, 0x6b, 0x58, 0x9a, 0xf2, 0x65, - 0x79, 0xe6, 0xcd, 0x97, 0x44, 0x0d, 0x62, 0x0d, 0x6b, 0xc7, 0xf9, 0xdd, 0x02, 0x7b, 0xe4, 0xc7, - 0x08, 0x43, 0x35, 0x22, 0x62, 0xe1, 0xf1, 0x27, 0x66, 0xd8, 0xaf, 0xe7, 0x6b, 0xa9, 0x3b, 0xd0, - 0xd1, 0xfd, 0x02, 0x4e, 0x80, 0xd0, 0x31, 0x94, 0x63, 0xca, 0x04, 0x37, 0x63, 0xbb, 0x9f, 0x13, - 0xf1, 0x98, 0x32, 0x81, 0xbd, 0x68, 0x4a, 0xfa, 0x05, 0xac, 0x81, 0x9c, 0x01, 0x54, 0xcd, 0x73, - 0x50, 0x07, 0xac, 0x30, 0x36, 0xb9, 0x5e, 0x78, 0x15, 0x59, 0xf2, 0xc6, 0xe1, 0xf1, 0xad, 0x20, - 0x60, 0x84, 0x73, 0x6c, 0x85, 0x31, 0x42, 0x50, 0x52, 0xd7, 0xb3, 0x14, 0x57, 0x28, 0xdb, 0xe9, - 0x40, 0x2d, 0x7d, 0x8a, 0x2c, 0xd9, 0x22, 0x8c, 0x0c, 0x97, 0x48, 0x53, 0xad, 0x78, 0xcf, 0x4d, - 0x84, 0x34, 0xbb, 0x55, 0xc3, 0x2d, 0xce, 0x4f, 0x36, 0x94, 0xe4, 0xf0, 0xa1, 0xaf, 0xa1, 0xc2, - 0xfd, 0x19, 0x59, 0x10, 0x93, 0xcb, 0x47, 0xaf, 0xe6, 0x92, 0x61, 0xb5, 0xa1, 0x3a, 0xaa, 0x5e, - 0x27, 0x65, 0xa1, 0x5b, 0x50, 0x59, 0x10, 0x31, 0xa3, 0x81, 0x29, 0xd2, 0xa7, 0x6f, 0x0c, 0x97, - 0x4f, 0xbc, 0xa7, 0x8e, 0x4b, 0x08, 0x1d, 0x88, 0x7e, 0x84, 0x9a, 0xb7, 0x14, 0x33, 0xca, 0x42, - 0x91, 0xb0, 0xcc, 0xcd, 0x9c, 0xaf, 0x90, 0x3b, 0x14, 0x2c, 0x8c, 0xa6, 0x09, 0x65, 0xbc, 0xc0, - 0x43, 0x3f, 0x40, 0x29, 0xf6, 0xc4, 0xcc, 0xd0, 0xc6, 0x7b, 0xe2, 0x2a, 0x28, 0xa7, 0x0f, 0xf5, - 0xcc, 0x32, 0x3a, 0x0b, 0x65, 0xf2, 0xdc, 0xf3, 0x35, 0x89, 0xd7, 0x64, 0xaf, 0x95, 0x8b, 0xda, - 0x50, 0x89, 0x19, 0x79, 0x1c, 0xea, 0xfa, 0xcb, 0x0d, 0xe3, 0xa7, 0x4d, 0x78, 0xd5, 0xd8, 0x0d, - 0xc0, 0xee, 0x51, 0x8e, 0x2e, 0x41, 0x6b, 0xca, 0x62, 0x7f, 0xcc, 0x85, 0x27, 0x96, 0x7c, 0xec, - 0xd3, 0x40, 0xb7, 0x67, 0xbb, 0x5f, 0xc0, 0x4d, 0xb9, 0x33, 0x54, 0x1b, 0xdf, 0xd3, 0x80, 0xc8, - 0xb3, 0x8c, 0x70, 0x22, 0xc6, 0x84, 0x31, 0xca, 0xf4, 0x59, 0x2b, 0x39, 0xab, 0x76, 0x7a, 0x72, - 0x43, 0x9e, 0xed, 0x96, 0xc1, 0x26, 0x51, 0xb0, 0xfb, 0xf7, 0x29, 0xd8, 0x1a, 0x79, 0x71, 0xef, - 0x19, 0x89, 0x04, 0xda, 0x4f, 0xa9, 0x55, 0x0f, 0xc0, 0xce, 0xc9, 0xc3, 0x38, 0xf2, 0xe3, 0x64, - 0x1a, 0x13, 0x2a, 0xbd, 0x0b, 0x75, 0x6d, 0x8d, 0x17, 0x44, 0x78, 0x86, 0x4a, 0x2f, 0x9f, 0x5c, - 0xe2, 0xe4, 0x71, 0x6e, 0x2f, 0x0a, 0x62, 0x1a, 0x46, 0xe2, 0x1e, 0x11, 0x1e, 0x06, 0x1d, 0x2f, - 0x6d, 0x74, 0x1b, 0x34, 0xab, 0x68, 0x30, 0x4d, 0x7b, 0x17, 0xdf, 0x02, 0x86, 0x65, 0x80, 0x42, - 0xaa, 0xb1, 0xc4, 0x44, 0xdd, 0x75, 0x86, 0xb7, 0x36, 0xbc, 0xd5, 0x1a, 0xa3, 0x3f, 0x80, 0x2c, - 0x7b, 0xea, 0x94, 0x4a, 0xf9, 0xef, 0x77, 0x2a, 0x03, 0xa2, 0x72, 0x7b, 0x00, 0xa7, 0x54, 0xcc, - 0x38, 0x08, 0x19, 0xf1, 0x55, 0x7e, 0x52, 0x34, 0x9a, 0x7b, 0x57, 0xdf, 0x02, 0x7b, 0x2c, 0x97, - 0x0e, 0x92, 0x20, 0xdc, 0x8c, 0xd7, 0x7c, 0x74, 0xc3, 0x28, 0x90, 0xfd, 0xba, 0x77, 0x78, 0x0d, - 0x2c, 0xab, 0x3a, 0xce, 0x2f, 0x45, 0x68, 0x64, 0x93, 0x46, 0x47, 0x50, 0x51, 0xfa, 0x90, 0x10, - 0xf9, 0x17, 0x39, 0x6e, 0xac, 0x15, 0x82, 0xf7, 0x22, 0xc1, 0x56, 0xd8, 0xc0, 0x38, 0x37, 0xa0, - 0x9e, 0x59, 0xde, 0x94, 0xda, 0xbf, 0xb4, 0xf6, 0x8b, 0xce, 0xcf, 0x45, 0xa8, 0xa5, 0x4d, 0x46, - 0x77, 0x5f, 0xca, 0xec, 0xf3, 0x4d, 0xc7, 0xe3, 0xbf, 0x4e, 0xeb, 0xaf, 0x2d, 0xc3, 0x9e, 0x23, - 0x68, 0x30, 0xcd, 0x1a, 0xe3, 0x30, 0x32, 0x1f, 0x72, 0xaf, 0xfd, 0x02, 0x58, 0xab, 0xbf, 0x6b, - 0xd8, 0xe6, 0x30, 0x0a, 0x85, 0xfc, 0x9e, 0x60, 0x2f, 0x5c, 0xf4, 0x10, 0xb6, 0x19, 0xe1, 0x31, - 0x8d, 0x38, 0xd1, 0xb0, 0xd6, 0x9b, 0x94, 0xfa, 0x65, 0x58, 0x1d, 0x68, 0x70, 0x1b, 0x2c, 0xe3, - 0xeb, 0x74, 0x0d, 0x30, 0x89, 0x12, 0xce, 0xee, 0xe4, 0xc1, 0xed, 0x45, 0x81, 0x4e, 0x37, 0x75, - 0x9d, 0xeb, 0xb0, 0x35, 0x14, 0x8c, 0x78, 0x8b, 0xc3, 0x40, 0xaa, 0xd4, 0xc4, 0xe3, 0x86, 0xad, - 0xb0, 0xb2, 0xd1, 0x59, 0xa8, 0x70, 0xb5, 0xaf, 0xee, 0x51, 0xc2, 0xc6, 0x73, 0xfe, 0x29, 0x42, - 0x3d, 0x53, 0x05, 0xf4, 0x15, 0x58, 0x61, 0x60, 0x4a, 0x78, 0x65, 0x93, 0x9c, 0x92, 0xa7, 0x62, - 0x2b, 0x0c, 0xd0, 0xb7, 0xa9, 0x12, 0x59, 0xb9, 0x94, 0x28, 0xd5, 0xa1, 0x9b, 0xa9, 0x12, 0xda, - 0x1b, 0x2b, 0x61, 0xaa, 0x83, 0x1f, 0x66, 0x45, 0xac, 0xa4, 0xe6, 0x25, 0xa3, 0x42, 0xc8, 0xa8, - 0x50, 0x59, 0x6d, 0x68, 0x19, 0xf9, 0xa3, 0x08, 0x8d, 0x6c, 0xb3, 0xde, 0xf3, 0xfa, 0xb7, 0x01, - 0xf1, 0x30, 0xf2, 0xc9, 0x78, 0x6d, 0x1e, 0x75, 0x29, 0xce, 0xb9, 0xfa, 0x8f, 0x8b, 0x9b, 0xfc, - 0x71, 0x71, 0x0f, 0xcc, 0x1f, 0x17, 0xdc, 0x52, 0x41, 0xd9, 0x2e, 0x5c, 0x80, 0xba, 0xba, 0xa6, - 0xd6, 0x1e, 0x55, 0x8b, 0x6d, 0x0c, 0x72, 0x49, 0x8b, 0x8e, 0xf3, 0x9b, 0x25, 0xdb, 0x96, 0xb6, - 0xff, 0xff, 0x92, 0xf7, 0x21, 0x7c, 0x90, 0x00, 0x65, 0x5f, 0x1d, 0xfb, 0x6d, 0x48, 0xa7, 0x0d, - 0x52, 0xa6, 0x13, 0x9f, 0x40, 0x33, 0x05, 0x99, 0xac, 0x04, 0xe1, 0xaa, 0xa3, 0x25, 0x9c, 0xbe, - 0x95, 0x5d, 0xb9, 0x88, 0x2e, 0x83, 0x4d, 0x28, 0x37, 0xba, 0x77, 0xee, 0xe4, 0x9b, 0xf7, 0x28, - 0xc7, 0xf2, 0x94, 0x94, 0x78, 0x22, 0x4b, 0xb0, 0xbb, 0x0f, 0xcd, 0x75, 0x32, 0x47, 0x75, 0xa8, - 0xde, 0x1f, 0xdc, 0x19, 0x1c, 0x3d, 0x1c, 0xb4, 0x0a, 0xd2, 0x39, 0x1c, 0x74, 0x8f, 0xee, 0x0f, - 0x0e, 0x5a, 0x45, 0xd4, 0x80, 0xad, 0xa3, 0xfb, 0x23, 0xed, 0x59, 0x29, 0xc4, 0xde, 0x23, 0xb0, - 0x47, 0x5e, 0x8c, 0x86, 0x50, 0x35, 0x5f, 0x2e, 0xe8, 0xe3, 0x4d, 0x3e, 0x6c, 0x9c, 0xf3, 0x6f, - 0xee, 0xce, 0x6e, 0xe1, 0x5a, 0xb1, 0xeb, 0x3e, 0xba, 0x32, 0x0d, 0xc5, 0x6c, 0x39, 0x71, 0x7d, - 0xba, 0xe8, 0x98, 0xc3, 0xc9, 0xef, 0xde, 0x55, 0x15, 0x75, 0xd5, 0x8b, 0xc3, 0xce, 0x94, 0x76, - 0x84, 0x17, 0x4f, 0x2a, 0xaa, 0xa2, 0x9f, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x40, 0xf2, - 0xa0, 0x3d, 0x0f, 0x00, 0x00, +func init() { proto.RegisterFile("tap.proto", fileDescriptor_tap_ba85d314b39db450) } + +var fileDescriptor_tap_ba85d314b39db450 = []byte{ + // 1358 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xdd, 0x72, 0xdb, 0x44, + 0x14, 0xb6, 0x25, 0xff, 0xc4, 0xc7, 0x89, 0xeb, 0x2e, 0x9d, 0x8e, 0xab, 0x61, 0xda, 0x4c, 0x28, + 0x43, 0xa7, 0x3f, 0x72, 0x09, 0x4c, 0x49, 0x29, 0x94, 0xd6, 0xc4, 0xd4, 0x99, 0xb6, 0x4e, 0x58, + 0x3b, 0xed, 0x4c, 0xb9, 0xf0, 0xc8, 0xd2, 0xd6, 0xd6, 0xd4, 0x96, 0xd4, 0xdd, 0x75, 0x27, 0x7e, + 0x06, 0x6e, 0xb9, 0xe2, 0x3d, 0x18, 0x2e, 0xb8, 0xe0, 0x1d, 0x78, 0x17, 0xb8, 0xe1, 0x02, 0x66, + 0x7f, 0xa4, 0xc8, 0x4d, 0x9a, 0x58, 0x29, 0x17, 0x5c, 0xf9, 0xec, 0xcf, 0xf7, 0xe9, 0x9c, 0xb3, + 0x67, 0xcf, 0xb7, 0x86, 0x0a, 0x77, 0x22, 0x3b, 0xa2, 0x21, 0x0f, 0xd1, 0x05, 0x3f, 0xb4, 0x27, + 0x7e, 0xf0, 0x8a, 0x50, 0x4f, 0xcc, 0x1c, 0xcc, 0x6d, 0xee, 0x44, 0xd6, 0xe5, 0x51, 0x18, 0x8e, + 0x26, 0xa4, 0x29, 0xf7, 0x0c, 0x67, 0x2f, 0x9b, 0xde, 0x8c, 0x3a, 0xdc, 0x0f, 0x03, 0x85, 0xb2, + 0xea, 0x63, 0xce, 0xa3, 0x01, 0x9f, 0x47, 0x84, 0xe9, 0x99, 0x4a, 0x40, 0xb8, 0x32, 0x37, 0x7e, + 0xaf, 0x41, 0x6d, 0x77, 0xc8, 0x08, 0x7d, 0x43, 0x30, 0x79, 0x3d, 0x23, 0x8c, 0xa3, 0x0b, 0x50, + 0x9c, 0xf8, 0x53, 0x9f, 0x37, 0xf2, 0xeb, 0xf9, 0x6b, 0x6b, 0x58, 0x0d, 0xd0, 0x03, 0x28, 0x4e, + 0x1d, 0xee, 0x8e, 0x1b, 0xc6, 0x7a, 0xfe, 0x5a, 0x75, 0xf3, 0xba, 0x7d, 0x9c, 0x2f, 0xf6, 0x22, + 0x95, 0xfd, 0x54, 0x20, 0xb0, 0x02, 0xa2, 0xef, 0xa0, 0x4c, 0x0e, 0x38, 0x75, 0x5c, 0xde, 0x30, + 0x25, 0xc7, 0xcd, 0xa5, 0x38, 0xda, 0x0a, 0x83, 0x63, 0xb0, 0xf5, 0x6b, 0x15, 0x8a, 0x92, 0x18, + 0xb5, 0xc0, 0x74, 0x26, 0x13, 0xe9, 0x67, 0x75, 0xd3, 0x5e, 0xde, 0x23, 0xbb, 0x47, 0x5e, 0x77, + 0x72, 0x58, 0x80, 0x25, 0x47, 0x30, 0xd7, 0x51, 0x9d, 0x85, 0x23, 0x98, 0xa3, 0xfb, 0x60, 0x06, + 0x61, 0x1c, 0x55, 0x86, 0xcc, 0x08, 0x7c, 0x10, 0x72, 0xd4, 0x81, 0x12, 0x0b, 0x67, 0xd4, 0x25, + 0x8d, 0x42, 0x66, 0x37, 0xfa, 0x6e, 0xd4, 0xc9, 0x61, 0x8d, 0x47, 0x18, 0xaa, 0x1e, 0x61, 0xdc, + 0x0f, 0x64, 0x01, 0x34, 0x8a, 0x67, 0xa4, 0x4b, 0x93, 0xa0, 0x36, 0x14, 0x44, 0x05, 0x35, 0x4a, + 0x92, 0xac, 0x99, 0x81, 0xac, 0xc3, 0xb9, 0x60, 0x93, 0x70, 0x34, 0x80, 0xf3, 0x29, 0xd6, 0xc1, + 0xc4, 0x19, 0x92, 0x49, 0xa3, 0x2c, 0x39, 0x6f, 0x67, 0xe0, 0x7c, 0x22, 0x70, 0x9d, 0x1c, 0xae, + 0xa7, 0xc8, 0xe4, 0x1c, 0xea, 0x41, 0x95, 0x86, 0x33, 0x4e, 0x34, 0xf5, 0xca, 0x99, 0xa9, 0x41, + 0xd2, 0xc8, 0x91, 0xf5, 0x18, 0xcc, 0x1e, 0x79, 0x8d, 0xb6, 0xa1, 0x2c, 0x8b, 0x98, 0xb0, 0x46, + 0x7e, 0xdd, 0xcc, 0x58, 0xff, 0x31, 0xd4, 0x6a, 0x42, 0x51, 0xb9, 0x5a, 0x07, 0xf3, 0x15, 0x99, + 0xcb, 0xc2, 0xad, 0x60, 0x61, 0x8a, 0x4b, 0xf7, 0xc6, 0x99, 0xcc, 0x88, 0x2c, 0xc4, 0x0a, 0x56, + 0x03, 0xeb, 0x17, 0x03, 0xcc, 0xbe, 0x1b, 0x21, 0x0c, 0xe5, 0x80, 0xf0, 0xa9, 0xc3, 0x5e, 0xe9, + 0x62, 0xbf, 0x93, 0xed, 0x48, 0xed, 0xae, 0x42, 0x77, 0x72, 0x38, 0x26, 0x42, 0x7b, 0x50, 0x8c, + 0x42, 0xca, 0x99, 0x2e, 0xdb, 0xad, 0x8c, 0x8c, 0x7b, 0x21, 0xe5, 0xd8, 0x09, 0x46, 0xa4, 0x93, + 0xc3, 0x8a, 0xc8, 0xea, 0x42, 0x59, 0x7f, 0x07, 0x35, 0xc1, 0xf0, 0x23, 0xed, 0xeb, 0x95, 0xa3, + 0xcc, 0xa2, 0xff, 0xec, 0xec, 0x3d, 0xf4, 0x3c, 0x4a, 0x18, 0xc3, 0x86, 0x1f, 0x21, 0x04, 0x05, + 0x19, 0x9e, 0x21, 0x7b, 0x8e, 0xb4, 0xad, 0x26, 0x54, 0x92, 0xaf, 0x88, 0x94, 0x4d, 0xfd, 0x40, + 0xf7, 0x24, 0x61, 0xca, 0x19, 0xe7, 0x40, 0x23, 0x84, 0xd9, 0x2a, 0xeb, 0x1e, 0x65, 0xfd, 0x68, + 0x42, 0x41, 0x14, 0x1f, 0xfa, 0x1a, 0x4a, 0xcc, 0x1d, 0x93, 0x29, 0xd1, 0xbe, 0x7c, 0x74, 0xd4, + 0x97, 0x54, 0x77, 0xec, 0xc9, 0xad, 0xf2, 0x3a, 0x49, 0x0b, 0x3d, 0x84, 0xd2, 0x94, 0xf0, 0x71, + 0xe8, 0xe9, 0x24, 0x7d, 0x72, 0x22, 0x5c, 0x7c, 0xf1, 0xa9, 0xdc, 0x2e, 0x28, 0x14, 0x10, 0xfd, + 0x00, 0x15, 0x67, 0xc6, 0xc7, 0x21, 0xf5, 0x79, 0xdc, 0x65, 0xee, 0x65, 0xbc, 0x42, 0x76, 0x8f, + 0x53, 0x3f, 0x18, 0xc5, 0x2d, 0xe3, 0x90, 0x0f, 0x7d, 0x0f, 0x85, 0xc8, 0xe1, 0x63, 0xdd, 0x36, + 0xde, 0x93, 0x57, 0x52, 0x59, 0x1d, 0xa8, 0xa6, 0xa6, 0xd1, 0x45, 0x28, 0x92, 0x03, 0xd1, 0xb2, + 0x65, 0xad, 0x8a, 0xb3, 0x96, 0x43, 0xd4, 0x80, 0x52, 0x44, 0xc9, 0x4b, 0x5f, 0xe5, 0x5f, 0x2c, + 0xe8, 0x71, 0x72, 0x08, 0x47, 0x0d, 0xeb, 0x8f, 0x3c, 0x94, 0x75, 0x3b, 0x47, 0x8f, 0x74, 0x57, + 0x51, 0xe7, 0xf2, 0x69, 0x16, 0x29, 0x58, 0xe8, 0x2b, 0x16, 0xd3, 0x47, 0xbd, 0x0f, 0xe5, 0x31, + 0x71, 0x3c, 0x42, 0x99, 0xe6, 0xbc, 0x9b, 0x99, 0xd3, 0xee, 0x28, 0x02, 0x71, 0x4d, 0x34, 0x97, + 0x55, 0x81, 0xb2, 0x9e, 0x6d, 0x55, 0x12, 0x01, 0x4b, 0x99, 0x1b, 0x1e, 0x98, 0xed, 0x90, 0xa1, + 0xeb, 0x50, 0x1f, 0xd1, 0xc8, 0x1d, 0x30, 0xee, 0xf0, 0x19, 0x1b, 0xb8, 0xa1, 0xa7, 0x6a, 0x6e, + 0xad, 0x93, 0xc3, 0x35, 0xb1, 0xd2, 0x93, 0x0b, 0xdf, 0x86, 0x1e, 0x11, 0x7b, 0x29, 0x61, 0x84, + 0x0f, 0x08, 0xa5, 0x21, 0x55, 0x7b, 0x8d, 0x78, 0xaf, 0x5c, 0x69, 0x8b, 0x05, 0xb1, 0xb7, 0x55, + 0x04, 0x93, 0x04, 0xde, 0xc6, 0x3f, 0x75, 0x58, 0xe9, 0x3b, 0x51, 0xfb, 0x0d, 0x09, 0x38, 0xda, + 0x4a, 0xf4, 0x42, 0x45, 0xba, 0x7e, 0xfc, 0x0d, 0xeb, 0xbb, 0x51, 0x7c, 0xc5, 0x62, 0x7d, 0x78, + 0x02, 0x55, 0x65, 0x0d, 0xa6, 0x84, 0x3b, 0x5a, 0x1f, 0x6e, 0x1c, 0x9f, 0xa8, 0xf8, 0x73, 0x76, + 0x3b, 0xf0, 0xa2, 0xd0, 0x0f, 0xf8, 0x53, 0xc2, 0x1d, 0x0c, 0x0a, 0x2f, 0x6c, 0xf4, 0x08, 0x54, + 0xab, 0x54, 0x64, 0xaa, 0x97, 0x5f, 0x3b, 0x85, 0x0c, 0x0b, 0x80, 0x64, 0xaa, 0xd0, 0xd8, 0x44, + 0xad, 0x45, 0xd9, 0x32, 0x96, 0x8c, 0x6a, 0x41, 0xa6, 0x9e, 0x41, 0x5a, 0x12, 0x94, 0x4b, 0x85, + 0xec, 0xf1, 0x9d, 0x4b, 0x91, 0x48, 0xdf, 0x9e, 0xc1, 0x39, 0x89, 0x19, 0x78, 0x3e, 0x25, 0xae, + 0xf4, 0x4f, 0x28, 0x61, 0x6d, 0xf3, 0xd6, 0x29, 0xb4, 0x7b, 0x62, 0x6a, 0x3b, 0x06, 0xe1, 0x5a, + 0xb4, 0x30, 0x46, 0x77, 0xf5, 0x05, 0x30, 0xdf, 0xd5, 0x98, 0x16, 0xc8, 0x16, 0x4a, 0xfe, 0xe7, + 0x3c, 0xac, 0xa6, 0x9d, 0x46, 0xbb, 0x50, 0x92, 0xa2, 0x17, 0xab, 0xd3, 0x17, 0x19, 0x22, 0x56, + 0xb2, 0xc7, 0xda, 0x01, 0xa7, 0x73, 0xac, 0x69, 0xac, 0xbb, 0x50, 0x4d, 0x4d, 0x2f, 0xab, 0x57, + 0x5f, 0x1a, 0x5b, 0x79, 0xeb, 0xa7, 0x3c, 0x54, 0x92, 0x43, 0x46, 0x4f, 0xde, 0xf2, 0xec, 0xf3, + 0x65, 0xcb, 0xe3, 0xbf, 0x76, 0xeb, 0xef, 0x8a, 0xee, 0x13, 0x7d, 0x58, 0xa5, 0xea, 0xee, 0x0f, + 0xfc, 0x40, 0xbf, 0x72, 0xdf, 0xf9, 0xac, 0x59, 0xc8, 0xbf, 0xad, 0x7b, 0xc6, 0x4e, 0xe0, 0x73, + 0xf1, 0x48, 0xa2, 0x87, 0x43, 0xf4, 0x1c, 0xd6, 0x28, 0x61, 0x51, 0x18, 0x30, 0xa2, 0x68, 0x8d, + 0x93, 0x9e, 0x1f, 0x6f, 0xd3, 0x2a, 0xa0, 0xe6, 0x5d, 0xa5, 0xa9, 0xb1, 0x72, 0x57, 0x13, 0x93, + 0x20, 0x16, 0xa2, 0x66, 0x16, 0xde, 0x76, 0xe0, 0x29, 0x77, 0x93, 0xa1, 0x75, 0x07, 0x56, 0x7a, + 0x9c, 0x12, 0x67, 0xba, 0xe3, 0x09, 0xe9, 0x1d, 0x3a, 0x4c, 0x77, 0x2b, 0x2c, 0x6d, 0x74, 0x11, + 0x4a, 0x4c, 0xae, 0xcb, 0x38, 0x0a, 0x58, 0x8f, 0xac, 0xdf, 0x0c, 0xa8, 0xa6, 0xb2, 0x80, 0xbe, + 0x02, 0xc3, 0xf7, 0x74, 0x0a, 0x6f, 0x2e, 0xe3, 0x53, 0xfc, 0x55, 0x6c, 0xf8, 0x1e, 0xfa, 0x26, + 0x91, 0x57, 0x23, 0x93, 0xbc, 0x26, 0xe2, 0x7a, 0x2f, 0x91, 0x77, 0x73, 0x69, 0x79, 0x4f, 0xc4, + 0xfd, 0xc3, 0xb4, 0x32, 0x17, 0x64, 0xbd, 0xa4, 0xa4, 0x15, 0x69, 0x69, 0x2d, 0xca, 0x05, 0x69, + 0xa3, 0xfb, 0x87, 0x12, 0xa3, 0x1e, 0xc3, 0x57, 0x4f, 0x76, 0x58, 0xed, 0x3d, 0xd4, 0x92, 0xbf, + 0xf2, 0xb0, 0x9a, 0x3e, 0xec, 0xf7, 0x4c, 0xdf, 0x23, 0x40, 0xcc, 0x0f, 0x5c, 0x32, 0x58, 0xa8, + 0x67, 0x95, 0xca, 0x4b, 0xb6, 0xfa, 0x57, 0x68, 0xc7, 0xff, 0x0a, 0xed, 0x6d, 0xfd, 0xaf, 0x10, + 0xd7, 0x25, 0x28, 0x7d, 0x8a, 0x57, 0xa0, 0x2a, 0xdd, 0x56, 0xda, 0x25, 0x73, 0xb9, 0x86, 0x41, + 0x4c, 0x29, 0xd1, 0x4a, 0x07, 0x5e, 0x38, 0x4b, 0xe0, 0x7f, 0xca, 0xb2, 0x49, 0xca, 0xef, 0xff, + 0x12, 0xf7, 0x0e, 0x7c, 0x10, 0x13, 0xa5, 0xaf, 0xae, 0x79, 0x1a, 0xd3, 0x79, 0xcd, 0x94, 0x3a, + 0xc9, 0x8f, 0xa1, 0x96, 0x90, 0x0c, 0xe7, 0x9c, 0xa8, 0x44, 0x15, 0x70, 0xd2, 0x15, 0x5a, 0x62, + 0x12, 0xdd, 0x00, 0x93, 0x84, 0x4c, 0xeb, 0xee, 0xa5, 0xe3, 0x23, 0x6f, 0x87, 0x0c, 0x8b, 0x5d, + 0xe8, 0x01, 0xac, 0x70, 0xea, 0xf8, 0x93, 0xac, 0xf5, 0x96, 0xa0, 0xc4, 0xcb, 0x8b, 0x88, 0x24, + 0x6e, 0x6c, 0x41, 0x6d, 0x51, 0x8e, 0x50, 0x15, 0xca, 0xfb, 0xdd, 0xc7, 0xdd, 0xdd, 0xe7, 0xdd, + 0x7a, 0x4e, 0x0c, 0x76, 0xba, 0xad, 0xdd, 0xfd, 0xee, 0x76, 0x3d, 0x8f, 0x56, 0x61, 0x65, 0x77, + 0xbf, 0xaf, 0x46, 0x46, 0x42, 0xb1, 0xf9, 0x02, 0xcc, 0xbe, 0x13, 0xa1, 0x1e, 0x94, 0xf5, 0x0b, + 0x0a, 0x5d, 0x5d, 0xe6, 0x81, 0x65, 0x5d, 0x3e, 0xf9, 0x7c, 0x37, 0x72, 0xb7, 0xf3, 0x2d, 0xfb, + 0xc5, 0xcd, 0x91, 0xcf, 0xc7, 0xb3, 0xa1, 0xed, 0x86, 0xd3, 0xa6, 0xde, 0x1c, 0xff, 0x6e, 0xde, + 0x92, 0xa8, 0x5b, 0x4e, 0xe4, 0x37, 0x47, 0x61, 0x93, 0x3b, 0xd1, 0xb0, 0x24, 0xcf, 0xe4, 0xb3, + 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x85, 0x84, 0x1d, 0x1c, 0x11, 0x00, 0x00, } diff --git a/proto/http_types.proto b/proto/http_types.proto index f15f80607..97aa3b607 100644 --- a/proto/http_types.proto +++ b/proto/http_types.proto @@ -33,4 +33,13 @@ message Scheme { Registered registered = 1; string unregistered = 2; } +} + +message Headers { + message Header { + string name = 1; + bytes value = 2; + } + + repeated Header headers = 1; } \ No newline at end of file diff --git a/proto/tap.proto b/proto/tap.proto index 1a17e7a89..d54b55a68 100644 --- a/proto/tap.proto +++ b/proto/tap.proto @@ -85,6 +85,24 @@ message ObserveRequest { } } } + + // Conditionally extracts components from requests and responses to include + // in tap events + Extract extract = 3; + + message Extract { + oneof extract { + Http http = 1; + } + + message Http { + oneof extract { + Headers headers = 1; + } + + message Headers {} + } + } } message Eos { @@ -143,7 +161,7 @@ message TapEvent { http_types.Scheme scheme = 3; string authority = 4; string path = 5; - // TODO headers + http_types.Headers headers = 6; } message ResponseInit { @@ -152,6 +170,7 @@ message TapEvent { google.protobuf.Duration since_request_init = 2; uint32 http_status = 3; + http_types.Headers headers = 4; } message ResponseEnd { @@ -162,6 +181,7 @@ message TapEvent { uint64 response_bytes = 4; Eos eos = 5; + http_types.Headers trailers = 6; } } } \ No newline at end of file diff --git a/rs/src/arbitrary.rs b/rs/src/arbitrary.rs index 3f6295a8b..dbcb70846 100644 --- a/rs/src/arbitrary.rs +++ b/rs/src/arbitrary.rs @@ -14,6 +14,7 @@ impl Arbitrary for ObserveRequest { ObserveRequest { limit: g.gen(), r#match: Arbitrary::arbitrary(g), + extract: Arbitrary::arbitrary(g), } } } @@ -48,11 +49,11 @@ impl Arbitrary for observe_request::r#match::Seq { } fn shrink(&self) -> Box> { - Box::new(self.matches.shrink().map(|matches| { - observe_request::r#match::Seq { - matches, - } - })) + Box::new( + self.matches + .shrink() + .map(|matches| observe_request::r#match::Seq { matches }), + ) } } @@ -102,10 +103,7 @@ impl Arbitrary for observe_request::r#match::tcp::Netmask { Some(&ip_address::Ip::Ipv6(_)) => g.gen::() % 128 + 1, None => 0u32, }; - observe_request::r#match::tcp::Netmask { - ip, - mask, - } + observe_request::r#match::tcp::Netmask { ip, mask } } } @@ -211,3 +209,37 @@ impl Arbitrary for scheme::Type { } } } + +impl Arbitrary for observe_request::Extract { + fn arbitrary(g: &mut G) -> Self { + observe_request::Extract { + extract: Arbitrary::arbitrary(g), + } + } +} + +impl Arbitrary for observe_request::extract::Extract { + fn arbitrary(g: &mut G) -> Self { + observe_request::extract::Extract::Http(Arbitrary::arbitrary(g)) + } +} + +impl Arbitrary for observe_request::extract::Http { + fn arbitrary(g: &mut G) -> Self { + observe_request::extract::Http { + extract: Arbitrary::arbitrary(g), + } + } +} + +impl Arbitrary for observe_request::extract::http::Extract { + fn arbitrary(g: &mut G) -> Self { + observe_request::extract::http::Extract::Headers(Arbitrary::arbitrary(g)) + } +} + +impl Arbitrary for observe_request::extract::http::Headers { + fn arbitrary(_g: &mut G) -> Self { + Self {} + } +}