======================================================================
 Things to do:
======================================================================
(a - more or less- unordered list....):

SHOWSTOPPERS :

1.  Heartbeat path strukturen werden erst beim CommUp initialisiert,
    wenn HB oder HB-Ack vorher eintrifft (cross-init), gibts segfault
3.  Send Sutdown-Ack back to the source address of the SHUTDOWN message !
    Check if that works !
4.  Error-Chunk-Handling must be implemented
    --> Handling of Parameters according to the higher order bits.....
	Handling (Error-Handling) of these chunks - make it v13-conform !
	(Logging, responding with ErrorChunks)
	00001100  - Reserved for Explicit Congestion Notification Echo (ECNE)
  	00001101  - Reserved for Congestion Window Reduced (CWR)
	00001110 to 11111101 - reserved by IETF
  	11111110  - Vendor-specific Chunk Extensions
  	11111111  - IETF-defined Chunk Extensions
5.  Der chunkhandler braucht noch ein paar Paket-"Konstruktoren"/"Parser"
    Funktionen (fr Optionen)
7.  Reinitialization of Associaton (Restart) may change association parameters
    (Number of streams, address-list etc.) -> needs testing !
8.  sanity checks (INIT chunk alone, ABORT with error cause code etc.)
    for bogus packets.
10. Problem Scenario :
    Shutdown request by user, when data is still queued. Check that this data
    gets transmitted properly.

11.  A) When a chunk ahd the 01 or 00 bits set then you would stop processing
        the packet.
     B) When a parameter had the 01 or 00 bits set you would stop processing
        the CHUNK and move to the next chunk.. etc.

NICE TO HAVE :

1.  Replace the doubly linked list package dll_main.c by equivalent (or even
    better) glib functions (there are hash, singly linked lists, doubly linked
    lists, growable arrays and all sort of neat functions we could use)

2.  Replace scan functions in bundling by one function that scans for all chunk
    types that are in an SCTP datagram, and sets an array with flags accordingly.
    The scan functions for one special type of chunk become much simpler then,
    since they only need to check, if a flag in that array is set or not.
    Datagrams only need to be scanned once. This is better !

3.  Allocate a data-super structure for each chunk at the beginning (i.e. ONCE !)
    Then use pointers to these structures in all these lists, to avoid multiple
    copy operations.

4.  SeizePort-Functions should use Bit-mapped array or something similar to
    store used ports. Then we could randomly use and free these.

5.  Implemente SHA-1 instead of MD-5.

6.  Get rid of "TODO"s - check those "FIXME"s :-)

8.  Replace timer lists by a more sophisticated data structure.

11. INIT : Add support
	Reserved for ECN Capable (Note 2)   Optional    0x000a
	Host Name Address (Note 3)          Optional    0x000b

12. Die ICMP-Funktionen in adaptation brauchen noch ein paar nderungen
    (ohne richtige Router kaum zu testen)

15. in adaptation do sanity checks (i.e. source!=destination ip address)

16. Initialize path MTU with link local MTU -> update it for respective ICMP messages
    (DF-stuff)

->  pm_chunksAcked() knnte gefixed werden, um schneller festzustellen,
    ob ein Path ACTIVE ist.

TESTS to check :

1.  rtt nach stecker ziehen (heartbeats -> nach uebergang von
    inactive nach active -> erste

2.  Test of Multihoming-Features, Changeover, ???
	
4.  Test reassembly

5.  Test Congestion avoidance (with reference implementation .... :-)
	Against TCP.......


IDEAS :

1. Passing Parameters in Heartbeat Messages.... :-)

2. securing chunks by optional md5 sums

======================================================================
 Bakeoff List :   ( -> == still to do,   x> == already fixed
======================================================================

x>  Retransmissions mssen jeweils zu einer neuen Addresse gehen
    wir machen 0,1,1,1,1,1 und es sollte 0,1,0,1,0,1,0 sein.....
    (siehe Abschnitt 6.4)

x>  prfe,ob der Zhler fr Fehler bei jedem SACK/HB-ACK zurckgesetzt
    wird
x>  prfe globalen Fehlerzhler/pro Addresse
x>  Heartbeats sollen nur ber unbenutzte Pfade geschickt werden
    (unbenutzt in der letzten HB-Periode, kein HB, keine Daten)

->  cross init: look at all init addresses, when an init is incoming
    in order to find out whether we already have sent an init to
    that guy.
->  wenn  handleChunksAcked() aufgerufen wird, drfen dann in
    jedem Fall die Counter zurckgesetzt werden ? Ist PathID korrekt ?
    PathID sollte den Pfad anzeigen, an den Daten gesendet wurden.
->  cwnd kann um PathMTU-1 berzogen werden (dann kann cwnd wachsen)

x>  T3 Timeout : RTO wird verdoppelt, cwnd, ssthresh angepasst
x>  Wiederholung eine Pakets (max. MTU)
x>  Starte T3 fr neue Zieladdresse, wenn der nicht schon luft
x>  Nicht gesendete Daten fr RTX werden markiert, und mglichst
    bald ausgesandt.

->  prfe, ob bei neuem SACK auch chunks in der transmit queue
    gelscht werden ! this is messy....delete at least those < ctsna

x>  Transmission Queue ist immer geordnet
x>  Retransmission Timer (T3) macht keinen Backup

->  Length of INIT chunk must look at padding at the end. So
    need not necessarily be multiple of 4 bytes (e.g. w/o addresses,
    just one supported addresstype)

