netifd: Fix restore of original device settings
authorHans Dedecker <dedeckeh@gmail.com>
Thu, 4 Dec 2014 12:07:15 +0000 (12:07 +0000)
committerSteven Barth <steven@midlink.org>
Mon, 8 Dec 2014 17:13:45 +0000 (18:13 +0100)
Don't restore original device settings based on the device settings flags in system_if_down
as device flags are already reset when the device config is deleted.
Therefore move the masking of the relevant original device settings to system_if_up.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
system-linux.c

index ed69bef..4662bf8 100644 (file)
@@ -1033,6 +1033,8 @@ system_if_apply_settings(struct device *dev, struct device_settings *s, unsigned
 int system_if_up(struct device *dev)
 {
        system_if_get_settings(dev, &dev->orig_settings);
 int system_if_up(struct device *dev)
 {
        system_if_get_settings(dev, &dev->orig_settings);
+       /* Only keep orig settings based on what needs to be set */
+       dev->orig_settings.flags &= dev->settings.flags;
        system_if_apply_settings(dev, &dev->settings, dev->settings.flags);
        return system_if_flags(dev->ifname, IFF_UP, 0);
 }
        system_if_apply_settings(dev, &dev->settings, dev->settings.flags);
        return system_if_flags(dev->ifname, IFF_UP, 0);
 }
@@ -1040,7 +1042,6 @@ int system_if_up(struct device *dev)
 int system_if_down(struct device *dev)
 {
        int ret = system_if_flags(dev->ifname, 0, IFF_UP);
 int system_if_down(struct device *dev)
 {
        int ret = system_if_flags(dev->ifname, 0, IFF_UP);
-       dev->orig_settings.flags &= dev->settings.flags;
        system_if_apply_settings(dev, &dev->orig_settings, dev->orig_settings.flags);
        return ret;
 }
        system_if_apply_settings(dev, &dev->orig_settings, dev->orig_settings.flags);
        return ret;
 }