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).
