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
}