@@ -408,4 +408,75 @@ var _ = Describe("vlan Operations", func() {
408408 })
409409 Expect (err ).NotTo (HaveOccurred ())
410410 })
411+
412+ Describe ("fails to create vlan link with invalid MTU" , func () {
413+ conf := `{
414+ "cniVersion": "0.3.1",
415+ "name": "mynet",
416+ "type": "vlan",
417+ "master": "%s",
418+ "mtu": %d,
419+ "ipam": {
420+ "type": "host-local",
421+ "subnet": "10.1.2.0/24"
422+ }
423+ }`
424+ BeforeEach (func () {
425+ var err error
426+ err = originalNS .Do (func (ns.NetNS ) error {
427+ defer GinkgoRecover ()
428+
429+ // set master link's MTU to 1500
430+ link , err := netlink .LinkByName (MASTER_NAME )
431+ Expect (err ).NotTo (HaveOccurred ())
432+ err = netlink .LinkSetMTU (link , 1500 )
433+ Expect (err ).NotTo (HaveOccurred ())
434+
435+ return nil
436+ })
437+ Expect (err ).NotTo (HaveOccurred ())
438+ })
439+
440+ It ("fails to create vlan link with greater MTU than master interface" , func () {
441+ var err error
442+
443+ args := & skel.CmdArgs {
444+ ContainerID : "dummy" ,
445+ Netns : "/var/run/netns/test" ,
446+ IfName : "eth0" ,
447+ StdinData : []byte (fmt .Sprintf (conf , MASTER_NAME , 1600 )),
448+ }
449+
450+ _ = originalNS .Do (func (netNS ns.NetNS ) error {
451+ defer GinkgoRecover ()
452+
453+ _ , _ , err = testutils .CmdAddWithArgs (args , func () error {
454+ return cmdAdd (args )
455+ })
456+ Expect (err ).To (Equal (fmt .Errorf ("invalid MTU 1600, must be [0, master MTU(1500)]" )))
457+ return nil
458+ })
459+ })
460+
461+ It ("fails to create vlan link with negative MTU" , func () {
462+ var err error
463+
464+ args := & skel.CmdArgs {
465+ ContainerID : "dummy" ,
466+ Netns : "/var/run/netns/test" ,
467+ IfName : "eth0" ,
468+ StdinData : []byte (fmt .Sprintf (conf , MASTER_NAME , - 100 )),
469+ }
470+
471+ _ = originalNS .Do (func (netNS ns.NetNS ) error {
472+ defer GinkgoRecover ()
473+
474+ _ , _ , err = testutils .CmdAddWithArgs (args , func () error {
475+ return cmdAdd (args )
476+ })
477+ Expect (err ).To (Equal (fmt .Errorf ("invalid MTU -100, must be [0, master MTU(1500)]" )))
478+ return nil
479+ })
480+ })
481+ })
411482})
0 commit comments