Annotation of embedaddon/libnet/doc/TODO, revision 1.1.1.1

1.1       misho       1: ===============================================================================
                      2:     $Id: TODO,v 1.2 2004/01/03 20:31:00 mike Exp $
                      3:     LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
                      4:                                http://www.packetfactory.net/libnet
                      5: ===============================================================================
                      6: 
                      7: 
                      8:     1.1.x TODO LIST
                      9:  
                     10:     * Update the man page!
                     11: 
                     12:     - Add a programmer's man page detailing the pblock architecture.
                     13: 
                     14:     - Fix plist memory leak.
                     15: 
                     16:     - Fix IPv6.  According to RFC 2992:
                     17:       "Another difference from IPv4 raw sockets is that complete packets
                     18:       (that is, IPv6 packets with extension headers) cannot be read or
                     19:       written using the IPv6 raw sockets API.  Instead, ancillary data
                     20:       objects are used to transfer the extension headers, as described
                     21:       later in this document.  Should an application need access to the
                     22:       complete IPv6 packet, some other technique, such as the datalink
                     23:       interfaces BPF or DLPI, must be used.
                     24: 
                     25:       All fields in the IPv6 header that an application might want to
                     26:       change (i.e., everything other than the version number) can be
                     27:       modified using ancillary data and/or socket options by the
                     28:       application for output.  All fields in a received IPv6 header (other
                     29:       than the version number and Next Header fields) and all extension
                     30:       headers are also made available to the application as ancillary data
                     31:       on input.  Hence there is no need for a socket option similar to the
                     32:       IPv4 IP_HDRINCL socket option."
                     33: 
                     34:     - Add self-throttling logic to libnet_write()/libnet_init()?  Advanced
                     35:       mode thing?
                     36: 
                     37:     - Prune the include list in libnet.h.in.  Also add conditionals
                     38:       around the headers we use for building the library, but not when
                     39:       using it.
                     40: 
                     41:     - Data marshalling API for unaligned structures (like STP).
                     42: 
                     43:     - Make cisco ISL work.  The issue is that we have build our Ethernet
                     44:       frame first, then encapsulate it inside of an ISL envelope.
                     45:         - We have to compute CRCs for both Ethernet and ISL.
                     46: 
                     47:     - Tune advanced interface functionality that allow the application
                     48:       programmer to get inside libnet_t.
                     49: 
                     50:     - Test HPUX 11 port.
                     51: 
                     52:     - Test cywin32 port.
                     53: 
                     54:     - Flesh out the advanced mode.
                     55: 
                     56:     - Consider making a flag for "strict mode" where libnet will check
                     57:       things like when you build an IP options list there is an IP
                     58:       header preceding it (likewise for TCP)...  Other "smart" things
                     59:       could happen in this mode too.  When in non-strict mode, libnet
                     60:       will be less rigid but prone to user-error mode.
                     61: 
                     62:     - If we have a problem building a header we might end up freeing it
                     63:       creating a NULL entry on the list and preventing us from getting to
                     64:       entries beyond it (to free or whatever).  Maybe we should mark it
                     65:       bad or something and rely on the cleanup at the end to free it up?
                     66: 
                     67:     - Fix checksum support for CDP
                     68: 
                     69:     - Verify Checksuming:
                     70:       Currently verified working on OpenBSD/Linux/Solaris:
                     71:       - raw  IP/UDP         [with and without data]
                     72:       - raw  IP/TCP         [with and without data]
                     73:       - raw  IP/ICMP        [with and without data]
                     74:       - raw  IP/OSPF
                     75:         - hello packet      [with no auth data]
                     76:         - hello packet      [with no auth data and LSA sub-header (LSA check = bad)]
                     77:       - link IP/UDP         [with and without data]
                     78:       - link IP/TCP         [with and without data]
                     79: 
                     80:     - Update the rest of the libnet_link_* files for the new format, already
                     81:       ported:
                     82:       - bpf                 [works]
                     83:       - linux packet socket [works]
                     84:       - linux sock packet   [works]
                     85:       - dlpi                [works]
                     86: 
                     87:     - Port link stuff to use writev() in libnet_write() (sendto can't hang).
                     88: 
                     89:     - Get IPsec code working.
                     90: 
                     91:     - Add the following packet builders:
                     92:       - SNMP
                     93: 
                     94:     - Update __libnet_handle_dump to dump everything in l verbosely.
                     95: 
                     96: EOF

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>