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