message CoolChecksumProtoMsg {
	// parameters
	required uint32 instr_offset = 1;
	optional uint32 instr_address = 8; // for sanity checks
	required uint32 bit_offset = 2;

	// results
	// make these optional to reduce overhead for server->client communication
	enum ResultType {
		CALCDONE = 1;
		TIMEOUT = 2;
		TRAP = 3;
		UNKNOWN = 4;
	}
	// instruction pointer where injection was done
	optional uint32 injection_ip = 3;
	// result type, see above
	optional ResultType resulttype = 4;
	// result data, depending on resulttype:
	// CALCDONE: resultdata = calculated value
	// TIMEOUT: resultdata = latest EIP
	// TRAP: resultdata = latest EIP
	// UNKNOWN: resultdata = latest EIP
	optional uint32 resultdata = 5;
	// did ECC correct the fault?
	optional int32 error_corrected = 6;
	// optional textual description of what happened
	optional string details = 7;
}
