===============================================================================
$Id: TODO,v 1.1 2012/02/21 22:14:23 misho Exp $
LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
http://www.packetfactory.net/libnet
===============================================================================
1.1.x TODO LIST
* Update the man page!
- Add a programmer's man page detailing the pblock architecture.
- Fix plist memory leak.
- Fix IPv6. According to RFC 2992:
"Another difference from IPv4 raw sockets is that complete packets
(that is, IPv6 packets with extension headers) cannot be read or
written using the IPv6 raw sockets API. Instead, ancillary data
objects are used to transfer the extension headers, as described
later in this document. Should an application need access to the
complete IPv6 packet, some other technique, such as the datalink
interfaces BPF or DLPI, must be used.
All fields in the IPv6 header that an application might want to
change (i.e., everything other than the version number) can be
modified using ancillary data and/or socket options by the
application for output. All fields in a received IPv6 header (other
than the version number and Next Header fields) and all extension
headers are also made available to the application as ancillary data
on input. Hence there is no need for a socket option similar to the
IPv4 IP_HDRINCL socket option."
- Add self-throttling logic to libnet_write()/libnet_init()? Advanced
mode thing?
- Prune the include list in libnet.h.in. Also add conditionals
around the headers we use for building the library, but not when
using it.
- 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.
- Tune advanced interface functionality that allow the application
programmer to get inside libnet_t.
- Test HPUX 11 port.
- Test cywin32 port.
- Flesh out the advanced mode.
- 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
- Update __libnet_handle_dump to dump everything in l verbosely.
EOF
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>