summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2020-11-30 12:08:32 +0100
committerFelix Fietkau <nbd@nbd.name>2020-11-30 12:08:32 +0100
commit524310276f2084d419cb0f2de58b0f42641d987f (patch)
tree9c57837d806e4b0f9ae9f7317145d52fa676832b
parent14f0e8ff928f2adb1c2ee65f11eb1710bb463fef (diff)
downloadnetifd-524310276f2084d419cb0f2de58b0f42641d987f.tar.gz
system-linux: move device settings handling to device.c
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--device.c11
-rw-r--r--system-linux.c9
2 files changed, 10 insertions, 10 deletions
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 {