in pkg/progs/loader.go [145:175]
func (m *BpfProgram) PinProg(progFD uint32, pinPath string) error {
found, err := utils.IsfileExists(pinPath)
if err != nil {
return fmt.Errorf("unable to check file: %w", err)
}
if found {
log.Infof("Found file %s so deleting the path", pinPath)
err = utils.UnPinObject(pinPath)
if err != nil {
log.Errorf("failed to UnPinObject during pinning")
return err
}
}
err = os.MkdirAll(filepath.Dir(pinPath), 0755)
if err != nil {
log.Infof("error creating directory %q: %v", filepath.Dir(pinPath), err)
return fmt.Errorf("error creating directory %q: %v", filepath.Dir(pinPath), err)
}
_, err = os.Stat(pinPath)
if err == nil {
log.Infof("aborting, found file at %q", pinPath)
return fmt.Errorf("aborting, found file at %q", pinPath)
}
if err != nil && !os.IsNotExist(err) {
log.Infof("failed to stat %q: %v", pinPath, err)
return fmt.Errorf("failed to stat %q: %v", pinPath, err)
}
return utils.PinObject(progFD, pinPath)
}