From 01dac72350d9ade5d876ac312f3ae6083fa589f0 Mon Sep 17 00:00:00 2001 From: Mayank Pande Date: Thu, 11 Apr 2024 14:04:11 +0530 Subject: [PATCH] fix: fix for headers as json and ignore control plane dest --- containers/container.go | 9 ++++++--- ebpftracer/l7/http.go | 15 +++++++++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/containers/container.go b/containers/container.go index 9362112b..742381fd 100644 --- a/containers/container.go +++ b/containers/container.go @@ -556,6 +556,12 @@ func (c *Container) onConnectionOpen(pid uint32, fd uint64, src, dst netaddr.IPP return } actualDst, err := c.getActualDestination(p, src, dst) + dstWorkload := c.ip_resolver.ResolveIP(dst.IP().String()) + actualDestWorkload := c.ip_resolver.ResolveActualIP(actualDst.IP().String()) + if ignoreControlPlane(dstWorkload.Name) { + klog.Warningf("Ignoring src workload %s, %s \n", dst.IP().String(), dstWorkload.Name) + return + } if err != nil { if !common.IsNotExist(err) { klog.Warningf("cannot open NetNs for pid %d: %s", pid, err) @@ -576,9 +582,6 @@ func (c *Container) onConnectionOpen(pid uint32, fd uint64, src, dst netaddr.IPP if failed { c.connectsFailed[dst]++ } else { - srcWorkload := c.ip_resolver.ResolveIP(src.IP().String()) - dstWorkload := c.ip_resolver.ResolveIP(dst.IP().String()) - actualDestWorkload := c.ip_resolver.ResolveActualIP(actualDst.IP().String()) c.connectsSuccessful[AddrPair{src: dst, dst: *actualDst, srcWorkload: srcWorkload, dstWorkload: dstWorkload, actualDestWorkload: actualDestWorkload}]++ connection := &ActiveConnection{ diff --git a/ebpftracer/l7/http.go b/ebpftracer/l7/http.go index 57a7b1ba..00ad08c4 100644 --- a/ebpftracer/l7/http.go +++ b/ebpftracer/l7/http.go @@ -3,8 +3,8 @@ package l7 import ( "bytes" "encoding/base64" + "encoding/json" "errors" - "fmt" "io" "log" "net/http" @@ -124,15 +124,22 @@ func ParseHostFromHttpRequest(input string) (string, error) { } func ConvertHeadersToString(headers http.Header) string { - var headerStrings []string + headerMap := make(map[string][]string) for key, values := range headers { + var sanitizedValues []string for _, value := range values { - headerStrings = append(headerStrings, fmt.Sprintf("%s: %s", key, SanitizeString(value))) + sanitizedValues = append(sanitizedValues, SanitizeString(value)) } + headerMap[key] = sanitizedValues } - return strings.Join(headerStrings, ", ") + jsonString, err := json.Marshal(headerMap) + if err != nil { + return "" + } + + return string(jsonString) } func SanitizeString(input string) string {