svn commit: r273643 - projects/routing/sys/netpfil/pf
Alexander V. Chernikov
melifaro at FreeBSD.org
Sat Oct 25 19:01:03 UTC 2014
Author: melifaro
Date: Sat Oct 25 19:01:02 2014
New Revision: 273643
URL: https://svnweb.freebsd.org/changeset/base/273643
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 Sat Oct 25 18:25:00 2014 (r273642)
+++ projects/routing/sys/netpfil/pf/pf.c Sat Oct 25 19:01:02 2014 (r273643)
@@ -5177,23 +5177,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,
More information about the svn-src-projects
mailing list