svn commit: r292163 - head/sys/net
Alexander V. Chernikov
melifaro at FreeBSD.org
Sun Dec 13 16:37:03 UTC 2015
Author: melifaro
Date: Sun Dec 13 16:37:01 2015
New Revision: 292163
URL: https://svnweb.freebsd.org/changeset/base/292163
Log:
Fix PINNED routes handling.
Before r291643, adding new interface prefix had the following logic:
try_add:
EEXIST && (PINNED) {
try_del(w/o PINNED flag)
if (OK)
try_add(PINNED)
}
In r291643, deletion was performed w/ PINNED flag held which leaded
to new interface prefixes (like ::1) overriding older ones.
Fix this by requesting deletion w/o RTF_PINNED.
PR: kern/205285
Submitted by: Fabian Keil <fk at fabiankeil.de>
Modified:
head/sys/net/route.c
Modified: head/sys/net/route.c
==============================================================================
--- head/sys/net/route.c Sun Dec 13 11:30:36 2015 (r292162)
+++ head/sys/net/route.c Sun Dec 13 16:37:01 2015 (r292163)
@@ -1586,7 +1586,10 @@ rtrequest1_fib(int req, struct rt_addrin
*/
struct sockaddr *info_dst = info->rti_info[RTAX_DST];
info->rti_info[RTAX_DST] = ndst;
+ /* Do not delete existing PINNED(interface) routes */
+ info->rti_flags &= ~RTF_PINNED;
rt_old = rt_unlinkrte(rnh, info, &error);
+ info->rti_flags |= RTF_PINNED;
info->rti_info[RTAX_DST] = info_dst;
if (rt_old != NULL)
rn = rnh->rnh_addaddr(ndst, netmask, rnh,
More information about the svn-src-all
mailing list