From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: passt.top; dmarc=none (p=none dis=none) header.from=gibson.dropbear.id.au Authentication-Results: passt.top; dkim=pass (2048-bit key; secure) header.d=gibson.dropbear.id.au header.i=@gibson.dropbear.id.au header.a=rsa-sha256 header.s=202502 header.b=cWeCeJMu; dkim-atps=neutral Received: from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3]) by passt.top (Postfix) with ESMTPS id 9A9BC5A0621 for ; Wed, 26 Mar 2025 04:44:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202502; t=1742960649; bh=kjTzrcLFtIRkWOJ4N+ioIHofw44sSyAJtnOdGXaSbQ8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cWeCeJMuLePJ4BgMQca6zz7ek5bnZzSbp8X8EbG5cqkCtKLu2uDw9I7DpfjaMB0OC /+dAZNYL6ex/FLtqWKowWJbT5lyUHEU1Egv6jeCSGE6ncIY3v3n4ATPnAxRC6v+SDp RxTH3lBg93uP9WZkvZEvbwzX+xy5tfdf1bb23e495xwmY08/4NPYZPt43SeZfw0yio nKgwYdZq2pCul8GAEI/aa9eq9/nrH0LyaluA95Gd3CZqPObFd2qzz/QHC18ra0qdka Qr+tn0BEW/ZiwmxthusTz2J7KoZns/QKLL0mwF3qkva2e2a50PJoc716MFGv7JblaH 5lsHLW7/jocvg== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4ZMt215cwsz4x5k; Wed, 26 Mar 2025 14:44:09 +1100 (AEDT) From: David Gibson To: passt-dev@passt.top, Stefano Brivio Subject: [PATCH v2 5/7] udp: Better handling of failure to forward from reply socket Date: Wed, 26 Mar 2025 14:44:05 +1100 Message-ID: <20250326034407.2240846-6-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250326034407.2240846-1-david@gibson.dropbear.id.au> References: <20250326034407.2240846-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: JDX464AUFBOJPR54VF4KJR7QGQTEU56A X-Message-ID-Hash: JDX464AUFBOJPR54VF4KJR7QGQTEU56A X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: David Gibson X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: In udp_reply_sock_handler() if we're unable to forward the datagrams we just print an error. Generally this means we have an unsupported pair of pifs in the flow table, though, and that hasn't change. So, next time we get a matching packet we'll just get the same failure. In vhost-user mode we don't even dequeue the incoming packets which triggered this so we're likely to get the same failure immediately. Instead, close the flow, in the same we we do for an unrecoverable error. Signed-off-by: David Gibson --- udp.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/udp.c b/udp.c index 4258812e..b9d98555 100644 --- a/udp.c +++ b/udp.c @@ -814,9 +814,7 @@ void udp_reply_sock_handler(const struct ctx *c, union epoll_ref ref, if (events & EPOLLERR) { if (udp_sock_errs(c, ref) < 0) { flow_err(uflow, "Unrecoverable error on reply socket"); - flow_err_details(uflow); - udp_flow_close(c, uflow); - return; + goto fail; } } @@ -831,12 +829,15 @@ void udp_reply_sock_handler(const struct ctx *c, union epoll_ref ref, ret = udp_buf_reply_sock_data(c, s, tosidx, now); if (!ret) { - flow_err(uflow, - "No support for forwarding UDP from %s to %s", - pif_name(pif_at_sidx(ref.flowside)), - pif_name(pif_at_sidx(tosidx))); + flow_err(uflow, "Unable to forward UDP"); + goto fail; } } + return; + +fail: + flow_err_details(uflow); + udp_flow_close(c, uflow); } /** -- 2.49.0