@@ -130,12 +130,35 @@ m4_define([ADD_VETH_BOND],
# Add a VLAN device named 'port' within 'namespace'. It will be configured
# with the ID 'vlan-id' and the address 'ip-addr'.
m4_define([ADD_VLAN],
- [ NS_CHECK_EXEC([$2], [ip link add link $1 name $1.$3 type vlan id $3])
+ [ NS_CHECK_EXEC([$2], [ip link add link $1 name $1.$3 type vlan proto 802.1q id $3])
NS_CHECK_EXEC([$2], [ip link set dev $1.$3 up])
NS_CHECK_EXEC([$2], [ip addr add dev $1.$3 $4])
]
)
+# ADD_SVLAN([port], [namespace], [vlan-id], [ip-addr])
+#
+# Add a SVLAN device named 'port' within 'namespace'. It will be configured
+# with the ID 'vlan-id' and the address 'ip-addr'.
+m4_define([ADD_SVLAN],
+ [ NS_CHECK_EXEC([$2], [ip link add link $1 name $1.$3 type vlan proto 802.1ad id $3])
+ NS_CHECK_EXEC([$2], [ip link set dev $1.$3 up])
+ NS_CHECK_EXEC([$2], [ip addr add dev $1.$3 $4])
+ NS_CHECK_EXEC([$2], [ip link set $1.$3 mtu 1496])
+ ]
+)
+
+# ADD_CVLAN([port], [namespace], [vlan-id], [ip-addr])
+#
+# Similar to ADD_VLAN(), but sets MTU. Lower MTU here instead of increase MTU
+# on bridge/SVLAN because older kernels didn't work.
+#
+m4_define([ADD_CVLAN],
+ [ ADD_VLAN([$1], [$2], [$3], [$4])
+ NS_CHECK_EXEC([$2], [ip link set $1.$3 mtu 1492])
+ ]
+)
+
# ADD_OVS_TUNNEL([type], [bridge], [port], [remote-addr], [overlay-addr])
#
# Add an ovs-based tunnel device in the root namespace, with name 'port' and
@@ -213,3 +236,10 @@ m4_define([OVS_CHECK_GRE],
# 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_8021AD()
+m4_define([OVS_CHECK_8021AD],
+ [AT_SKIP_IF([! grep "VLAN label stack" ovs-vswitchd.log])
+ AT_SKIP_IF([test `sed -n 's/.*VLAN label stack length probed as \(\d*\)/\1/p' ovs-vswitchd.log` -lt 2])
+ AT_CHECK([ovs-vsctl set Open_vSwitch . other_config:vlan-limit=0])
+ ])
Add macros OVS_CHECK_8021AD(), ADD_SVLAN() and ADD_CVLAN(). Signed-off-by: Eric Garver <e@erig.me> --- tests/system-common-macros.at | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-)