mirror of
https://passt.top/passt
synced 2025-06-12 02:25:34 +02:00
udp, passt: Introduce socket packet buffer, avoid getsockname() for UDP
This is in preparation for scatter-gather IO on the UDP receive path: save a getsockname() syscall by setting a flag if we get the numbering of all bound sockets in a strict sequence (expected, in practice) and repurpose the tap buffer to be also a socket receive buffer, passing it down to protocol handlers. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
605af213c5
commit
e07f539ae0
10 changed files with 103 additions and 34 deletions
5
tcp.c
5
tcp.c
|
@ -1402,14 +1402,17 @@ static void tcp_connect_finish(struct ctx *c, int s)
|
|||
* @c: Execution context
|
||||
* @s: File descriptor number for socket
|
||||
* @events: epoll events bitmap
|
||||
* @pkt_buf: Buffer to receive packets, currently unused
|
||||
* @now: Current timestamp
|
||||
*/
|
||||
void tcp_sock_handler(struct ctx *c, int s, uint32_t events,
|
||||
void tcp_sock_handler(struct ctx *c, int s, uint32_t events, char *pkt_buf,
|
||||
struct timespec *now)
|
||||
{
|
||||
socklen_t sl;
|
||||
int accept;
|
||||
|
||||
(void)pkt_buf;
|
||||
|
||||
if (tc[s].s == LAST_ACK) {
|
||||
tcp_send_to_tap(c, s, ACK, NULL, 0);
|
||||
tcp_close_and_epoll_del(c, s);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue