in cmd/core_plugin/network/netplan/netplan_linux.go [171:220]
func (sn *serviceNetplan) writeVlanDropin(nics []*nic.Configuration) (bool, error) {
galog.Debugf("Writing vlan drop-in configuration.")
dropin := netplanDropin{
Network: netplanNetwork{
Version: netplanConfigVersion,
Vlans: make(map[string]netplanVlan),
},
}
var vlanConfigured bool
for _, nic := range nics {
for _, vlan := range nic.VlanInterfaces {
trueVal := true
nv := netplanVlan{
ID: vlan.Vlan,
Link: nic.Interface.Name(),
DHCPv4: &trueVal,
}
if len(vlan.IPv6Addresses) > 0 {
nv.DHCPv6 = &trueVal
}
dropin.Network.Vlans[vlan.InterfaceName()] = nv
vlanConfigured = true
}
}
// If we don't have any vlan interfaces, remove the drop-in file.
if !vlanConfigured {
fPath := sn.vlanDropinFile()
if !file.Exists(fPath, file.TypeFile) {
return false, nil
}
if err := os.Remove(fPath); err != nil {
return false, fmt.Errorf("error removing netplan vlan dropin: %w", err)
}
return true, nil
}
if err := sn.write(dropin, sn.vlanDropinFile()); err != nil {
return false, fmt.Errorf("failed to write netplan vlan drop-in config: %+v", err)
}
return true, nil
}