in controllers/policyendpoints_controller.go [219:253]
func (r *PolicyEndpointsReconciler) IsProgFdShared(targetPodName string,
targetPodNamespace string) (bool, error) {
targetpodNamespacedName := utils.GetPodNamespacedName(targetPodName, targetPodNamespace)
// check ingress caches
if targetProgFD, ok := r.ebpfClient.GetIngressPodToProgMap().Load(targetpodNamespacedName); ok {
if currentList, ok := r.ebpfClient.GetIngressProgToPodsMap().Load(targetProgFD); ok {
podsList, ok := currentList.(map[string]struct{})
if ok {
if len(podsList) > 1 {
r.log.Info("isProgFdShared", "Found shared ingress progFD for target: ", targetPodName, "progFD: ", targetProgFD)
return true, nil
}
return false, nil // Not shared (only one pod)
}
}
}
// Check Egress Maps if not found in Ingress
if targetProgFD, ok := r.ebpfClient.GetEgressPodToProgMap().Load(targetpodNamespacedName); ok {
if currentList, ok := r.ebpfClient.GetEgressProgToPodsMap().Load(targetProgFD); ok {
podsList, ok := currentList.(map[string]struct{})
if ok {
if len(podsList) > 1 {
r.log.Info("IsProgFdShared", "Found shared egress progFD for target:", targetPodName, "progFD:", targetProgFD)
return true, nil
}
return false, nil // Not shared (only one pod)
}
}
}
// If not found in both maps, return an error
r.log.Info("IsProgFdShared", "Pod not found in either IngressPodToProgMap or EgressPodToProgMap:", targetpodNamespacedName)
return false, fmt.Errorf("pod not found in either IngressPodToProgMap or EgressPodToProgMap: %s", targetpodNamespacedName)
}