@@ -13,44 +13,37 @@ import (
1313 "github.com/go-check/check"
1414)
1515
16- var (
17- MacvlanKernelSupport = testRequirement {
18- func () bool {
19- const macvlanKernelVer = 3 // minimum macvlan kernel support
20- const macvlanMajorVer = 9 // minimum macvlan major kernel support
21- kv , err := kernel .GetKernelVersion ()
22- if err != nil {
23- return false
24- }
25- // ensure Kernel version is >= v3.9 for macvlan support
26- if kv .Kernel < macvlanKernelVer || (kv .Kernel == macvlanKernelVer && kv .Major < macvlanMajorVer ) {
27- return false
28- }
29- return true
30- },
31- "kernel version failed to meet the minimum macvlan kernel requirement of 3.9" ,
16+ func macvlanKernelSupport () bool {
17+ const macvlanKernelVer = 3 // minimum macvlan kernel support
18+ const macvlanMajorVer = 9 // minimum macvlan major kernel support
19+ kv , err := kernel .GetKernelVersion ()
20+ if err != nil {
21+ return false
3222 }
33- IpvlanKernelSupport = testRequirement {
34- func () bool {
35- const ipvlanKernelVer = 4 // minimum ipvlan kernel support
36- const ipvlanMajorVer = 2 // minimum ipvlan major kernel support
37- kv , err := kernel .GetKernelVersion ()
38- if err != nil {
39- return false
40- }
41- // ensure Kernel version is >= v4.2 for ipvlan support
42- if kv .Kernel < ipvlanKernelVer || (kv .Kernel == ipvlanKernelVer && kv .Major < ipvlanMajorVer ) {
43- return false
44- }
45- return true
46- },
47- "kernel version failed to meet the minimum ipvlan kernel requirement of 4.0.0" ,
23+ // ensure Kernel version is >= v3.9 for macvlan support
24+ if kv .Kernel < macvlanKernelVer || (kv .Kernel == macvlanKernelVer && kv .Major < macvlanMajorVer ) {
25+ return false
4826 }
49- )
27+ return true
28+ }
29+
30+ func ipvlanKernelSupport () bool {
31+ const ipvlanKernelVer = 4 // minimum ipvlan kernel support
32+ const ipvlanMajorVer = 2 // minimum ipvlan major kernel support
33+ kv , err := kernel .GetKernelVersion ()
34+ if err != nil {
35+ return false
36+ }
37+ // ensure Kernel version is >= v4.2 for ipvlan support
38+ if kv .Kernel < ipvlanKernelVer || (kv .Kernel == ipvlanKernelVer && kv .Major < ipvlanMajorVer ) {
39+ return false
40+ }
41+ return true
42+ }
5043
5144func (s * DockerNetworkSuite ) TestDockerNetworkMacvlanPersistance (c * check.C ) {
5245 // verify the driver automatically provisions the 802.1q link (dm-dummy0.60)
53- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
46+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
5447
5548 // master dummy interface 'dm' abbreviation represents 'docker macvlan'
5649 master := "dm-dummy0"
@@ -70,7 +63,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkMacvlanPersistance(c *check.C) {
7063
7164func (s * DockerNetworkSuite ) TestDockerNetworkIpvlanPersistance (c * check.C ) {
7265 // verify the driver automatically provisions the 802.1q link (di-dummy0.70)
73- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
66+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
7467 // master dummy interface 'di' notation represent 'docker ipvlan'
7568 master := "di-dummy0"
7669 // simulate the master link the vlan tagged subinterface parent link will use
@@ -89,7 +82,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkIpvlanPersistance(c *check.C) {
8982
9083func (s * DockerNetworkSuite ) TestDockerNetworkMacvlanSubIntCreate (c * check.C ) {
9184 // verify the driver automatically provisions the 802.1q link (dm-dummy0.50)
92- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
85+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
9386 // master dummy interface 'dm' abbreviation represents 'docker macvlan'
9487 master := "dm-dummy0"
9588 // simulate the master link the vlan tagged subinterface parent link will use
@@ -104,7 +97,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkMacvlanSubIntCreate(c *check.C) {
10497
10598func (s * DockerNetworkSuite ) TestDockerNetworkIpvlanSubIntCreate (c * check.C ) {
10699 // verify the driver automatically provisions the 802.1q link (di-dummy0.50)
107- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
100+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
108101 // master dummy interface 'dm' abbreviation represents 'docker ipvlan'
109102 master := "di-dummy0"
110103 // simulate the master link the vlan tagged subinterface parent link will use
@@ -119,7 +112,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkIpvlanSubIntCreate(c *check.C) {
119112
120113func (s * DockerNetworkSuite ) TestDockerNetworkMacvlanOverlapParent (c * check.C ) {
121114 // verify the same parent interface cannot be used if already in use by an existing network
122- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
115+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
123116 // master dummy interface 'dm' abbreviation represents 'docker macvlan'
124117 master := "dm-dummy0"
125118 out , err := createMasterDummy (c , master )
@@ -139,7 +132,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkMacvlanOverlapParent(c *check.C) {
139132
140133func (s * DockerNetworkSuite ) TestDockerNetworkIpvlanOverlapParent (c * check.C ) {
141134 // verify the same parent interface cannot be used if already in use by an existing network
142- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
135+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
143136 // master dummy interface 'dm' abbreviation represents 'docker ipvlan'
144137 master := "di-dummy0"
145138 out , err := createMasterDummy (c , master )
@@ -159,7 +152,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkIpvlanOverlapParent(c *check.C) {
159152
160153func (s * DockerNetworkSuite ) TestDockerNetworkMacvlanMultiSubnet (c * check.C ) {
161154 // create a dual stack multi-subnet Macvlan bridge mode network and validate connectivity between four containers, two on each subnet
162- testRequires (c , DaemonIsLinux , IPv6 , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
155+ testRequires (c , DaemonIsLinux , IPv6 , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
163156 dockerCmd (c , "network" , "create" , "--driver=macvlan" , "--ipv6" , "--subnet=172.28.100.0/24" , "--subnet=172.28.102.0/24" , "--gateway=172.28.102.254" ,
164157 "--subnet=2001:db8:abc2::/64" , "--subnet=2001:db8:abc4::/64" , "--gateway=2001:db8:abc4::254" , "dualstackbridge" )
165158 // Ensure the network was created
@@ -214,7 +207,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkMacvlanMultiSubnet(c *check.C) {
214207
215208func (s * DockerNetworkSuite ) TestDockerNetworkIpvlanL2MultiSubnet (c * check.C ) {
216209 // create a dual stack multi-subnet Ipvlan L2 network and validate connectivity within the subnets, two on each subnet
217- testRequires (c , DaemonIsLinux , IPv6 , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
210+ testRequires (c , DaemonIsLinux , IPv6 , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
218211 dockerCmd (c , "network" , "create" , "--driver=ipvlan" , "--ipv6" , "--subnet=172.28.200.0/24" , "--subnet=172.28.202.0/24" , "--gateway=172.28.202.254" ,
219212 "--subnet=2001:db8:abc8::/64" , "--subnet=2001:db8:abc6::/64" , "--gateway=2001:db8:abc6::254" , "dualstackl2" )
220213 // Ensure the network was created
@@ -268,7 +261,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkIpvlanL2MultiSubnet(c *check.C) {
268261
269262func (s * DockerNetworkSuite ) TestDockerNetworkIpvlanL3MultiSubnet (c * check.C ) {
270263 // create a dual stack multi-subnet Ipvlan L3 network and validate connectivity between all four containers per L3 mode
271- testRequires (c , DaemonIsLinux , IPv6 , IpvlanKernelSupport , NotUserNamespace , NotArm , IPv6 , ExperimentalDaemon )
264+ testRequires (c , DaemonIsLinux , IPv6 , ipvlanKernelSupport , NotUserNamespace , NotArm , IPv6 , ExperimentalDaemon )
272265 dockerCmd (c , "network" , "create" , "--driver=ipvlan" , "--ipv6" , "--subnet=172.28.10.0/24" , "--subnet=172.28.12.0/24" , "--gateway=172.28.12.254" ,
273266 "--subnet=2001:db8:abc9::/64" , "--subnet=2001:db8:abc7::/64" , "--gateway=2001:db8:abc7::254" , "-o" , "ipvlan_mode=l3" , "dualstackl3" )
274267 // Ensure the network was created
@@ -327,7 +320,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkIpvlanL3MultiSubnet(c *check.C) {
327320
328321func (s * DockerNetworkSuite ) TestDockerNetworkIpvlanAddressing (c * check.C ) {
329322 // Ensure the default gateways, next-hops and default dev devices are properly set
330- testRequires (c , DaemonIsLinux , IPv6 , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
323+ testRequires (c , DaemonIsLinux , IPv6 , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
331324 dockerCmd (c , "network" , "create" , "--driver=macvlan" , "--ipv6" , "--subnet=172.28.130.0/24" ,
332325 "--subnet=2001:db8:abca::/64" , "--gateway=2001:db8:abca::254" , "-o" , "macvlan_mode=bridge" , "dualstackbridge" )
333326 assertNwIsAvailable (c , "dualstackbridge" )
@@ -373,7 +366,7 @@ func (s *DockerNetworkSuite) TestDockerNetworkIpvlanAddressing(c *check.C) {
373366
374367func (s * DockerSuite ) TestDockerNetworkMacVlanBridgeNilParent (c * check.C ) {
375368 // macvlan bridge mode - dummy parent interface is provisioned dynamically
376- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
369+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
377370 dockerCmd (c , "network" , "create" , "--driver=macvlan" , "dm-nil-parent" )
378371 assertNwIsAvailable (c , "dm-nil-parent" )
379372
@@ -390,7 +383,7 @@ func (s *DockerSuite) TestDockerNetworkMacVlanBridgeNilParent(c *check.C) {
390383
391384func (s * DockerSuite ) TestDockerNetworkMacVlanBridgeInternalMode (c * check.C ) {
392385 // macvlan bridge mode --internal containers can communicate inside the network but not externally
393- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
386+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
394387 dockerCmd (c , "network" , "create" , "--driver=macvlan" , "--internal" , "dm-internal" )
395388 assertNwIsAvailable (c , "dm-internal" )
396389 nr := getNetworkResource (c , "dm-internal" )
@@ -413,7 +406,7 @@ func (s *DockerSuite) TestDockerNetworkMacVlanBridgeInternalMode(c *check.C) {
413406
414407func (s * DockerSuite ) TestDockerNetworkIpvlanL2NilParent (c * check.C ) {
415408 // ipvlan l2 mode - dummy parent interface is provisioned dynamically
416- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
409+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
417410 dockerCmd (c , "network" , "create" , "--driver=ipvlan" , "di-nil-parent" )
418411 assertNwIsAvailable (c , "di-nil-parent" )
419412
@@ -430,7 +423,7 @@ func (s *DockerSuite) TestDockerNetworkIpvlanL2NilParent(c *check.C) {
430423
431424func (s * DockerSuite ) TestDockerNetworkIpvlanL2InternalMode (c * check.C ) {
432425 // ipvlan l2 mode --internal containers can communicate inside the network but not externally
433- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
426+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
434427 dockerCmd (c , "network" , "create" , "--driver=ipvlan" , "--internal" , "di-internal" )
435428 assertNwIsAvailable (c , "di-internal" )
436429 nr := getNetworkResource (c , "di-internal" )
@@ -452,7 +445,7 @@ func (s *DockerSuite) TestDockerNetworkIpvlanL2InternalMode(c *check.C) {
452445
453446func (s * DockerSuite ) TestDockerNetworkIpvlanL3NilParent (c * check.C ) {
454447 // ipvlan l3 mode - dummy parent interface is provisioned dynamically
455- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
448+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
456449 dockerCmd (c , "network" , "create" , "--driver=ipvlan" , "--subnet=172.28.230.0/24" ,
457450 "--subnet=172.28.220.0/24" , "-o" , "ipvlan_mode=l3" , "di-nil-parent-l3" )
458451 assertNwIsAvailable (c , "di-nil-parent-l3" )
@@ -470,7 +463,7 @@ func (s *DockerSuite) TestDockerNetworkIpvlanL3NilParent(c *check.C) {
470463
471464func (s * DockerSuite ) TestDockerNetworkIpvlanL3InternalMode (c * check.C ) {
472465 // ipvlan l3 mode --internal containers can communicate inside the network but not externally
473- testRequires (c , DaemonIsLinux , IpvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
466+ testRequires (c , DaemonIsLinux , ipvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
474467 dockerCmd (c , "network" , "create" , "--driver=ipvlan" , "--subnet=172.28.230.0/24" ,
475468 "--subnet=172.28.220.0/24" , "-o" , "ipvlan_mode=l3" , "--internal" , "di-internal-l3" )
476469 assertNwIsAvailable (c , "di-internal-l3" )
@@ -493,7 +486,7 @@ func (s *DockerSuite) TestDockerNetworkIpvlanL3InternalMode(c *check.C) {
493486
494487func (s * DockerSuite ) TestDockerNetworkMacVlanExistingParent (c * check.C ) {
495488 // macvlan bridge mode - empty parent interface containers can reach each other internally but not externally
496- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
489+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
497490 netName := "dm-parent-exists"
498491 out , err := createMasterDummy (c , "dm-dummy0" )
499492 //out, err := createVlanInterface(c, "dm-parent", "dm-slave", "macvlan", "bridge")
@@ -513,7 +506,7 @@ func (s *DockerSuite) TestDockerNetworkMacVlanExistingParent(c *check.C) {
513506
514507func (s * DockerSuite ) TestDockerNetworkMacVlanSubinterface (c * check.C ) {
515508 // macvlan bridge mode - empty parent interface containers can reach each other internally but not externally
516- testRequires (c , DaemonIsLinux , MacvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
509+ testRequires (c , DaemonIsLinux , macvlanKernelSupport , NotUserNamespace , NotArm , ExperimentalDaemon )
517510 netName := "dm-subinterface"
518511 out , err := createMasterDummy (c , "dm-dummy0" )
519512 c .Assert (err , check .IsNil , check .Commentf (out ))
0 commit comments