diff -uprN net-next-6.2-rc7/net/core/fib_rules.c net-next-6.2-rc7_patch-Sol2/net/core/fib_rules.c --- net-next-6.2-rc7/net/core/fib_rules.c 2023-02-05 22:13:28.000000000 +0100 +++ net-next-6.2-rc7_patch-Sol2/net/core/fib_rules.c 2023-02-17 10:04:01.111242230 +0100 @@ -684,7 +684,7 @@ errout: } static int rule_exists(struct fib_rules_ops *ops, struct fib_rule_hdr *frh, - struct nlattr **tb, struct fib_rule *rule) + struct nlattr **tb, struct fib_rule *rule,bool user_priority) { struct fib_rule *r; @@ -695,7 +695,7 @@ static int rule_exists(struct fib_rules_ if (r->table != rule->table) continue; - if (r->pref != rule->pref) + if (user_priority && r->pref != rule->pref) continue; if (memcmp(r->iifname, rule->iifname, IFNAMSIZ)) @@ -806,7 +806,7 @@ int fib_nl_newrule(struct sk_buff *skb, goto errout; if ((nlh->nlmsg_flags & NLM_F_EXCL) && - rule_exists(ops, frh, tb, rule)) { + rule_exists(ops, frh, tb, rule,user_priority)) { err = -EEXIST; goto errout_free; }