IP dynamic address hack-port v0.03-rst
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This stuff allows diald ONESHOT connections to get established by
dynamically changing packet source address (and socket's if local procs).
It is implemented for TCP diald-box connections(1) and IP_MASQuerading(2).

If enabled[*] and forwarding interface address has changed:
  1)  Socket (and packet) source address is rewritten ON RETRANSMISSIONS
      while in SYN_SENT state (diald-box processes).
  2)  Out-bounded MASQueraded source address changes ON OUTPUT (when
      internal host does retransmission) until a packet from outside is
      received by the tunnel.

This is specially helpful for auto dialup links (diald), where the
``actual'' outgoing address is unknown at the moment the link is
going up. So, the *same* (local AND masqueraded) connections requests that
bring the link up will be able to get established.

If you enable the RST-provoking mode, then the source address will
be changed, even if the socket is established. This means we send
an incorrect packet out, which causes the remote host to kill our
socket. This is the desired behaviour, because such a socket is
doomed anyway, and the earlier it dies, the better.  This prevents
the dial-on-demand connection from being kept up by a dead connection,
and tells the application that the connection was lost.

[*] At boot, by default no address rewriting is attempted. 

The values for the ip_dynaddr sysctl are:

  1:  To enable:
  2:  To enable verbosity:
  4:  To enable RST-provoking:

Flags can be combined by adding them. Common settings
would be:

  To switch off special handling of dynamic addresses (default)
     # echo 0 > /proc/sys/net/ipv4/ip_dynaddr
  To enable rewriting in quiet mode:
     # echo 1 > /proc/sys/net/ipv4/ip_dynaddr
  To enable rewriting in verbose mode:
     # echo 3 > /proc/sys/net/ipv4/ip_dynaddr
  (for backwards compatibility you can also use)
     # echo 2 > /proc/sys/net/ipv4/ip_dynaddr
  To enable quiet RST-provoking mode:
     # echo 5 > /proc/sys/net/ipv4/ip_dynaddr
  To enable verbose RST-provoking mode:
     # echo 7 > /proc/sys/net/ipv4/ip_dynaddr

Enjoy!

-- Juanjo  <jjciarla@raiz.uncu.edu.ar>
(with RST-provoking mode by Erik Corry <erik@arbat.com>)
