func()

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
}