summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authormelifaro <melifaro@FreeBSD.org>2015-12-16 09:18:20 +0000
committermelifaro <melifaro@FreeBSD.org>2015-12-16 09:18:20 +0000
commit2d94c81db6797492a5f821a4cebfc75e822e333b (patch)
tree2c6acf6339a2d3747c26c951da70e42f53314a52 /sys/net
parentf487c94c08bac0f4959d84ed0dc62e5ecd215aee (diff)
downloadFreeBSD-src-2d94c81db6797492a5f821a4cebfc75e822e333b.zip
FreeBSD-src-2d94c81db6797492a5f821a4cebfc75e822e333b.tar.gz
Convert if_stf(4) to new routing api.
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/if_stf.c28
1 files changed, 8 insertions, 20 deletions
diff --git a/sys/net/if_stf.c b/sys/net/if_stf.c
index cbcee14..5209bc8 100644
--- a/sys/net/if_stf.c
+++ b/sys/net/if_stf.c
@@ -101,6 +101,7 @@
#include <net/vnet.h>
#include <netinet/in.h>
+#include <netinet/in_fib.h>
#include <netinet/in_systm.h>
#include <netinet/ip.h>
#include <netinet/ip_var.h>
@@ -557,26 +558,13 @@ stf_checkaddr4(struct stf_softc *sc, struct in_addr *in, struct ifnet *inifp)
* perform ingress filter
*/
if (sc && (STF2IFP(sc)->if_flags & IFF_LINK2) == 0 && inifp) {
- struct sockaddr_in sin;
- struct rtentry *rt;
-
- bzero(&sin, sizeof(sin));
- sin.sin_family = AF_INET;
- sin.sin_len = sizeof(struct sockaddr_in);
- sin.sin_addr = *in;
- rt = rtalloc1_fib((struct sockaddr *)&sin, 0,
- 0UL, sc->sc_fibnum);
- if (!rt || rt->rt_ifp != inifp) {
-#if 0
- log(LOG_WARNING, "%s: packet from 0x%x dropped "
- "due to ingress filter\n", if_name(STF2IFP(sc)),
- (u_int32_t)ntohl(sin.sin_addr.s_addr));
-#endif
- if (rt)
- RTFREE_LOCKED(rt);
- return -1;
- }
- RTFREE_LOCKED(rt);
+ struct nhop4_basic nh4;
+
+ if (fib4_lookup_nh_basic(sc->sc_fibnum, *in, 0, 0, &nh4) != 0)
+ return (-1);
+
+ if (nh4.nh_ifp != inifp)
+ return (-1);
}
return 0;
OpenPOWER on IntegriCloud