Define the callout return value like a two-bit state in a structure.
This enforce all clients to audit the use of these return values.
Make the code in question more readable.
This change also fixes some return value usage bugs in the callout
API clients when encountered.
Sponsored by: Mellanox Technologies