func()

in google_guest_agent/network/manager/netplan_linux.go [682:731]


func (n *netplan) writeNetworkdVLANDropin(nics *Interfaces) (bool, error) {
	var reload bool

	stat, err := os.Stat(n.networkdDropinDir)
	if err != nil {
		return false, fmt.Errorf("failed to stat systemd-networkd's drop-in root dir: %w", err)
	}

	if !stat.IsDir() {
		return false, fmt.Errorf("systemd-networkd drop-in dir(%s) is not a dir", n.networkdDropinDir)
	}

	for _, iface := range nics.VlanInterfaces {
		logger.Debugf("writing systemd-networkd drop-in config for VLAN ID: %d", iface.Vlan)

		var dhcp = "ipv4"
		if iface.DHCPv6Refresh != "" {
			dhcp = "yes"
		}

		ifaceName := n.vlanInterfaceName(iface.ParentInterfaceID, iface.Vlan)
		matchID := n.ID(ifaceName)

		// Create and setup ini file.
		data := networkdNetplanDropin{
			Match: systemdMatchConfig{
				Name: matchID,
			},
			Network: systemdNetworkConfig{
				DNSDefaultRoute: false,
				DHCP:            dhcp,
			},
			DHCPv4: &systemdDHCPConfig{
				RoutesToDNS: false,
				RoutesToNTP: false,
			},
		}

		wrote, err := data.write(n, ifaceName)
		if err != nil {
			return false, fmt.Errorf("failed to write systemd drop-in config for VLAN ID(%s): %w", ifaceName, err)
		}

		if wrote {
			reload = true
		}
	}

	return reload, nil
}