From b99a31db7103dc660412eed7b68e1121f24770da Mon Sep 17 00:00:00 2001 From: Mohamed Mahmoud Date: Tue, 2 Jul 2024 13:55:29 -0400 Subject: [PATCH] NETOBSERV-1743: handle file exits error using TCx hooks and update FC Signed-off-by: Mohamed Mahmoud --- pkg/ebpf/tracer.go | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/pkg/ebpf/tracer.go b/pkg/ebpf/tracer.go index a4af0f2ca..a2598c431 100644 --- a/pkg/ebpf/tracer.go +++ b/pkg/ebpf/tracer.go @@ -230,7 +230,12 @@ func (m *FlowFetcher) AttachTCX(iface ifaces.Interface) error { Interface: iface.Index, }) if err != nil { - return fmt.Errorf("failed to attach TCX egress: %w", err) + if errors.Is(err, fs.ErrExist) { + // The interface already has a TCX egress hook + log.WithField("iface", iface.Name).Debug("interface already has a TCX egress hook ignore") + } else { + return fmt.Errorf("failed to attach TCX egress: %w", err) + } } m.egressTCXLink[iface] = egrLink ilog.WithField("interface", iface.Name).Debug("successfully attach egressTCX hook") @@ -243,7 +248,12 @@ func (m *FlowFetcher) AttachTCX(iface ifaces.Interface) error { Interface: iface.Index, }) if err != nil { - return fmt.Errorf("failed to attach TCX ingress: %w", err) + if errors.Is(err, fs.ErrExist) { + // The interface already has a TCX ingress hook + log.WithField("iface", iface.Name).Debug("interface already has a TCX ingress hook ignore") + } else { + return fmt.Errorf("failed to attach TCX ingress: %w", err) + } } m.ingressTCXLink[iface] = ingLink ilog.WithField("interface", iface.Name).Debug("successfully attach ingressTCX hook") @@ -928,7 +938,12 @@ func (p *PacketFetcher) AttachTCX(iface ifaces.Interface) error { Interface: iface.Index, }) if err != nil { - return fmt.Errorf("failed to attach PCA TCX egress: %w", err) + if errors.Is(err, fs.ErrExist) { + // The interface already has a TCX egress hook + log.WithField("iface", iface.Name).Debug("interface already has a TCX PCA egress hook ignore") + } else { + return fmt.Errorf("failed to attach PCA TCX egress: %w", err) + } } p.egressTCXLink[iface] = egrLink ilog.WithField("interface", iface.Name).Debug("successfully attach PCA egressTCX hook") @@ -941,7 +956,12 @@ func (p *PacketFetcher) AttachTCX(iface ifaces.Interface) error { Interface: iface.Index, }) if err != nil { - return fmt.Errorf("failed to attach PCA TCX ingress: %w", err) + if errors.Is(err, fs.ErrExist) { + // The interface already has a TCX ingress hook + log.WithField("iface", iface.Name).Debug("interface already has a TCX PCA ingress hook ignore") + } else { + return fmt.Errorf("failed to attach PCA TCX ingress: %w", err) + } } p.ingressTCXLink[iface] = ingLink ilog.WithField("interface", iface.Name).Debug("successfully attach PCA ingressTCX hook")