From 36d2b6ea1f1a283b1e7b5e9bf843725da0d96a7f Mon Sep 17 00:00:00 2001 From: Nino Kodabande Date: Thu, 10 Oct 2024 10:28:03 -0700 Subject: [PATCH] Not always listen on TCP This change provides the protocol when calling expose or unexpose API requests. This is vital to ensure we listen on the correct protocol instead of always defaulting to TCP. Signed-off-by: Nino Kodabande --- src/go/guestagent/pkg/tracker/apitracker.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/go/guestagent/pkg/tracker/apitracker.go b/src/go/guestagent/pkg/tracker/apitracker.go index 8a89ea55f59..3bb58c27632 100644 --- a/src/go/guestagent/pkg/tracker/apitracker.go +++ b/src/go/guestagent/pkg/tracker/apitracker.go @@ -88,6 +88,8 @@ func (a *APITracker) Add(containerID string, portMap nat.PortMap) error { for portProto, portBindings := range portMap { var tmpPortBinding []nat.PortBinding + log.Debugf("called add with portProto: %+v, portBindings: %+v\n", portProto, portBindings) + for _, portBinding := range portBindings { // The expose API only supports IPv4 ipv4, err := isIPv4(portBinding.HostIP) @@ -100,8 +102,9 @@ func (a *APITracker) Add(containerID string, portMap nat.PortMap) error { err = a.apiForwarder.Expose( &types.ExposeRequest{ - Local: ipPortBuilder(a.determineHostIP(portBinding.HostIP), portBinding.HostPort), - Remote: ipPortBuilder(a.tapInterfaceIP, portBinding.HostPort), + Local: ipPortBuilder(a.determineHostIP(portBinding.HostIP), portBinding.HostPort), + Remote: ipPortBuilder(a.tapInterfaceIP, portBinding.HostPort), + Protocol: types.TransportProtocol(portProto.Proto()), }) if err != nil { errs = append(errs, fmt.Errorf("exposing %+v failed: %w", portBinding, err)) @@ -147,7 +150,7 @@ func (a *APITracker) Remove(containerID string) error { var errs []error - for _, portBindings := range portMap { + for portProto, portBindings := range portMap { for _, portBinding := range portBindings { // The unexpose API only supports IPv4 ipv4, err := isIPv4(portBinding.HostIP) @@ -160,7 +163,8 @@ func (a *APITracker) Remove(containerID string) error { err = a.apiForwarder.Unexpose( &types.UnexposeRequest{ - Local: ipPortBuilder(a.determineHostIP(portBinding.HostIP), portBinding.HostPort), + Local: ipPortBuilder(a.determineHostIP(portBinding.HostIP), portBinding.HostPort), + Protocol: types.TransportProtocol(portProto.Proto()), }) if err != nil { errs = append(errs,