On Linux, the system calls splice(2) and tee(2) are used to transfer data between two file descriptors. One or both of the file descriptors must be a pipe, according to documentation. Why? Can this be made to work with sockets? Does it work currently, or would kernel modifications be required?
Right now they just splice pipe buffers together; socket buffers (on Linux) are different animals, and drag kernel networking into it. Limiting it to