On Thu, Dec 05, 2024 at 09:06:26PM +0100, Stefano Brivio wrote: > On Tue, 3 Dec 2024 16:53:02 -0500 > Jon Maloy wrote: > > > During testing it is sometimes useful to force traffic which would > > normally be forwared by socket splicing through the tap interface. > > > > In this commit, we add a command switch enabling such funtionality > > for inbound local traffic. > > > > For outbound local traffic this is much trickier, if even possible, > > so leave that for a later commit. > > > > Suggested-by: David Gibson > > Signed-off-by: Jon Maloy > > > > --- > > v2: Some minor changes based on feedback from PASST team > > v3: More changes based on feedback from D. Gibson and S. Brivio > > -Moved new option to pasta-only section > > -Added description to man-page > > --- > > conf.c | 7 ++++++- > > fwd.c | 2 +- > > passt.1 | 4 ++++ > > passt.h | 2 ++ > > 4 files changed, 13 insertions(+), 2 deletions(-) > > > > diff --git a/conf.c b/conf.c > > index eaa7d99..53f6770 100644 > > --- a/conf.c > > +++ b/conf.c > > @@ -977,7 +977,8 @@ pasta_opts: > > " Don't copy all routes to namespace\n" > > " --no-copy-addrs DEPRECATED:\n" > > " Don't copy all addresses to namespace\n" > > - " --ns-mac-addr ADDR Set MAC address on tap interface\n"); > > + " --ns-mac-addr ADDR Set MAC address on tap interface\n" > > + " --no-splice Disable inbound socket splicing\n"); > > > > exit(status); > > } > > @@ -1319,6 +1320,7 @@ void conf(struct ctx *c, int argc, char **argv) > > {"no-dhcpv6", no_argument, &c->no_dhcpv6, 1 }, > > {"no-ndp", no_argument, &c->no_ndp, 1 }, > > {"no-ra", no_argument, &c->no_ra, 1 }, > > + {"no-splice", no_argument, &c->no_splice, 1 }, > > {"freebind", no_argument, &c->freebind, 1 }, > > {"no-map-gw", no_argument, &no_map_gw, 1 }, > > {"ipv4-only", no_argument, NULL, '4' }, > > @@ -1756,6 +1758,9 @@ void conf(struct ctx *c, int argc, char **argv) > > } > > } while (name != -1); > > > > + if (c->mode == MODE_PASST) > > + c->no_splice = 1; > > Oops, sorry, I missed this during review, but tests caught it: this > needs to be if (c->mode != MODE_PASTA) to also include the MODE_VU > case, otherwise: Good point. Sorry I missed this on review. -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson