in google_guest_agent/network/manager/systemd_networkd_linux.go [575:631]
func (n *systemdNetworkd) rollbackConfigs(ctx context.Context, nics *Interfaces, removeVlan bool) error {
logger.Infof("rolling back changes for %s", n.Name())
interfaces, err := interfaceNames(nics.EthernetInterfaces)
if err != nil {
return fmt.Errorf("failed to get list of interface names: %v", err)
}
ethernetRequiresRestart := false
// Rollback ethernet interfaces.
for _, iface := range interfaces {
reqRestart1, err := n.rollbackNetwork(n.networkFile(iface))
if err != nil {
logger.Infof("Failed to rollback .network file: %v", err)
}
reqRestart2, err := n.rollbackNetdev(n.networkFile(iface))
if err != nil {
logger.Warningf("Failed to rollback .network file: %v", err)
}
reqRestart3, err := n.rollbackNetwork(n.deprecatedNetworkFile(iface))
if err != nil {
logger.Warningf("Failed to rollback .network file: %v", err)
}
reqRestart4, err := n.rollbackNetdev(n.deprecatedNetdevFile(iface))
if err != nil {
logger.Warningf("Failed to rollback .network file: %v", err)
}
if reqRestart1 || reqRestart2 || reqRestart3 || reqRestart4 {
ethernetRequiresRestart = true
}
}
vlanRequiresRestart := false
// Rollback vlan interfaces.
if removeVlan {
vlanRequiresRestart, err = n.removeVlanInterfaces(ctx, nil)
if err != nil {
logger.Warningf("Failed to rollback vlan interfaces: %v", err)
}
}
if !ethernetRequiresRestart && !vlanRequiresRestart {
logger.Debugf("No systemd-networkd's configuration rolled back, skipping restart.")
return nil
}
// Avoid restarting systemd-networkd.
if err := run.Quiet(ctx, "networkctl", "reload"); err != nil {
return fmt.Errorf("error reloading systemd-networkd network configs: %v", err)
}
return nil
}