summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Marangi2023-12-12 00:14:25 +0000
committerFelix Fietkau2024-01-04 12:35:39 +0000
commit923c4370a1d4f1ca6714287f0e8ff1bc3ad131b0 (patch)
tree08b711a411ca265084cef16b88fb5b91c1328067
parentbe4ffb3b78bcd4dc9be277af9287139cfe85691f (diff)
downloadnetifd-923c4370a1d4f1ca6714287f0e8ff1bc3ad131b0.tar.gz
system-linux: set master early on apply settings
Move master setting up before anything as settings may gets reset on master change. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-rw-r--r--system-linux.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/system-linux.c b/system-linux.c
index 96cc993..0137386 100644
--- a/system-linux.c
+++ b/system-linux.c
@@ -2248,6 +2248,15 @@ system_if_apply_settings(struct device *dev, struct device_settings *s, uint64_t
apply_mask &= s->flags;
+ if (apply_mask & DEV_OPT_MASTER) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)
+ system_set_master(dev, s->master_ifindex);
+ system_refresh_orig_macaddr(dev, &dev->orig_settings);
+#else
+ netifd_log_message(L_WARNING, "%s Your kernel is older than linux 6.1.0, changing DSA port conduit is not supported!", dev->ifname);
+#endif
+ }
+
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, dev->ifname, sizeof(ifr.ifr_name) - 1);
if (apply_mask & DEV_OPT_MTU) {
@@ -2336,14 +2345,6 @@ system_if_apply_settings(struct device *dev, struct device_settings *s, uint64_t
system_set_drop_unsolicited_na(dev, s->drop_unsolicited_na ? "1" : "0");
if (apply_mask & DEV_OPT_ARP_ACCEPT)
system_set_arp_accept(dev, s->arp_accept ? "1" : "0");
- if (apply_mask & DEV_OPT_MASTER) {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(6,1,0)
- system_set_master(dev, s->master_ifindex);
- system_refresh_orig_macaddr(dev, &dev->orig_settings);
-#else
- netifd_log_message(L_WARNING, "%s Your kernel is older than linux 6.1.0, changing DSA port conduit is not supported!", dev->ifname);
-#endif
- }
system_set_ethtool_settings(dev, s);
}