in google_guest_agent/network/manager/netplan_linux.go [246:304]
func (n *netplan) writeNetworkdDropin(interfaces, ipv6Interfaces []string) (bool, error) {
var requiresReload 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 i, iface := range interfaces {
if !shouldManageInterface(i == 0) {
logger.Debugf("ManagePrimaryNIC is disabled, skipping writeNetworkdDropin for %s", iface)
continue
}
if isInvalid(iface) {
continue
}
logger.Debugf("writing systemd-networkd drop-in config for %s", iface)
var dhcp = "ipv4"
if slices.Contains(ipv6Interfaces, iface) {
dhcp = "yes"
}
// Create and setup ini file.
data := networkdNetplanDropin{
Match: systemdMatchConfig{
Name: iface,
},
Network: systemdNetworkConfig{
DNSDefaultRoute: true,
DHCP: dhcp,
},
}
// We are only interested on DHCP offered routes on the primary nic,
// ignore it for the secondary ones.
if i != 0 {
data.Network.DNSDefaultRoute = false
data.DHCPv4 = &systemdDHCPConfig{
RoutesToDNS: false,
RoutesToNTP: false,
}
}
wrote, err := data.write(n, iface)
if err != nil {
return false, fmt.Errorf("failed to write systemd drop-in config: %w", err)
}
if wrote {
requiresReload = true
}
}
return requiresReload, nil
}