tb_next_port_on_path
in_port = tb_next_port_on_path(src, dst, out_port);
out_port = tb_next_port_on_path(src, dst, in_port);
struct tb_port *tb_next_port_on_path(struct tb_port *start, struct tb_port *end,
for ((p) = tb_next_port_on_path((src), (dst), NULL); (p); \
(p) = tb_next_port_on_path((src), (dst), (p)))
for ((p) = tb_next_port_on_path((src), (dst), NULL); (p); \
(p) = tb_next_port_on_path((src), (dst), (p))) \
p = tb_next_port_on_path(src_port, dst_port, NULL);
p = tb_next_port_on_path(src_port, dst_port, p);
p = tb_next_port_on_path(src_port, dst_port, NULL);
p = tb_next_port_on_path(src_port, dst_port, p);
p = tb_next_port_on_path(src_port, dst_port, p);
p = tb_next_port_on_path(dst_port, src_port, NULL);
p = tb_next_port_on_path(dst_port, src_port, p);
p = tb_next_port_on_path(dst_port, src_port, p);