tcp_splice: More specific variable names in new splice path
In tcp_splice_conn_from_sock(), the 'port' variable stores the source port of the connection on the originating side. In tcp_splice_new(), called directly from it, the 'port' parameter gives the _destination_ port of the originating connection and is then updated to the destination port of the connection on the other side. Similarly, in tcp_splice_conn_from_sock(), 's' is the fd of the accetped socket (on side 0), whereas in tcp_splice_new(), 's' is the fd of the connecting socket (side 1). I, for one, find having the same variable name with different meanings in such close proximity in the flow of control pretty confusing. Alter the names for greater specificity and clarity. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
0f938c3b9a
commit
04d3d02603
2 changed files with 20 additions and 20 deletions
38
tcp_splice.c
38
tcp_splice.c
|
@ -407,25 +407,25 @@ static int tcp_conn_sock_ns(const struct ctx *c, sa_family_t af)
|
|||
* Return: return code from connect()
|
||||
*/
|
||||
static int tcp_splice_new(const struct ctx *c, struct tcp_splice_conn *conn,
|
||||
in_port_t port, uint8_t pif)
|
||||
in_port_t dstport, uint8_t pif)
|
||||
{
|
||||
sa_family_t af = CONN_V6(conn) ? AF_INET6 : AF_INET;
|
||||
int s = -1;
|
||||
int s1;
|
||||
|
||||
if (pif == PIF_SPLICE) {
|
||||
port += c->tcp.fwd_out.delta[port];
|
||||
s = tcp_conn_sock(c, af);
|
||||
dstport += c->tcp.fwd_out.delta[dstport];
|
||||
s1 = tcp_conn_sock(c, af);
|
||||
} else {
|
||||
ASSERT(pif == PIF_HOST);
|
||||
|
||||
port += c->tcp.fwd_in.delta[port];
|
||||
s = tcp_conn_sock_ns(c, af);
|
||||
dstport += c->tcp.fwd_in.delta[dstport];
|
||||
s1 = tcp_conn_sock_ns(c, af);
|
||||
}
|
||||
|
||||
if (s < 0)
|
||||
return s;
|
||||
if (s1 < 0)
|
||||
return s1;
|
||||
|
||||
return tcp_splice_connect(c, conn, s, port);
|
||||
return tcp_splice_connect(c, conn, s1, dstport);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -433,7 +433,7 @@ static int tcp_splice_new(const struct ctx *c, struct tcp_splice_conn *conn,
|
|||
* @c: Execution context
|
||||
* @ref: epoll reference of listening socket
|
||||
* @flow: flow to initialise
|
||||
* @s: Accepted socket
|
||||
* @s0: Accepted (side 0) socket
|
||||
* @sa: Peer address of connection
|
||||
*
|
||||
* Return: true if able to create a spliced connection, false otherwise
|
||||
|
@ -441,28 +441,28 @@ static int tcp_splice_new(const struct ctx *c, struct tcp_splice_conn *conn,
|
|||
*/
|
||||
bool tcp_splice_conn_from_sock(const struct ctx *c,
|
||||
union tcp_listen_epoll_ref ref, union flow *flow,
|
||||
int s, const union sockaddr_inany *sa)
|
||||
int s0, const union sockaddr_inany *sa)
|
||||
{
|
||||
struct tcp_splice_conn *conn;
|
||||
union inany_addr aany;
|
||||
in_port_t port;
|
||||
union inany_addr src;
|
||||
in_port_t srcport;
|
||||
|
||||
ASSERT(c->mode == MODE_PASTA);
|
||||
|
||||
inany_from_sockaddr(&aany, &port, sa);
|
||||
if (!inany_is_loopback(&aany))
|
||||
inany_from_sockaddr(&src, &srcport, sa);
|
||||
if (!inany_is_loopback(&src))
|
||||
return false;
|
||||
|
||||
conn = FLOW_START(flow, FLOW_TCP_SPLICE, tcp_splice, 0);
|
||||
|
||||
conn->flags = inany_v4(&aany) ? 0 : SPLICE_V6;
|
||||
conn->s[0] = s;
|
||||
conn->flags = inany_v4(&src) ? 0 : SPLICE_V6;
|
||||
conn->s[0] = s0;
|
||||
conn->s[1] = -1;
|
||||
conn->pipe[0][0] = conn->pipe[0][1] = -1;
|
||||
conn->pipe[1][0] = conn->pipe[1][1] = -1;
|
||||
|
||||
if (setsockopt(s, SOL_TCP, TCP_QUICKACK, &((int){ 1 }), sizeof(int)))
|
||||
flow_trace(conn, "failed to set TCP_QUICKACK on %i", s);
|
||||
if (setsockopt(s0, SOL_TCP, TCP_QUICKACK, &((int){ 1 }), sizeof(int)))
|
||||
flow_trace(conn, "failed to set TCP_QUICKACK on %i", s0);
|
||||
|
||||
if (tcp_splice_new(c, conn, ref.port, ref.pif))
|
||||
conn_flag(c, conn, CLOSING);
|
||||
|
|
|
@ -13,7 +13,7 @@ void tcp_splice_sock_handler(struct ctx *c, union epoll_ref ref,
|
|||
uint32_t events);
|
||||
bool tcp_splice_conn_from_sock(const struct ctx *c,
|
||||
union tcp_listen_epoll_ref ref, union flow *flow,
|
||||
int s, const union sockaddr_inany *sa);
|
||||
int s0, const union sockaddr_inany *sa);
|
||||
void tcp_splice_init(struct ctx *c);
|
||||
|
||||
#endif /* TCP_SPLICE_H */
|
||||
|
|
Loading…
Reference in a new issue