func()

in google_guest_agent/network/manager/dhclient_linux.go [544:579]


func (n *dhclient) RollbackNics(ctx context.Context, nics *Interfaces) error {
	// Determine if we can even rollback dhclient processes.
	if isInstalled, err := n.isDhclientInstalled(); !isInstalled || err != nil {
		logger.Debugf("No preconditions met for dhclient roll back, skipping.")
		return nil
	}

	googleInterfaces, googleIpv6Interfaces := interfaceListsIpv4Ipv6(nics.EthernetInterfaces)

	// Release all the interface leases from dhclient.
	for _, iface := range googleInterfaces {
		ipv4Exists, err := dhclientProcessExists(ctx, iface, ipv4)
		if err != nil {
			return fmt.Errorf("error checking if ipv4 dhclient process for %s exists: %v", iface, err)
		}
		if ipv4Exists {
			if err = runDhclient(ctx, ipv4, iface, true); err != nil {
				return err
			}
		}
	}

	for _, iface := range googleIpv6Interfaces {
		ipv6Exists, err := dhclientProcessExists(ctx, iface, ipv6)
		if err != nil {
			return fmt.Errorf("error checking if ipv6 dhclient process for %s exists: %v", iface, err)
		}
		if ipv6Exists {
			if err = runDhclient(ctx, ipv6, iface, true); err != nil {
				return err
			}
		}
	}

	return nil
}