ipv6 patches

Author: Harald Welte <laforge@gnumonks.org>,
Jozsef Kadlecsik
Status: Pending for kernel inclusion
Implementation of the new nat API for kernel 2.4.18 and above.
- enables us to have multiple related expectations
(necessarry for H.323, real IRC and PPTP tracking, ...)
- allows expectations to have timeouts
- adds full SACK support to the NAT code (we no longer strip
SACKPERM option out of all SYN patckes for ftp/irc connections)

Author: Marc Boucher <marc+nf@mbsi.ca>
Status: Works For Me.
This is a general conntrack match module, a superset of the state match.
(Kernel 2.4.18-pre4 or higher is required)
It allows matching on additional conntrack information, which is
useful in complex configurations, such as NAT gateways with multiple
internet links or tunnels.
It presently supports the following options:
conntrack match v1.2.4 options:
[!] --ctstate [INVALID|ESTABLISHED|NEW|RELATED|SNAT|DNAT][,...]
State(s) to match
[!] --ctproto proto Protocol to match; by number or name, eg. `tcp'
--ctorigsrc [!] address[/mask]
Original source specification
--ctorigdst [!] address[/mask]
Original destination specification
--ctreplsrc [!] address[/mask]
Reply source specification
--ctrepldst [!] address[/mask]
Reply destination specification
[!] --ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
Status(es) to match
[!] --ctexpire time[:time] Match remaining lifetime in seconds against
value or range of values (inclusive)
The "new" SNAT and DNAT states are virtual ones, matching if the original
source address is differs from the reply destination, or if the original
destination differs from the reply source..

Author: Harald Welte <laforge@gnumonks.org>
Status: Pending for kernel inclusion.
This adds CONFIG_IP_NF_MATCH_DSCP option, which allows matching against
the DSCP (formerly called TOS) field within the IPv4 packet.

Author: Harald Welte <laforge@gnumonks.org>,
Matthew G. Marsh
Status: Pending for kernel inclusion.
This adds CONFIG_IP_NF_TARGET_DSCP option, which allows setting the
DSCP (formerly called TOS) field within the packet to any value between
0x0 and 0x4f.

Author: Imran Patel <ipatel@crosswinds.net>, shameless adaption from the
IPv4 match written by James Morris
Status: Should Work.
This module is used for matching the total length of an IPv6
datagram (including the IPv6 header + extension headers, if any)
against a specific value or inclusive range of values. To specify
a single value, use the following form:
--length followed by an optional `!', then the
value, ranging from 0 to 65535 (may also be specified in hex
format).
When specifying a range of values, the first value is taken as the
minimum length and the second value is taken as the maximum length:
--length followed by an optional `!', then the
values in the form of min:max. Values may range from 0 to 65535
but the minimum value cannot be greater than the maximum value.
Examples:
# ip6tables -A FORWARD -p udp -m length --length 85:0xffff -j DROP
# iptables -A FORWARD -p udp -m length --length ! :84 -j DROP
(both do exactly the same thing)
If a range value is missing, its value
is implied: zero for minimum and 0xffff for maximum.