On Sun, Feb 16, 2025 at 11:22:26PM +0100, Stefano Brivio wrote: > This implements flow preparation on the source, transfer of data with > a format roughly inspired by struct tcp_tap_conn, plus a specific > structure for parameters that don't fit in the flow table, and flow > insertion on the target, with all the appropriate window options, > window scaling, MSS, etc. > > Contents of pending queues are transferred as well. > > The target side is rather convoluted because we first need to create > sockets and switch them to repair mode, before we can apply options > that are *not* stored in the flow table. This also means that, if > we're testing this on the same machine, in the same namespace, we need > to close the listening socket on the source before we can start moving > data. > > Further, we need to connect() the socket on the target before we can > restore data queues, but we can't do that (again, on the same machine) > as long as the matching source socket is open, which implies an > arbitrary limit on queue sizes we can transfer, because we can only > dump pending queues on the source as long as the socket is open, of > course. > > Co-authored-by: David Gibson > Signed-off-by: Stefano Brivio The tests all pass for me, and while I can certainly see things that can be improved, none are urgent. Tested-by: David Gibson Reviewed-by: David Gibson -- 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