60149b1ce8
instead of adding/subtracting our own IPv4 header. There are many benefits: gre(4) needn't grok the outer encapsulation header any longer, so this simplifies the gre(4) code. The IP stack needn't grok GRE, so it is simplified, too. gre(4) will benefit from optimizations in the socket code. Eventually, gre(4) will gain an IPv6 encapsulation with very few new lines of code. There is a small performance loss. A 133 MHz, 486-class AMD Elan sinks/sources a TCP stream over GRE with about 93% the throughput of the old code. TCP throughput on a 266 MHz, 586-class AMD Geode is about 96% the throughput of the old code. A 175-MHz ADM5120 (MIPS) only sinks a TCP stream over GRE at about 90% of the old code; I am still investigating that. I produced stripped-down versions of sosend() and soreceive() for gre(4) to use. They are guaranteed not to block, so they can be called from a software interrupt and from a socket upcall, respectively. A kernel thread is no longer necessary for socket transmit/receive, but I didn't get around to removing it, yet. Thanks to Matt Thomas for suggesting the use of stripped-down socket code and software interrupts, and to Andrew Doran for advice and answers concerning software interrupts, threads, and performance.
28 lines
776 B
Makefile
28 lines
776 B
Makefile
# $NetBSD: Makefile,v 1.19 2007/10/05 03:28:13 dyoung Exp $
|
|
|
|
INCSDIR= /usr/include/netinet
|
|
|
|
INCS= icmp6.h icmp_var.h if_atm.h if_ether.h if_inarp.h igmp.h \
|
|
igmp_var.h in.h in_gif.h in_pcb.h in_pcb_hdr.h \
|
|
in_selsrc.h in_systm.h \
|
|
in_var.h ip.h ip_carp.h ip6.h ip_ecn.h ip_encap.h \
|
|
ip_icmp.h ip_mroute.h ip_var.h pim.h pim_var.h \
|
|
tcp.h tcp_debug.h tcp_fsm.h tcp_seq.h tcp_timer.h tcp_var.h \
|
|
tcpip.h udp.h udp_var.h
|
|
|
|
# ipfilter headers
|
|
# XXX shouldn't be here
|
|
.include <bsd.own.mk>
|
|
|
|
INCS+= ip_compat.h # always needed by kdump(1)
|
|
|
|
.if (${MKIPFILTER} != "no")
|
|
INCS+= ip_auth.h ip_fil.h ip_frag.h ip_htable.h ip_nat.h \
|
|
ip_lookup.h ip_pool.h ip_proxy.h ip_scan.h ip_state.h ip_sync.h \
|
|
ipl.h
|
|
.endif
|
|
|
|
.include <bsd.kinc.mk>
|
|
|
|
.PATH: ${NETBSDSRCDIR}/sys/dist/ipf/netinet
|