func marshalOutput(p openflow.OutPort) ([]byte, error) { v := make([]byte, 16) binary.BigEndian.PutUint16(v[0:2], uint16(OFPAT_OUTPUT)) binary.BigEndian.PutUint16(v[2:4], 16) var port uint32 switch { case p.IsTable(): port = OFPP_TABLE case p.IsFlood(): port = OFPP_FLOOD case p.IsAll(): port = OFPP_ALL case p.IsController(): port = OFPP_CONTROLLER case p.IsInPort(): port = OFPP_IN_PORT case p.IsNone(): port = OFPP_ANY default: port = p.Value() } binary.BigEndian.PutUint32(v[4:8], port) // We don't support buffer ID and partial PACKET_IN binary.BigEndian.PutUint16(v[8:10], 0xFFFF) return v, nil }