in google_guest_agent/network/manager/systemd_networkd_linux.go [508:558]
func (n *systemdNetworkd) writeEthernetConfig(interfaces, ipv6Interfaces []string) error {
for i, iface := range interfaces {
if !shouldManageInterface(i == 0) {
logger.Debugf("ManagePrimaryNIC is disabled, skipping systemdNetworkd writeEthernetConfig for %s", iface)
continue
}
if isInvalid(iface) {
continue
}
logger.Debugf("write systemd-networkd network config for %s", iface)
var dhcp = "ipv4"
if slices.Contains(ipv6Interfaces, iface) {
dhcp = "yes"
}
// Create and setup ini file.
data := systemdConfig{
GuestAgent: guestAgentSection{
ManagedByGuestAgent: true,
},
Match: systemdMatchConfig{
Name: iface,
},
Network: systemdNetworkConfig{
DHCP: dhcp,
DNSDefaultRoute: true,
},
}
// 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,
}
data.DHCPv6 = &systemdDHCPConfig{
RoutesToDNS: false,
RoutesToNTP: false,
}
}
if err := data.write(n, iface); err != nil {
return fmt.Errorf("failed to write systemd's ethernet interface config: %+v", err)
}
}
return nil
}