File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libnet / doc / TODO
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 22:14:23 2012 UTC (12 years, 4 months ago) by misho
Branches: libnet, MAIN
CVS tags: v1_1_6p5, v1_1_6p4, v1_1_6p0, v1_1_6, v1_1_2_1, HEAD
libnet

    1: ===============================================================================
    2:     $Id: TODO,v 1.1.1.1 2012/02/21 22:14:23 misho 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>