===============================================================================
    $Id: TODO,v 1.18 2002/03/19 01:23:24 route Exp $
    LIBNET 1.1 (c) 1998 - 2002 Mike D. Schiffman <mike@infonexus.com>
                               http://www.packetfactory.net/libnet
===============================================================================


    1.1.0 TODO LIST (oh-so close to G.A.)
 
    * Build in multiple packet / memory pool allocation support.  To do this
      we need to allocate an array of `libnet_pblock_t *protocol_blocks`
      pointers and manage them accordingly.  Maybe look into a pre-allocator
      inteface that an advanced user can make use of...

    * Update the man page!

    * Thoroughly test IP and TCP options code.
        - Options code is currently broken:
            - IP options code breaks if IP packet has an IP payload
            - TCP options code breaks if the TCP packet has a TCP payload
        - To fix, we'll need to find a way to split the payloads from the
          headers, insert the options, and reattach the payloads.  Probably
          can use realloc or something.

    * Data marshalling API for unaligned structures (like STP).

    - Make cisco ISL work.  The issue is that we have build our Ethernet
      frame first, then encapsulate it inside of an ISL envelope.
        - We have to compute CRCs for both Ethernet and ISL.

    - Add "advanced programmer" functions that allow the application
      programmer to get inside libnet_t.

    - Test HPUX 11 port.

    - Test cywin32 port.

    - Finish adding ieee 802.1q, 802.2, 802.3 support.

    - Consider making a flag for "strict mode" where libnet will check
      things like when you build an IP options list there is an IP
      header preceding it (likewise for TCP)...  Other "smart" things
      could happen in this mode too.  When in non-strict mode, libnet
      will be less rigid but prone to user-error mode.

    - If we have a problem building a header we might end up freeing it
      creating a NULL entry on the list and preventing us from getting to
      entries beyond it (to free or whatever).  Maybe we should mark it
      bad or something and rely on the cleanup at the end to free it up?

    - Fix checksum support for CDP

    - Verify Checksuming:
      Currently verified working on OpenBSD/Linux/Solaris:
      - raw  IP/UDP         [with and without data]
      - raw  IP/TCP         [with and without data]
      - raw  IP/ICMP        [with and without data]
      - raw  IP/OSPF
        - hello packet      [with no auth data]
        - hello packet      [with no auth data and LSA sub-header (LSA check = bad)]
      - link IP/UDP         [with and without data]
      - link IP/TCP         [with and without data]

    - Update the rest of the libnet_link_* files for the new format, already
      ported:
      - bpf                 [works]
      - linux packet socket [works]
      - linux sock packet   [works]
      - dlpi                [works]

    - Port link stuff to use writev() in libnet_write() (sendto can't hang).

    - Get IPsec code working.

    - Add the following packet builders:
      - SNMP
      - STP

    - Update __libnet_handle_dump to dump everything in l verbosely.

EOF
