diff --git a/external/bsd/ipf/dist/ipsend/44arp.c b/external/bsd/ipf/dist/ipsend/44arp.c
index fc5f2be..9ba20a0 100644
--- a/external/bsd/ipf/dist/ipsend/44arp.c
+++ b/external/bsd/ipf/dist/ipsend/44arp.c
@@ -85,7 +85,11 @@ int	arp(addr, eaddr)
 	mib[2] = 0;
 	mib[3] = AF_INET;
 	mib[4] = NET_RT_FLAGS;
+#ifdef RTF_LLINFO
 	mib[5] = RTF_LLINFO;
+#else
+	mib[5] = 0;
+#endif
 	if (sysctl(mib, 6, NULL, &needed, NULL, 0) == -1)
 	    {
 		perror("route-sysctl-estimate");
diff --git a/sbin/route/route.c b/sbin/route/route.c
index 6973df4..03ff8fb 100644
--- a/sbin/route/route.c
+++ b/sbin/route/route.c
@@ -332,8 +332,7 @@ flushroutes(int argc, char * const argv[], int doall)
 			print_rtmsg(rtm, rtm->rtm_msglen);
 		if ((rtm->rtm_flags & flags) != flags)
 			continue;
-		if (!(rtm->rtm_flags & (RTF_GATEWAY | RTF_STATIC |
-					RTF_LLINFO)) && !doall)
+		if (!(rtm->rtm_flags & (RTF_GATEWAY | RTF_STATIC)) && !doall)
 			continue;
 		if (af != AF_UNSPEC && sa->sa_family != af)
 			continue;
@@ -492,9 +491,6 @@ newroute(int argc, char *const *argv)
 			case K_NOSTATIC:
 				flags &= ~RTF_STATIC;
 				break;
-			case K_LLINFO:
-				flags |= RTF_LLINFO;
-				break;
 			case K_LOCK:
 				locking = 1;
 				break;
@@ -1268,7 +1264,6 @@ const char * const msgtypes[] = {
 	[RTM_LOCK] = "RTM_LOCK: fix specified metrics",
 	[RTM_OLDADD] = "RTM_OLDADD: caused by SIOCADDRT",
 	[RTM_OLDDEL] = "RTM_OLDDEL: caused by SIOCDELRT",
-	[RTM_RESOLVE] = "RTM_RESOLVE: Route created by cloning",
 	[RTM_NEWADDR] = "RTM_NEWADDR: address being added to iface",
 	[RTM_DELADDR] = "RTM_DELADDR: address being removed from iface",
 	[RTM_OOIFINFO] = "RTM_OOIFINFO: iface status change (pre-1.5)",
diff --git a/sbin/route/rtutil.c b/sbin/route/rtutil.c
index c2a7c6d..a31a368 100644
--- a/sbin/route/rtutil.c
+++ b/sbin/route/rtutil.c
@@ -83,7 +83,7 @@ static const struct bits bits[] = {
 	{ RTF_MASK,	'm' }, /* Mask Present -- for routing messages only */
 	/* { RTF_CLONING,	'C' }, */
 	{ RTF_CONNECTED, 'C' },
-	{ RTF_XRESOLVE,	'X' },
+	/* { RTF_XRESOLVE,	'X' }, */
 	/* { RTF_LLINFO,	'L' }, */
 	{ RTF_STATIC,	'S' },
 	{ RTF_PROTO1,	'1' },
@@ -263,9 +263,6 @@ p_rtentry(struct rt_msghdr *rtm, int flags, int interesting)
 	char		 ifbuf[IF_NAMESIZE];
 #endif
 
-	if ((flags & RT_LFLAG) && (rtm->rtm_flags & RTF_LLINFO))
-		return;
-
 	if (old_af != sa->sa_family) {
 		old_af = sa->sa_family;
 		p_family(sa->sa_family);
diff --git a/sbin/route/show.c b/sbin/route/show.c
index 4cdca25..62723ea 100644
--- a/sbin/route/show.c
+++ b/sbin/route/show.c
@@ -81,9 +81,6 @@ parse_show_opts(int argc, char * const *argv, int *afp, int *flagsp,
 		case K_HOST:
 			flags |= RTF_HOST;
 			break;
-		case K_LLINFO:
-			flags |= RTF_LLINFO;
-			break;
 		case K_INET:
 			af = AF_INET;
 			afname = argv[argc - 1] + 1;
@@ -136,7 +133,7 @@ show(int argc, char *const *argv, int flags)
 {
 	int af, rflags;
 	static int interesting = RTF_UP | RTF_GATEWAY | RTF_HOST |
-	    RTF_REJECT | RTF_LLINFO | RTF_LOCAL | RTF_BROADCAST;
+	    RTF_REJECT | RTF_LOCAL | RTF_BROADCAST;
 
 	parse_show_opts(argc, argv, &af, &rflags, NULL, true);
 	p_rttables(af, flags, rflags, interesting);
diff --git a/sbin/routed/table.c b/sbin/routed/table.c
index 6f135d7..4414f14 100644
--- a/sbin/routed/table.c
+++ b/sbin/routed/table.c
@@ -1106,12 +1106,6 @@ flush_kern(void)
 		    || INFO_DST(&info)->sa_family != AF_INET)
 			continue;
 
-		/* ignore ARP table entries on systems with a merged route
-		 * and ARP table.
-		 */
-		if (rtm->rtm_flags & RTF_LLINFO)
-			continue;
-
 		/* ignore cloned routes
 		 */
 #if defined(RTF_CLONED) && defined(__bsdi__)
@@ -1273,11 +1267,6 @@ read_rt(void)
 			continue;
 		}
 
-		if (m.r.rtm.rtm_flags & RTF_LLINFO) {
-			trace_act("ignore ARP %s", str);
-			continue;
-		}
-
 #if defined(RTF_CLONED) && defined(__bsdi__)
 		if (m.r.rtm.rtm_flags & RTF_CLONED) {
 			trace_act("ignore cloned %s", str);
diff --git a/sys/net/route.c b/sys/net/route.c
index 5ecce06..858a35c 100644
--- a/sys/net/route.c
+++ b/sys/net/route.c
@@ -973,8 +973,6 @@ rtinit(struct ifaddr *ifa, int cmd, int flags)
 	struct rtentry *nrt = NULL;
 	int error;
 	struct rt_addrinfo info;
-	struct sockaddr_dl *sdl;
-	const struct sockaddr_dl *ifsdl;
 
 	dst = flags & RTF_HOST ? ifa->ifa_dstaddr : ifa->ifa_addr;
 	if (cmd == RTM_DELETE) {
@@ -1018,20 +1016,6 @@ rtinit(struct ifaddr *ifa, int cmd, int flags)
 		rt_newmsg(cmd, rt);
 		break;
 	case RTM_LLINFO_UPD:
-		RT_DPRINTF("%s: updating%s\n", __func__,
-		    ((rt->rt_flags & RTF_LLINFO) == 0) ? " (no llinfo)" : "");
-
-		ifsdl = ifa->ifa_ifp->if_sadl;
-
-		if ((rt->rt_flags & RTF_LLINFO) != 0 &&
-		    (sdl = satosdl(rt->rt_gateway)) != NULL &&
-		    sdl->sdl_family == AF_LINK &&
-		    sockaddr_dl_setaddr(sdl, sdl->sdl_len, CLLADDR(ifsdl),
-		                        ifa->ifa_ifp->if_addrlen) == NULL) {
-			error = EINVAL;
-			break;
-		}
-
 		if (cmd == RTM_LLINFO_UPD && ifa->ifa_rtrequest != NULL)
 			ifa->ifa_rtrequest(RTM_LLINFO_UPD, rt, &info);
 		rt_newmsg(RTM_CHANGE, rt);
diff --git a/sys/net/route.h b/sys/net/route.h
index 7c9f95f..8313c5a 100644
--- a/sys/net/route.h
+++ b/sys/net/route.h
@@ -145,18 +145,14 @@ struct ortentry {
 #define	RTF_MODIFIED	0x20		/* modified dynamically (by redirect) */
 #define RTF_DONE	0x40		/* message confirmed */
 #define RTF_MASK	0x80		/* subnet mask present */
-#define RTF_CLONING	0x100		/* DEPRECATED - exists ONLY for backward
-					   compatibility */
-#define RTF_CONNECTED	0x100		/* host address route */
-#define RTF_XRESOLVE	0x200		/* DEPRECATED - exists ONLY for backward
-					   compatibility */
-#define RTF_LLINFO	0x400		/* DEPRECATED - exists ONLY for backward
-					   compatibility */
+/* #define RTF_CLONING	0x100		   generate new routes on use */
+#define RTF_CONNECTED	0x100		/* hosts on this route are neighbours */
+/* #define RTF_XRESOLVE	0x200		   external daemon resolves name */
+/* #define RTF_LLINFO	0x400		   generated by ARP or NDP */
 #define RTF_LLDATA	0x400		/* used by apps to add/del L2 entries */
 #define RTF_STATIC	0x800		/* manually added */
 #define RTF_BLACKHOLE	0x1000		/* just discard pkts (during updates) */
-#define RTF_CLONED	0x2000		/* DEPRECATED - exists ONLY for backward
-					   compatibility */
+/* #define RTF_CLONED	0x2000		   this is a cloned route */
 #define RTF_PROTO2	0x4000		/* protocol specific routing flag */
 #define RTF_PROTO1	0x8000		/* protocol specific routing flag */
 #define RTF_SRC		0x10000		/* route has fixed source address */
@@ -222,8 +218,7 @@ struct rt_msghdr {
 #define RTM_LOCK	0x8	/* fix specified metrics */
 #define RTM_OLDADD	0x9	/* caused by SIOCADDRT */
 #define RTM_OLDDEL	0xa	/* caused by SIOCDELRT */
-#define RTM_RESOLVE	0xb	/* DEPRECATED - exists ONLY for backward
-				   compatibility */
+/* #define RTM_RESOLVE	0xb	   req to resolve dst to LL addr */
 #define RTM_NEWADDR	0xc	/* address being added to iface */
 #define RTM_DELADDR	0xd	/* address being removed from iface */
 #define RTM_OOIFINFO	0xe	/* Old (pre-1.5) RTM_IFINFO message */
diff --git a/sys/netinet/if_atm.c b/sys/netinet/if_atm.c
index 9c60887..af8d5b8 100644
--- a/sys/netinet/if_atm.c
+++ b/sys/netinet/if_atm.c
@@ -92,10 +92,6 @@ atm_rtrequest(int req, struct rtentry *rt, const struct rt_addrinfo *info)
 
 	switch (req) {
 
-	case RTM_RESOLVE: /* resolve: only happens when cloning */
-		printf("atm_rtrequest: RTM_RESOLVE request detected?\n");
-		break;
-
 	case RTM_ADD:
 
 		/*
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index 20bb898..59a3213 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -1767,17 +1767,15 @@ in_lltable_delete(struct lltable *llt, u_int flags,
 		return (ENOENT);
 	}
 
-	if (!(lle->la_flags & LLE_IFADDR) || (flags & LLE_IFADDR)) {
-		LLE_WLOCK(lle);
-		lle->la_flags |= LLE_DELETED;
+	LLE_WLOCK(lle);
+	lle->la_flags |= LLE_DELETED;
 #ifdef DIAGNOSTIC
-		log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
+	log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
 #endif
-		if ((lle->la_flags & (LLE_STATIC | LLE_IFADDR)) == LLE_STATIC)
-			llentry_free(lle);
-		else
-			LLE_WUNLOCK(lle);
-	}
+	if ((lle->la_flags & (LLE_STATIC | LLE_IFADDR)) == LLE_STATIC)
+		llentry_free(lle);
+	else
+		LLE_WUNLOCK(lle);
 
 	return (0);
 }
diff --git a/sys/netinet6/in6.c b/sys/netinet6/in6.c
index 77243ed..782bed0 100644
--- a/sys/netinet6/in6.c
+++ b/sys/netinet6/in6.c
@@ -2413,17 +2413,15 @@ in6_lltable_delete(struct lltable *llt, u_int flags,
 	if (lle == NULL)
 		return ENOENT;
 
-	if (!(lle->la_flags & LLE_IFADDR) || (flags & LLE_IFADDR)) {
-		LLE_WLOCK(lle);
-		lle->la_flags |= LLE_DELETED;
+	LLE_WLOCK(lle);
+	lle->la_flags |= LLE_DELETED;
 #ifdef DIAGNOSTIC
-		log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
+	log(LOG_INFO, "ifaddr cache = %p is deleted\n", lle);
 #endif
-		if ((lle->la_flags & (LLE_STATIC | LLE_IFADDR)) == LLE_STATIC)
-			llentry_free(lle);
-		else
-			LLE_WUNLOCK(lle);
-	}
+	if ((lle->la_flags & (LLE_STATIC | LLE_IFADDR)) == LLE_STATIC)
+		llentry_free(lle);
+	else
+		LLE_WUNLOCK(lle);
 
 	return 0;
 }
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c
index 2891d5a..bc22d12 100644
--- a/sys/netinet6/nd6.c
+++ b/sys/netinet6/nd6.c
@@ -1013,6 +1013,7 @@ nd6_is_addr_neighbor(const struct sockaddr_in6 *addr, struct ifnet *ifp)
 {
 	struct nd_prefix *pr;
 	struct llentry *ln;
+	struct rtentry *rt;
 
 	/*
 	 * A link-local address is always a neighbor.
@@ -1072,6 +1073,26 @@ nd6_is_addr_neighbor(const struct sockaddr_in6 *addr, struct ifnet *ifp)
 	 * Even if the address matches none of our addresses, it might match
 	 * a cloning route or be in the neighbor cache.
 	 */
+	rt = rtalloc1(sin6tocsa(addr), 0);
+	if (rt == NULL)
+		goto neighbor;
+
+	if ((rt->rt_flags & RTF_CONNECTED) && (rt->rt_ifp == ifp
+#if NBRIDGE > 0
+	    || rt->rt_ifp->if_bridge == ifp->if_bridge
+#endif
+#if NCARP > 0
+	    || (ifp->if_type == IFT_CARP && rt->rt_ifp == ifp->if_carpdev) ||
+	    (rt->rt_ifp->if_type == IFT_CARP && rt->rt_ifp->if_carpdev == ifp)||
+	    (ifp->if_type == IFT_CARP && rt->rt_ifp->if_type == IFT_CARP &&
+	    rt->rt_ifp->if_carpdev == ifp->if_carpdev)
+#endif
+	    )) {
+		rtfree(rt);
+		return 1;
+	}
+	rtfree(rt);
+neighbor:
 	ln = nd6_lookup(&addr->sin6_addr, ifp, false);
 	if (ln != NULL) {
 		LLE_RUNLOCK(ln);
diff --git a/tests/net/arp/t_arp.sh b/tests/net/arp/t_arp.sh
index 519130a..c712eed 100644
--- a/tests/net/arp/t_arp.sh
+++ b/tests/net/arp/t_arp.sh
@@ -185,6 +185,9 @@ command_body()
 
 	export RUMP_SERVER=$SOCKSRC
 
+	# We can delete the entry for the interface's IP address
+	atf_check -s exit:0 -o ignore rump.arp -d $IP4SRC
+
 	# Add and delete a static entry
 	$DEBUG && rump.arp -n -a
 	atf_check -s exit:0 -o ignore rump.arp -s 10.0.1.10 b2:a0:20:00:00:10
@@ -232,8 +235,7 @@ command_body()
 	atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.13
 	atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.14
 	atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.15
-	# arp cache of the interface address isn't deleted
-	atf_check -s exit:0 -o match:'10.0.1.1' rump.arp -n 10.0.1.1
+	atf_check -s not-exit:0 -e ignore rump.arp -n 10.0.1.1
 
 	# Test temp option
 	$DEBUG && rump.arp -n -a
diff --git a/tests/net/ndp/t_ndp.sh b/tests/net/ndp/t_ndp.sh
index b9a102b..32490a4 100644
--- a/tests/net/ndp/t_ndp.sh
+++ b/tests/net/ndp/t_ndp.sh
@@ -162,6 +162,9 @@ command_body()
 
 	export RUMP_SERVER=$SOCKSRC
 
+	# We can delete the entry for the interface's IP address
+	atf_check -s exit:0 -o match:"$IP6SRC" rump.ndp -d $IP6SRC
+
 	# Add and delete a static entry
 	$DEBUG && rump.ndp -n -a
 	atf_check -s exit:0 -o ignore rump.ndp -s fc00::10 b2:a0:20:00:00:10
@@ -201,6 +204,7 @@ command_body()
 	# Flush all entries (-c)
 	$DEBUG && rump.ndp -n -a
 	atf_check -s exit:0 -o ignore rump.ndp -c
+	atf_check -s not-exit:0 -o ignore -e ignore rump.ndp -n $IP6SRC
 	atf_check -s not-exit:0 -o ignore -e ignore rump.ndp -n $IP6DST
 	# Only the static caches are not deleted
 	atf_check -s exit:0 -o ignore -e ignore rump.ndp -n fc00::11
diff --git a/usr.bin/netstat/route.c b/usr.bin/netstat/route.c
index ffa99ee..8f0392e 100644
--- a/usr.bin/netstat/route.c
+++ b/usr.bin/netstat/route.c
@@ -242,9 +242,6 @@ p_krtentry(struct rtentry *rt)
 	union sockaddr_union addr_un, mask_un;
 	struct sockaddr *addr, *mask;
 
-	if (Lflag && (rt->rt_flags & RTF_LLINFO))
-		return;
-
 	memset(&addr_un, 0, sizeof(addr_un));
 	memset(&mask_un, 0, sizeof(mask_un));
 	addr = sockcopy(kgetsa(rt_getkey(rt)), &addr_un);
diff --git a/usr.sbin/arp/arp.c b/usr.sbin/arp/arp.c
index ecb4b83..6d750ec 100644
--- a/usr.sbin/arp/arp.c
+++ b/usr.sbin/arp/arp.c
@@ -458,7 +458,7 @@ dump(uint32_t addr)
 	mib[2] = 0;
 	mib[3] = AF_INET;
 	mib[4] = NET_RT_FLAGS;
-	mib[5] = RTF_LLINFO;
+	mib[5] = 0;
 	if (prog_sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
 		err(1, "route-sysctl-estimate");
 	if (needed == 0)
@@ -533,7 +533,7 @@ delete_all(void)
 	mib[2] = 0;
 	mib[3] = AF_INET;
 	mib[4] = NET_RT_FLAGS;
-	mib[5] = RTF_LLINFO;
+	mib[5] = 0;
 	if (prog_sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
 		err(1, "route-sysctl-estimate");
 	if (needed == 0)
diff --git a/usr.sbin/ldpd/mpls_routes.c b/usr.sbin/ldpd/mpls_routes.c
index d2bf9b1..5dd31a9 100644
--- a/usr.sbin/ldpd/mpls_routes.c
+++ b/usr.sbin/ldpd/mpls_routes.c
@@ -853,8 +853,6 @@ bind_current_routes()
 		rlen = rtmes->rtm_msglen;
 		size_cp = sizeof(struct rt_msghdr);
 		so_gate = so_pref = NULL;
-		if (rtmes->rtm_flags & RTF_LLINFO)	/* No need for arps */
-			continue;
 		if (!(rtmes->rtm_addrs & RTA_DST)) {
 			debugp("No dst\n");
 			continue;
@@ -969,8 +967,6 @@ flush_mpls_routes()
 		rlen = rtm->rtm_msglen;
 		so_pref = NULL;
 		so_gate = NULL;
-		if (rtm->rtm_flags & RTF_LLINFO)	/* No need for arps */
-			continue;
 		if (!(rtm->rtm_addrs & RTA_DST)) {
 			debugp("No dst\n");
 			continue;
diff --git a/usr.sbin/ndp/ndp.c b/usr.sbin/ndp/ndp.c
index a34a0e8..ba6dd0e 100644
--- a/usr.sbin/ndp/ndp.c
+++ b/usr.sbin/ndp/ndp.c
@@ -543,7 +543,7 @@ again:;
 	mib[2] = 0;
 	mib[3] = AF_INET6;
 	mib[4] = NET_RT_FLAGS;
-	mib[5] = RTF_LLINFO;
+	mib[5] = 0;
 	if (prog_sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
 		err(1, "sysctl(PF_ROUTE estimate)");
 	if (needed > 0) {
diff --git a/usr.sbin/rarpd/mkarp.c b/usr.sbin/rarpd/mkarp.c
index 1150cbb..143f2ec 100644
--- a/usr.sbin/rarpd/mkarp.c
+++ b/usr.sbin/rarpd/mkarp.c
@@ -87,6 +87,26 @@ static struct {
 	char	m_space[512];
 }	m_rtmsg;
 
+static int
+is_llinfo(const struct sockaddr_dl *sdl, int rtflags)
+{
+	if (sdl->sdl_family != AF_LINK ||
+	    (rtflags & (RTF_LLDATA|RTF_GATEWAY)) != RTF_LLDATA)
+		return 0;
+
+	switch (sdl->sdl_type) {
+	case IFT_ETHER:
+	case IFT_FDDI:
+	case IFT_ISO88023:
+	case IFT_ISO88024:
+	case IFT_ISO88025:
+	case IFT_ARCNET:
+		return 1;
+	default:
+		return 0;
+	}
+}
+
 /*
  * Set an individual arp entry 
  */
@@ -151,13 +171,8 @@ mkarp(u_char *haddr, u_int32_t ipaddr)
 	sin = (struct sockaddr_inarp *)(rtm + 1);
 	sdl = (struct sockaddr_dl *)(sin->sin_len + (char *)sin);
 	if (sin->sin_addr.s_addr == sin_m.sin_addr.s_addr) {
-		if (sdl->sdl_family == AF_LINK &&
-		    (rtm->rtm_flags & RTF_LLINFO) &&
-		    !(rtm->rtm_flags & RTF_GATEWAY)) switch (sdl->sdl_type) {
-		case IFT_ETHER: case IFT_FDDI: case IFT_ISO88023:
-		case IFT_ISO88024: case IFT_ISO88025: case IFT_ARCNET:
+		if (is_llinfo(sdl, rtm->rtm_flags))
 			goto overwrite;
-		}
 #if 0
 		(void)printf("set: can only proxy for %s\n", host);
 #endif
@@ -209,7 +224,7 @@ rtmsg(int cmd, int s, struct rt_msghdr *rtm, struct sockaddr_inarp *sin_m,
 		(void)gettimeofday(&tv, 0);
 		rtm->rtm_rmx.rmx_expire = tv.tv_sec + 20 * 60;
 		rtm->rtm_inits = RTV_EXPIRE;
-		rtm->rtm_flags |= (RTF_HOST | RTF_STATIC);
+		rtm->rtm_flags |= (RTF_HOST | RTF_STATIC | RTF_LLDATA);
 		sin_m->sin_other = 0;
 
 		/* FALLTHROUGH */
diff --git a/usr.sbin/route6d/route6d.c b/usr.sbin/route6d/route6d.c
index c109360..eaab7d4 100644
--- a/usr.sbin/route6d/route6d.c
+++ b/usr.sbin/route6d/route6d.c
@@ -1597,7 +1597,6 @@ rtrecv(void)
 			continue;
 		case RTM_LOSING:
 		case RTM_MISS:
-		case RTM_RESOLVE:
 		case RTM_GET:
 		case RTM_LOCK:
 			/* nothing to be done here */
@@ -1635,7 +1634,6 @@ rtrecv(void)
 		case RTM_ADD:
 		case RTM_LOSING:
 		case RTM_MISS:
-		case RTM_RESOLVE:
 		case RTM_GET:
 		case RTM_LOCK:
 			/* should already be handled */
@@ -2271,7 +2269,6 @@ do { \
 	RTTYPE("LOCK", RTM_LOCK);
 	RTTYPE("OLDADD", RTM_OLDADD);
 	RTTYPE("OLDDEL", RTM_OLDDEL);
-	RTTYPE("RESOLVE", RTM_RESOLVE);
 	RTTYPE("NEWADDR", RTM_NEWADDR);
 	RTTYPE("DELADDR", RTM_DELADDR);
 	RTTYPE("IFINFO", RTM_IFINFO);
@@ -2321,7 +2318,7 @@ do { \
 #ifdef	RTF_MASK
 	RTFLAG("m", RTF_MASK);
 #endif
-	RTFLAG("C", RTF_CLONING);
+	RTFLAG("C", RTF_CONNECTED);
 #ifdef RTF_CLONED
 	RTFLAG("c", RTF_CLONED);
 #endif
@@ -2331,8 +2328,6 @@ do { \
 #ifdef RTF_WASCLONED
 	RTFLAG("W", RTF_WASCLONED);
 #endif
-	RTFLAG("X", RTF_XRESOLVE);
-	RTFLAG("L", RTF_LLINFO);
 	RTFLAG("S", RTF_STATIC);
 	RTFLAG("B", RTF_BLACKHOLE);
 #ifdef RTF_PROTO3
@@ -2466,7 +2461,7 @@ rt_entry(struct rt_msghdr *rtm, int again)
 
 	sin6_dst = sin6_gw = sin6_mask = sin6_genmask = sin6_ifp = 0;
 	if ((rtm->rtm_flags & RTF_UP) == 0 || rtm->rtm_flags &
-		(RTF_CLONING|RTF_XRESOLVE|RTF_LLINFO|RTF_BLACKHOLE)) {
+	    (RTF_CONNECTED|RTF_BLACKHOLE)) {
 		return;		/* not interested in the link route */
 	}
 	/* do not look at cloned routes */