Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2015 18:21:44 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r287056 - projects/routing/sys/netpfil/pf
Message-ID:  <201508231821.t7NILiFY045451@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Sun Aug 23 18:21:43 2015
New Revision: 287056
URL: https://svnweb.freebsd.org/changeset/base/287056

Log:
  Convert last piece of pf to use fib4_lookup_nh_ext()

Modified:
  projects/routing/sys/netpfil/pf/pf.c

Modified: projects/routing/sys/netpfil/pf/pf.c
==============================================================================
--- projects/routing/sys/netpfil/pf/pf.c	Sun Aug 23 18:21:06 2015	(r287055)
+++ projects/routing/sys/netpfil/pf/pf.c	Sun Aug 23 18:21:43 2015	(r287056)
@@ -5220,23 +5220,23 @@ pf_route(struct mbuf **m, struct pf_rule
 	dst.sin_addr = ip->ip_dst;
 
 	if (r->rt == PF_FASTROUTE) {
-		struct rtentry *rt;
+		uint32_t fibnum;
+		struct nhop4_extended nh_ext;
 
 		if (s)
 			PF_STATE_UNLOCK(s);
-		rt = rtalloc1_fib(sintosa(&dst), 0, 0, M_GETFIB(m0));
-		if (rt == NULL) {
+
+		fibnum = M_GETFIB(m0);
+		if (fib4_lookup_nh_ext(fibnum, ip->ip_dst,
+		    m0->m_pkthdr.flowid, NHOP_LOOKUP_REF, &nh_ext) != 0) {
 			KMOD_IPSTAT_INC(ips_noroute);
 			error = EHOSTUNREACH;
 			goto bad;
 		}
 
-		ifp = rt->rt_ifp;
-		counter_u64_add(rt->rt_pksent, 1);
-
-		if (rt->rt_flags & RTF_GATEWAY)
-			bcopy(satosin(rt->rt_gateway), &dst, sizeof(dst));
-		RTFREE_LOCKED(rt);
+		ifp = nh_ext.nh_ifp;
+		dst.sin_addr = nh_ext.nh_addr;
+		fib4_free_nh_ext(fibnum, &nh_ext);
 	} else {
 		if (TAILQ_EMPTY(&r->rpool.list)) {
 			DPFPRINTF(PF_DEBUG_URGENT,



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201508231821.t7NILiFY045451>