Hi Stan,
Thank you very much for testing. I was wondering/worried that there will be some churn in getting the test working on both our setups. It's not unheard of I think because your ncdevmem changes had to go through a couple of iterations to work for our slightly different setups, but do bear with me. Thanks!
On Thu, Feb 20, 2025 at 12:01 PM Stanislav Fomichev stfomichev@gmail.com wrote:
@@ -25,18 +25,36 @@ def check_rx(cfg) -> None: require_devmem(cfg)
port = rand_port()
- listen_cmd = f"./ncdevmem -l -f {cfg.ifname} -s {cfg.v6} -p {port}"
listen_cmd = f"{cfg.bin_local} -l -f {cfg.ifname} -s {cfg.v6} -p {port}"
with bkg(listen_cmd) as socat: wait_port_listen(port)
cmd(f"echo -e \"hello\\nworld\"| socat -u - TCP6:[{cfg.v6}]:{port}", host=cfg.remote, shell=True)
cmd(f"echo -e \"hello\\nworld\"| socat -u - TCP6:{cfg.v6}:{port},bind={cfg.remote_v6}:{port}", host=cfg.remote, shell=True)
IPv6 address need to be wrapped into [], so has to be at least: socat -u - TCP6:[{cfg.v6}]:{port},bind=[{cfg.remote_v6}]:{port}
Yeah, I will need to propagate the ncdevmem ipv4 support to devmem.py in the future, but unnecessary for this series. Will do.
But not sure why we care here about bind address here, let the kernel figure out the routing.
I will need to add this in the future to support my 5-tuple flow steering setup in the future, but it is indeed unnecessary for this series. Additionally the bind in the check_tx test is unnecessary, removed there as well. Lets see if it works for you.
Also, seems like "bkg(listen_cmd)" needs to be "bkg(listen_cmd, exit_wait=True)", otherwise sometimes I see racy empty result.
It passes for me with/without, but also fine, will do!
Thanks again for testing!