diff options
author | Laurent Vivier <lvivier@redhat.com> | 2024-08-02 18:10:35 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-08-05 17:37:53 +0200 |
commit | 623ceb1f2b9051e3c6b34c99463a22a558b74674 (patch) | |
tree | 301c897be9c7fb457d893bbd85a70f70decb90ef | |
parent | a5bbefa6fb799ba009b9704bb440e22778cd5d51 (diff) | |
download | passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.tar passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.tar.gz passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.tar.bz2 passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.tar.lz passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.tar.xz passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.tar.zst passt-623ceb1f2b9051e3c6b34c99463a22a558b74674.zip |
udp_flow: Remove udp_meta_t from the parameters of udp_flow_from_sock()
To be used with the vhost-user version of udp.c, we need to export the
udp_flow functions. To avoid to export udp_meta_t too that is specific
to the socket version of udp.c, don't pass udp_meta_t to it,
but the only needed field, s_in.
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>
-rw-r--r-- | udp.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -432,7 +432,7 @@ cancel: * udp_flow_from_sock() - Find or create UDP flow for "listening" socket * @c: Execution context * @ref: epoll reference of the receiving socket - * @meta: Metadata buffer for the datagram + * @s_in: Source socket address, filled in by recvmmsg() * @now: Timestamp * * #syscalls fcntl @@ -441,7 +441,7 @@ cancel: * FLOW_SIDX_NONE if we couldn't find or create a flow. */ static flow_sidx_t udp_flow_from_sock(const struct ctx *c, union epoll_ref ref, - struct udp_meta_t *meta, + const union sockaddr_inany *s_in, const struct timespec *now) { struct udp_flow *uflow; @@ -450,7 +450,7 @@ static flow_sidx_t udp_flow_from_sock(const struct ctx *c, union epoll_ref ref, ASSERT(ref.type == EPOLL_TYPE_UDP_LISTEN); - sidx = flow_lookup_sa(c, IPPROTO_UDP, ref.udp.pif, &meta->s_in, ref.udp.port); + sidx = flow_lookup_sa(c, IPPROTO_UDP, ref.udp.pif, s_in, ref.udp.port); if ((uflow = udp_at_sidx(sidx))) { uflow->ts = now->tv_sec; return flow_sidx_opposite(sidx); @@ -461,11 +461,11 @@ static flow_sidx_t udp_flow_from_sock(const struct ctx *c, union epoll_ref ref, debug("Couldn't allocate flow for UDP datagram from %s %s", pif_name(ref.udp.pif), - sockaddr_ntop(&meta->s_in, sastr, sizeof(sastr))); + sockaddr_ntop(s_in, sastr, sizeof(sastr))); return FLOW_SIDX_NONE; } - flow_initiate_sa(flow, ref.udp.pif, &meta->s_in, ref.udp.port); + flow_initiate_sa(flow, ref.udp.pif, s_in, ref.udp.port); return udp_flow_new(c, flow, ref.fd, now); } @@ -712,7 +712,7 @@ void udp_listen_sock_handler(const struct ctx *c, union epoll_ref ref, * the array, or recalculating tosidx for a single entry, we have to * populate it one entry *ahead* of the loop counter. */ - udp_meta[0].tosidx = udp_flow_from_sock(c, ref, &udp_meta[0], now); + udp_meta[0].tosidx = udp_flow_from_sock(c, ref, &udp_meta[0].s_in, now); for (i = 0; i < n; ) { flow_sidx_t batchsidx = udp_meta[i].tosidx; uint8_t batchpif = pif_at_sidx(batchsidx); @@ -730,7 +730,7 @@ void udp_listen_sock_handler(const struct ctx *c, union epoll_ref ref, break; udp_meta[i].tosidx = udp_flow_from_sock(c, ref, - &udp_meta[i], + &udp_meta[i].s_in, now); } while (flow_sidx_eq(udp_meta[i].tosidx, batchsidx)); |