From: Felix Fietkau Date: Mon, 30 Nov 2020 11:08:32 +0000 (+0100) Subject: system-linux: move device settings handling to device.c X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=524310276f2084d419cb0f2de58b0f42641d987f;p=project%2Fnetifd.git system-linux: move device settings handling to device.c Signed-off-by: Felix Fietkau --- diff --git a/device.c b/device.c index 3e2b5e9..627f1a2 100644 --- a/device.c +++ b/device.c @@ -143,10 +143,17 @@ static int set_device_state(struct device *dev, bool state) if (!dev->ifindex) return -1; + system_if_get_settings(dev, &dev->orig_settings); + /* Only keep orig settings based on what needs to be set */ + dev->orig_settings.valid_flags = dev->orig_settings.flags; + dev->orig_settings.flags &= dev->settings.flags; + system_if_apply_settings(dev, &dev->settings, dev->settings.flags); + system_if_up(dev); - } - else + } else { system_if_down(dev); + system_if_apply_settings(dev, &dev->orig_settings, dev->orig_settings.flags); + } return 0; } diff --git a/system-linux.c b/system-linux.c index d254b7c..880cd23 100644 --- a/system-linux.c +++ b/system-linux.c @@ -1717,19 +1717,12 @@ 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); - /* Only keep orig settings based on what needs to be set */ - dev->orig_settings.valid_flags = dev->orig_settings.flags; - 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); } int system_if_down(struct device *dev) { - int ret = system_if_flags(dev->ifname, 0, IFF_UP); - system_if_apply_settings(dev, &dev->orig_settings, dev->orig_settings.flags); - return ret; + return system_if_flags(dev->ifname, 0, IFF_UP); } struct if_check_data {