Libnet is a high-level API (toolkit) allowing the application programmer to
construct and inject network packets. It provides a portable and simplified
interface for low-level network packet shaping, handling and injection. Libnet
hides much of the tedium of packet creation from the application programmer
such as multiplexing, buffer management, arcane packet header information,
byte-ordering, OS-dependent issues, and much more. Libnet features portable
packet creation interfaces at both the IP-layer and link-layer, as well as a
host of supplementary and complementary functionality. Using libnet, quick and
simple packet assembly applications can be whipped up with little effort. With
a bit more time, more complex programs can be written (Traceroute and Ping
were easily rewritten using libnet and libpcap).
