Exemple #1
0
func (d *Daemon) getReceivedStats() (receivedStats, error) {
	stats := receivedStats{}
	d.endpointsMU.RLock()
	for _, ep := range d.endpoints {
		if ep.SecLabel != nil {
			if ep.PolicyMap != nil {
				pm, err := ep.PolicyMap.DumpToSlice()
				if err != nil {
					continue
				}

				stat, exists := stats[ep.SecLabel.ID]
				if !exists {
					stats[ep.SecLabel.ID] = map[uint32]*policymap.PolicyEntry{}
					stat = stats[ep.SecLabel.ID]
				}

				for _, p := range pm {
					pe, exists := stat[p.ID]
					if exists {
						pe.Add(p.PolicyEntry)
					} else {
						pe := policymap.PolicyEntry(p.PolicyEntry)
						stat[p.ID] = &pe
					}
				}
			}
		}
	}
	d.endpointsMU.RUnlock()
	return stats, nil
}
Exemple #2
0
func (rs receivedStats) getStats(from, to uint32) *policymap.PolicyEntry {
	fromMap, exists := rs[to]
	if exists {
		pe, exists := fromMap[from]
		if exists && pe != nil {
			pe := policymap.PolicyEntry(*pe)
			return &pe
		}
	}
	return nil
}