Skip to content

Commit bee8d6c

Browse files
committed
vlan: add MTU validation in loadNetConf
Signed-off-by: Bruce Ma <brucema19901024@gmail.com>
1 parent a162329 commit bee8d6c

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

plugins/main/vlan/vlan.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,27 @@ func loadConf(bytes []byte) (*NetConf, string, error) {
5858
if n.VlanId < 0 || n.VlanId > 4094 {
5959
return nil, "", fmt.Errorf("invalid VLAN ID %d (must be between 0 and 4095 inclusive)", n.VlanId)
6060
}
61+
62+
// check existing and MTU of master interface
63+
masterMTU, err := getMTUByName(n.Master)
64+
if err != nil {
65+
return nil, "", err
66+
}
67+
if n.MTU < 0 || n.MTU > masterMTU {
68+
return nil, "", fmt.Errorf("invalid MTU %d, must be [0, master MTU(%d)]", n.MTU, masterMTU)
69+
}
70+
6171
return n, n.CNIVersion, nil
6272
}
6373

74+
func getMTUByName(ifName string) (int, error) {
75+
link, err := netlink.LinkByName(ifName)
76+
if err != nil {
77+
return 0, err
78+
}
79+
return link.Attrs().MTU, nil
80+
}
81+
6482
func createVlan(conf *NetConf, ifName string, netns ns.NetNS) (*current.Interface, error) {
6583
vlan := &current.Interface{}
6684

@@ -76,10 +94,6 @@ func createVlan(conf *NetConf, ifName string, netns ns.NetNS) (*current.Interfac
7694
return nil, err
7795
}
7896

79-
if conf.MTU <= 0 {
80-
conf.MTU = m.Attrs().MTU
81-
}
82-
8397
v := &netlink.Vlan{
8498
LinkAttrs: netlink.LinkAttrs{
8599
MTU: conf.MTU,

0 commit comments

Comments
 (0)