Пример #1
1
func newFlowEntry(req ofp4.FlowMod) (*flowEntry, error) {
	reqMatch := match{}
	if err := reqMatch.UnmarshalBinary(req.Match().OxmFields()); err != nil {
		return nil, err
	}
	entry := &flowEntry{
		lock:        &sync.RWMutex{},
		fields:      reqMatch,
		cookie:      req.Cookie(),
		created:     time.Now(),
		idleTimeout: req.IdleTimeout(),
		hardTimeout: req.HardTimeout(),
		instWrite:   makeActionSet(),
		instExp:     make(map[int][]instExperimenter),
	}
	if err := entry.importInstructions(req.Instructions()); err != nil {
		return nil, err
	}
	return entry, nil
}