routing: do not allow PINNED routes to be overriden

First configured PINNED routes should have higher priority.

Fixes:		1da4954c92ea
Differential Revision:	https://reviews.freebsd.org/D48650

(cherry picked from commit 361a8395f0b0e6f254fd138798232529679d99f6)
This commit is contained in:
Andrey V. Elsukov 2025-03-02 13:53:49 +03:00 committed by Franco Fichtner
parent 7116d18ec9
commit 7ff16c1a2e

View File

@ -821,7 +821,7 @@ add_route_flags(struct rib_head *rnh, struct rtentry *rt, struct route_nhop_data
/* Now either append or replace */
if (op_flags & RTM_F_REPLACE) {
if (nhop_get_prio(rnd_orig.rnd_nhop) > nhop_get_prio(rnd_add->rnd_nhop)) {
if (nhop_get_prio(rnd_orig.rnd_nhop) == NH_PRIORITY_HIGH) {
/* Old path is "better" (e.g. has PINNED flag set) */
RIB_WUNLOCK(rnh);
error = EEXIST;