Author: cy
Date: Sun Apr 19 17:01:17 2020
New Revision: 360101
URL: https://svnweb.freebsd.org/changeset/base/360101

Log:
  Convert ipfilter to the new routing KPI.
  
  Reviewed by:  melifaro (previous version)

Modified:
  head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c

Modified: head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c
==============================================================================
--- head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c  Sun Apr 19 17:01:14 
2020        (r360100)
+++ head/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c  Sun Apr 19 17:01:17 
2020        (r360101)
@@ -49,6 +49,7 @@ static const char rcsid[] = "@(#)$Id$";
 #include <net/if_var.h>
 #include <net/netisr.h>
 #include <net/route.h>
+#include <net/route/nhop.h>
 #include <netinet/in.h>
 #include <netinet/in_fib.h>
 #include <netinet/in_var.h>
@@ -698,7 +699,7 @@ ipf_fastroute(m0, mpp, fin, fdp)
        int len, off, error = 0, hlen, code;
        struct ifnet *ifp, *sifp;
        struct sockaddr_in dst;
-       struct nhop4_extended nh4;
+       struct nhop_object *nh;
        u_long fibnum = 0;
        u_short ip_off;
        frdest_t node;
@@ -773,7 +774,9 @@ ipf_fastroute(m0, mpp, fin, fdp)
                dst.sin_addr = fdp->fd_ip;
 
        fibnum = M_GETFIB(m0);
-       if (fib4_lookup_nh_ext(fibnum, dst.sin_addr, NHR_REF, 0, &nh4) != 0) {
+       NET_EPOCH_ASSERT();
+       nh = fib4_lookup(fibnum, dst.sin_addr, 0, NHR_NONE, 0);
+       if (nh == NULL) {
                if (in_localaddr(ip->ip_dst))
                        error = EHOSTUNREACH;
                else
@@ -782,9 +785,9 @@ ipf_fastroute(m0, mpp, fin, fdp)
        }
 
        if (ifp == NULL)
-               ifp = nh4.nh_ifp;
-       if (nh4.nh_flags & NHF_GATEWAY)
-               dst.sin_addr = nh4.nh_addr;
+               ifp = nh->nh_ifp;
+       if (nh->nh_flags & NHF_GATEWAY)
+               dst.sin_addr = nh->gw4_sa.sin_addr;
 
        /*
         * For input packets which are being "fastrouted", they won't
@@ -944,11 +947,13 @@ int
 ipf_verifysrc(fin)
        fr_info_t *fin;
 {
-       struct nhop4_basic nh4;
+       struct nhop_object *nh;
 
-       if (fib4_lookup_nh_basic(0, fin->fin_src, 0, 0, &nh4) != 0)
+       NET_EPOCH_ASSERT();
+       nh = fib4_lookup(RT_DEFAULT_FIB, fin->fin_src, 0, NHR_NONE, 0);
+       if (nh == NULL)
                return (0);
-       return (fin->fin_ifp == nh4.nh_ifp);
+       return (fin->fin_ifp == nh->nh_ifp);
 }
 
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to