]
)
-# ADD_VETH([port], [namespace], [ovs-br], [ip_addr] [mac_addr [gateway]])
+# ADD_VETH([port], [namespace], [ovs-br], [ip_addr] [mac_addr], [gateway],
+# [ip_addr_flags])
#
# 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'.
AT_CHECK([ip link set dev ovs-$1 up])
AT_CHECK([ovs-vsctl add-port $3 ovs-$1 -- \
set interface ovs-$1 external-ids:iface-id="$1"])
- NS_CHECK_EXEC([$2], [ip addr add $4 dev $1])
+ NS_CHECK_EXEC([$2], [ip addr add $4 dev $1 $7])
NS_CHECK_EXEC([$2], [ip link set dev $1 up])
if test -n "$5"; then
NS_CHECK_EXEC([$2], [ip link set dev $1 address $5])
]
)
-# ADD_OVS_TUNNEL([type], [bridge], [port], [remote-addr], [overlay-addr])
+# ADD_OVS_TUNNEL([type], [bridge], [port], [remote-addr], [overlay-addr],
+# [tunnel-args])
#
# Add an ovs-based tunnel device in the root namespace, with name 'port' and
# type 'type'. The tunnel device will be configured as point-to-point with the
#
m4_define([ADD_OVS_TUNNEL],
[AT_CHECK([ovs-vsctl add-port $2 $3 -- \
- set int $3 type=$1 options:remote_ip=$4])
+ set int $3 type=$1 options:remote_ip=$4 $6])
AT_CHECK([ip addr add dev $2 $5])
AT_CHECK([ip link set dev $2 up])
AT_CHECK([ip link set dev $2 mtu 1450])
]
)
+# ADD_OVS_TUNNEL6([type], [bridge], [port], [remote-addr], [overlay-addr],
+# [tunnel-args])
+#
+# Same as ADD_OVS_TUNNEL, but drops MTU enough for the IPv6 underlay.
+#
+m4_define([ADD_OVS_TUNNEL6],
+ [ADD_OVS_TUNNEL([$1], [$2], [$3], [$4], [$5], [$6])
+ AT_CHECK([ip link set dev $2 mtu 1430])
+ ]
+)
+
# ADD_NATIVE_TUNNEL([type], [port], [namespace], [remote-addr], [overlay-addr],
# [type-args], [link-args])
#
]
)
+# ADD_NATIVE_TUNNEL6([type], [port], [namespace], [remote-addr], [overlay-addr],
+# [type-args], [link-args])
+#
+# Same as ADD_NATIVE_TUNNEL, but drops MTU enough for the IPv6 underlay.
+#
+m4_define([ADD_NATIVE_TUNNEL6],
+ [ADD_NATIVE_TUNNEL([$1], [$2], [$3], [$4], [$5], [$6], [$7])
+ NS_CHECK_EXEC([$3], [ip link set dev $2 mtu 1430])
+ ]
+)
+
# FORMAT_PING([])
#
# Strip variant pieces from ping output so the output can be reliably compared.
m4_define([OVS_CHECK_FIREWALL],
[AT_SKIP_IF([systemctl status firewalld 2>&1 | grep running > /dev/null])])
+# OVS_START_L7([namespace], [protocol])
+#
+# Start a server serving 'protocol' within 'namespace'. The server will exit
+# when the test finishes.
+#
+m4_define([OVS_START_L7],
+ [PIDFILE=$(mktemp $2XXX.pid)
+ NETNS_DAEMONIZE([$1], [[$PYTHON3 $srcdir/test-l7.py $2]], [$PIDFILE])
+
+ dnl netstat doesn't print http over IPv6 as "http6"; drop the number.
+ PROTO=$(echo $2 | sed -e 's/\([[a-zA-Z]]*\).*/\1/')
+ OVS_WAIT_UNTIL([NS_EXEC([$1], [netstat -l | grep $PROTO])])
+ ]
+)
+
# OVS_CHECK_VXLAN()
#
# Do basic check for vxlan functionality, skip the test if it's not there.
[AT_SKIP_IF([! ip link add foo type vxlan help 2>&1 | grep dstport >/dev/null])
OVS_CHECK_FIREWALL()])
+# OVS_CHECK_VXLAN_UDP6ZEROCSUM()
+m4_define([OVS_CHECK_VXLAN_UDP6ZEROCSUM],
+ [AT_SKIP_IF([! ip link add foo type vxlan help 2>&1 | grep udp6zerocsum >/dev/null])
+ OVS_CHECK_FIREWALL()])
+
+# OVS_CHECK_VXLAN_GPE()
+m4_define([OVS_CHECK_VXLAN_GPE],
+ [OVS_CHECK_VXLAN()
+ AT_SKIP_IF([! ip link add foo type vxlan help 2>&1 | grep gpe >/dev/null])])
+
# OVS_CHECK_GRE()
m4_define([OVS_CHECK_GRE],
- [AT_SKIP_IF([! ip link add foo type gretap help 2>&1 | grep gre >/dev/null])
+ [AT_SKIP_IF([! ip link add foo type gretap help 2>&1 | grep gretap >/dev/null])
+ OVS_CHECK_FIREWALL()])
+
+# OVS_CHECK_ERSPAN()
+m4_define([OVS_CHECK_ERSPAN],
+ [AT_SKIP_IF([! ip link add foo type erspan help 2>&1 | grep erspan >/dev/null])
+ OVS_CHECK_FIREWALL()])
+
+# OVS_CHECK_GRE_L3()
+m4_define([OVS_CHECK_GRE_L3],
+ [AT_SKIP_IF([! ip link add foo type gre help 2>&1 | grep "gre " >/dev/null])
OVS_CHECK_FIREWALL()])
# OVS_CHECK_GENEVE()
m4_define([OVS_CHECK_GENEVE],
[AT_SKIP_IF([! ip link add foo type geneve help 2>&1 | grep geneve >/dev/null])
OVS_CHECK_FIREWALL()])
+
+# OVS_CHECK_GENEVE_UDP6ZEROCSUM()
+m4_define([OVS_CHECK_GENEVE_UDP6ZEROCSUM],
+ [AT_SKIP_IF([! ip link add foo type geneve help 2>&1 | grep udp6zerocsum >/dev/null])
+ OVS_CHECK_FIREWALL()])
+
+# OVS_CHECK_8021AD()
+m4_define([OVS_CHECK_8021AD],
+ [AT_SKIP_IF([! grep -q "VLAN header stack length probed as" ovs-vswitchd.log])
+ AT_SKIP_IF([[test `sed -n 's/.*VLAN header stack length probed as \([0-9]\+\).*/\1/p' ovs-vswitchd.log` -lt 2]])])
+
+# OVS_CHECK_IPROUTE_ENCAP()
+m4_define([OVS_CHECK_IPROUTE_ENCAP],
+ [AT_SKIP_IF([! ip route help 2>&1 |grep encap >/dev/null])])
+
+# OVS_CHECK_CT_CLEAR()
+m4_define([OVS_CHECK_CT_CLEAR],
+ [AT_SKIP_IF([! grep -q "Datapath supports ct_clear action" ovs-vswitchd.log])])