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")