freebsd-dev/sys/net
Luigi Rizzo 2b25acc158 Remove (almost all) global variables that were used to hold
packet forwarding state ("annotations") during ip processing.
The code is considerably cleaner now.

The variables removed by this change are:

        ip_divert_cookie        used by divert sockets
        ip_fw_fwd_addr          used for transparent ip redirection
        last_pkt                used by dynamic pipes in dummynet

Removal of the first two has been done by carrying the annotations
into volatile structs prepended to the mbuf chains, and adding
appropriate code to add/remove annotations in the routines which
make use of them, i.e. ip_input(), ip_output(), tcp_input(),
bdg_forward(), ether_demux(), ether_output_frame(), div_output().

On passing, remove a bug in divert handling of fragmented packet.
Now it is the fragment at offset 0 which sets the divert status of
the whole packet, whereas formerly it was the last incoming fragment
to decide.

Removal of last_pkt required a change in the interface of ip_fw_chk()
and dummynet_io(). On passing, use the same mechanism for dummynet
annotations and for divert/forward annotations.

option IPFIREWALL_FORWARD is effectively useless, the code to
implement it is very small and is now in by default to avoid the
obfuscation of conditionally compiled code.

NOTES:
 * there is at least one global variable left, sro_fwd, in ip_output().
   I am not sure if/how this can be removed.

 * I have deliberately avoided gratuitous style changes in this commit
   to avoid cluttering the diffs. Minor stule cleanup will likely be
   necessary

 * this commit only focused on the IP layer. I am sure there is a
   number of global variables used in the TCP and maybe UDP stack.

 * despite the number of files touched, there are absolutely no API's
   or data structures changed by this commit (except the interfaces of
   ip_fw_chk() and dummynet_io(), which are internal anyways), so
   an MFC is quite safe and unintrusive (and desirable, given the
   improved readability of the code).

