Add zero copy support for recv

Clean up receive interface