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. 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; }