in google_guest_agent/network/manager/netplan_linux.go [362:417]
func (n *netplan) writeNetplanEthernetDropin(mtuMap map[string]int, interfaces, ipv6Interfaces []string) (bool, error) {
dropin := netplanDropin{
Network: netplanNetwork{
Version: netplanConfigVersion,
Ethernets: make(map[string]netplanEthernet),
},
}
for i, iface := range interfaces {
if !shouldManageInterface(i == 0) {
logger.Debugf("ManagePrimaryNIC is disabled, skipping writeNetplanEthernetDropin for %s", iface)
continue
}
if isInvalid(iface) {
continue
}
logger.Debugf("Adding %s(%d) to drop-in configuration.", iface, i)
trueVal := true
ne := netplanEthernet{
Match: netplanMatch{Name: iface},
DHCPv4: &trueVal,
DHCP4Overrides: &netplanDHCPOverrides{
UseDomains: shouldUseDomains(i),
},
}
if mtu, found := mtuMap[iface]; found {
ne.MTU = &mtu
}
if slices.Contains(ipv6Interfaces, iface) {
ne.DHCPv6 = &trueVal
ne.DHCP6Overrides = &netplanDHCPOverrides{
UseDomains: shouldUseDomains(i),
}
}
key := n.ID(iface)
dropin.Network.Ethernets[key] = ne
}
// This can happen if its a single NIC VM and primary NIC is not managed
// by Guest Agent. No need to write a file with just version in [dropin].
if len(dropin.Network.Ethernets) == 0 {
logger.Infof("No NICs to configure, skipping writeNetplanEthernetDropin")
return false, nil
}
wrote, err := n.write(dropin, netplanEthernetSuffix)
if err != nil {
return false, fmt.Errorf("failed to write netplan ethernet drop-in config: %+v", err)
}
return wrote, nil
}