MFC after: 10 days
2002-06-22 11:51:02 +00:00
..
bpf_compat.h Small fix for bpf compat: 2000-12-27 22:20:13 +00:00
bpf_filter.c Remove __P. 2002-03-19 21:54:18 +00:00
bpf.c Make funsetown() take a 'struct sigio **' so that the locking can 2002-05-06 19:31:28 +00:00
bpf.h Update for libpcap 0.7.1 2002-06-21 05:29:40 +00:00
bpfdesc.h Make bpf's read timeout feature work more correctly with 2001-12-14 22:17:54 +00:00
bridge.c Remove (almost all) global variables that were used to hold 2002-06-22 11:51:02 +00:00
bridge.h Lots of improvement to the bridging code. 2002-02-15 05:11:11 +00:00
bsd_comp.c Replace (deprecated ?) FREE() macro with direct calls to free() 2002-04-04 06:03:17 +00:00
ethernet.h Fix a couple of incorrect m_free() vs. m_freem() usages and related issues. 2002-04-04 05:42:09 +00:00
fddi.h - Merge the pdq driver (if_fpa and if_fea) from NetBSD. 2002-03-29 11:22:22 +00:00
if_arc.h Remove __P. 2002-03-19 21:54:18 +00:00
if_arcsubr.c Cosmetical change: remove empty line to reduce diffs to RELENG_4 2002-04-14 16:40:11 +00:00
if_arp.h bring in ARP support for variable length link level addresses 2001-10-14 20:17:53 +00:00
if_atm.h Remove __P. 2002-03-19 21:54:18 +00:00
if_atmsubr.c Fix warning; remove unused variable 2001-06-15 07:32:25 +00:00
if_disc.c Make discard devices clonable and unloadable. Also, change the 2002-05-25 20:20:35 +00:00
if_dl.h Move ISO88025 source routing information into sockaddr_dl's sdl_data 2002-05-07 22:14:06 +00:00
if_ef.c Fix warning; remove unused arg that was passed through uninitialized. 2002-05-24 06:10:25 +00:00
if_ethersubr.c Remove (almost all) global variables that were used to hold 2002-06-22 11:51:02 +00:00
if_faith.c Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
if_fddisubr.c - Merge the pdq driver (if_fpa and if_fea) from NetBSD. 2002-03-29 11:22:22 +00:00
if_gif.c Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
if_gif.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-24 09:34:04 +00:00
if_ieee80211.h Add two more IEEE80211 defines for status. 2002-04-11 05:43:10 +00:00
if_iso88025subr.c Move ISO88025 source routing information into sockaddr_dl's sdl_data 2002-05-07 22:14:06 +00:00
if_llc.h Sync with NetBSD. 2002-03-29 06:58:45 +00:00
if_loop.c Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
if_media.c Remove __P. 2002-03-19 21:54:18 +00:00
if_media.h MFOpenBSD: ibss and ibss-master. 2002-05-07 18:16:39 +00:00
if_mib.c The interface index space may be sparsely populated (e.g. when an 2001-10-17 04:12:29 +00:00
if_mib.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
if_ppp.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
if_ppp.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
if_pppvar.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-24 09:34:04 +00:00
if_sl.c Change callers of mtx_init() to pass in an appropriate lock type name. In 2002-04-04 21:03:38 +00:00
if_slvar.h sc_lasttime and sc_starttime are time_t's, not long's. 2001-10-27 20:31:24 +00:00
if_sppp.h Implement an option to administratively disable the negotiation of 2001-12-30 20:42:29 +00:00
if_spppsubr.c Fix a misplaced break statement within a switch that accidentally made 2002-05-10 12:48:09 +00:00
if_stf.c Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
if_stf.h just merged cosmetic changes from KAME to ease sync between KAME and FreeBSD. 2002-04-19 04:46:24 +00:00
if_tap.c Make funsetown() take a 'struct sigio **' so that the locking can 2002-05-06 19:31:28 +00:00
if_tap.h Add the tap driver. 2000-07-20 17:01:10 +00:00
if_tapvar.h Add cloning support for the tap(4) device similar to that in the tun(4) 2001-09-05 01:06:21 +00:00
if_tun.c Make funsetown() take a 'struct sigio **' so that the locking can 2002-05-06 19:31:28 +00:00
if_tun.h Implement TUN[GS]IFHEAD ioctls. Passing a non-zero int to TUNSIFHEAD 2000-01-23 01:47:12 +00:00
if_tunvar.h Support /dev/tun cloning. Ansify if_tun.c while I'm there. 2001-06-01 15:51:10 +00:00
if_types.h Add recently assigned interface types. 2001-04-04 14:18:57 +00:00
if_var.h Minor style nit 2002-05-07 18:11:55 +00:00
if_vlan_var.h Simplify the interface cloning framework by handling unit 2002-03-11 09:26:07 +00:00
if_vlan.c Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
if.c Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
if.h Move all unit number management cloned interfaces into the cloning 2002-05-25 20:17:04 +00:00
intrq.c Initialise the intrq_present fields at runtime, not link time. This allows 2002-01-08 10:34:03 +00:00
intrq.h Remove __P. 2002-03-19 21:54:18 +00:00
iso88025.h Fix logic inversion bug. 2002-05-11 06:27:24 +00:00
net_osdep.c just merged cosmetic changes from KAME to ease sync between KAME and FreeBSD. 2002-04-19 04:46:24 +00:00
net_osdep.h just merged cosmetic changes from KAME to ease sync between KAME and FreeBSD. 2002-04-19 04:46:24 +00:00
netisr.h Remove __P. 2002-03-19 21:54:18 +00:00
pfil.c Remove __P. 2002-03-19 21:54:18 +00:00
pfil.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-24 09:34:04 +00:00
pfkeyv2.h printed current sequence number of the SA. accordingly, changed 2001-08-06 19:40:01 +00:00
ppp_comp.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-24 09:34:04 +00:00
ppp_deflate.c Replace (deprecated ?) FREE() macro with direct calls to free() 2002-04-04 06:03:17 +00:00
ppp_defs.h Sync with recent KAME. 2001-06-11 12:39:29 +00:00
ppp_tty.c Change the suser() API to take advantage of td_ucred as well as do a 2002-04-01 21:31:13 +00:00
radix.c just merged cosmetic changes from KAME to ease sync between KAME and FreeBSD. 2002-04-19 04:46:24 +00:00
radix.h Remove __P. 2002-03-19 21:54:18 +00:00
raw_cb.c Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
raw_cb.h Remove __P. 2002-03-19 21:54:18 +00:00
raw_usrreq.c Back out my lats commit of locking down a socket, it conflicts with hsu's work. 2002-05-31 11:52:35 +00:00
route.c Ensure that packet counts are always reset to 0 when 2002-05-31 04:27:51 +00:00
route.h Fixed some style bugs in the removal of __P(()). The main ones were 2002-03-24 09:34:04 +00:00
rtsock.c Remove so*_locked(), which were backed out by mistake. 2002-06-18 07:42:02 +00:00
slcompress.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 04:46:21 +00:00
slcompress.h Remove __P. 2002-03-19 21:54:18 +00:00
slip.h $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
zlib.c Work around zlib bug where using a deflate window size of 8 will 2002-03-23 13:05:53 +00:00
zlib.h Add one copy of crc32() and crc32_tab[] in libkern, and remove it two other 2002-05-29 20:24:09 +00:00