1
0
mirror of https://passt.top/passt synced 2024-12-22 05:35:23 +00:00

tcp: Export headers functions

Export tcp_fill_headers[4|6]() and tcp_update_check_tcp[4|6]().

They'll be needed by vhost-user.

Signed-off-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Laurent Vivier 2024-11-22 17:43:32 +01:00 committed by Stefano Brivio
parent 5a8b33c667
commit b7c292b758
2 changed files with 30 additions and 15 deletions

30
tcp.c
View File

@ -758,9 +758,9 @@ static void tcp_sock_set_bufsize(const struct ctx *c, int s)
* @iov_cnt: Length of the array * @iov_cnt: Length of the array
* @l4offset: IPv4 payload offset in the iovec array * @l4offset: IPv4 payload offset in the iovec array
*/ */
static void tcp_update_check_tcp4(const struct iphdr *iph, void tcp_update_check_tcp4(const struct iphdr *iph,
const struct iovec *iov, int iov_cnt, const struct iovec *iov, int iov_cnt,
size_t l4offset) size_t l4offset)
{ {
uint16_t l4len = ntohs(iph->tot_len) - sizeof(struct iphdr); uint16_t l4len = ntohs(iph->tot_len) - sizeof(struct iphdr);
struct in_addr saddr = { .s_addr = iph->saddr }; struct in_addr saddr = { .s_addr = iph->saddr };
@ -810,9 +810,9 @@ static void tcp_update_check_tcp4(const struct iphdr *iph,
* @iov_cnt: Length of the array * @iov_cnt: Length of the array
* @l4offset: IPv6 payload offset in the iovec array * @l4offset: IPv6 payload offset in the iovec array
*/ */
static void tcp_update_check_tcp6(const struct ipv6hdr *ip6h, void tcp_update_check_tcp6(const struct ipv6hdr *ip6h,
const struct iovec *iov, int iov_cnt, const struct iovec *iov, int iov_cnt,
size_t l4offset) size_t l4offset)
{ {
uint16_t l4len = ntohs(ip6h->payload_len); uint16_t l4len = ntohs(ip6h->payload_len);
size_t check_ofs; size_t check_ofs;
@ -978,11 +978,11 @@ static void tcp_fill_header(struct tcphdr *th,
* *
* Return: The IPv4 payload length, host order * Return: The IPv4 payload length, host order
*/ */
static size_t tcp_fill_headers4(const struct tcp_tap_conn *conn, size_t tcp_fill_headers4(const struct tcp_tap_conn *conn,
struct tap_hdr *taph, struct tap_hdr *taph,
struct iphdr *iph, struct tcp_payload_t *bp, struct iphdr *iph, struct tcp_payload_t *bp,
size_t dlen, const uint16_t *check, size_t dlen, const uint16_t *check,
uint32_t seq, bool no_tcp_csum) uint32_t seq, bool no_tcp_csum)
{ {
const struct flowside *tapside = TAPFLOW(conn); const struct flowside *tapside = TAPFLOW(conn);
const struct in_addr *src4 = inany_v4(&tapside->oaddr); const struct in_addr *src4 = inany_v4(&tapside->oaddr);
@ -1030,10 +1030,10 @@ static size_t tcp_fill_headers4(const struct tcp_tap_conn *conn,
* *
* Return: The IPv6 payload length, host order * Return: The IPv6 payload length, host order
*/ */
static size_t tcp_fill_headers6(const struct tcp_tap_conn *conn, size_t tcp_fill_headers6(const struct tcp_tap_conn *conn,
struct tap_hdr *taph, struct tap_hdr *taph,
struct ipv6hdr *ip6h, struct tcp_payload_t *bp, struct ipv6hdr *ip6h, struct tcp_payload_t *bp,
size_t dlen, uint32_t seq, bool no_tcp_csum) size_t dlen, uint32_t seq, bool no_tcp_csum)
{ {
const struct flowside *tapside = TAPFLOW(conn); const struct flowside *tapside = TAPFLOW(conn);
size_t l4len = dlen + sizeof(bp->th); size_t l4len = dlen + sizeof(bp->th);

View File

@ -162,6 +162,21 @@ void tcp_rst_do(const struct ctx *c, struct tcp_tap_conn *conn);
struct tcp_info_linux; struct tcp_info_linux;
void tcp_update_check_tcp4(const struct iphdr *iph,
const struct iovec *iov, int iov_cnt,
size_t l4offset);
void tcp_update_check_tcp6(const struct ipv6hdr *ip6h,
const struct iovec *iov, int iov_cnt,
size_t l4offset);
size_t tcp_fill_headers4(const struct tcp_tap_conn *conn,
struct tap_hdr *taph,
struct iphdr *iph, struct tcp_payload_t *bp,
size_t dlen, const uint16_t *check,
uint32_t seq, bool no_tcp_csum);
size_t tcp_fill_headers6(const struct tcp_tap_conn *conn,
struct tap_hdr *taph,
struct ipv6hdr *ip6h, struct tcp_payload_t *bp,
size_t dlen, uint32_t seq, bool no_tcp_csum);
size_t tcp_l2_buf_fill_headers(const struct tcp_tap_conn *conn, size_t tcp_l2_buf_fill_headers(const struct tcp_tap_conn *conn,
struct iovec *iov, size_t dlen, struct iovec *iov, size_t dlen,
const uint16_t *check, uint32_t seq, const uint16_t *check, uint32_t seq,