From d69703f59313cac44a3ad53eaf6edb1809e12419 Mon Sep 17 00:00:00 2001 From: "Mohamed S. Mahmoud" <mmahmoud@redhat.com> Date: Mon, 6 Nov 2023 17:54:50 -0500 Subject: [PATCH] dbg DNS over TCP NA fields (#218) Signed-off-by: Mohamed Mahmoud <mmahmoud@redhat.com> --- bpf/dns_tracker.h | 11 +++-- bpf/flows.c | 6 ++- bpf/types.h | 1 + pkg/decode/decode_protobuf.go | 2 + pkg/decode/decode_protobuf_test.go | 16 ++++++- pkg/ebpf/bpf_bpfeb.go | 1 + pkg/ebpf/bpf_bpfeb.o | Bin 92752 -> 93000 bytes pkg/ebpf/bpf_bpfel.go | 1 + pkg/ebpf/bpf_bpfel.o | Bin 94504 -> 94760 bytes pkg/exporter/proto.go | 2 + pkg/flow/record.go | 4 ++ pkg/flow/record_test.go | 2 + pkg/pbflow/flow.pb.go | 70 ++++++++++++++++------------- proto/flow.proto | 1 + 14 files changed, 80 insertions(+), 37 deletions(-) diff --git a/bpf/dns_tracker.h b/bpf/dns_tracker.h index 57152695..9fd7a522 100644 --- a/bpf/dns_tracker.h +++ b/bpf/dns_tracker.h @@ -9,6 +9,7 @@ #define DNS_PORT 53 #define DNS_QR_FLAG 0x8000 #define UDP_MAXMSG 512 +#define EINVAL 22 struct dns_header { u16 id; @@ -64,21 +65,22 @@ static __always_inline u8 calc_dns_header_offset(pkt_info *pkt, void *data_end) return len; } -static __always_inline void track_dns_packet(struct __sk_buff *skb, pkt_info *pkt) { +static __always_inline int track_dns_packet(struct __sk_buff *skb, pkt_info *pkt) { void *data_end = (void *)(long)skb->data_end; if (pkt->id->dst_port == DNS_PORT || pkt->id->src_port == DNS_PORT) { dns_flow_id dns_req; u8 len = calc_dns_header_offset(pkt, data_end); if (!len) { - return; + return EINVAL; } struct dns_header dns; + int ret; u32 dns_offset = (long)pkt->l4_hdr - (long)skb->data + len; - if (bpf_skb_load_bytes(skb, dns_offset, &dns, sizeof(dns)) < 0) { - return; + if ((ret = bpf_skb_load_bytes(skb, dns_offset, &dns, sizeof(dns))) < 0) { + return -ret; } u16 dns_id = bpf_ntohs(dns.id); @@ -101,6 +103,7 @@ static __always_inline void track_dns_packet(struct __sk_buff *skb, pkt_info *pk } } // end of dns response } // end of dns port check + return 0; } #endif // __DNS_TRACKER_H__ diff --git a/bpf/flows.c b/bpf/flows.c index 219660e6..8e633a12 100644 --- a/bpf/flows.c +++ b/bpf/flows.c @@ -72,9 +72,9 @@ static inline int flow_monitor(struct __sk_buff *skb, u8 direction) { // This is currently not to be enabled by default. calculate_flow_rtt(&pkt, direction, data_end); } - + int dns_errno = 0; if (enable_dns_tracking) { - track_dns_packet(skb, &pkt); + dns_errno = track_dns_packet(skb, &pkt); } // TODO: we need to add spinlock here when we deprecate versions prior to 5.1, or provide // a spinlocked alternative version and use it selectively https://lwn.net/Articles/779120/ @@ -97,6 +97,7 @@ static inline int flow_monitor(struct __sk_buff *skb, u8 direction) { aggregate_flow->dns_record.id = pkt.dns_id; aggregate_flow->dns_record.flags = pkt.dns_flags; aggregate_flow->dns_record.latency = pkt.dns_latency; + aggregate_flow->dns_record.errno = dns_errno; long ret = bpf_map_update_elem(&aggregated_flows, &id, aggregate_flow, BPF_ANY); if (trace_messages && ret != 0) { // usually error -16 (-EBUSY) is printed here. @@ -119,6 +120,7 @@ static inline int flow_monitor(struct __sk_buff *skb, u8 direction) { .dns_record.id = pkt.dns_id, .dns_record.flags = pkt.dns_flags, .dns_record.latency = pkt.dns_latency, + .dns_record.errno = dns_errno, }; // even if we know that the entry is new, another CPU might be concurrently inserting a flow diff --git a/bpf/types.h b/bpf/types.h index f9790427..7d50bcc5 100644 --- a/bpf/types.h +++ b/bpf/types.h @@ -89,6 +89,7 @@ typedef struct flow_metrics_t { u16 id; u16 flags; u64 latency; + u8 errno; } __attribute__((packed)) dns_record; u64 flow_rtt; } __attribute__((packed)) flow_metrics; diff --git a/pkg/decode/decode_protobuf.go b/pkg/decode/decode_protobuf.go index e9179791..69465258 100644 --- a/pkg/decode/decode_protobuf.go +++ b/pkg/decode/decode_protobuf.go @@ -90,11 +90,13 @@ func PBFlowToMap(flow *pbflow.Record) config.GenericMap { } } + out["DnsErrno"] = flow.GetDnsErrno() if flow.GetDnsId() != 0 { out["DnsLatencyMs"] = flow.DnsLatency.AsDuration().Milliseconds() out["DnsId"] = flow.GetDnsId() out["DnsFlags"] = flow.GetDnsFlags() out["DnsFlagsResponseCode"] = dnsRcodeToStr(flow.GetDnsFlags() & 0xF) + out["DnsErrno"] = uint32(0) } if flow.GetPktDropLatestDropCause() != 0 { diff --git a/pkg/decode/decode_protobuf_test.go b/pkg/decode/decode_protobuf_test.go index 717faae5..67a6cdf7 100644 --- a/pkg/decode/decode_protobuf_test.go +++ b/pkg/decode/decode_protobuf_test.go @@ -55,7 +55,8 @@ func TestDecodeProtobuf(t *testing.T) { AgentIp: &pbflow.IP{ IpFamily: &pbflow.IP_Ipv4{Ipv4: 0x0a090807}, }, - Flags: 0x100, + Flags: 0x100, + DnsErrno: 0, }, expected: &config.GenericMap{ "FlowDirection": 1, @@ -76,6 +77,7 @@ func TestDecodeProtobuf(t *testing.T) { "TimeFlowEndMs": someTime.UnixMilli(), "Interface": "eth0", "AgentIP": "10.9.8.7", + "DnsErrno": uint32(0), }, }, { @@ -109,6 +111,7 @@ func TestDecodeProtobuf(t *testing.T) { AgentIp: &pbflow.IP{ IpFamily: &pbflow.IP_Ipv4{Ipv4: 0x0a090807}, }, + DnsErrno: 0, }, expected: &config.GenericMap{ "FlowDirection": 1, @@ -128,6 +131,7 @@ func TestDecodeProtobuf(t *testing.T) { "TimeFlowEndMs": someTime.UnixMilli(), "Interface": "eth0", "AgentIP": "10.9.8.7", + "DnsErrno": uint32(0), }, }, { @@ -161,6 +165,7 @@ func TestDecodeProtobuf(t *testing.T) { }, IcmpType: 8, IcmpCode: 0, + DnsErrno: 0, }, expected: &config.GenericMap{ "FlowDirection": 1, @@ -180,6 +185,7 @@ func TestDecodeProtobuf(t *testing.T) { "AgentIP": "10.9.8.7", "IcmpType": uint32(8), "IcmpCode": uint32(0), + "DnsErrno": uint32(0), }, }, { @@ -213,6 +219,7 @@ func TestDecodeProtobuf(t *testing.T) { }, IcmpType: 128, IcmpCode: 0, + DnsErrno: 0, }, expected: &config.GenericMap{ "FlowDirection": 1, @@ -232,6 +239,7 @@ func TestDecodeProtobuf(t *testing.T) { "AgentIP": "101:101:101:101:101:101:101:101", "IcmpType": uint32(128), "IcmpCode": uint32(0), + "DnsErrno": uint32(0), }, }, { @@ -264,6 +272,7 @@ func TestDecodeProtobuf(t *testing.T) { AgentIp: &pbflow.IP{ IpFamily: &pbflow.IP_Ipv4{Ipv4: 0x0a090807}, }, + DnsErrno: 0, }, expected: &config.GenericMap{ "FlowDirection": 1, @@ -277,6 +286,7 @@ func TestDecodeProtobuf(t *testing.T) { "TimeFlowEndMs": someTime.UnixMilli(), "Interface": "eth0", "AgentIP": "10.9.8.7", + "DnsErrno": uint32(0), }, }, { @@ -319,6 +329,7 @@ func TestDecodeProtobuf(t *testing.T) { DnsLatency: durationpb.New(someDuration), DnsId: 1, DnsFlags: 0x8001, + DnsErrno: 0, TimeFlowRtt: durationpb.New(someDuration), }, expected: &config.GenericMap{ @@ -349,6 +360,7 @@ func TestDecodeProtobuf(t *testing.T) { "DnsId": uint32(1), "DnsFlags": uint32(0x8001), "DnsFlagsResponseCode": "FormErr", + "DnsErrno": uint32(0), "TimeFlowRttNs": someDuration.Nanoseconds(), }, }, @@ -407,6 +419,7 @@ func TestPBFlowToMap(t *testing.T) { DnsLatency: durationpb.New(someDuration), DnsId: 1, DnsFlags: 0x80, + DnsErrno: 0, TimeFlowRtt: durationpb.New(someDuration), } @@ -441,6 +454,7 @@ func TestPBFlowToMap(t *testing.T) { "DnsId": uint32(1), "DnsFlags": uint32(0x80), "DnsFlagsResponseCode": "NoError", + "DnsErrno": uint32(0), "TimeFlowRttNs": someDuration.Nanoseconds(), }, out) diff --git a/pkg/ebpf/bpf_bpfeb.go b/pkg/ebpf/bpf_bpfeb.go index bb10a159..7f6ceebd 100644 --- a/pkg/ebpf/bpf_bpfeb.go +++ b/pkg/ebpf/bpf_bpfeb.go @@ -25,6 +25,7 @@ type BpfDnsRecordT struct { Id uint16 Flags uint16 Latency uint64 + Errno uint8 } type BpfFlowId BpfFlowIdT diff --git a/pkg/ebpf/bpf_bpfeb.o b/pkg/ebpf/bpf_bpfeb.o index 12b4001b8b2cf7624ef8cbbdfb3d4375a891a48f..0af59e932379b347f41e3564b964d6d3cb0ded49 100644 GIT binary patch delta 8769 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 delta 8634 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 LQJY?n&L{x@cJ%EW diff --git a/pkg/ebpf/bpf_bpfel.go b/pkg/ebpf/bpf_bpfel.go index 8556d19a..0f869406 100644 --- a/pkg/ebpf/bpf_bpfel.go +++ b/pkg/ebpf/bpf_bpfel.go @@ -25,6 +25,7 @@ type BpfDnsRecordT struct { Id uint16 Flags uint16 Latency uint64 + Errno uint8 } type BpfFlowId BpfFlowIdT diff --git a/pkg/ebpf/bpf_bpfel.o b/pkg/ebpf/bpf_bpfel.o index 5e001e1de72aa19a7028827941ae9dc6cfda9b3b..f938b3e4570b74b99c7b31e183abbd731f169f01 100644 GIT binary patch delta 9433 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 CtiN;s delta 9292 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 diff --git a/pkg/exporter/proto.go b/pkg/exporter/proto.go index b8d47be2..800971dc 100644 --- a/pkg/exporter/proto.go +++ b/pkg/exporter/proto.go @@ -79,6 +79,7 @@ func v4FlowToPB(fr *flow.Record) *pbflow.Record { PktDropLatestDropCause: fr.Metrics.PktDrops.LatestDropCause, DnsId: uint32(fr.Metrics.DnsRecord.Id), DnsFlags: uint32(fr.Metrics.DnsRecord.Flags), + DnsErrno: uint32(fr.Metrics.DnsRecord.Errno), TimeFlowRtt: durationpb.New(fr.TimeFlowRtt), } if fr.Metrics.DnsRecord.Latency != 0 { @@ -128,6 +129,7 @@ func v6FlowToPB(fr *flow.Record) *pbflow.Record { PktDropLatestDropCause: fr.Metrics.PktDrops.LatestDropCause, DnsId: uint32(fr.Metrics.DnsRecord.Id), DnsFlags: uint32(fr.Metrics.DnsRecord.Flags), + DnsErrno: uint32(fr.Metrics.DnsRecord.Errno), TimeFlowRtt: durationpb.New(fr.TimeFlowRtt), } if fr.Metrics.DnsRecord.Latency != 0 { diff --git a/pkg/flow/record.go b/pkg/flow/record.go index 54461c60..cd5b3c2b 100644 --- a/pkg/flow/record.go +++ b/pkg/flow/record.go @@ -115,6 +115,10 @@ func Accumulate(r *ebpf.BpfFlowMetrics, src *ebpf.BpfFlowMetrics) { if src.Dscp != 0 { r.Dscp = src.Dscp } + // Accumulate DNSErrno + if src.DnsRecord.Errno != 0 { + r.DnsRecord.Errno = src.DnsRecord.Errno + } } // IP returns the net.IP equivalent object diff --git a/pkg/flow/record_test.go b/pkg/flow/record_test.go index 8709af0b..316bbe69 100644 --- a/pkg/flow/record_test.go +++ b/pkg/flow/record_test.go @@ -43,6 +43,7 @@ func TestRecordBinaryEncoding(t *testing.T) { 01, 00, // id 0x80, 00, // flags 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, // latency + 0x00, // errno // u64 flow_rtt 0xad, 0xde, 0xef, 0xbe, 0xef, 0xbe, 0xad, 0xde, })) @@ -82,6 +83,7 @@ func TestRecordBinaryEncoding(t *testing.T) { Id: 0x0001, Flags: 0x0080, Latency: 0x1817161514131211, + Errno: 0, }, FlowRtt: 0xdeadbeefbeefdead, }, diff --git a/pkg/pbflow/flow.pb.go b/pkg/pbflow/flow.pb.go index 16ad2116..a0ed4ddc 100644 --- a/pkg/pbflow/flow.pb.go +++ b/pkg/pbflow/flow.pb.go @@ -191,6 +191,7 @@ type Record struct { DnsFlags uint32 `protobuf:"varint,22,opt,name=dns_flags,json=dnsFlags,proto3" json:"dns_flags,omitempty"` DnsLatency *durationpb.Duration `protobuf:"bytes,23,opt,name=dns_latency,json=dnsLatency,proto3" json:"dns_latency,omitempty"` TimeFlowRtt *durationpb.Duration `protobuf:"bytes,24,opt,name=time_flow_rtt,json=timeFlowRtt,proto3" json:"time_flow_rtt,omitempty"` + DnsErrno uint32 `protobuf:"varint,25,opt,name=dns_errno,json=dnsErrno,proto3" json:"dns_errno,omitempty"` } func (x *Record) Reset() { @@ -393,6 +394,13 @@ func (x *Record) GetTimeFlowRtt() *durationpb.Duration { return nil } +func (x *Record) GetDnsErrno() uint32 { + if x != nil { + return x.DnsErrno + } + return 0 +} + type DataLink struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -670,7 +678,7 @@ var file_proto_flow_proto_rawDesc = []byte{ 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x28, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x22, 0xef, 0x07, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, + 0x65, 0x73, 0x22, 0x8c, 0x08, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2f, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, @@ -733,35 +741,37 @@ var file_proto_flow_proto_rawDesc = []byte{ 0x6f, 0x77, 0x5f, 0x72, 0x74, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x6c, 0x6f, - 0x77, 0x52, 0x74, 0x74, 0x22, 0x3c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x6e, 0x6b, - 0x12, 0x17, 0x0a, 0x07, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x06, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x73, 0x74, - 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x64, 0x73, 0x74, 0x4d, - 0x61, 0x63, 0x22, 0x6b, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x25, 0x0a, - 0x08, 0x73, 0x72, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0a, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x49, 0x50, 0x52, 0x07, 0x73, 0x72, 0x63, - 0x41, 0x64, 0x64, 0x72, 0x12, 0x25, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, - 0x49, 0x50, 0x52, 0x07, 0x64, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x73, 0x63, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x64, 0x73, 0x63, 0x70, 0x22, - 0x3d, 0x0a, 0x02, 0x49, 0x50, 0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x07, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x14, 0x0a, 0x04, 0x69, - 0x70, 0x76, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, - 0x36, 0x42, 0x0b, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x22, 0x5d, - 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, - 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, - 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2a, 0x24, 0x0a, - 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, - 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x10, 0x01, 0x32, 0x3e, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x31, 0x0a, 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, - 0x77, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x66, 0x6c, - 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, - 0x79, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x77, 0x52, 0x74, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x6e, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6e, + 0x6f, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x6e, 0x73, 0x45, 0x72, 0x72, 0x6e, + 0x6f, 0x22, 0x3c, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x17, 0x0a, + 0x07, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x22, + 0x6b, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x25, 0x0a, 0x08, 0x73, 0x72, + 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, + 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x49, 0x50, 0x52, 0x07, 0x73, 0x72, 0x63, 0x41, 0x64, 0x64, + 0x72, 0x12, 0x25, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x49, 0x50, 0x52, + 0x07, 0x64, 0x73, 0x74, 0x41, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x73, 0x63, 0x70, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x64, 0x73, 0x63, 0x70, 0x22, 0x3d, 0x0a, 0x02, + 0x49, 0x50, 0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, + 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x34, 0x12, 0x14, 0x0a, 0x04, 0x69, 0x70, 0x76, 0x36, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x69, 0x70, 0x76, 0x36, 0x42, 0x0b, + 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x22, 0x5d, 0x0a, 0x09, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2a, 0x24, 0x0a, 0x09, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, + 0x32, 0x3e, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x0a, + 0x04, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x1a, 0x16, 0x2e, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, + 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x70, 0x62, 0x66, 0x6c, 0x6f, 0x77, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/flow.proto b/proto/flow.proto index 35803d7d..bf3209ca 100644 --- a/proto/flow.proto +++ b/proto/flow.proto @@ -53,6 +53,7 @@ message Record { uint32 dns_flags = 22; google.protobuf.Duration dns_latency = 23; google.protobuf.Duration time_flow_rtt = 24; + uint32 dns_errno = 25; } message DataLink { -- GitLab