func()

in pkg/tc/tc.go [328:367]


func (m *bpfTc) GetAllAttachedProgIds() (map[string]int, map[string]int, error) {

	if len(m.InterfacePrefix) == 0 {
		log.Errorf("invalid empty prefix")
		return nil, nil, fmt.Errorf("Invalid empty prefix")
	}

	linkList, err := netlink.LinkList()
	if err != nil {
		log.Errorf("unable to get link list")
		return nil, nil, err
	}

	interfaceToIngressProgId := make(map[string]int)
	interfaceToEgressProgId := make(map[string]int)
	for _, link := range linkList {
		linkName := link.Attrs().Name
		log.Infof("link name %s", linkName)
		ingressProgId := 0
		egressProgId := 0
		if err := mismatchedInterfacePrefix(linkName, m.InterfacePrefix); err == nil {
			// Get ingress ID attached
			filterParent := uint32(netlink.HANDLE_MIN_INGRESS)
			ingressProgId = m.getAttachedProgId(link, filterParent)
			log.Infof("Got ingress progId %d", ingressProgId)
			if ingressProgId > 0 {
				interfaceToIngressProgId[linkName] = ingressProgId
			}

			// Get egress ID attached
			filterParent = uint32(netlink.HANDLE_MIN_EGRESS)
			egressProgId = m.getAttachedProgId(link, filterParent)
			log.Infof("Got egress progId %d", egressProgId)
			if egressProgId > 0 {
				interfaceToEgressProgId[linkName] = egressProgId
			}
		}
	}
	return interfaceToIngressProgId, interfaceToEgressProgId, nil
}