func()

in pkg/maps/loader.go [476:507]


func (m *BpfMap) BulkRefreshMapEntries(newMapContents map[string][]byte) error {

	// 1. Update all map entries
	err := m.BulkUpdateMapEntry(newMapContents)
	if err != nil {
		log.Errorf("refresh map failed: during update %v", err)
		return err
	}

	// 2. Read all map entries
	retrievedMapKeyList, err := m.GetAllMapKeys()
	if err != nil {
		log.Errorf("get all map keys failed: during Refresh %v", err)
		return err
	}

	// 3. Delete stale Keys
	log.Infof("Check for stale entries and got %d entries from BPF map", len(retrievedMapKeyList))
	for _, key := range retrievedMapKeyList {
		log.Infof("Checking if key %s is deletable", key)
		if _, ok := newMapContents[key]; !ok {
			log.Infof("This can be deleted, not needed anymore...")
			deletableKeyByte := []byte(key)
			deletableKeyBytePtr := uintptr(unsafe.Pointer(&deletableKeyByte[0]))
			err = m.DeleteMapEntry(deletableKeyBytePtr)
			if err != nil {
				log.Infof("Unable to delete entry %s but will continue and err %v", key, err)
			}
		}
	}
	return nil
}