in pkg/elfparser/elf.go [284:317]
func (e *elfLoader) loadProg(loadedProgData map[string]ebpf_progs.CreateEBPFProgInput, loadedMaps map[string]ebpf_maps.BpfMap) (map[string]BpfData, error) {
loadedprog := make(map[string]BpfData)
for _, pgmInput := range loadedProgData {
bpfData := BpfData{}
progFD, errno := e.bpfProgApi.LoadProg(pgmInput)
if progFD == -1 {
log.Infof("Failed to load prog", "error", errno)
return nil, fmt.Errorf("failed to Load the prog")
}
log.Infof("loaded prog with %d", progFD)
//Fill ID
progInfo, newProgFD, err := e.bpfProgApi.GetProgFromPinPath(pgmInput.PinPath)
if err != nil {
return nil, fmt.Errorf("failed to get ProgID")
}
unix.Close(int(newProgFD))
progID := int(progInfo.ID)
bpfData.Program = ebpf_progs.BpfProgram{
ProgID: progID,
ProgFD: progFD,
PinPath: pgmInput.PinPath,
ProgType: pgmInput.ProgType,
SubSystem: pgmInput.SubSystem,
SubProgType: pgmInput.SubProgType,
}
loadedprog[pgmInput.PinPath] = bpfData
}
return loadedprog, nil
}