From 034b7dfc08062cde9f63847f34b4d1c604a19a46 Mon Sep 17 00:00:00 2001 From: Nick Cao Date: Sun, 28 Jul 2024 13:50:30 -0400 Subject: [PATCH 1/2] man: network: move note about L3MasterDevice to the correct section --- man/systemd.network.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/man/systemd.network.xml b/man/systemd.network.xml index b0efd62dbd..bd078ecdca 100644 --- a/man/systemd.network.xml +++ b/man/systemd.network.xml @@ -1682,7 +1682,8 @@ NFTSet=prefix:netdev:filter:eth_ipv4_prefix one of predefined names default, main, and local, and names defined in RouteTable= in networkd.conf5, - or a number between 1 and 4294967295. Defaults to main. + or a number between 1 and 4294967295. Defaults to main. + Ignored if L3MasterDevice= is true. @@ -2053,7 +2054,7 @@ NFTSet=prefix:netdev:filter:eth_ipv4_prefix ip route show table num. If unset and Type= is local, broadcast, anycast, or nat, then local is used. - In other cases, defaults to main. Ignored if L3MasterDevice= is true. + In other cases, defaults to main. From 615af2c77d996b2ba6e6d17d376f7a221c0e5822 Mon Sep 17 00:00:00 2001 From: Nick Cao Date: Sun, 28 Jul 2024 10:07:19 -0400 Subject: [PATCH 2/2] network: Fixup Table when L3MasterDevice is set on routing policy rule --- src/network/networkd-routing-policy-rule.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/network/networkd-routing-policy-rule.c b/src/network/networkd-routing-policy-rule.c index 886b4da8e0..c6b3779908 100644 --- a/src/network/networkd-routing-policy-rule.c +++ b/src/network/networkd-routing-policy-rule.c @@ -483,9 +483,7 @@ static int routing_policy_rule_set_netlink_message(const RoutingPolicyRule *rule return r; } - if (rule->l3mdev) - r = sd_rtnl_message_routing_policy_rule_set_table(m, RT_TABLE_UNSPEC); - else if (rule->table < 256) + if (rule->table < 256) r = sd_rtnl_message_routing_policy_rule_set_table(m, rule->table); else { r = sd_rtnl_message_routing_policy_rule_set_table(m, RT_TABLE_UNSPEC); @@ -1784,6 +1782,9 @@ static int routing_policy_rule_section_verify(RoutingPolicyRule *rule) { /* rule->family can be AF_UNSPEC only when Family=both. */ } + if (rule->l3mdev) + rule->table = RT_TABLE_UNSPEC; + return 0; }