The ADD_INT does not work very well with userspace datapath. When we move the interface into separate namespace the ovs-vswitch cannot get ethtool info from that interface and reports errors for some calls:
|00089|netdev_linux|WARN|ethtool command ETHTOOL_GSET on network device vm1 failed: No such device |00091|netdev_linux|WARN|ethtool command ETHTOOL_GDRVINFO on network device vm1 failed: No such device To avoid any warnings that might fail the tests use ADD_VETH instead. Also remove ADD_INT as it is not used anywhere else. Signed-off-by: Ales Musil <[email protected]> --- v3: Rebase on top of current main. Address comments from Simon: - Add reasoning into the commit message and comment for ADD_INT. - Extend ADD_VETH for dualstack support. v4: Rebase on top of current main. Remove the ADD_INT completely. --- tests/system-common-macros.at | 43 ++++++----------------------------- tests/system-ovn.at | 31 ++++++++++++------------- 2 files changed, 22 insertions(+), 52 deletions(-) diff --git a/tests/system-common-macros.at b/tests/system-common-macros.at index d65f359a6..44ef75f2e 100644 --- a/tests/system-common-macros.at +++ b/tests/system-common-macros.at @@ -44,43 +44,8 @@ m4_define([NS_CHECK_EXEC], # appropriate type, and allows additional arguments to be passed. m4_define([ADD_BR], [ovs-vsctl _ADD_BR([$1]) -- $2]) -# ADD_INT([port], [namespace], [ovs-br], [ip_addr] [ip6_addr]) -# -# Add an internal port to 'ovs-br', then shift it into 'namespace' and -# configure it with 'ip_addr' (specified in CIDR notation). -# Optionally add an ipv6 address -m4_define([ADD_INT], - [ AT_CHECK([ovs-vsctl add-port $3 $1 -- set int $1 type=internal]) - AT_CHECK([ip link set $1 netns $2]) - NS_CHECK_EXEC([$2], [ip addr add $4 dev $1]) - NS_CHECK_EXEC([$2], [ip link set dev $1 up]) - if test -n "$5"; then - NS_CHECK_EXEC([$2], [ip -6 addr add $5 dev $1]) - fi - ] -) - -# NS_ADD_INT([port], [namespace], [ovs-br], [ip_addr] [mac_addr] [ip6_addr] [default_gw] [default_ipv6_gw]) -# Create a namespace -# Add an internal port to 'ovs-br', then shift it into 'namespace'. -# Configure it with 'ip_addr' (specified in CIDR notation) and ip6_addr. -# Set mac_addr -# Add default gw for ipv4 and ipv6 -m4_define([NS_ADD_INT], - [ AT_CHECK([ovs-vsctl add-port $3 $1 -- set int $1 type=internal external_ids:iface-id=$1]) - ADD_NAMESPACES($2) - AT_CHECK([ip link set $1 netns $2]) - NS_CHECK_EXEC([$2], [ip link set $1 address $5]) - NS_CHECK_EXEC([$2], [ip link set dev $1 up]) - NS_CHECK_EXEC([$2], [ip addr add $4 dev $1]) - NS_CHECK_EXEC([$2], [ip addr add $6 dev $1]) - NS_CHECK_EXEC([$2], [ip route add default via $7 dev $1]) - NS_CHECK_EXEC([$2], [ip -6 route add default via $8 dev $1]) - ] -) - # ADD_VETH([port], [namespace], [ovs-br], [ip_addr] [mac_addr], [gateway], -# [ip_addr_flags]) +# [ip_addr_flags] [ip6_addr] [gateway6]) # # Add a pair of veth ports. 'port' will be added to name space 'namespace', # and "ovs-'port'" will be added to ovs bridge 'ovs-br'. @@ -108,6 +73,12 @@ m4_define([ADD_VETH], if test -n "$6"; then NS_CHECK_EXEC([$2], [ip route add default via $6]) fi + if test -n "$8"; then + NS_CHECK_EXEC([$2], [ip addr add $8 dev $1]) + fi + if test -n "$9"; then + NS_CHECK_EXEC([$2], [ip route add default via $9]) + fi on_exit "ip link del ovs-$1" ] ) diff --git a/tests/system-ovn.at b/tests/system-ovn.at index 29734331b..7b0475681 100644 --- a/tests/system-ovn.at +++ b/tests/system-ovn.at @@ -8482,11 +8482,18 @@ check ovn-nbctl lsp-set-addresses ln unknown check ovn-nbctl lr-nat-add lr1 snat 172.16.1.10 192.168.1.0/24 check ovn-nbctl lr-nat-add lr1 snat 1711::10 2001::/64 -NS_ADD_INT(ls1p1, ls1p1, br-int, "192.168.1.1/24", "00:00:00:01:01:01", "2001::1/64", "192.168.1.254", "2001::a" ) -NS_ADD_INT(ls1p2, ls1p2, br-int, "192.168.1.2/24", "00:00:00:01:01:02", "2001::2/64", "192.168.1.254", "2001::a" ) +ADD_NAMESPACES(ls1p1) +ADD_VETH(ls1p1, ls1p1, br-int, "192.168.1.1/24", "00:00:00:01:01:01", \ + "192.168.1.254", , "2001::1/64", "2001::a") + +ADD_NAMESPACES(ls1p2) +ADD_VETH(ls1p2, ls1p2, br-int, "192.168.1.2/24", "00:00:00:01:01:02", \ + "192.168.1.254", , "2001::2/64", "2001::a") ADD_NAMESPACES(ext1) -ADD_INT(ext1, ext1, br0, 172.16.1.1/24, 1711::1/64) +ADD_VETH(ext1, ext1, br0, "172.16.1.1/24", "00:ee:00:01:01:01", \ + "172.16.1.254", , "1711::1/64", "1711::a") + check ovn-nbctl --wait=hv sync wait_for_ports_up OVS_WAIT_UNTIL([test "$(ip netns exec ls1p1 ip a | grep 2001::1 | grep tentative)" = ""]) @@ -8548,25 +8555,17 @@ wait_igmp_flows_installed() } ADD_NAMESPACES(vm1) -ADD_INT([vm1], [vm1], [br-int], [42.42.42.1/24]) -NS_CHECK_EXEC([vm1], [ip link set vm1 address 00:00:00:00:00:01], [0]) -NS_CHECK_EXEC([vm1], [ip route add default via 42.42.42.5], [0]) -check ovs-vsctl set Interface vm1 external_ids:iface-id=vm1 +ADD_VETH(vm1, vm1, br-int, "42.42.42.1/24", "00:00:00:00:00:01", \ + "42.42.42.5") ADD_NAMESPACES(vm2) -ADD_INT([vm2], [vm2], [br-int], [42.42.42.2/24]) -NS_CHECK_EXEC([vm2], [ip link set vm2 address 00:00:00:00:00:02], [0]) -NS_CHECK_EXEC([vm2], [ip link set lo up], [0]) -check ovs-vsctl set Interface vm2 external_ids:iface-id=vm2 +ADD_VETH(vm2, vm2, br-int, "42.42.42.2/24", "00:00:00:00:00:02") ADD_NAMESPACES(vm3) NETNS_DAEMONIZE([vm3], [tcpdump -n -i any -nnleX > vm3.pcap 2>/dev/null], [tcpdump3.pid]) -ADD_INT([vm3], [vm3], [br-int], [42.42.42.3/24]) -NS_CHECK_EXEC([vm3], [ip link set vm3 address 00:00:00:00:00:03], [0]) -NS_CHECK_EXEC([vm3], [ip link set lo up], [0]) -NS_CHECK_EXEC([vm3], [ip route add default via 42.42.42.5], [0]) -check ovs-vsctl set Interface vm3 external_ids:iface-id=vm3 +ADD_VETH(vm3, vm3, br-int, "42.42.42.3/24", "00:00:00:00:00:03", \ + "42.42.42.5") NS_CHECK_EXEC([vm2], [sysctl -w net.ipv4.igmp_max_memberships=100], [ignore], [ignore]) NS_CHECK_EXEC([vm3], [sysctl -w net.ipv4.igmp_max_memberships=100], [ignore], [ignore]) -- 2.39.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
