summaryrefslogtreecommitdiff
path: root/libnet/doc
diff options
context:
space:
mode:
Diffstat (limited to 'libnet/doc')
-rw-r--r--libnet/doc/BUGS19
-rw-r--r--libnet/doc/CHANGELOG527
-rw-r--r--libnet/doc/CONTRIB53
-rw-r--r--libnet/doc/COPYING31
-rw-r--r--libnet/doc/CVS/Entries12
-rw-r--r--libnet/doc/CVS/Repository1
-rw-r--r--libnet/doc/CVS/Root1
-rw-r--r--libnet/doc/DESIGN_NOTES134
-rw-r--r--libnet/doc/MIGRATION172
-rw-r--r--libnet/doc/PACKET_BUILDING161
-rw-r--r--libnet/doc/PORTED45
-rw-r--r--libnet/doc/RAWSOCKET_NON_SEQUITUR41
-rw-r--r--libnet/doc/TODO96
-rw-r--r--libnet/doc/html/acconfig_8h-source.html49
-rw-r--r--libnet/doc/html/annotated.html17
-rw-r--r--libnet/doc/html/bpf_8h-source.html277
-rw-r--r--libnet/doc/html/config_8h-source.html125
-rw-r--r--libnet/doc/html/doxygen.css169
-rw-r--r--libnet/doc/html/doxygen.pngbin0 -> 2352 bytes
-rw-r--r--libnet/doc/html/files.html29
-rw-r--r--libnet/doc/html/functions.html26
-rw-r--r--libnet/doc/html/functions_vars.html26
-rw-r--r--libnet/doc/html/getopt_8h-source.html97
-rw-r--r--libnet/doc/html/globals.html219
-rw-r--r--libnet/doc/html/globals_defs.html104
-rw-r--r--libnet/doc/html/globals_func.html136
-rw-r--r--libnet/doc/html/gnuc_8h-source.html56
-rw-r--r--libnet/doc/html/graph_legend.dot22
-rw-r--r--libnet/doc/html/graph_legend.html75
-rw-r--r--libnet/doc/html/ifaddrlist_8h-source.html65
-rw-r--r--libnet/doc/html/in__systm_8h-source.html90
-rw-r--r--libnet/doc/html/index.html17
-rw-r--r--libnet/doc/html/libnet-asn1_8h-source.html268
-rw-r--r--libnet/doc/html/libnet-functions_8h-source.html742
-rw-r--r--libnet/doc/html/libnet-functions_8h.html8844
-rw-r--r--libnet/doc/html/libnet-headers_8h-source.html1655
-rw-r--r--libnet/doc/html/libnet-headers_8h.html3053
-rw-r--r--libnet/doc/html/libnet-macros_8h-source.html161
-rw-r--r--libnet/doc/html/libnet-macros_8h.html358
-rw-r--r--libnet/doc/html/libnet-structures_8h-source.html233
-rw-r--r--libnet/doc/html/libnet-types_8h-source.html58
-rw-r--r--libnet/doc/html/libnet_8h-source.html119
-rw-r--r--libnet/doc/html/libnet_8h.html24
-rw-r--r--libnet/doc/html/structlibnet__802__1q__hdr.html145
-rw-r--r--libnet/doc/html/structlibnet__802__1x__hdr.html97
-rw-r--r--libnet/doc/libnet.doxygen.conf1102
-rw-r--r--libnet/doc/man/CVS/Entries1
-rw-r--r--libnet/doc/man/CVS/Repository1
-rw-r--r--libnet/doc/man/CVS/Root1
-rw-r--r--libnet/doc/man/man3/libnet-functions.h.33136
-rw-r--r--libnet/doc/man/man3/libnet-headers.h.31872
-rw-r--r--libnet/doc/man/man3/libnet-macros.h.3172
-rw-r--r--libnet/doc/man/man3/libnet.h.317
-rw-r--r--libnet/doc/man/man3/libnet_802_1q_hdr.353
-rw-r--r--libnet/doc/man/man3/libnet_802_1x_hdr.341
55 files changed, 25045 insertions, 0 deletions
diff --git a/libnet/doc/BUGS b/libnet/doc/BUGS
new file mode 100644
index 0000000..2e8c929
--- /dev/null
+++ b/libnet/doc/BUGS
@@ -0,0 +1,19 @@
+===============================================================================
+ $Id: BUGS,v 1.2 2004/01/03 20:31:00 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+ 1.1.0 KNOWN BUG LIST
+
+ - It appears as though getprotobynumber() is broken in some linux
+ distributions. The /etc/protocols file should be of the format:
+ protocol name protocol number proctocol symbolic constant comment
+ Most of the file (in my redhat 7.1) distro complies with this format
+ until you get to the end of the file:
+ # 134-254 # Unassigned
+ # 255 # Reserved
+ This will cause getprotobynumber() and presumably getprotobyname() to
+ segfault. If you get this behavior in your program and you're calling
+ __libnet_file_dump(), this could be the reason. Caveat Emptor.
diff --git a/libnet/doc/CHANGELOG b/libnet/doc/CHANGELOG
new file mode 100644
index 0000000..a3ae914
--- /dev/null
+++ b/libnet/doc/CHANGELOG
@@ -0,0 +1,527 @@
+===============================================================================
+ $Id: CHANGELOG,v 1.24 2004/03/29 17:24:34 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+Mon Mar 29 09:23:49 PST 2004 1.1.2.1
+
+ Fixed a typo in the ICMP patch mentioned below.
+
+Thu Mar 25 10:49:04 PST 2004 1.1.2
+
+ Fixed the ICMP error message builders (there was a pblock assembly bug
+ that would prevent you from building more than one ICMP {unreach, time
+ exceed, redirect} in succession; the order of operations has changed
+ slightly for building these packets, see the documenation and sample code
+ Added a Sebek builder
+ Fixed a bug in libnet_autobuild_arp() that had it pulling in the address to
+ a pointer instead of just the address
+ Added AM_MAINTAINER_MODE to configure.in
+ Changed the __libnet_dump* namespace to the more descriptive libnet_diag*
+ Added libnet_getpacket_size() to return the size of a packet in a given l
+ Removed "protocol" from the libnet context. It was a waste of four bytes
+ The raw socket interface always uses the "IPPROTO_RAW" protocol
+ Fixed a memory leak in the advanced interface; there is now a function
+ libnet_adv_free_packet() to free the memory allocated for the packet
+ when libnet_adv_cull_packet() is called
+ Fixed a bug on big endian boxes that had TCP and UDP checksums with odd
+ payloads come out incorrect
+ Changes all error messages to look and feel the same:
+ "%s(): foo\n", __func__
+ Added a bunch of htons/htonl fixes
+ Continued to add to the doxygen-based documentation
+ Added support for unconfigured interfaces
+ Changed the number of interfaces libnet can handle from 32 to 512
+ Removed uneeded control structure cruft from libnet_link_dlpi.c
+ Removed sample/ip.c and added sample/ip_link.c and sample/ip_raw.c
+ Added IPv6 fragmentation header builder
+ Added IPv6 routing information header builder
+ Added IPv6 destination options header builder
+ Fixed IPv6 flowlabel and traffic class bitwise math
+
+Tue Nov 25 15:33:27 PST 2003 1.1.1
+
+ Fixed a bug in libnet_build_icmp_redirect: htonl(gateway) --> gateway.
+ Added icmp_redirect.c sample code.
+ Added libnet_autobuild_arp().
+ Added a slightly faster checksum.
+ Added a GRE builder.
+ Fixed a buffer overflow in libnet_build_dhcp().
+ Added more sanity checks to ensure we have proper link or network layer
+ headers when not in advanced mode.
+ Fixed a bug that would sometimes make __libnet_dump_context() crash under
+ linux.
+ Migration from sprintf and strcpy snprintf and strncpy.
+ Fixed bug in libnet_build_ipv4() when calculating size of memory block
+ Removed the support directory -- if you're an OLD version of OpenBSD or
+ FreeBSD you deserve what you get.
+ Added a BGP builder.
+ Changed the error handing functions to be more consistent and use
+ __FUNCTION__.
+ Fixed a bug in libnet_pblock_free() -- replaced it with
+ libnet_pblock_delete().
+ Fixed all of the inconsistencies inside all of the builders and pblock code
+ where some fringe conditions could result in u_longs being crunched into
+ u_shorts.
+ Fixed libnet_pblock_coalesce() to only require one pass through the list.
+ Added better diagnostics (__libnet_dump_context(), __libnet_dump_pblock()).
+ Added Token Ring and FDDI builders (Linux and Solaris only).
+ Added Token Ring and FDDI sample programs.
+ Fixed the handling of TCP and IP payloads when reusing a pblocks.
+ Fixed the handling of IP headers such that if a TCP packet changes size
+ via subsequent calls to libnet_build_tcp(), the IP header automatically
+ changes size as well.
+ Added libnet_pblock_delete() to remove a pblock from the list.
+ Added ip.c sample program (builds an arbitrary IP packet).
+ Added additional payload sanity checks to libnet_build_*.
+ Added a payload to sample/icmp_echo_cq.c.
+ Added an MPLS builder.
+ Added an 802.1x builder.
+ Added an RPC builder! Bout time eh?
+ Fixed do1x.c sample code to make the frame valid.
+ Fixed link-interface semantics under Mac/OSX
+ Changed libnet_stats to all be unsigned long longs to accomodate all of
+ hardcore packet writers.
+ Fixed IPv6 support (to some extent) removed the IP_HDRINCL stuff and
+ reworked the resolver stuff to use net_pton() and inet_ntop().
+ Fixed libnet_build_icmpv4_*() to properly handle the IP header in the
+ payload.
+ Fixed libnet_build_igmp() to handle checksums properly.
+ Fixed a bug in libnet_build_dnsv4() -- now it will work for TCP or UDP --
+ see the sample program for details...
+ Fixed a bug in sample/dhcp_discover.c
+ Added multiple packet interface (called the context queue interface).
+ Until I finish the manpage, see the sample code and README files
+ for instructions on how it works.
+ Fixed Cygwin support.
+ Fixed an OS/X compilation error due to lack of system header files.
+ Fixed OS/X link layer bug.
+ Fixed a bug in pblock_coalesce() that resulted in bad checksums when the
+ advanced mode was enabled.
+ Fixed a potential memory leak in pblock_coalesce().
+ Fixed a potential memory leak in libnet_select_device().
+ Fixed a potential memory leak in libnet_plist_chain_new().
+ Fixed Solaris support for IPv6 address support.
+ Fixed minor bugs in libnet_advanced.c.
+ Added loopback device support.
+
+
+Mon Aug 5 15:18:52 PDT 2002 1.1.0
+
+ First 1.1.0 non-beta release.
+
+ Added libnet_adv_write_link() which allows an advanced user to access
+ libnet's low-level frame injection functionality directly.
+
+
+Wed Jul 10 08:18:15 PDT 2002 1.1.0 Beta 07b
+
+ Added some words to the manpage.
+
+ Fixed a typo in libnet-functions.h -- forgot a comma.
+
+
+Sun Jul 7 10:37:12 PDT 2002 1.1.0 Beta 07a
+
+ My bad. Forgot to `make distclean` before last release resulting in some
+ compilation errors.
+
+ My bad. Forgot to add advanced *_ADV writing support to libnet_write().
+ Simple fix.
+
+
+Tue Jul 2 08:42:57 PDT 2002 1.1.0 Beta 07
+
+ BETA support for IPv6.
+
+ Fixed the IP and TCP options bugs that bound the TCP and IP payloads to
+ the IP and TCP headers respectively and saw options being appended
+ after the payload.
+
+ Added libnet_hex_aton(). This functions reads in arbirtrarily long hex
+ strings from the command line and returns the equivalent byte string. It
+ does an implicit malloc() so make sure to free().
+
+ Frédéric Raynal submitted a patch to break the coalesce loop down to two
+ passes using realloc resulting in a modest performance increase! Cool!
+
+ Added "Advanced Mode" which will initialize the library with additional
+ functionality for advanced users who "know what they're doing". Basically
+ this feature will remove some of the sanity checks libnet does when
+ building and injecting packets, at the programmer's peril. It also exposes
+ the libnet_adv() functions.
+
+ FINALLY changed that irritating struct ether_addr redefintion problem.
+ I internalized the name space of it (-> libnet_ether_addr) so there will
+ be no more issues there. Please update your code accordingly!
+
+ Added IGMP checksum support which was omitted by accident.
+
+ Removed netinet/ip_icmp.h from include list. This was causing problems
+ when including dnet.h which includes other system headers. We can
+ probably stand to remove several headers from libnet.h.in.
+
+ Added sanity check to ensure that when *build_ethernet() is called the
+ injection method is LIBNET_LINK (except when advanced mode is on).
+
+
+Thu Mar 28 22:18:46 PST 2002 1.1.0 Beta 06
+
+ Fixed ICMP unreachable checksum error and payload issues. Now using the
+ payload interface with unreachables will append the payload to the IPv4
+ header of the "offending packet".
+
+ Split STP builder into two; libnet_build_stp_conf() and
+ libnet_build_stp_tcn().
+
+ New CHANGELOG format. :)
+
+
+Mar 24 2002 1.1.0 Beta 05
+
+ New building logic. Top down. Much smarter, we now build packets and
+ frames like an OS kernel.
+
+ Added Cisco ISL builder.
+
+
+Mar 18 2002 1.1.0 Beta 04
+
+ Added an STP builder.
+
+ Hooks for Cisco ISL builder.
+
+ Changed libnet_init() to now accept an IP address for the device (so
+ either "fxp0" or "192.168.0.1" will work).
+
+ Added libnet_clear_packet() to free packet memory when we're done with it.
+
+
+Feb 28 2002 1.1.0 Beta 03
+
+ Added 802.1q, 802.2, 802.3 builders.
+
+
+Feb 25 2002 1.1.0 Beta 02
+
+ Fixed Cygwin support.
+
+
+Feb 01 2002 1.1.0 Beta 01
+
+ Complete new API and overhaul of most everything.
+
+ Improved linux packet socket support.
+
+ Renamed libnet_host_lookup() and libnet_name_resolve() to the more
+ intuitive libnet_addr2name() and libnet_name2addr().
+
+ All of the address resolution functions return host byte order (which
+ is what the build functions want).
+
+ Removed a ton of code from every corner of libnet.
+
+ Removed alot of useless crap:
+ misc directory
+ ports directory
+ util directory
+ cleaned out the test directory and moved it to sample
+
+ The libnet-config script is no longer needed to specify machine
+ endianess -- that has been moved to libnet.h and done at compile time.
+ You can still use it to specify other CPP constants as well as
+ libraries.
+
+ Added cygwin support.
+
+ Hooks for a few ieee 802 builders.
+
+ Added NTP builder.
+
+ Added DHCP builder.
+
+ Added BOOTP builder.
+
+ Added Cisco CDP builder (needs work).
+
+ Added IPSEC builder (needs work).
+
+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+ 1.0.2a 02.06.2001 Oops! Messed up the install stuff. Fixed now.
+ Fixed the config.sub to correctly look for arm*
+ architecture.
+ Fixed the test.sh script
+ (Thankz again to syke).
+
+ 1.0.2 02.03.2001 Added OpenBSD 2.7 etherspoof lkm and kernel patch.
+ (Thankz to obecian).
+ Added FreeBSD 4.0-STABLE (and 5.0-CURRENT?)
+ etherspoof kernel patch.
+ (Thankz to Matt Bing).
+ Added FreeBSD 4 support for automagic MAC address
+ spoofing (via ioctl). No more lkm!
+ (Thankz to Toni Andjelkovic).
+ Added VRRP support.
+ Fixed a NULL pointer check in libnet_checksum.c.
+ (Thankz to syke).
+ Fixed a function naming problem in libnet_if_addr.c.
+ (Thankz to gigisull).
+ Fixed a potential byte error in libnet_version.
+ (Thankz to wotan).
+ Fixed a potential overflow in
+ libnet_link_sockpacket.c and libnet_link_dlpi.c.
+ (Thankz to Jarno Huuskonen).
+ Fixed a manpage discrepancy (get_ip_addr returns
+ host-byte, not network-byte).
+ Fixed arena allocation code (misalignments and
+ whatnot) and arena manpage entry (2 arguments
+ were swapped).
+ (Thankz to Bryan T. Schmersal).
+ Fixed datatype discrepancies (u_char was used
+ liberally when char should have been used).
+ (Thankz to Kyle Hargraves).
+ Fixed the PF_PACKET interface to work correctly.
+ (Thankz to Smiler).
+
+ 1.0.1b 04.07.2000 Fixed portlist chaining code to allow for more than
+ one active plist chain at a time (as per twitch's
+ patch).
+ Fixed discrepancy between the manpage and code for
+ libnet_close_link_interface. It now returns 1 on
+ success as per libnet standard (thankz to Toni
+ Andjelkovic for pointing this out).
+
+ 1.0.1a 03.29.2000 Fixed a small bug in libnet_link_dlpi.c.
+
+ 1.0.1 12.19.1999 Fixed a typo in libnet-headers.h ARH_H -> ARP_H.
+ Fixed a small typo in ether_mod-2.5.c.
+ Pre-happy BD to libnet! She'z almost 2 yearz old!
+
+ 1.0.0 10.27.1999 Added verbose html documentation.
+ Added verbosely commented example code.
+ Fixed OSPF testcode compile issues.
+ Added ping of death ICMP test code module.
+ Fixed manpage installation wrongness.
+ Fixed a reported bug in OpenBSD etherspoof lkm.
+ Merged OSPF lsa checksum code into main checksum
+ module.
+ Fixed a reported bug in the Makefile.in under
+ Solaris when make install was invoked, the ln
+ failed.
+ Fixed linux-based IP broadcasting using the
+ raw sockets interface.
+
+ 0.99g 09.13.1999 Added an OSPF builder (which is still in beta).
+ Fixed the Linux/configure.in bug. This was an odd
+ bug that affected Linux-based boxes, but not
+ BSD-based machines. The configure script refused
+ to expand most of the Makefile.in macros in every file
+ because of a conditional check.
+ Fixed some Makefile.in issues.
+
+ 0.99f 09.09.1999 Changed test/poink.c to not rely on a previous
+ install of libnet to compile.
+ Added a redhat RPM.
+ Changed sourcefile naming scheme to libnet_*.
+ Removed all assertions from the tree.
+ We are moving closer to a 1.0 release and
+ assertions have no place in production code.
+ Furthermore, there should be no exit points
+ inside a library. Currently, all functions that
+ made assertions now return an integral 1 upon
+ success and a -1 when the assertion would have
+ failed (some had to be changed from returning
+ void to returning int). This will not break
+ backward compatbility.
+ Fixed bugs in the arena code.
+ next_packet_from_arena would never return the
+ first chunk of memory, only the "next". It
+ now handles this special case. Thanks to
+ Sascha Gresk for locating this bug.
+ Fixed another potential bug when attempting
+ to allocate large packet sizes inside an arena.
+ Added an OpenBSD 2.5 ether_spoof lkm.
+ Fixed TCP options bugs.
+
+ 0.99e 07.21.1999 Modified the libnet-config script to work more
+ intutively now. It accepts multiple arguments.
+ See README.libnet-config.
+ Solaris m4/sh fixes (autoconf phase).
+ Internal error handling changed to use libnet_error.
+
+ 0.99d 06.24.1999 Added: build_icmp_redirect().
+ Added: FreeBSD 3.x support for spoofing source.
+ Added: libnet_error().
+ Added: port list chaining code.
+ MAC addrresses (see README.bpf).
+ Bugfix: libnet_select_device correctly accepts
+ NULL device arguments.
+ Bugfix: build_icmp.c now copies the correct amount
+ of header information.
+ Bugfix: OpenBSD needs HAVE_SOCKADDR_SA_LEN.
+ Changed: write_ip internal semantics. Cleaner
+ and faster now.
+ Changed: init_packet argument parameters. More
+ correct now. Takes a u_short vs. a size_t.
+
+ 0.99c 05.28.1999 link_int -> libnet_link_int.
+ Misc small testcode fixes.
+ Added libnet_tcp_header and libnet_ip_header.
+ Added libnet-config shell script, see
+ README.libnet-config and the manpage.
+ Updated ports.
+ Revamped checksum module -- it's much simpler
+ and more efficient (ripped out arch specific
+ code which seemed to be buggy with series' of
+ very large packets). Dug Song wrote it, with
+ small fixes/changes by MDS.
+
+ 0.99b 05.06.1999 Fixed a nasty UDP/TCP + data checksum bug.
+ Header structure further divided into subfiles.
+ Moved get_hwaddr into low-level interface locales.
+ Fixed the BSD get_hwaddr (dugsong@anzen.com).
+ Ported to BSD/OS 3.x.
+ Added `LIBNET_VERSION` symbolic constant.
+ build_ip with payload semantics changed (now
+ requires a payload length which is more
+ intuitive).
+ Fixed the `disappearing MAC address problem`
+ within the linux version of get_hwaddr().
+
+ 0.99a 04.14.1999 Linux 2.0.x kernels don't have <net/ethernet.h>
+ 0.99 included this header file without checking
+ to see if it present. This is now fixed.
+ Non-x86 systems have no tcp_check function but the
+ stub.c sourcefile did not check this. This is now
+ fixed.
+ Added the utilities directory and get_mac.c.
+
+ 0.99 04.13.1999 Major manpage redux.
+ Added (broken?) PF_PACKET support for Linux (see
+ README.linux).
+ Moved alot of m4 from configure.in to aclocal.m4.
+ Added Linux m4 macro to detect PF_PACKET.
+ Added build_icmp_unreach
+ Added build_icmp_timestamp
+ Added standard nomenclature for all the ICMP
+ type/code symbolic constants (see the manpage).
+ Changed internal network structure nomenclature.
+ Decided to stop using the word nomenclature so much.
+ Fixed semantics of get_ipaddr (s/PF_INET/AF_INET).
+ Added a symlink in the install directory so libnet
+ is also named `libpwrite`.
+ Added ASN.1 conversion routines, mostly pilfered
+ from ucd snmplib.
+ Removed get_hwaddr from sockpacket.c and made the
+ existing one portable to Linux.
+ Added more testcode and changed testcode structure
+ to be more intuitive.
+ Added init_packet and destroy_packet.
+ Added an arena allocator.
+ Fixed alignment issues on SPARC and Alpha
+ (possibly others with strict alignment
+ requirements).
+ Added a packet dumping routine. Not fully tested.
+ Testcode updates including a master testcode shell
+ script.
+ Added stub functions to ease the eventual
+ transition to a more proper `libnet_*` function
+ naming convention. See README.stubs for more
+ info.
+
+ 0.10a 02.04.1999 Added the libnet.s2h configuration file to the
+ distribution.
+ GLIBC fix.
+
+ 0.10 01.31.1999 Many low-level changes, same interface though.
+ Split up the main libnet.h file into two files.
+ Autoconf changes:
+ checks to see if the underlying architecture
+ needs to be aligned.
+ flexible install location.
+ explicitly set $CC option in Makefile.in.
+ Added ensure-dir.sh.
+ Changes DEBUG semantics as I was told the previous
+ stuff broke on some compilers.
+ Created a FreeBSD/OpenBSD ports entry.
+ SGI snoop (drain) interface fixed.
+ Solaris/HPUX DLPI interface fixed.
+ Support for getting local IP addresses.
+ Support for getting local hardware addresses.
+ Added a DNS packet builder.
+ Added an RIP packet builder.
+ Added an ICMP MASKREQ/REPLY packet builder.
+ Added ICMP at the link layer test code.
+ Changed GLIBC version detection semantics.
+
+ 0.9 12.15.1998 Major changes/additions here...
+ Added lowlevel packet building and writing
+ routines with a codebase from libpcap.
+ Broken DPLI support (fixme!).
+ Added ethernet and ARP building routines.
+ Added ICMP_ECHO building routine which led to the
+ Discovery of an odd kernel panic bug under
+ OpenBSD (see hook.c in test dir).
+ Added IGMP building routine.
+ Reworked autoconf script.
+ Fixed Linux ip_sum vs. ip_csum naming issue.
+ Fixed Solaris checksums (2.4, 2.5.x).
+ Added NetBSD autoconf entry.
+ Changed BSD_BYTE_SWAP semantics to correctly handle
+ IP datagrams through BPF (see write_ip.c).
+
+ 0.8c 11.10.1998 Added more testcode.
+
+ 0.8b 10.21.1998 OK. I THINK WE'VE FINALLY FIXED THAT GLIBC THING.
+ Ported to alpha Linux.
+
+ 0.8a 10.15.1998 Added support for IP TOS bits (oops. Broke
+ backward compatibility again. Like I said, don't
+ rely on this until 1.x).
+
+ 0.8 10.13.1998 Added support for IP options.
+ Added support for TCP options.
+ Added a dummy version function.
+ Fixed linux libc vs. glibc nomenclature discrepancy.
+ Solaris checksums fixed for non-payload laden
+ packets?
+
+ 0.7b 09.22.1998 Linux glibc/libc nomenclature anomoly still there.
+ Fixed Linux/BSD icmp header size problem.
+
+ 0.7a 08.26.1998 Fixed payload support (see test code).
+
+ 0.7 08.25.1998 Solaris port (checksums broken -- Solaris has gay
+ fucking quirks when it comes to checksumming on
+ raw sockets).
+ Added autoconf scripts.
+ Added psuedorandom number generation code.
+ Added payload support (breaks backward
+ compatability and is untested).
+
+ 0.6 06.21.1998 Fixed UDP checksum. Removed USE_NAME CPP option
+ made it a run time decision. Makes code more
+ extensible, but breaks backward compatibility.
+
+ 0.5 06.02.1998 Added TCP/UDP/IP packet assembly routines.
+ Added a checksum function.
+ Added a manpage.
+ Removed daemonizing function (BSD has one).
+ UDP checksums broken...
+
+ 0.4 01.12.1998 IP checksum (x86 assembly implementation).
+
+ 0.3 01.12.1998 daemonizing function.
+
+ 0.2 01.11.1998 raw socket function changed to allow user
+ designated protocol for raw socket
+
+ 0.1 01.05.1998 Initial release, contains:
+ network byte order -> human readable IP address,
+ human readable IP address -> network byte order,
+ simple raw socket / IP_HDRINCL wrapper,
+ TCP checksum (x86 assembly implementation)
+EOF
diff --git a/libnet/doc/CONTRIB b/libnet/doc/CONTRIB
new file mode 100644
index 0000000..9c756c8
--- /dev/null
+++ b/libnet/doc/CONTRIB
@@ -0,0 +1,53 @@
+===============================================================================
+ $Id: CONTRIB,v 1.8 2004/03/01 20:26:11 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+ 1.1.x CONTRIBUTERS
+
+ Barbato, Luca
+ . faster C checksum routine
+ Beverly, Scott <scottbeverly@xengin.com>
+ Bowman, Don <don@sandvine.com>
+ Coulter, Michae l <mjc@bitz.ca>
+ . arp bugfix
+ Damron, Jason <jsdamron@hushmail.com>
+ . bugfixes
+ . IP/TCP options bugfixes
+ . RPC builder
+ . token ring and fddi support
+ Davis, Michael <mike@datanerds.net>
+ . bugfixes
+ Dulai, Danny <ddulai@stake.com>
+ Kuehl, Kirby <kkuehl@cisco.com>
+ . u_short -> u_long patch
+ . 1.1.1 Win32 porting
+ . tons and tons of other stuff
+ Roberto Larcher <roberto.larcher@libero.it>
+ . 1.1.0 Win32 Porting
+ Newsham, Tim <tnewsham@stake.com>
+ . general elitism
+ O'Donnell, Adam <javaman@west.philly.ghetto.org>
+ . Solaris IPv6 address fix
+ Omella, Alfredo Andres <aandres@s21sec.com>
+ . Solaris DLPI fix
+ Raynal, Frederic <frederic.raynal@security-labs.org>
+ . cq interface
+ . numerous bugfixes and suggestions
+ . keeping the project alive during my sabbatical!
+ Salvatori, Alessandro
+ . many many patches
+ Sehgal, Anupma <asehgal@cisco.com>
+ . pblock sanity check oversight fix
+ Schlott, Stefan <stefan@ploing.de>
+ . IPv6 code
+ Simons, Terry <Terry.Simons@m.cc.utah.edu>
+ . OS/X port
+ Song, Doug <dug@monkey.org>
+ . inspiration
+ Su, Joe <cysu@csie.nctu.edu.tw>
+ . IPv6 traffic clas and flow label fix
+ Yardley, Tim <liquid@dqc.org>
+EOF
diff --git a/libnet/doc/COPYING b/libnet/doc/COPYING
new file mode 100644
index 0000000..1a29568
--- /dev/null
+++ b/libnet/doc/COPYING
@@ -0,0 +1,31 @@
+ $Id: COPYING,v 1.1.1.1 2003/06/26 21:55:10 route Exp $
+
+ libnet 1.1.x
+ Copyright (c) 1998 - 2002 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+
+EOF
diff --git a/libnet/doc/CVS/Entries b/libnet/doc/CVS/Entries
new file mode 100644
index 0000000..641f6f0
--- /dev/null
+++ b/libnet/doc/CVS/Entries
@@ -0,0 +1,12 @@
+/BUGS/1.2/Sat Jan 3 20:31:00 2004//
+/COPYING/1.1.1.1/Thu Jun 26 21:55:10 2003//
+/MIGRATION/1.2/Sat Jan 3 20:31:00 2004//
+/PACKET_BUILDING/1.2/Sat Jan 3 20:31:00 2004//
+/PORTED/1.2/Sat Jan 3 20:31:00 2004//
+/RAWSOCKET_NON_SEQUITUR/1.2/Sat Jan 3 20:31:00 2004//
+/TODO/1.2/Sat Jan 3 20:31:00 2004//
+D/man////
+/DESIGN_NOTES/1.3/Sat Jan 17 07:51:19 2004//
+/libnet.doxygen.conf/1.2/Fri Jan 16 23:02:31 2004//
+/CONTRIB/1.8/Mon Mar 1 20:26:11 2004//
+/CHANGELOG/1.24/Mon Mar 29 17:24:34 2004//
diff --git a/libnet/doc/CVS/Repository b/libnet/doc/CVS/Repository
new file mode 100644
index 0000000..463dc8c
--- /dev/null
+++ b/libnet/doc/CVS/Repository
@@ -0,0 +1 @@
+/usr/local/CVS/libnet/doc
diff --git a/libnet/doc/CVS/Root b/libnet/doc/CVS/Root
new file mode 100644
index 0000000..52fa133
--- /dev/null
+++ b/libnet/doc/CVS/Root
@@ -0,0 +1 @@
+mike@66.234.207.232:/usr/local/CVS
diff --git a/libnet/doc/DESIGN_NOTES b/libnet/doc/DESIGN_NOTES
new file mode 100644
index 0000000..4d27b89
--- /dev/null
+++ b/libnet/doc/DESIGN_NOTES
@@ -0,0 +1,134 @@
+===============================================================================
+ $Id: DESIGN_NOTES,v 1.3 2004/01/17 07:51:19 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+ DESIGN NOTES
+
+ In order to remove most of the decisions a user had to make (how much
+ memory to allocate for a packet, where to build the packet headers, where
+ to do the checksums, how to inject the packet, etc) I decided to move ALL
+ of that logic into the library, behind the scenes. To initialize
+ things and get an initial libnet context, the applications programmer
+ calls:
+
+ libnet_t *l;
+ l = libnet_init(INJECTION_TYPE, PROTOCOL, DEVICE, ERRBUFFER);
+
+ where:
+
+ INJECTION_TYPE = LIBNET_RAW4 (ipv4 raw socket)
+ LIBNET_RAW6 (ipv6 raw socket)
+ LIBNET_LINK (link-layer socket)
+ LIBNET_RAW4_ADV (advanced mode)
+ LIBNET_RAW6_ADV (advanced mode)
+ LIBNET_LINK_ADV (advanced mode)
+
+ PROTOCOL = IP protocol to be used for the raw socket. This is
+ ignored for the link-layer, and almost always
+ IPPROTO_RAW for ipv4.
+
+ DEVICE = The canoical name of the device, used only with the link
+ layer stuff. For ipv4 raw socket, you can leave this
+ NULL. If it's NULL with the link-layer, libnet will try
+ to find a suitable device.
+
+ ERRBUFFER = Until we have our libnet context l, this is where
+ errors will be.
+
+ Inside of this newly created context we have a ton of stuff including a
+ file descriptor for the packet device the injection type, the device name
+ (if applicable) a pointer to the libnet protocol block structure and some
+ other ancillary data.
+
+ Additionally, we will soon be supporting context manipulation functions
+ that will allow the user to set certain flags inside the context. This
+ interface will be akin to libnet_toggle_checksum() for those of you who
+ care.
+
+ When a packet is first constructed, the protocol block (pblock) stuff comes
+ into play. On the outside, to an applications programmer, a packet is
+ constructed more or less like normal (with a few notable exceptions):
+
+ libnet_ptag_t ip_tag;
+ ip_tag = libnet_build_ipv4(
+ LIBNET_UDP_H,
+ 0,
+ 242,
+ 0,
+ 64,
+ IPPROTO_UDP,
+ 0, /* NEW: checksum */
+ src_ip,
+ dst_ip,
+ NULL,
+ 0,
+ l, /* NEW: libnet context */
+ 0 /* NEW: libnet ptag */
+ );
+
+ The checksum allows an applications programmer to decide if he wants to
+ specify his own random value (useful in NIDS fooling) or precompute the
+ sum elsewhere, or leave it zero and by default libnet will take care of it
+ (although this is over-ridable). The libnet context is the opague
+ pointer we allocated earlier and will show up in just about every libnet
+ function call from here on out. The libnet ptag is a way to reference an
+ ALREADY BUILT protocol block. This is necessary if you want to change
+ some values of a header inside of a packet injection loop.
+
+ So, when you call a build function, internally, it's a completely new
+ system. If the item you're constructing is NEW, a new pblock will be
+ allocated and linked onto the end of the list. It may be helpful to think
+ of this as a "protocol stack" because you MUST build your packets IN
+ ORDER, from the top of the protocol stack on down (i.e.: tcp -> ip ->
+ ethernet). Once you build a new protocol block, it's "pushed down on the
+ stack" and you move on to the next. However, this analogy breaks down
+ because you can modify any one of these items and when they're assembled
+ for the final packet, libnet starts at the head of the list. It may be
+ MORE helpful to think of the pblock chain as a doubly linked FIFO
+ queue, because that's what it is. :)
+
+ For example:
+
+ libnet_ptag_t 1;
+ libnet_ptag_t 2;
+ libnet_ptag_t 3;
+
+ 1 = libnet_build_data(blah, l, 0);
+ 2 = libnet_build_tcp(blah, l, 0);
+ 3 = libnet_build_ipv4(blah, l, 0);
+
+ Will result in:
+ ---------- ---------- ----------
+ l->protocol_blocks--->| data |----->| tcp |----->| ip |
+ | pblock |<-----| pblock |<-----| pblock |----|
+ --| ptag: 1| | ptag: 2| | ptag: 3| |
+ | ---------- ---------- ---------- v
+ | -----
+ |-------------------------------------------> ---
+ -
+
+ To access and change the ip header, an additional call to libnet_build_ipv4
+ with the ptag argument would be made:
+
+ libnet_build_ipv4(blah..., l, 3);
+
+ Note that the ptag DOES NOT CHANGE. Once a pblock is built, its tag is
+ set in stone.
+
+ When it comes time to write the packet to the wire,
+ libnet_pblock_coalesce() is called to assemble the packet fragments.
+
+ 1) Gather up all of the pblock sizes in order to allocate one
+ contiguous block of memory.
+ 2) Copy over the packet fragments.
+ 3) Check each pblock to see which items need checksums, then perform
+ that checksum over each portion (the entire packet is needed for
+ some checksums).
+
+ So that's a quick description of what's going on under the hood. There's
+ more, but this should be enough to get you started.
+
+EOF
diff --git a/libnet/doc/MIGRATION b/libnet/doc/MIGRATION
new file mode 100644
index 0000000..b257241
--- /dev/null
+++ b/libnet/doc/MIGRATION
@@ -0,0 +1,172 @@
+===============================================================================
+ $Id: MIGRATION,v 1.2 2004/01/03 20:31:00 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+ MIGRATING YOUR CODE AND QUICKSTART
+
+ Using Libnet 1.1 you will find it MUCH simpler to build and write packets
+ than before. Instead of the previous five steps (initialize memory,
+ initialize network, build packet, do checksums, write packet) there are
+ now only three steps (initialize library, build packet, write packet).
+ In order to port your existing code, you will mainly be REMOVING
+ function calls and variables.
+
+ 1) Start with code removal:
+
+ - Remove all calls to libnet_init_packet() / packet malloc()ing and
+ all associated variables.
+ - Remove all calls to libnet_open_raw_sock() / libnet_open_link_layer()
+ and all associated variables.
+ - Remove all calls to libnet_do_checksum() and all associated
+ variables.
+
+ 2) Continue with code addition and modification:
+
+ - You will need a single "libnet_t *l" which is your libnet file
+ context and an error buffer:
+
+ libnet_t *l
+ char errbuf[LIBNET_ERRBUF_SIZE];
+
+ l = libnet_init(
+ LIBNET_RAW4, /* or LIBNET_LINK or LIBNET_RAW6 */
+ NULL, /* or device if you using LIBNET_LINK */
+ errbuf);
+
+ - The libnet_build functions are largely unchanged with a few
+ important differences:
+
+ 1) Packets headers MUST be stacked IN ORDER. This is
+ intuitive and shouldn't be a problem. Due to the way
+ individual packet header memory is allocated and how
+ packet pieces are combined to build a packet they HAVE to
+ be built IN ORDER, from the high end of the protocol stack
+ on down. ie: using the raw interface to build a NTP
+ packet, you would:
+ libnet_build_ntp(...)
+ libnet_build_udp(...)
+ libnet_build_ipv4(...)
+ To build the same packet using the LINK interface on
+ top of ethernet you would:
+ libnet_build_ntp(...)
+ libnet_build_udp(...)
+ libnet_build_ipv4(...)
+ libnet_build_ethernet(...)
+ 1a) There is the option now of using libnet_autobuild_ipv4()
+ and libnet_autobuild_ethernet() which have fewer
+ arguments and smaller stack frames and are a bit more
+ convenient.
+ 2) The libnet_build functions return a libnet_ptag_t datatype
+ on success or -1 on error. This ptag is your
+ "protocol/packet tag" so you can find this header again
+ if you needed to modify it later on. If you don't need
+ to modify the packet header you can throw this value
+ away. You should definitely check for error now on
+ your build functions. Alot's going on down there fellas.
+ 2a) NOTE that after packets are built, they may accessed
+ independently of construction order via the saved ptag.
+ 3) They NO LONGER ACCEPT BUFFER ARGUMENTS. This is ALL
+ done internally. The last TWO arguments are the libnet
+ context you created in your call to libnet_init() and
+ an OPTIONAL ptag argument. The ptag argument, if non-zero,
+ specifes a packet tag to an ALREADY EXISTING packet header
+ that will be OVERWRITTEN with the values specified in
+ this libnet_build function call. This is how you modify
+ existing packet header pieces. If this ptag is 0,
+ a new protocol block is allocated and the packet is
+ pushed down on the "protocol stack".
+ 4) For the functions that build headers that have checksums
+ these are NOW SPECIFIED AS AN ARGUMENT. This adds more
+ flexibility in how checksums are done (you can leave the
+ field 0, put in a random value, precompute it on your own,
+ or let the library do it). By default, when you build
+ a header, a "DO_CHECKSUM" flag will be set. This means
+ the library will compute the checksum for the header
+ and possibly over the data before the packet is written.
+ To clear this flag, there is a special macro you
+ can call on the ptag refering to that header.
+ 5) For the functions that have a length, it now specifies
+ the TOTAL packet length from that protocol unit on down.
+ For IP, that would be the entire packet length. For
+ TCP, that would be TCP and any possible data.
+ 6) Nomenclature support for the eventual support of ipv6
+ has been added.
+
+ libnet_ptag_t ip_tag;
+ libnet_ptag_t tcp_tag;
+
+ tcp_tag = libnet_build_tcp(
+ src_prt, /* source TCP port */
+ dst_prt, /* destination TCP port */
+ 0xffff, /* sequence number */
+ 0x53, /* acknowledgement number */
+ TH_SYN, /* control flags */
+ 1024, /* window size */
+ 0xd00d, /* checksum */
+ 0, /* urgent pointer */
+ LIBNET_TCP_H /* TCP packet size */
+ NULL, /* payload (none) */
+ 0, /* payload length */
+ l, /* libnet context */
+ 0); /* ptag */
+
+ ip_tag = libnet_build_ipv4(
+ LIBNET_TCP_H + LIBNET_IPV4_H,/* total packet len */
+ IPTOS_LOWDELAY, /* tos */
+ ip_id, /* IP ID */
+ 0, /* IP Frag */
+ 64, /* TTL */
+ IPPROTO_TCP, /* protocol */
+ 0, /* checksum */
+ src_ip, /* source ip */
+ dst_ip, /* dest ip */
+ NULL, /* payload (none) */
+ 0, /* payload size */
+ l, /* libnet context */
+ 0); /* ptag */
+
+ Now, if you wanted to modify one of these headers in a loop
+ somewhere you would:
+
+ int i;
+ for (ip_tag, tcp_tag = LIBNET_PTAG_INITIALIZER, i = 0; i < 10; i++)
+ {
+ tcp_tag = libnet_build_tcp(++src_prt, ..., l, tcp_tag);
+ ip_tag = libnet_build_ipv4(..., ++ip_id, ..., l, ip_tag);
+ /* do something */
+ }
+ Since we are specifying a ptag for an existing header, the
+ build function will NOT create a new header and append it to
+ the list, it will FIND the one referenced by the ptag and UPDATE
+ it. Since there is nothing new being created, order is NOT
+ important here.
+
+ Also note that it's perfectly fine to wrap the loop around the
+ initial building of the packets. Since we're initializing the
+ ptags (to be zero), the first call into the builder functions
+ will allocate the memory and create the packet blocks. These
+ calls will return ptag values. The next calls will modify
+ these headers since the ptags will not be NULL.
+
+ - Finally, we write the packet. Checksums are computed, by default
+ for each protocol header that requires one. If the user specifies
+ a non-zero value, by default, this will be used INSTEAD of a
+ libnet computed checksum. This behavior is overridable with:
+
+ Turn ON checksums for header referenced by ptag:
+ libnet_toggle_checksum(l, ptag, 1)
+
+ Turn OFF checksums for header referenced by ptag:
+ libnet_toggle_checksum(l, ptag, 0)
+
+ Note, the packet header MUST exist before you can toggle this setting.
+
+ int c;
+ c = libnet_write(l);
+
+ Boom. You're done. Now go read the sample code.
+
+EOF
diff --git a/libnet/doc/PACKET_BUILDING b/libnet/doc/PACKET_BUILDING
new file mode 100644
index 0000000..2470f74
--- /dev/null
+++ b/libnet/doc/PACKET_BUILDING
@@ -0,0 +1,161 @@
+===============================================================================
+ $Id: PACKET_BUILDING,v 1.2 2004/01/03 20:31:00 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+ ADDING A NEW PACKET BUILDER
+
+ Adding a new packet building module is usually pretty simple. It depends
+ completely on the complexity of the protocol. The following document
+ shows you how to add a packet builder for a simple protocol with a
+ static header size, but these concepts can be extended to a complex
+ protocol also.
+
+ 1) Start by defining your protocol header format in libnet-headers.h:
+
+ #define LIBNET_XXX_H 0xSIZE
+
+ struct XXX_hdr
+ {
+ u_char field1;
+ u_short field2;
+ u_long field3;
+ };
+
+ 2) Add a pblock definition to libnet-structures.h (appened to the list):
+
+ #define LIBNET_PBLOCK_XXX_H 0xNUMBER
+
+ 3) Then work from the following template for libnet_build_XXX.c:
+
+#if (HAVE_CONFIG_H)
+#include "../include/config.h"
+#endif
+#include "../include/libnet.h"
+
+
+libnet_ptag_t
+libnet_build_XXX(u_char arg1, u_short arg2, u_long arg3, u_char *payload,
+ u_long payload_s, libnet_t *l, libnet_ptag_t ptag)
+{
+ /*
+ * n is the size of the protocol unit. This is usually the header size
+ * plus the payload size. This is also how many bytes are allocated on
+ * the heap to hold this protocol unit.
+ */
+ u_long n;
+
+ /*
+ * h is used inside the pblock structure to let libnet know how big
+ * much data to checksum. This is different for different protocols.
+ * The IPv4 checksum covers the IP header only, while TCP and UDP
+ * checksums cover header and data.
+ */
+ u_short h;
+
+ /*
+ * p will be used to refer to the protocol block that will either be
+ * allocated if the function's pt argument is 0, or located if ptag refers
+ * to a previously created protocol unit.
+ */
+ libnet_pblock_t *p;
+
+ /*
+ * XXX_hdr is the header structure that will be overlaid onto the
+ * allocated memory by way of a memcpy.
+ */
+ struct libnet_XXX_hdr XXX_hdr;
+
+ /*
+ * Here we sanity check to make sure we have a live l.
+ */
+ if (l == NULL)
+ {
+ return (-1);
+ }
+
+ n = LIBNET_XXX_H + payload_s;
+ h = 0; /* no checksum by default */
+
+ /*
+ * Find the existing protocol block if a ptag is specified, or create
+ * a new one.
+ */
+ p = libnet_pblock_probe(l, pt, n, LIBNET_PBLOCK_XXX_H);
+ if (p == NULL)
+ {
+ return (-1);
+ }
+
+ /*
+ * Build your packet here. Be sure to call appropriate endian conversion
+ * routines.
+ */
+ XXX_hdr.field1 = arg1;
+ XXX_hdr.field2 = htons(arg2);
+ XXX_hdr.field3 = htonl(arg3);
+
+ /*
+ * Appened the protocol unit to the list.
+ */
+ n = libnet_pblock_append(l, p, (u_char *)&XXX_hdr, LIBNET_XXX_H);
+ if (n == -1)
+ {
+ goto bad;
+ }
+
+ /*
+ * Sanity check the payload arguments.
+ */
+ if ((payload && !payload_s) || (!payload && payload_s))
+ {
+ sprintf(l->err_buf, "%s(): payload inconsistency\n", __FUNCTION__);
+ goto bad;
+ }
+
+ /*
+ * Append the payload to the list if it exists.
+ */
+ if (payload && payload_s)
+ {
+ n = libnet_pblock_append(l, p, payload, payload_s);
+ if (n == -1)
+ {
+ goto bad;
+ }
+ }
+
+ /*
+ * If this packet header has a checksum field, you'll add this
+ * and you'll have to edit libnet_checksum.c to add it to the switch
+ * table. You might have to define the protocol number too.
+ */
+ if (sum == 0 && l->injection_type != LIBNET_RAW4)
+ {
+ /*
+ * If checksum is zero, by default libnet will compute a checksum
+ * for the user. The programmer can override this by calling
+ * libnet_toggle_checksum(l, ptag, 1);
+ */
+ libnet_pblock_setflags(p, LIBNET_PBLOCK_DO_CHECKSUM);
+ }
+
+ /*
+ * Update the protocol block's meta information and return the protocol
+ * tag id of this pblock. This tag will be used to locate the pblock
+ * in order to modify the protocol header in subsequent calls.
+ */
+ return (pt ? pt : libnet_pblock_update(l, p, h, LIBNET_PBLOCK_XXX_H));
+bad:
+ libnet_pblock_delete(l, p);
+ return (-1);
+
+}
+ 4) Add it to src/Makefile.am and then automake from the TLD.
+ 5) Test the shit out of it.
+ 6) Send it over to mike@infonexus.com.
+
+
+EOF
diff --git a/libnet/doc/PORTED b/libnet/doc/PORTED
new file mode 100644
index 0000000..77df971
--- /dev/null
+++ b/libnet/doc/PORTED
@@ -0,0 +1,45 @@
+===============================================================================
+ $Id: PORTED,v 1.2 2004/01/03 20:31:00 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+
+ 1.1.0 PORTED OPERATING SYSTEMS
+
+ If you verify libnet building and running successfully (sample code works)
+ on a platform not listed here please send email to mike@infonexus.com.
+
+ - BSD/OS
+ 4.x
+
+ - Cygwin
+ - requires winpcap (http://netgroup-serv.polito.it/winpcap) and pcap
+ header files copied to /usr/include/pcap/ and the library files to
+ be copied to /usr/lib/
+
+ - FreeBSD
+ version?
+
+ - HPUX
+ 11.0
+
+ - Linux
+ 2.0.x
+ 2.2.x
+ 2.4.x
+
+ - OpenBSD
+ 2.x
+ 3.x
+
+ - OS/X
+ version?
+
+ - Solaris
+ 2.x
+ 7
+ 8
+ 9
+
+EOF
diff --git a/libnet/doc/RAWSOCKET_NON_SEQUITUR b/libnet/doc/RAWSOCKET_NON_SEQUITUR
new file mode 100644
index 0000000..7f8c758
--- /dev/null
+++ b/libnet/doc/RAWSOCKET_NON_SEQUITUR
@@ -0,0 +1,41 @@
+===============================================================================
+ $Id: RAWSOCKET_NON_SEQUITUR,v 1.2 2004/01/03 20:31:00 mike Exp $
+ LIBNET 1.1 (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com>
+ http://www.packetfactory.net/libnet
+===============================================================================
+
+ Raw sockets are horribly non-standard across implementations. Here is
+ an incomplete list of some of the differences (corrections welcomed):
+
+ Linux 2.2+:
+
+ IP fragmentation: performed if packet is larger than MTU
+ IP checksum: always filled in
+ IP total length: always filled in
+ IP ID: filled in when zero
+ IP source address: filled in when zero
+ IP destination address: filled in when zero
+ Max packet size before kernel complains: 1500 bytes
+
+ Solaris 2.6+:
+
+ IP fragmentation bits: can't specify
+ IP fragmentation: performed if packet is larger than MTU
+ IP DF bit: always set
+ IP checksum: always filled in
+ Max packet size before kernel complains: ?
+
+ OpenBSD 2.8+:
+
+ IP fragmentation: performed if packet is larger than MTU
+ Max packet size before kernel complains: 8192 bytes
+
+ Solaris,
+ for example, has terrible support for this packet interface. Older OpenBSD
+ versions and recent FreeBSD versions have the BSD_BYTE_SWAP issue where
+ the ip_len and ip_frag fields need to be in little endian order. Linux
+ apparently doesn't allow for the injection of broadcast IP datagrams.
+ Whenever complete control over the IP header is desired, use the link
+ layer API.
+
+EOF
diff --git a/libnet/doc/TODO b/libnet/doc/TODO
new file mode 100644
index 0000000..84464d1
--- /dev/null
+++ b/libnet/doc/TODO
@@ -0,0 +1,96 @@
+===============================================================================
+ $Id: TODO,v 1.2 2004/01/03 20:31:00 mike 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
diff --git a/libnet/doc/html/acconfig_8h-source.html b/libnet/doc/html/acconfig_8h-source.html
new file mode 100644
index 0000000..20fae5b
--- /dev/null
+++ b/libnet/doc/html/acconfig_8h-source.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: acconfig.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>acconfig.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment">dnl $Id: acconfig.h,v 1.2 2004/01/03 20:31:00 mike Exp $</span>
+00003 <span class="comment">dnl</span>
+00004 <span class="comment">dnl Libnet autoconfiguration acconfig.h file</span>
+00005 <span class="comment">dnl Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00006 <span class="comment">dnl All rights reserved.</span>
+00007 <span class="comment">dnl</span>
+00008 <span class="comment">dnl Process this file with autoheader to produce a config.h file.</span>
+00009 <span class="comment">dnl</span>
+00010 <span class="comment">*/</span>
+00011
+00012 <span class="preprocessor">#undef LIBNET_BSDISH_OS</span>
+00013 <span class="preprocessor"></span><span class="preprocessor">#undef LIBNET_BSD_BYTE_SWAP</span>
+00014 <span class="preprocessor"></span><span class="preprocessor">#undef DLPI_DEV_PREFIX</span>
+00015 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_DEV_DLPI</span>
+00016 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_SOLARIS</span>
+00017 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_SOLARIS_IPV6</span>
+00018 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_HPUX11</span>
+00019 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_SOCKADDR_SA_LEN</span>
+00020 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_DLPI</span>
+00021 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_PACKET_SOCKET</span>
+00022 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_STRUCT_IP_CSUM</span>
+00023 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_LIB_PCAP</span>
+00024 <span class="preprocessor"></span><span class="preprocessor">#undef LBL_ALIGN</span>
+00025 <span class="preprocessor"></span><span class="preprocessor">#undef STUPID_SOLARIS_CHECKSUM_BUG</span>
+00026 <span class="preprocessor"></span><span class="preprocessor">#undef _BSD_SOURCE</span>
+00027 <span class="preprocessor"></span><span class="preprocessor">#undef __BSD_SOURCE</span>
+00028 <span class="preprocessor"></span><span class="preprocessor">#undef __FAVOR_BSD</span>
+00029 <span class="preprocessor"></span><span class="preprocessor">#undef LIBNET_BIG_ENDIAN</span>
+00030 <span class="preprocessor"></span><span class="preprocessor">#undef LIBNET_LIL_ENDIAN</span>
+00031 <span class="preprocessor"></span><span class="preprocessor">#undef NO_SNPRINTF</span>
+00032 <span class="preprocessor"></span>
+00033
+00034 <span class="comment">/*</span>
+00035 <span class="comment">dnl EOF</span>
+00036 <span class="comment">*/</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/annotated.html b/libnet/doc/html/annotated.html
new file mode 100644
index 0000000..a713d91
--- /dev/null
+++ b/libnet/doc/html/annotated.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: Annotated Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindexHL" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet Data Structures</h1>Here are the data structures with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="structlibnet__802__1q__hdr.html">libnet_802_1q_hdr</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="structlibnet__802__1x__hdr.html">libnet_802_1x_hdr</a></td><td class="indexvalue"></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/bpf_8h-source.html b/libnet/doc/html/bpf_8h-source.html
new file mode 100644
index 0000000..4c18703
--- /dev/null
+++ b/libnet/doc/html/bpf_8h-source.html
@@ -0,0 +1,277 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: bpf.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>bpf.h</h1><div class="fragment"><pre>00001 <span class="comment">/*-</span>
+00002 <span class="comment"> * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997</span>
+00003 <span class="comment"> * The Regents of the University of California. All rights reserved.</span>
+00004 <span class="comment"> *</span>
+00005 <span class="comment"> * This code is derived from the Stanford/CMU enet packet filter,</span>
+00006 <span class="comment"> * (net/enet.c) distributed as part of 4.3BSD, and code contributed</span>
+00007 <span class="comment"> * to Berkeley by Steven McCanne and Van Jacobson both of Lawrence </span>
+00008 <span class="comment"> * Berkeley Laboratory.</span>
+00009 <span class="comment"> *</span>
+00010 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00011 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00012 <span class="comment"> * are met:</span>
+00013 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00014 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00015 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00016 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00017 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00018 <span class="comment"> * 3. All advertising materials mentioning features or use of this software</span>
+00019 <span class="comment"> * must display the following acknowledgement:</span>
+00020 <span class="comment"> * This product includes software developed by the University of</span>
+00021 <span class="comment"> * California, Berkeley and its contributors.</span>
+00022 <span class="comment"> * 4. Neither the name of the University nor the names of its contributors</span>
+00023 <span class="comment"> * may be used to endorse or promote products derived from this software</span>
+00024 <span class="comment"> * without specific prior written permission.</span>
+00025 <span class="comment"> *</span>
+00026 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND</span>
+00027 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00028 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00029 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE</span>
+00030 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00031 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00032 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00033 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00034 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00035 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00036 <span class="comment"> * SUCH DAMAGE.</span>
+00037 <span class="comment"> *</span>
+00038 <span class="comment"> * @(#)bpf.h 7.1 (Berkeley) 5/7/91</span>
+00039 <span class="comment"> *</span>
+00040 <span class="comment"> * @(#) $Header: /usr/local/CVS/libnet/include/bpf.h,v 1.1.1.1 2003/06/26 21:55:10 route Exp $ (LBL)</span>
+00041 <span class="comment"> */</span>
+00042
+00043 <span class="preprocessor">#ifndef BPF_MAJOR_VERSION</span>
+00044 <span class="preprocessor"></span>
+00045 <span class="comment">/* BSD style release date */</span>
+00046 <span class="preprocessor">#define BPF_RELEASE 199606</span>
+00047 <span class="preprocessor"></span>
+00048 <span class="keyword">typedef</span> <span class="keywordtype">int</span> bpf_int32;
+00049 <span class="keyword">typedef</span> u_int bpf_u_int32;
+00050
+00051 <span class="comment">/*</span>
+00052 <span class="comment"> * Alignment macros. BPF_WORDALIGN rounds up to the next </span>
+00053 <span class="comment"> * even multiple of BPF_ALIGNMENT. </span>
+00054 <span class="comment"> */</span>
+00055 <span class="preprocessor">#define BPF_ALIGNMENT sizeof(bpf_int32)</span>
+00056 <span class="preprocessor"></span><span class="preprocessor">#define BPF_WORDALIGN(x) (((x)+(BPF_ALIGNMENT-1))&amp;~(BPF_ALIGNMENT-1))</span>
+00057 <span class="preprocessor"></span>
+00058 <span class="preprocessor">#define BPF_MAXINSNS 512</span>
+00059 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MAXBUFSIZE 0x8000</span>
+00060 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MINBUFSIZE 32</span>
+00061 <span class="preprocessor"></span>
+00062 <span class="comment">/*</span>
+00063 <span class="comment"> * Structure for BIOCSETF.</span>
+00064 <span class="comment"> */</span>
+00065 <span class="keyword">struct </span>bpf_program {
+00066 u_int bf_len;
+00067 <span class="keyword">struct </span>bpf_insn *bf_insns;
+00068 };
+00069
+00070 <span class="comment">/*</span>
+00071 <span class="comment"> * Struct returned by BIOCGSTATS.</span>
+00072 <span class="comment"> */</span>
+00073 <span class="keyword">struct </span>bpf_stat {
+00074 u_int bs_recv; <span class="comment">/* number of packets received */</span>
+00075 u_int bs_drop; <span class="comment">/* number of packets dropped */</span>
+00076 };
+00077
+00078 <span class="comment">/*</span>
+00079 <span class="comment"> * Struct return by BIOCVERSION. This represents the version number of </span>
+00080 <span class="comment"> * the filter language described by the instruction encodings below.</span>
+00081 <span class="comment"> * bpf understands a program iff kernel_major == filter_major &amp;&amp;</span>
+00082 <span class="comment"> * kernel_minor &gt;= filter_minor, that is, if the value returned by the</span>
+00083 <span class="comment"> * running kernel has the same major number and a minor number equal</span>
+00084 <span class="comment"> * equal to or less than the filter being downloaded. Otherwise, the</span>
+00085 <span class="comment"> * results are undefined, meaning an error may be returned or packets</span>
+00086 <span class="comment"> * may be accepted haphazardly.</span>
+00087 <span class="comment"> * It has nothing to do with the source code version.</span>
+00088 <span class="comment"> */</span>
+00089 <span class="keyword">struct </span>bpf_version {
+00090 u_short bv_major;
+00091 u_short bv_minor;
+00092 };
+00093 <span class="comment">/* Current version number of filter architecture. */</span>
+00094 <span class="preprocessor">#define BPF_MAJOR_VERSION 1</span>
+00095 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MINOR_VERSION 1</span>
+00096 <span class="preprocessor"></span>
+00097 <span class="comment">/*</span>
+00098 <span class="comment"> * BPF ioctls</span>
+00099 <span class="comment"> *</span>
+00100 <span class="comment"> * The first set is for compatibility with Sun's pcc style</span>
+00101 <span class="comment"> * header files. If your using gcc, we assume that you</span>
+00102 <span class="comment"> * have run fixincludes so the latter set should work.</span>
+00103 <span class="comment"> */</span>
+00104 <span class="preprocessor">#if (defined(sun) || defined(ibm032)) &amp;&amp; !defined(__GNUC__)</span>
+00105 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGBLEN _IOR(B,102, u_int)</span>
+00106 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSBLEN _IOWR(B,102, u_int)</span>
+00107 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSETF _IOW(B,103, struct bpf_program)</span>
+00108 <span class="preprocessor"></span><span class="preprocessor">#define BIOCFLUSH _IO(B,104)</span>
+00109 <span class="preprocessor"></span><span class="preprocessor">#define BIOCPROMISC _IO(B,105)</span>
+00110 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGDLT _IOR(B,106, u_int)</span>
+00111 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGETIF _IOR(B,107, struct ifreq)</span>
+00112 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSETIF _IOW(B,108, struct ifreq)</span>
+00113 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSRTIMEOUT _IOW(B,109, struct timeval)</span>
+00114 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGRTIMEOUT _IOR(B,110, struct timeval)</span>
+00115 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGSTATS _IOR(B,111, struct bpf_stat)</span>
+00116 <span class="preprocessor"></span><span class="preprocessor">#define BIOCIMMEDIATE _IOW(B,112, u_int)</span>
+00117 <span class="preprocessor"></span><span class="preprocessor">#define BIOCVERSION _IOR(B,113, struct bpf_version)</span>
+00118 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSTCPF _IOW(B,114, struct bpf_program)</span>
+00119 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSUDPF _IOW(B,115, struct bpf_program)</span>
+00120 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00121 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGBLEN _IOR('B',102, u_int)</span>
+00122 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSBLEN _IOWR('B',102, u_int)</span>
+00123 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSETF _IOW('B',103, struct bpf_program)</span>
+00124 <span class="preprocessor"></span><span class="preprocessor">#define BIOCFLUSH _IO('B',104)</span>
+00125 <span class="preprocessor"></span><span class="preprocessor">#define BIOCPROMISC _IO('B',105)</span>
+00126 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGDLT _IOR('B',106, u_int)</span>
+00127 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGETIF _IOR('B',107, struct ifreq)</span>
+00128 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSETIF _IOW('B',108, struct ifreq)</span>
+00129 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSRTIMEOUT _IOW('B',109, struct timeval)</span>
+00130 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGRTIMEOUT _IOR('B',110, struct timeval)</span>
+00131 <span class="preprocessor"></span><span class="preprocessor">#define BIOCGSTATS _IOR('B',111, struct bpf_stat)</span>
+00132 <span class="preprocessor"></span><span class="preprocessor">#define BIOCIMMEDIATE _IOW('B',112, u_int)</span>
+00133 <span class="preprocessor"></span><span class="preprocessor">#define BIOCVERSION _IOR('B',113, struct bpf_version)</span>
+00134 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSTCPF _IOW('B',114, struct bpf_program)</span>
+00135 <span class="preprocessor"></span><span class="preprocessor">#define BIOCSUDPF _IOW('B',115, struct bpf_program)</span>
+00136 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00137 <span class="preprocessor"></span>
+00138 <span class="comment">/*</span>
+00139 <span class="comment"> * Structure prepended to each packet.</span>
+00140 <span class="comment"> */</span>
+00141 <span class="keyword">struct </span>bpf_hdr {
+00142 <span class="keyword">struct </span>timeval bh_tstamp; <span class="comment">/* time stamp */</span>
+00143 bpf_u_int32 bh_caplen; <span class="comment">/* length of captured portion */</span>
+00144 bpf_u_int32 bh_datalen; <span class="comment">/* original length of packet */</span>
+00145 u_short bh_hdrlen; <span class="comment">/* length of bpf header (this struct</span>
+00146 <span class="comment"> plus alignment padding) */</span>
+00147 };
+00148 <span class="comment">/*</span>
+00149 <span class="comment"> * Because the structure above is not a multiple of 4 bytes, some compilers</span>
+00150 <span class="comment"> * will insist on inserting padding; hence, sizeof(struct bpf_hdr) won't work.</span>
+00151 <span class="comment"> * Only the kernel needs to know about it; applications use bh_hdrlen.</span>
+00152 <span class="comment"> */</span>
+00153 <span class="preprocessor">#ifdef KERNEL</span>
+00154 <span class="preprocessor"></span><span class="preprocessor">#define SIZEOF_BPF_HDR 18</span>
+00155 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00156 <span class="preprocessor"></span>
+00157 <span class="comment">/*</span>
+00158 <span class="comment"> * Data-link level type codes.</span>
+00159 <span class="comment"> */</span>
+00160 <span class="preprocessor">#define DLT_NULL 0 </span><span class="comment">/* no link-layer encapsulation */</span>
+00161 <span class="preprocessor">#define DLT_EN10MB 1 </span><span class="comment">/* Ethernet (10Mb) */</span>
+00162 <span class="preprocessor">#define DLT_EN3MB 2 </span><span class="comment">/* Experimental Ethernet (3Mb) */</span>
+00163 <span class="preprocessor">#define DLT_AX25 3 </span><span class="comment">/* Amateur Radio AX.25 */</span>
+00164 <span class="preprocessor">#define DLT_PRONET 4 </span><span class="comment">/* Proteon ProNET Token Ring */</span>
+00165 <span class="preprocessor">#define DLT_CHAOS 5 </span><span class="comment">/* Chaos */</span>
+00166 <span class="preprocessor">#define DLT_IEEE802 6 </span><span class="comment">/* IEEE 802 Networks */</span>
+00167 <span class="preprocessor">#define DLT_ARCNET 7 </span><span class="comment">/* ARCNET */</span>
+00168 <span class="preprocessor">#define DLT_SLIP 8 </span><span class="comment">/* Serial Line IP */</span>
+00169 <span class="preprocessor">#define DLT_PPP 9 </span><span class="comment">/* Point-to-point Protocol */</span>
+00170 <span class="preprocessor">#define DLT_FDDI 10 </span><span class="comment">/* FDDI */</span>
+00171 <span class="preprocessor">#define DLT_ATM_RFC1483 11 </span><span class="comment">/* LLC/SNAP encapsulated atm */</span>
+00172 <span class="preprocessor">#define DLT_RAW 12 </span><span class="comment">/* raw IP */</span>
+00173 <span class="preprocessor">#define DLT_SLIP_BSDOS 13 </span><span class="comment">/* BSD/OS Serial Line IP */</span>
+00174 <span class="preprocessor">#define DLT_PPP_BSDOS 14 </span><span class="comment">/* BSD/OS Point-to-point Protocol */</span>
+00175
+00176 <span class="comment">/*</span>
+00177 <span class="comment"> * The instruction encondings.</span>
+00178 <span class="comment"> */</span>
+00179 <span class="comment">/* instruction classes */</span>
+00180 <span class="preprocessor">#define BPF_CLASS(code) ((code) &amp; 0x07)</span>
+00181 <span class="preprocessor"></span><span class="preprocessor">#define BPF_LD 0x00</span>
+00182 <span class="preprocessor"></span><span class="preprocessor">#define BPF_LDX 0x01</span>
+00183 <span class="preprocessor"></span><span class="preprocessor">#define BPF_ST 0x02</span>
+00184 <span class="preprocessor"></span><span class="preprocessor">#define BPF_STX 0x03</span>
+00185 <span class="preprocessor"></span><span class="preprocessor">#define BPF_ALU 0x04</span>
+00186 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JMP 0x05</span>
+00187 <span class="preprocessor"></span><span class="preprocessor">#define BPF_RET 0x06</span>
+00188 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MISC 0x07</span>
+00189 <span class="preprocessor"></span>
+00190 <span class="comment">/* ld/ldx fields */</span>
+00191 <span class="preprocessor">#define BPF_SIZE(code) ((code) &amp; 0x18)</span>
+00192 <span class="preprocessor"></span><span class="preprocessor">#define BPF_W 0x00</span>
+00193 <span class="preprocessor"></span><span class="preprocessor">#define BPF_H 0x08</span>
+00194 <span class="preprocessor"></span><span class="preprocessor">#define BPF_B 0x10</span>
+00195 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MODE(code) ((code) &amp; 0xe0)</span>
+00196 <span class="preprocessor"></span><span class="preprocessor">#define BPF_IMM 0x00</span>
+00197 <span class="preprocessor"></span><span class="preprocessor">#define BPF_ABS 0x20</span>
+00198 <span class="preprocessor"></span><span class="preprocessor">#define BPF_IND 0x40</span>
+00199 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MEM 0x60</span>
+00200 <span class="preprocessor"></span><span class="preprocessor">#define BPF_LEN 0x80</span>
+00201 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MSH 0xa0</span>
+00202 <span class="preprocessor"></span>
+00203 <span class="comment">/* alu/jmp fields */</span>
+00204 <span class="preprocessor">#define BPF_OP(code) ((code) &amp; 0xf0)</span>
+00205 <span class="preprocessor"></span><span class="preprocessor">#define BPF_ADD 0x00</span>
+00206 <span class="preprocessor"></span><span class="preprocessor">#define BPF_SUB 0x10</span>
+00207 <span class="preprocessor"></span><span class="preprocessor">#define BPF_MUL 0x20</span>
+00208 <span class="preprocessor"></span><span class="preprocessor">#define BPF_DIV 0x30</span>
+00209 <span class="preprocessor"></span><span class="preprocessor">#define BPF_OR 0x40</span>
+00210 <span class="preprocessor"></span><span class="preprocessor">#define BPF_AND 0x50</span>
+00211 <span class="preprocessor"></span><span class="preprocessor">#define BPF_LSH 0x60</span>
+00212 <span class="preprocessor"></span><span class="preprocessor">#define BPF_RSH 0x70</span>
+00213 <span class="preprocessor"></span><span class="preprocessor">#define BPF_NEG 0x80</span>
+00214 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JA 0x00</span>
+00215 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JEQ 0x10</span>
+00216 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JGT 0x20</span>
+00217 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JGE 0x30</span>
+00218 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JSET 0x40</span>
+00219 <span class="preprocessor"></span><span class="preprocessor">#define BPF_SRC(code) ((code) &amp; 0x08)</span>
+00220 <span class="preprocessor"></span><span class="preprocessor">#define BPF_K 0x00</span>
+00221 <span class="preprocessor"></span><span class="preprocessor">#define BPF_X 0x08</span>
+00222 <span class="preprocessor"></span>
+00223 <span class="comment">/* ret - BPF_K and BPF_X also apply */</span>
+00224 <span class="preprocessor">#define BPF_RVAL(code) ((code) &amp; 0x18)</span>
+00225 <span class="preprocessor"></span><span class="preprocessor">#define BPF_A 0x10</span>
+00226 <span class="preprocessor"></span>
+00227 <span class="comment">/* misc */</span>
+00228 <span class="preprocessor">#define BPF_MISCOP(code) ((code) &amp; 0xf8)</span>
+00229 <span class="preprocessor"></span><span class="preprocessor">#define BPF_TAX 0x00</span>
+00230 <span class="preprocessor"></span><span class="preprocessor">#define BPF_TXA 0x80</span>
+00231 <span class="preprocessor"></span>
+00232 <span class="comment">/*</span>
+00233 <span class="comment"> * The instruction data structure.</span>
+00234 <span class="comment"> */</span>
+00235 <span class="keyword">struct </span>bpf_insn {
+00236 u_short code;
+00237 u_char jt;
+00238 u_char jf;
+00239 bpf_int32 k;
+00240 };
+00241
+00242 <span class="comment">/*</span>
+00243 <span class="comment"> * Macros for insn array initializers.</span>
+00244 <span class="comment"> */</span>
+00245 <span class="preprocessor">#define BPF_STMT(code, k) { (u_short)(code), 0, 0, k }</span>
+00246 <span class="preprocessor"></span><span class="preprocessor">#define BPF_JUMP(code, k, jt, jf) { (u_short)(code), jt, jf, k }</span>
+00247 <span class="preprocessor"></span>
+00248 <span class="preprocessor">#ifdef KERNEL</span>
+00249 <span class="preprocessor"></span><span class="keyword">extern</span> u_int bpf_filter();
+00250 <span class="keyword">extern</span> <span class="keywordtype">void</span> bpfattach();
+00251 <span class="keyword">extern</span> <span class="keywordtype">void</span> bpf_tap();
+00252 <span class="keyword">extern</span> <span class="keywordtype">void</span> bpf_mtap();
+00253 <span class="preprocessor">#else</span>
+00254 <span class="preprocessor"></span><span class="preprocessor">#if __STDC__</span>
+00255 <span class="preprocessor"></span><span class="keyword">extern</span> u_int bpf_filter(<span class="keyword">struct</span> bpf_insn *, u_char *, u_int, u_int);
+00256 <span class="preprocessor">#endif</span>
+00257 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00258 <span class="preprocessor"></span>
+00259 <span class="comment">/*</span>
+00260 <span class="comment"> * Number of scratch memory words (for BPF_LD|BPF_MEM and BPF_ST).</span>
+00261 <span class="comment"> */</span>
+00262 <span class="preprocessor">#define BPF_MEMWORDS 16</span>
+00263 <span class="preprocessor"></span>
+00264 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/config_8h-source.html b/libnet/doc/html/config_8h-source.html
new file mode 100644
index 0000000..840ddb9
--- /dev/null
+++ b/libnet/doc/html/config_8h-source.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: config.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>config.h</h1><div class="fragment"><pre>00001 <span class="comment">/* include/config.h.in. Generated from configure.in by autoheader. */</span>
+00002 <span class="comment">/*</span>
+00003 <span class="comment">dnl $Id: config.h,v 1.4 2004/01/03 20:31:00 mike Exp $</span>
+00004 <span class="comment">dnl</span>
+00005 <span class="comment">dnl Libnet autoconfiguration acconfig.h file</span>
+00006 <span class="comment">dnl Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment">dnl All rights reserved.</span>
+00008 <span class="comment">dnl</span>
+00009 <span class="comment">dnl Process this file with autoheader to produce a config.h file.</span>
+00010 <span class="comment">dnl</span>
+00011 <span class="comment">*/</span>
+00012
+00013 <span class="preprocessor">#undef LIBNET_BSDISH_OS</span>
+00014 <span class="preprocessor"></span><span class="preprocessor">#undef LIBNET_BSD_BYTE_SWAP</span>
+00015 <span class="preprocessor"></span><span class="preprocessor">#undef DLPI_DEV_PREFIX</span>
+00016 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_DEV_DLPI</span>
+00017 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_SOLARIS</span>
+00018 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_SOLARIS_IPV6</span>
+00019 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_HPUX11</span>
+00020 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_SOCKADDR_SA_LEN</span>
+00021 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_DLPI</span>
+00022 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_PACKET_SOCKET</span>
+00023 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_STRUCT_IP_CSUM</span>
+00024 <span class="preprocessor"></span><span class="preprocessor">#undef HAVE_LIB_PCAP</span>
+00025 <span class="preprocessor"></span><span class="preprocessor">#undef LBL_ALIGN</span>
+00026 <span class="preprocessor"></span><span class="preprocessor">#undef STUPID_SOLARIS_CHECKSUM_BUG</span>
+00027 <span class="preprocessor"></span><span class="preprocessor">#undef _BSD_SOURCE</span>
+00028 <span class="preprocessor"></span><span class="preprocessor">#undef __BSD_SOURCE</span>
+00029 <span class="preprocessor"></span><span class="preprocessor">#undef __FAVOR_BSD</span>
+00030 <span class="preprocessor"></span><span class="preprocessor">#undef LIBNET_BIG_ENDIAN</span>
+00031 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_LIL_ENDIAN 1</span>
+00032 <span class="preprocessor"></span><span class="preprocessor">#undef NO_SNPRINTF</span>
+00033 <span class="preprocessor"></span>
+00034
+00035 <span class="comment">/*</span>
+00036 <span class="comment">dnl EOF</span>
+00037 <span class="comment">*/</span>
+00038
+00039 <span class="comment">/* Define to 1 if you have the &lt;inttypes.h&gt; header file. */</span>
+00040 <span class="preprocessor">#undef HAVE_INTTYPES_H</span>
+00041 <span class="preprocessor"></span>
+00042 <span class="comment">/* Define to 1 if you have the `nsl' library (-lnsl). */</span>
+00043 <span class="preprocessor">#undef HAVE_LIBNSL</span>
+00044 <span class="preprocessor"></span>
+00045 <span class="comment">/* Define to 1 if you have the `packet' library (-lpacket). */</span>
+00046 <span class="preprocessor">#undef HAVE_LIBPACKET</span>
+00047 <span class="preprocessor"></span>
+00048 <span class="comment">/* Define to 1 if you have the `socket' library (-lsocket). */</span>
+00049 <span class="preprocessor">#undef HAVE_LIBSOCKET</span>
+00050 <span class="preprocessor"></span>
+00051 <span class="comment">/* Define to 1 if you have the `wpcap' library (-lwpcap). */</span>
+00052 <span class="preprocessor">#undef HAVE_LIBWPCAP</span>
+00053 <span class="preprocessor"></span>
+00054 <span class="comment">/* Define to 1 if you have the &lt;memory.h&gt; header file. */</span>
+00055 <span class="preprocessor">#undef HAVE_MEMORY_H</span>
+00056 <span class="preprocessor"></span>
+00057 <span class="comment">/* Define to 1 if you have the &lt;net/ethernet.h&gt; header file. */</span>
+00058 <span class="preprocessor">#define HAVE_NET_ETHERNET_H 1</span>
+00059 <span class="preprocessor"></span>
+00060 <span class="comment">/* Define to 1 if you have the &lt;stdint.h&gt; header file. */</span>
+00061 <span class="preprocessor">#undef HAVE_STDINT_H</span>
+00062 <span class="preprocessor"></span>
+00063 <span class="comment">/* Define to 1 if you have the &lt;stdlib.h&gt; header file. */</span>
+00064 <span class="preprocessor">#undef HAVE_STDLIB_H</span>
+00065 <span class="preprocessor"></span>
+00066 <span class="comment">/* Define to 1 if you have the `strerror' function. */</span>
+00067 <span class="preprocessor">#define HAVE_STRERROR 1</span>
+00068 <span class="preprocessor"></span>
+00069 <span class="comment">/* Define to 1 if you have the &lt;strings.h&gt; header file. */</span>
+00070 <span class="preprocessor">#undef HAVE_STRINGS_H</span>
+00071 <span class="preprocessor"></span>
+00072 <span class="comment">/* Define to 1 if you have the &lt;string.h&gt; header file. */</span>
+00073 <span class="preprocessor">#undef HAVE_STRING_H</span>
+00074 <span class="preprocessor"></span>
+00075 <span class="comment">/* Define to 1 if you have the &lt;sys/bufmod.h&gt; header file. */</span>
+00076 <span class="preprocessor">#undef HAVE_SYS_BUFMOD_H</span>
+00077 <span class="preprocessor"></span>
+00078 <span class="comment">/* Define to 1 if you have the &lt;sys/dlpi_ext.h&gt; header file. */</span>
+00079 <span class="preprocessor">#undef HAVE_SYS_DLPI_EXT_H</span>
+00080 <span class="preprocessor"></span>
+00081 <span class="comment">/* Define to 1 if you have the &lt;sys/sockio.h&gt; header file. */</span>
+00082 <span class="preprocessor">#undef HAVE_SYS_SOCKIO_H</span>
+00083 <span class="preprocessor"></span>
+00084 <span class="comment">/* Define to 1 if you have the &lt;sys/stat.h&gt; header file. */</span>
+00085 <span class="preprocessor">#undef HAVE_SYS_STAT_H</span>
+00086 <span class="preprocessor"></span>
+00087 <span class="comment">/* Define to 1 if you have the &lt;sys/types.h&gt; header file. */</span>
+00088 <span class="preprocessor">#undef HAVE_SYS_TYPES_H</span>
+00089 <span class="preprocessor"></span>
+00090 <span class="comment">/* Define to 1 if you have the &lt;unistd.h&gt; header file. */</span>
+00091 <span class="preprocessor">#undef HAVE_UNISTD_H</span>
+00092 <span class="preprocessor"></span>
+00093 <span class="comment">/* Name of package */</span>
+00094 <span class="preprocessor">#undef PACKAGE</span>
+00095 <span class="preprocessor"></span>
+00096 <span class="comment">/* Define to the address where bug reports for this package should be sent. */</span>
+00097 <span class="preprocessor">#undef PACKAGE_BUGREPORT</span>
+00098 <span class="preprocessor"></span>
+00099 <span class="comment">/* Define to the full name of this package. */</span>
+00100 <span class="preprocessor">#undef PACKAGE_NAME</span>
+00101 <span class="preprocessor"></span>
+00102 <span class="comment">/* Define to the full name and version of this package. */</span>
+00103 <span class="preprocessor">#undef PACKAGE_STRING</span>
+00104 <span class="preprocessor"></span>
+00105 <span class="comment">/* Define to the one symbol short name of this package. */</span>
+00106 <span class="preprocessor">#undef PACKAGE_TARNAME</span>
+00107 <span class="preprocessor"></span>
+00108 <span class="comment">/* Define to the version of this package. */</span>
+00109 <span class="preprocessor">#undef PACKAGE_VERSION</span>
+00110 <span class="preprocessor"></span>
+00111 <span class="comment">/* Define to 1 if you have the ANSI C header files. */</span>
+00112 <span class="preprocessor">#undef STDC_HEADERS</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/doxygen.css b/libnet/doc/html/doxygen.css
new file mode 100644
index 0000000..a89dd24
--- /dev/null
+++ b/libnet/doc/html/doxygen.css
@@ -0,0 +1,169 @@
+H1 {
+ text-align: center;
+ font-family: Arial, Helvetica, sans-serif;
+}
+H2 {
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+}
+CAPTION { font-weight: bold }
+DIV.qindex { width: 100%;
+ background-color: #eeeeff;
+ border: 4px solid #eeeeff;
+ text-align: center;
+ margin-bottom: 2px
+}
+A.qindex { text-decoration: none; font-weight: bold; color: #0000ee }
+A.qindex:visited { text-decoration: none; font-weight: bold; color: #0000ee }
+A.qindex:hover { text-decoration: none; background-color: #ddddff }
+A.qindexHL { text-decoration: none; font-weight: bold;
+ background-color: #6666cc;
+ color: #ffffff
+ }
+A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff }
+A.el { text-decoration: none; font-weight: bold }
+A.elRef { font-weight: bold }
+A.code { text-decoration: none; font-weight: normal; color: #4444ee }
+A.codeRef { font-weight: normal; color: #4444ee }
+A:hover { text-decoration: none; background-color: #f2f2ff }
+DL.el { margin-left: -1cm }
+DIV.fragment {
+ width: 98%;
+ border: 1px solid #CCCCCC;
+ background-color: #f5f5f5;
+ padding-left: 4px;
+ margin: 4px;
+}
+DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
+TD.md { background-color: #f2f2ff; font-weight: bold; }
+TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; }
+TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; }
+DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold }
+DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller }
+BODY {
+ background: white;
+ color: black;
+ margin-right: 20px;
+ margin-left: 20px;
+}
+TD.indexkey {
+ background-color: #eeeeff;
+ font-weight: bold;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+TD.indexvalue {
+ background-color: #eeeeff;
+ font-style: italic;
+ padding-right : 10px;
+ padding-top : 2px;
+ padding-left : 10px;
+ padding-bottom : 2px;
+ margin-left : 0px;
+ margin-right : 0px;
+ margin-top : 2px;
+ margin-bottom : 2px
+}
+TR.memlist {
+ background-color: #f0f0f0;
+}
+P.formulaDsp { text-align: center; }
+IMG.formulaDsp { }
+IMG.formulaInl { vertical-align: middle; }
+SPAN.keyword { color: #008000 }
+SPAN.keywordtype { color: #604020 }
+SPAN.keywordflow { color: #e08000 }
+SPAN.comment { color: #800000 }
+SPAN.preprocessor { color: #806020 }
+SPAN.stringliteral { color: #002080 }
+SPAN.charliteral { color: #008080 }
+.mdTable {
+ border: 1px solid #868686;
+ background-color: #f2f2ff;
+}
+.mdRow {
+ padding: 8px 20px;
+}
+.mdescLeft {
+ font-size: smaller;
+ font-family: Arial, Helvetica, sans-serif;
+ background-color: #FAFAFA;
+ padding-left: 8px;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+}
+.mdescRight {
+ font-size: smaller;
+ font-family: Arial, Helvetica, sans-serif;
+ font-style: italic;
+ background-color: #FAFAFA;
+ padding-left: 4px;
+ border-top: 1px none #E0E0E0;
+ border-right: 1px none #E0E0E0;
+ border-bottom: 1px none #E0E0E0;
+ border-left: 1px none #E0E0E0;
+ margin: 0px;
+ padding-bottom: 0px;
+ padding-right: 8px;
+}
+.memItemLeft {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-style: solid;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+}
+.memItemRight {
+ padding: 1px 0px 0px 8px;
+ margin: 4px;
+ border-top-width: 1px;
+ border-right-width: 1px;
+ border-bottom-width: 1px;
+ border-left-width: 1px;
+ border-top-style: solid;
+ border-top-color: #E0E0E0;
+ border-right-color: #E0E0E0;
+ border-bottom-color: #E0E0E0;
+ border-left-color: #E0E0E0;
+ border-right-style: none;
+ border-bottom-style: none;
+ border-left-style: none;
+ background-color: #FAFAFA;
+ font-family: Geneva, Arial, Helvetica, sans-serif;
+ font-size: 13px;
+}
+.search { color: #0000ee;
+ font-weight: bold;
+}
+FORM.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+INPUT.search { font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #eeeeff;
+}
+TD.tiny { font-size: 75%;
+}
diff --git a/libnet/doc/html/doxygen.png b/libnet/doc/html/doxygen.png
new file mode 100644
index 0000000..96ae72c
--- /dev/null
+++ b/libnet/doc/html/doxygen.png
Binary files differ
diff --git a/libnet/doc/html/files.html b/libnet/doc/html/files.html
new file mode 100644
index 0000000..9a058a7
--- /dev/null
+++ b/libnet/doc/html/files.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: File Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindexHL" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet File List</h1>Here is a list of all documented files with brief descriptions:<table>
+ <tr><td class="indexkey"><b>acconfig.h</b> <a href="acconfig_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>bpf.h</b> <a href="bpf_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>config.h</b> <a href="config_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>getopt.h</b> <a href="getopt_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>gnuc.h</b> <a href="gnuc_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>ifaddrlist.h</b> <a href="ifaddrlist_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>in_systm.h</b> <a href="in__systm_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>libnet-asn1.h</b> <a href="libnet-asn1_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="libnet-functions_8h.html">libnet-functions.h</a> <a href="libnet-functions_8h-source.html">[code]</a></td><td class="indexvalue">Libnet exported function prototypes </td></tr>
+ <tr><td class="indexkey"><a class="el" href="libnet-headers_8h.html">libnet-headers.h</a> <a href="libnet-headers_8h-source.html">[code]</a></td><td class="indexvalue">Libnet header information </td></tr>
+ <tr><td class="indexkey"><a class="el" href="libnet-macros_8h.html">libnet-macros.h</a> <a href="libnet-macros_8h-source.html">[code]</a></td><td class="indexvalue">Libnet macros and symbloc constants </td></tr>
+ <tr><td class="indexkey"><b>libnet-structures.h</b> <a href="libnet-structures_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><b>libnet-types.h</b> <a href="libnet-types_8h-source.html">[code]</a></td><td class="indexvalue"></td></tr>
+ <tr><td class="indexkey"><a class="el" href="libnet_8h.html">libnet.h</a> <a href="libnet_8h-source.html">[code]</a></td><td class="indexvalue">Toplevel libnet header file </td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/functions.html b/libnet/doc/html/functions.html
new file mode 100644
index 0000000..2e467a0
--- /dev/null
+++ b/libnet/doc/html/functions.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: Compound Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindexHL" href="functions.html">All</a> | <a class="qindex" href="functions_vars.html">Variables</a></div>
+
+<p>
+Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:<ul>
+<li>dot1x_length
+: <a class="el" href="structlibnet__802__1x__hdr.html#o2">libnet_802_1x_hdr</a><li>dot1x_type
+: <a class="el" href="structlibnet__802__1x__hdr.html#o1">libnet_802_1x_hdr</a><li>dot1x_version
+: <a class="el" href="structlibnet__802__1x__hdr.html#o0">libnet_802_1x_hdr</a><li>vlan_dhost
+: <a class="el" href="structlibnet__802__1q__hdr.html#o0">libnet_802_1q_hdr</a><li>vlan_len
+: <a class="el" href="structlibnet__802__1q__hdr.html#o4">libnet_802_1q_hdr</a><li>vlan_priority_c_vid
+: <a class="el" href="structlibnet__802__1q__hdr.html#o3">libnet_802_1q_hdr</a><li>vlan_shost
+: <a class="el" href="structlibnet__802__1q__hdr.html#o1">libnet_802_1q_hdr</a><li>vlan_tpi
+: <a class="el" href="structlibnet__802__1q__hdr.html#o2">libnet_802_1q_hdr</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/functions_vars.html b/libnet/doc/html/functions_vars.html
new file mode 100644
index 0000000..0e8d73a
--- /dev/null
+++ b/libnet/doc/html/functions_vars.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: Compound Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindexHL" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="functions.html">All</a> | <a class="qindexHL" href="functions_vars.html">Variables</a></div>
+
+<p>
+<ul>
+<li>dot1x_length
+: <a class="el" href="structlibnet__802__1x__hdr.html#o2">libnet_802_1x_hdr</a><li>dot1x_type
+: <a class="el" href="structlibnet__802__1x__hdr.html#o1">libnet_802_1x_hdr</a><li>dot1x_version
+: <a class="el" href="structlibnet__802__1x__hdr.html#o0">libnet_802_1x_hdr</a><li>vlan_dhost
+: <a class="el" href="structlibnet__802__1q__hdr.html#o0">libnet_802_1q_hdr</a><li>vlan_len
+: <a class="el" href="structlibnet__802__1q__hdr.html#o4">libnet_802_1q_hdr</a><li>vlan_priority_c_vid
+: <a class="el" href="structlibnet__802__1q__hdr.html#o3">libnet_802_1q_hdr</a><li>vlan_shost
+: <a class="el" href="structlibnet__802__1q__hdr.html#o1">libnet_802_1q_hdr</a><li>vlan_tpi
+: <a class="el" href="structlibnet__802__1q__hdr.html#o2">libnet_802_1q_hdr</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/getopt_8h-source.html b/libnet/doc/html/getopt_8h-source.html
new file mode 100644
index 0000000..5ea497b
--- /dev/null
+++ b/libnet/doc/html/getopt_8h-source.html
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: getopt.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>getopt.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * Copyright (c) 1987, 1993, 1994, 1996</span>
+00003 <span class="comment"> * The Regents of the University of California. All rights reserved.</span>
+00004 <span class="comment"> *</span>
+00005 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00006 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00007 <span class="comment"> * are met:</span>
+00008 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00009 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00010 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00011 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00012 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00013 <span class="comment"> * 3. All advertising materials mentioning features or use of this software</span>
+00014 <span class="comment"> * must display the following acknowledgement:</span>
+00015 <span class="comment"> * This product includes software developed by the University of</span>
+00016 <span class="comment"> * California, Berkeley and its contributors.</span>
+00017 <span class="comment"> * 4. Neither the name of the University nor the names of its contributors</span>
+00018 <span class="comment"> * may be used to endorse or promote products derived from this software</span>
+00019 <span class="comment"> * without specific prior written permission.</span>
+00020 <span class="comment"> *</span>
+00021 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND</span>
+00022 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00023 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00024 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE</span>
+00025 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00026 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00027 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00028 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00029 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00030 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00031 <span class="comment"> * SUCH DAMAGE.</span>
+00032 <span class="comment"> */</span>
+00033
+00034 <span class="preprocessor">#ifndef __GETOPT_H__</span>
+00035 <span class="preprocessor"></span><span class="preprocessor">#define __GETOPT_H__</span>
+00036 <span class="preprocessor"></span>
+00037 <span class="preprocessor">#ifdef __cplusplus</span>
+00038 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+00039 <span class="preprocessor">#endif</span>
+00040 <span class="preprocessor"></span>
+00041 <span class="keyword">extern</span> <span class="keywordtype">int</span> opterr; <span class="comment">/* if error message should be printed */</span>
+00042 <span class="keyword">extern</span> <span class="keywordtype">int</span> optind; <span class="comment">/* index into parent argv vector */</span>
+00043 <span class="keyword">extern</span> <span class="keywordtype">int</span> optopt; <span class="comment">/* character checked for validity */</span>
+00044 <span class="keyword">extern</span> <span class="keywordtype">int</span> optreset; <span class="comment">/* reset getopt */</span>
+00045 <span class="keyword">extern</span> <span class="keywordtype">char</span> *optarg; <span class="comment">/* argument associated with option */</span>
+00046
+00047 <span class="keywordtype">int</span> getopt (<span class="keywordtype">int</span>, <span class="keywordtype">char</span> * <span class="keyword">const</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *);
+00048
+00049 <span class="preprocessor">#ifdef __cplusplus</span>
+00050 <span class="preprocessor"></span>}
+00051 <span class="preprocessor">#endif</span>
+00052 <span class="preprocessor"></span>
+00053 <span class="preprocessor">#endif </span><span class="comment">/* __GETOPT_H__ */</span>
+00054
+00055 <span class="preprocessor">#ifndef __UNISTD_GETOPT__</span>
+00056 <span class="preprocessor"></span><span class="preprocessor">#ifndef __GETOPT_LONG_H__</span>
+00057 <span class="preprocessor"></span><span class="preprocessor">#define __GETOPT_LONG_H__</span>
+00058 <span class="preprocessor"></span>
+00059 <span class="preprocessor">#ifdef __cplusplus</span>
+00060 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+00061 <span class="preprocessor">#endif</span>
+00062 <span class="preprocessor"></span>
+00063 <span class="keyword">struct </span>option {
+00064 <span class="keyword">const</span> <span class="keywordtype">char</span> *name;
+00065 <span class="keywordtype">int</span> has_arg;
+00066 <span class="keywordtype">int</span> *flag;
+00067 <span class="keywordtype">int</span> val;
+00068 };
+00069
+00070 <span class="keywordtype">int</span> getopt_long (<span class="keywordtype">int</span>, <span class="keywordtype">char</span> *<span class="keyword">const</span> *, <span class="keyword">const</span> <span class="keywordtype">char</span> *, <span class="keyword">const</span> <span class="keyword">struct</span> option *, <span class="keywordtype">int</span> *);
+00071 <span class="preprocessor">#ifndef HAVE_DECL_GETOPT</span>
+00072 <span class="preprocessor"></span><span class="preprocessor">#define HAVE_DECL_GETOPT 1</span>
+00073 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00074 <span class="preprocessor"></span>
+00075 <span class="preprocessor">#define no_argument 0</span>
+00076 <span class="preprocessor"></span><span class="preprocessor">#define required_argument 1</span>
+00077 <span class="preprocessor"></span><span class="preprocessor">#define optional_argument 2</span>
+00078 <span class="preprocessor"></span>
+00079 <span class="preprocessor">#ifdef __cplusplus</span>
+00080 <span class="preprocessor"></span>}
+00081 <span class="preprocessor">#endif</span>
+00082 <span class="preprocessor"></span>
+00083 <span class="preprocessor">#endif </span><span class="comment">/* __GETOPT_LONG_H__ */</span>
+00084 <span class="preprocessor">#endif </span><span class="comment">/* __UNISTD_GETOPT__ */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/globals.html b/libnet/doc/html/globals.html
new file mode 100644
index 0000000..2f6a14b
--- /dev/null
+++ b/libnet/doc/html/globals.html
@@ -0,0 +1,219 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: File Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindexHL" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_l">l</a></div>
+
+<p>
+
+<p>
+Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>for_each_context_in_cq
+: <a class="el" href="libnet-macros_8h.html#a33">libnet-macros.h</a></ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>IN6ADDR_ERROR_INIT
+: <a class="el" href="libnet-macros_8h.html#a4">libnet-macros.h</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>LIBNET_802_1Q_CFIMASK
+: <a class="el" href="libnet-headers_8h.html#a63">libnet-headers.h</a><li>LIBNET_802_1Q_H
+: <a class="el" href="libnet-headers_8h.html#a0">libnet-headers.h</a><li>LIBNET_802_1Q_PRIMASK
+: <a class="el" href="libnet-headers_8h.html#a62">libnet-headers.h</a><li>LIBNET_802_1Q_VIDMASK
+: <a class="el" href="libnet-headers_8h.html#a64">libnet-headers.h</a><li>LIBNET_802_1X_ENCASFAL
+: <a class="el" href="libnet-headers_8h.html#a69">libnet-headers.h</a><li>LIBNET_802_1X_H
+: <a class="el" href="libnet-headers_8h.html#a1">libnet-headers.h</a><li>LIBNET_802_1X_KEY
+: <a class="el" href="libnet-headers_8h.html#a68">libnet-headers.h</a><li>LIBNET_802_1X_LOGOFF
+: <a class="el" href="libnet-headers_8h.html#a67">libnet-headers.h</a><li>LIBNET_802_1X_PACKET
+: <a class="el" href="libnet-headers_8h.html#a65">libnet-headers.h</a><li>LIBNET_802_1X_START
+: <a class="el" href="libnet-headers_8h.html#a66">libnet-headers.h</a><li>LIBNET_802_2_H
+: <a class="el" href="libnet-headers_8h.html#a2">libnet-headers.h</a><li>LIBNET_802_2SNAP_H
+: <a class="el" href="libnet-headers_8h.html#a3">libnet-headers.h</a><li>LIBNET_802_3_H
+: <a class="el" href="libnet-headers_8h.html#a4">libnet-headers.h</a><li>libnet_addr2name4()
+: <a class="el" href="libnet-functions_8h.html#a14">libnet-functions.h</a><li>libnet_addr2name6_r()
+: <a class="el" href="libnet-functions_8h.html#a17">libnet-functions.h</a><li>libnet_adv_cull_header()
+: <a class="el" href="libnet-functions_8h.html#a99">libnet-functions.h</a><li>libnet_adv_cull_packet()
+: <a class="el" href="libnet-functions_8h.html#a98">libnet-functions.h</a><li>libnet_adv_free_packet()
+: <a class="el" href="libnet-functions_8h.html#a101">libnet-functions.h</a><li>libnet_adv_write_link()
+: <a class="el" href="libnet-functions_8h.html#a100">libnet-functions.h</a><li>LIBNET_ARP_ETH_IP_H
+: <a class="el" href="libnet-headers_8h.html#a6">libnet-headers.h</a><li>LIBNET_ARP_H
+: <a class="el" href="libnet-headers_8h.html#a5">libnet-headers.h</a><li>libnet_autobuild_arp()
+: <a class="el" href="libnet-functions_8h.html#a33">libnet-functions.h</a><li>libnet_autobuild_ethernet()
+: <a class="el" href="libnet-functions_8h.html#a29">libnet-functions.h</a><li>libnet_autobuild_fddi()
+: <a class="el" href="libnet-functions_8h.html#a31">libnet-functions.h</a><li>libnet_autobuild_ipv4()
+: <a class="el" href="libnet-functions_8h.html#a47">libnet-functions.h</a><li>libnet_autobuild_ipv6()
+: <a class="el" href="libnet-functions_8h.html#a53">libnet-functions.h</a><li>libnet_autobuild_link()
+: <a class="el" href="libnet-functions_8h.html#a92">libnet-functions.h</a><li>libnet_autobuild_token_ring()
+: <a class="el" href="libnet-functions_8h.html#a64">libnet-functions.h</a><li>LIBNET_BGP4_HEADER_H
+: <a class="el" href="libnet-headers_8h.html#a7">libnet-headers.h</a><li>LIBNET_BGP4_NOTIFICATION_H
+: <a class="el" href="libnet-headers_8h.html#a10">libnet-headers.h</a><li>LIBNET_BGP4_OPEN_H
+: <a class="el" href="libnet-headers_8h.html#a8">libnet-headers.h</a><li>LIBNET_BGP4_UPDATE_H
+: <a class="el" href="libnet-headers_8h.html#a9">libnet-headers.h</a><li>libnet_build_802_1q()
+: <a class="el" href="libnet-functions_8h.html#a23">libnet-functions.h</a><li>libnet_build_802_1x()
+: <a class="el" href="libnet-functions_8h.html#a24">libnet-functions.h</a><li>libnet_build_802_2()
+: <a class="el" href="libnet-functions_8h.html#a25">libnet-functions.h</a><li>libnet_build_802_2snap()
+: <a class="el" href="libnet-functions_8h.html#a26">libnet-functions.h</a><li>libnet_build_802_3()
+: <a class="el" href="libnet-functions_8h.html#a27">libnet-functions.h</a><li>libnet_build_arp()
+: <a class="el" href="libnet-functions_8h.html#a32">libnet-functions.h</a><li>libnet_build_bgp4_header()
+: <a class="el" href="libnet-functions_8h.html#a86">libnet-functions.h</a><li>libnet_build_bgp4_notification()
+: <a class="el" href="libnet-functions_8h.html#a89">libnet-functions.h</a><li>libnet_build_bgp4_open()
+: <a class="el" href="libnet-functions_8h.html#a87">libnet-functions.h</a><li>libnet_build_bgp4_update()
+: <a class="el" href="libnet-functions_8h.html#a88">libnet-functions.h</a><li>libnet_build_bootpv4()
+: <a class="el" href="libnet-functions_8h.html#a80">libnet-functions.h</a><li>libnet_build_cdp()
+: <a class="el" href="libnet-functions_8h.html#a37">libnet-functions.h</a><li>libnet_build_data()
+: <a class="el" href="libnet-functions_8h.html#a78">libnet-functions.h</a><li>libnet_build_dhcpv4()
+: <a class="el" href="libnet-functions_8h.html#a79">libnet-functions.h</a><li>libnet_build_dnsv4()
+: <a class="el" href="libnet-functions_8h.html#a58">libnet-functions.h</a><li>libnet_build_egre()
+: <a class="el" href="libnet-functions_8h.html#a83">libnet-functions.h</a><li>libnet_build_ethernet()
+: <a class="el" href="libnet-functions_8h.html#a28">libnet-functions.h</a><li>libnet_build_fddi()
+: <a class="el" href="libnet-functions_8h.html#a30">libnet-functions.h</a><li>libnet_build_gre()
+: <a class="el" href="libnet-functions_8h.html#a82">libnet-functions.h</a><li>libnet_build_gre_last_sre()
+: <a class="el" href="libnet-functions_8h.html#a85">libnet-functions.h</a><li>libnet_build_gre_sre()
+: <a class="el" href="libnet-functions_8h.html#a84">libnet-functions.h</a><li>libnet_build_icmpv4_echo()
+: <a class="el" href="libnet-functions_8h.html#a38">libnet-functions.h</a><li>libnet_build_icmpv4_mask()
+: <a class="el" href="libnet-functions_8h.html#a39">libnet-functions.h</a><li>libnet_build_icmpv4_redirect()
+: <a class="el" href="libnet-functions_8h.html#a41">libnet-functions.h</a><li>libnet_build_icmpv4_timeexceed()
+: <a class="el" href="libnet-functions_8h.html#a42">libnet-functions.h</a><li>libnet_build_icmpv4_timestamp()
+: <a class="el" href="libnet-functions_8h.html#a43">libnet-functions.h</a><li>libnet_build_icmpv4_unreach()
+: <a class="el" href="libnet-functions_8h.html#a40">libnet-functions.h</a><li>libnet_build_igmp()
+: <a class="el" href="libnet-functions_8h.html#a44">libnet-functions.h</a><li>libnet_build_ipsec_ah()
+: <a class="el" href="libnet-functions_8h.html#a57">libnet-functions.h</a><li>libnet_build_ipsec_esp_ftr()
+: <a class="el" href="libnet-functions_8h.html#a56">libnet-functions.h</a><li>libnet_build_ipsec_esp_hdr()
+: <a class="el" href="libnet-functions_8h.html#a55">libnet-functions.h</a><li>libnet_build_ipv4()
+: <a class="el" href="libnet-functions_8h.html#a45">libnet-functions.h</a><li>libnet_build_ipv4_options()
+: <a class="el" href="libnet-functions_8h.html#a46">libnet-functions.h</a><li>libnet_build_ipv6()
+: <a class="el" href="libnet-functions_8h.html#a48">libnet-functions.h</a><li>libnet_build_ipv6_destopts()
+: <a class="el" href="libnet-functions_8h.html#a51">libnet-functions.h</a><li>libnet_build_ipv6_frag()
+: <a class="el" href="libnet-functions_8h.html#a49">libnet-functions.h</a><li>libnet_build_ipv6_hbhopts()
+: <a class="el" href="libnet-functions_8h.html#a52">libnet-functions.h</a><li>libnet_build_ipv6_routing()
+: <a class="el" href="libnet-functions_8h.html#a50">libnet-functions.h</a><li>libnet_build_isl()
+: <a class="el" href="libnet-functions_8h.html#a54">libnet-functions.h</a><li>libnet_build_link()
+: <a class="el" href="libnet-functions_8h.html#a91">libnet-functions.h</a><li>libnet_build_mpls()
+: <a class="el" href="libnet-functions_8h.html#a66">libnet-functions.h</a><li>libnet_build_ntp()
+: <a class="el" href="libnet-functions_8h.html#a67">libnet-functions.h</a><li>libnet_build_ospfv2()
+: <a class="el" href="libnet-functions_8h.html#a68">libnet-functions.h</a><li>libnet_build_ospfv2_dbd()
+: <a class="el" href="libnet-functions_8h.html#a70">libnet-functions.h</a><li>libnet_build_ospfv2_hello()
+: <a class="el" href="libnet-functions_8h.html#a69">libnet-functions.h</a><li>libnet_build_ospfv2_lsa()
+: <a class="el" href="libnet-functions_8h.html#a73">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_as()
+: <a class="el" href="libnet-functions_8h.html#a77">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_net()
+: <a class="el" href="libnet-functions_8h.html#a75">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_rtr()
+: <a class="el" href="libnet-functions_8h.html#a74">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_sum()
+: <a class="el" href="libnet-functions_8h.html#a76">libnet-functions.h</a><li>libnet_build_ospfv2_lsr()
+: <a class="el" href="libnet-functions_8h.html#a71">libnet-functions.h</a><li>libnet_build_ospfv2_lsu()
+: <a class="el" href="libnet-functions_8h.html#a72">libnet-functions.h</a><li>libnet_build_rip()
+: <a class="el" href="libnet-functions_8h.html#a59">libnet-functions.h</a><li>libnet_build_rpc_call()
+: <a class="el" href="libnet-functions_8h.html#a60">libnet-functions.h</a><li>libnet_build_sebek()
+: <a class="el" href="libnet-functions_8h.html#a90">libnet-functions.h</a><li>libnet_build_stp_conf()
+: <a class="el" href="libnet-functions_8h.html#a61">libnet-functions.h</a><li>libnet_build_stp_tcn()
+: <a class="el" href="libnet-functions_8h.html#a62">libnet-functions.h</a><li>libnet_build_tcp()
+: <a class="el" href="libnet-functions_8h.html#a34">libnet-functions.h</a><li>libnet_build_tcp_options()
+: <a class="el" href="libnet-functions_8h.html#a35">libnet-functions.h</a><li>libnet_build_token_ring()
+: <a class="el" href="libnet-functions_8h.html#a63">libnet-functions.h</a><li>libnet_build_udp()
+: <a class="el" href="libnet-functions_8h.html#a36">libnet-functions.h</a><li>libnet_build_vrrp()
+: <a class="el" href="libnet-functions_8h.html#a65">libnet-functions.h</a><li>LIBNET_CDP_H
+: <a class="el" href="libnet-headers_8h.html#a11">libnet-headers.h</a><li>libnet_clear_packet()
+: <a class="el" href="libnet-functions_8h.html#a3">libnet-functions.h</a><li>libnet_cq_add()
+: <a class="el" href="libnet-functions_8h.html#a102">libnet-functions.h</a><li>libnet_cq_destroy()
+: <a class="el" href="libnet-functions_8h.html#a107">libnet-functions.h</a><li>libnet_cq_find_by_label()
+: <a class="el" href="libnet-functions_8h.html#a106">libnet-functions.h</a><li>libnet_cq_getlabel()
+: <a class="el" href="libnet-functions_8h.html#a105">libnet-functions.h</a><li>libnet_cq_head()
+: <a class="el" href="libnet-functions_8h.html#a108">libnet-functions.h</a><li>libnet_cq_last()
+: <a class="el" href="libnet-functions_8h.html#a109">libnet-functions.h</a><li>libnet_cq_next()
+: <a class="el" href="libnet-functions_8h.html#a110">libnet-functions.h</a><li>libnet_cq_remove()
+: <a class="el" href="libnet-functions_8h.html#a103">libnet-functions.h</a><li>libnet_cq_remove_by_label()
+: <a class="el" href="libnet-functions_8h.html#a104">libnet-functions.h</a><li>libnet_cq_size()
+: <a class="el" href="libnet-functions_8h.html#a111">libnet-functions.h</a><li>libnet_destroy()
+: <a class="el" href="libnet-functions_8h.html#a2">libnet-functions.h</a><li>LIBNET_DHCPV4_H
+: <a class="el" href="libnet-headers_8h.html#a12">libnet-headers.h</a><li>libnet_diag_dump_context()
+: <a class="el" href="libnet-functions_8h.html#a112">libnet-functions.h</a><li>libnet_diag_dump_hex()
+: <a class="el" href="libnet-functions_8h.html#a115">libnet-functions.h</a><li>libnet_diag_dump_pblock()
+: <a class="el" href="libnet-functions_8h.html#a113">libnet-functions.h</a><li>libnet_diag_dump_pblock_type()
+: <a class="el" href="libnet-functions_8h.html#a114">libnet-functions.h</a><li>LIBNET_DONT_RESOLVE
+: <a class="el" href="libnet-macros_8h.html#a0">libnet-macros.h</a><li>LIBNET_ERRBUF_SIZE
+: <a class="el" href="libnet-macros_8h.html#a18">libnet-macros.h</a><li>LIBNET_ETH_H
+: <a class="el" href="libnet-headers_8h.html#a15">libnet-headers.h</a><li>LIBNET_FDDI_H
+: <a class="el" href="libnet-headers_8h.html#a16">libnet-headers.h</a><li>libnet_get_hwaddr()
+: <a class="el" href="libnet-functions_8h.html#a96">libnet-functions.h</a><li>libnet_get_ipaddr4()
+: <a class="el" href="libnet-functions_8h.html#a94">libnet-functions.h</a><li>libnet_get_ipaddr6()
+: <a class="el" href="libnet-functions_8h.html#a95">libnet-functions.h</a><li>libnet_get_prand()
+: <a class="el" href="libnet-functions_8h.html#a12">libnet-functions.h</a><li>libnet_getdevice()
+: <a class="el" href="libnet-functions_8h.html#a6">libnet-functions.h</a><li>libnet_geterror()
+: <a class="el" href="libnet-functions_8h.html#a9">libnet-functions.h</a><li>libnet_getfd()
+: <a class="el" href="libnet-functions_8h.html#a5">libnet-functions.h</a><li>libnet_getgre_length()
+: <a class="el" href="libnet-functions_8h.html#a81">libnet-functions.h</a><li>libnet_getpacket_size()
+: <a class="el" href="libnet-functions_8h.html#a10">libnet-functions.h</a><li>libnet_getpbuf()
+: <a class="el" href="libnet-functions_8h.html#a7">libnet-functions.h</a><li>libnet_getpbuf_size()
+: <a class="el" href="libnet-functions_8h.html#a8">libnet-functions.h</a><li>LIBNET_GRE_H
+: <a class="el" href="libnet-headers_8h.html#a36">libnet-headers.h</a><li>LIBNET_GRE_SRE_H
+: <a class="el" href="libnet-headers_8h.html#a37">libnet-headers.h</a><li>libnet_hex_aton()
+: <a class="el" href="libnet-functions_8h.html#a97">libnet-functions.h</a><li>LIBNET_ICMPV4_ECHO_H
+: <a class="el" href="libnet-headers_8h.html#a18">libnet-headers.h</a><li>LIBNET_ICMPV4_H
+: <a class="el" href="libnet-headers_8h.html#a17">libnet-headers.h</a><li>LIBNET_ICMPV4_MASK_H
+: <a class="el" href="libnet-headers_8h.html#a19">libnet-headers.h</a><li>LIBNET_ICMPV4_REDIRECT_H
+: <a class="el" href="libnet-headers_8h.html#a22">libnet-headers.h</a><li>LIBNET_ICMPV4_TIMXCEED_H
+: <a class="el" href="libnet-headers_8h.html#a21">libnet-headers.h</a><li>LIBNET_ICMPV4_TS_H
+: <a class="el" href="libnet-headers_8h.html#a23">libnet-headers.h</a><li>LIBNET_ICMPV4_UNREACH_H
+: <a class="el" href="libnet-headers_8h.html#a20">libnet-headers.h</a><li>LIBNET_ICMPV6_H
+: <a class="el" href="libnet-headers_8h.html#a24">libnet-headers.h</a><li>LIBNET_IGMP_H
+: <a class="el" href="libnet-headers_8h.html#a25">libnet-headers.h</a><li>libnet_init()
+: <a class="el" href="libnet-functions_8h.html#a1">libnet-functions.h</a><li>LIBNET_IPSEC_AH_H
+: <a class="el" href="libnet-headers_8h.html#a34">libnet-headers.h</a><li>LIBNET_IPSEC_ESP_FTR_H
+: <a class="el" href="libnet-headers_8h.html#a33">libnet-headers.h</a><li>LIBNET_IPSEC_ESP_HDR_H
+: <a class="el" href="libnet-headers_8h.html#a32">libnet-headers.h</a><li>LIBNET_IPV4_H
+: <a class="el" href="libnet-headers_8h.html#a26">libnet-headers.h</a><li>LIBNET_IPV6_DESTOPTS_H
+: <a class="el" href="libnet-headers_8h.html#a30">libnet-headers.h</a><li>LIBNET_IPV6_FRAG_H
+: <a class="el" href="libnet-headers_8h.html#a28">libnet-headers.h</a><li>LIBNET_IPV6_H
+: <a class="el" href="libnet-headers_8h.html#a27">libnet-headers.h</a><li>LIBNET_IPV6_HBHOPTS_H
+: <a class="el" href="libnet-headers_8h.html#a31">libnet-headers.h</a><li>LIBNET_IPV6_ROUTING_H
+: <a class="el" href="libnet-headers_8h.html#a29">libnet-headers.h</a><li>LIBNET_ISL_H
+: <a class="el" href="libnet-headers_8h.html#a35">libnet-headers.h</a><li>LIBNET_MAX_PACKET
+: <a class="el" href="libnet-macros_8h.html#a12">libnet-macros.h</a><li>LIBNET_MAXOPTION_SIZE
+: <a class="el" href="libnet-macros_8h.html#a19">libnet-macros.h</a><li>LIBNET_MPLS_H
+: <a class="el" href="libnet-headers_8h.html#a38">libnet-headers.h</a><li>libnet_name2addr4()
+: <a class="el" href="libnet-functions_8h.html#a15">libnet-functions.h</a><li>libnet_name2addr6()
+: <a class="el" href="libnet-functions_8h.html#a16">libnet-functions.h</a><li>LIBNET_NTP_H
+: <a class="el" href="libnet-headers_8h.html#a51">libnet-headers.h</a><li>LIBNET_OFF
+: <a class="el" href="libnet-macros_8h.html#a3">libnet-macros.h</a><li>LIBNET_ON
+: <a class="el" href="libnet-macros_8h.html#a2">libnet-macros.h</a><li>LIBNET_OSPF_AUTH_H
+: <a class="el" href="libnet-headers_8h.html#a45">libnet-headers.h</a><li>LIBNET_OSPF_CKSUM
+: <a class="el" href="libnet-headers_8h.html#a46">libnet-headers.h</a><li>LIBNET_OSPF_DBD_H
+: <a class="el" href="libnet-headers_8h.html#a41">libnet-headers.h</a><li>LIBNET_OSPF_H
+: <a class="el" href="libnet-headers_8h.html#a39">libnet-headers.h</a><li>LIBNET_OSPF_HELLO_H
+: <a class="el" href="libnet-headers_8h.html#a40">libnet-headers.h</a><li>LIBNET_OSPF_LS_AS_EXT_H
+: <a class="el" href="libnet-headers_8h.html#a50">libnet-headers.h</a><li>LIBNET_OSPF_LS_NET_H
+: <a class="el" href="libnet-headers_8h.html#a48">libnet-headers.h</a><li>LIBNET_OSPF_LS_RTR_H
+: <a class="el" href="libnet-headers_8h.html#a47">libnet-headers.h</a><li>LIBNET_OSPF_LS_SUM_H
+: <a class="el" href="libnet-headers_8h.html#a49">libnet-headers.h</a><li>LIBNET_OSPF_LSA_H
+: <a class="el" href="libnet-headers_8h.html#a44">libnet-headers.h</a><li>LIBNET_OSPF_LSR_H
+: <a class="el" href="libnet-headers_8h.html#a42">libnet-headers.h</a><li>LIBNET_OSPF_LSU_H
+: <a class="el" href="libnet-headers_8h.html#a43">libnet-headers.h</a><li>libnet_plist_chain_dump()
+: <a class="el" href="libnet-functions_8h.html#a20">libnet-functions.h</a><li>libnet_plist_chain_dump_string()
+: <a class="el" href="libnet-functions_8h.html#a21">libnet-functions.h</a><li>libnet_plist_chain_free()
+: <a class="el" href="libnet-functions_8h.html#a22">libnet-functions.h</a><li>libnet_plist_chain_new()
+: <a class="el" href="libnet-functions_8h.html#a18">libnet-functions.h</a><li>libnet_plist_chain_next_pair()
+: <a class="el" href="libnet-functions_8h.html#a19">libnet-functions.h</a><li>LIBNET_PR2
+: <a class="el" href="libnet-macros_8h.html#a5">libnet-macros.h</a><li>LIBNET_RESOLVE
+: <a class="el" href="libnet-macros_8h.html#a1">libnet-macros.h</a><li>LIBNET_RIP_H
+: <a class="el" href="libnet-headers_8h.html#a52">libnet-headers.h</a><li>LIBNET_RPC_CALL_H
+: <a class="el" href="libnet-headers_8h.html#a53">libnet-headers.h</a><li>LIBNET_RPC_CALL_TCP_H
+: <a class="el" href="libnet-headers_8h.html#a54">libnet-headers.h</a><li>libnet_seed_prand()
+: <a class="el" href="libnet-functions_8h.html#a11">libnet-functions.h</a><li>libnet_stats()
+: <a class="el" href="libnet-functions_8h.html#a4">libnet-functions.h</a><li>LIBNET_STP_CONF_H
+: <a class="el" href="libnet-headers_8h.html#a56">libnet-headers.h</a><li>LIBNET_STP_TCN_H
+: <a class="el" href="libnet-headers_8h.html#a57">libnet-headers.h</a><li>LIBNET_TCP_DNSV4_H
+: <a class="el" href="libnet-headers_8h.html#a14">libnet-headers.h</a><li>LIBNET_TCP_H
+: <a class="el" href="libnet-headers_8h.html#a59">libnet-headers.h</a><li>libnet_toggle_checksum()
+: <a class="el" href="libnet-functions_8h.html#a13">libnet-functions.h</a><li>LIBNET_TOKEN_RING_H
+: <a class="el" href="libnet-headers_8h.html#a58">libnet-headers.h</a><li>LIBNET_UDP_DNSV4_H
+: <a class="el" href="libnet-headers_8h.html#a13">libnet-headers.h</a><li>LIBNET_UDP_H
+: <a class="el" href="libnet-headers_8h.html#a60">libnet-headers.h</a><li>LIBNET_VRRP_H
+: <a class="el" href="libnet-headers_8h.html#a61">libnet-headers.h</a><li>libnet_write()
+: <a class="el" href="libnet-functions_8h.html#a93">libnet-functions.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/globals_defs.html b/libnet/doc/html/globals_defs.html
new file mode 100644
index 0000000..4a3daed
--- /dev/null
+++ b/libnet/doc/html/globals_defs.html
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: File Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindex" href="globals_func.html">Functions</a> | <a class="qindexHL" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_f">f</a> | <a class="qindex" href="#index_i">i</a> | <a class="qindex" href="#index_l">l</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
+<li>for_each_context_in_cq
+: <a class="el" href="libnet-macros_8h.html#a33">libnet-macros.h</a></ul>
+<h3><a class="anchor" name="index_i">- i -</a></h3><ul>
+<li>IN6ADDR_ERROR_INIT
+: <a class="el" href="libnet-macros_8h.html#a4">libnet-macros.h</a></ul>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>LIBNET_802_1Q_CFIMASK
+: <a class="el" href="libnet-headers_8h.html#a63">libnet-headers.h</a><li>LIBNET_802_1Q_H
+: <a class="el" href="libnet-headers_8h.html#a0">libnet-headers.h</a><li>LIBNET_802_1Q_PRIMASK
+: <a class="el" href="libnet-headers_8h.html#a62">libnet-headers.h</a><li>LIBNET_802_1Q_VIDMASK
+: <a class="el" href="libnet-headers_8h.html#a64">libnet-headers.h</a><li>LIBNET_802_1X_ENCASFAL
+: <a class="el" href="libnet-headers_8h.html#a69">libnet-headers.h</a><li>LIBNET_802_1X_H
+: <a class="el" href="libnet-headers_8h.html#a1">libnet-headers.h</a><li>LIBNET_802_1X_KEY
+: <a class="el" href="libnet-headers_8h.html#a68">libnet-headers.h</a><li>LIBNET_802_1X_LOGOFF
+: <a class="el" href="libnet-headers_8h.html#a67">libnet-headers.h</a><li>LIBNET_802_1X_PACKET
+: <a class="el" href="libnet-headers_8h.html#a65">libnet-headers.h</a><li>LIBNET_802_1X_START
+: <a class="el" href="libnet-headers_8h.html#a66">libnet-headers.h</a><li>LIBNET_802_2_H
+: <a class="el" href="libnet-headers_8h.html#a2">libnet-headers.h</a><li>LIBNET_802_2SNAP_H
+: <a class="el" href="libnet-headers_8h.html#a3">libnet-headers.h</a><li>LIBNET_802_3_H
+: <a class="el" href="libnet-headers_8h.html#a4">libnet-headers.h</a><li>LIBNET_ARP_ETH_IP_H
+: <a class="el" href="libnet-headers_8h.html#a6">libnet-headers.h</a><li>LIBNET_ARP_H
+: <a class="el" href="libnet-headers_8h.html#a5">libnet-headers.h</a><li>LIBNET_BGP4_HEADER_H
+: <a class="el" href="libnet-headers_8h.html#a7">libnet-headers.h</a><li>LIBNET_BGP4_NOTIFICATION_H
+: <a class="el" href="libnet-headers_8h.html#a10">libnet-headers.h</a><li>LIBNET_BGP4_OPEN_H
+: <a class="el" href="libnet-headers_8h.html#a8">libnet-headers.h</a><li>LIBNET_BGP4_UPDATE_H
+: <a class="el" href="libnet-headers_8h.html#a9">libnet-headers.h</a><li>LIBNET_CDP_H
+: <a class="el" href="libnet-headers_8h.html#a11">libnet-headers.h</a><li>LIBNET_DHCPV4_H
+: <a class="el" href="libnet-headers_8h.html#a12">libnet-headers.h</a><li>LIBNET_DONT_RESOLVE
+: <a class="el" href="libnet-macros_8h.html#a0">libnet-macros.h</a><li>LIBNET_ERRBUF_SIZE
+: <a class="el" href="libnet-macros_8h.html#a18">libnet-macros.h</a><li>LIBNET_ETH_H
+: <a class="el" href="libnet-headers_8h.html#a15">libnet-headers.h</a><li>LIBNET_FDDI_H
+: <a class="el" href="libnet-headers_8h.html#a16">libnet-headers.h</a><li>LIBNET_GRE_H
+: <a class="el" href="libnet-headers_8h.html#a36">libnet-headers.h</a><li>LIBNET_GRE_SRE_H
+: <a class="el" href="libnet-headers_8h.html#a37">libnet-headers.h</a><li>LIBNET_ICMPV4_ECHO_H
+: <a class="el" href="libnet-headers_8h.html#a18">libnet-headers.h</a><li>LIBNET_ICMPV4_H
+: <a class="el" href="libnet-headers_8h.html#a17">libnet-headers.h</a><li>LIBNET_ICMPV4_MASK_H
+: <a class="el" href="libnet-headers_8h.html#a19">libnet-headers.h</a><li>LIBNET_ICMPV4_REDIRECT_H
+: <a class="el" href="libnet-headers_8h.html#a22">libnet-headers.h</a><li>LIBNET_ICMPV4_TIMXCEED_H
+: <a class="el" href="libnet-headers_8h.html#a21">libnet-headers.h</a><li>LIBNET_ICMPV4_TS_H
+: <a class="el" href="libnet-headers_8h.html#a23">libnet-headers.h</a><li>LIBNET_ICMPV4_UNREACH_H
+: <a class="el" href="libnet-headers_8h.html#a20">libnet-headers.h</a><li>LIBNET_ICMPV6_H
+: <a class="el" href="libnet-headers_8h.html#a24">libnet-headers.h</a><li>LIBNET_IGMP_H
+: <a class="el" href="libnet-headers_8h.html#a25">libnet-headers.h</a><li>LIBNET_IPSEC_AH_H
+: <a class="el" href="libnet-headers_8h.html#a34">libnet-headers.h</a><li>LIBNET_IPSEC_ESP_FTR_H
+: <a class="el" href="libnet-headers_8h.html#a33">libnet-headers.h</a><li>LIBNET_IPSEC_ESP_HDR_H
+: <a class="el" href="libnet-headers_8h.html#a32">libnet-headers.h</a><li>LIBNET_IPV4_H
+: <a class="el" href="libnet-headers_8h.html#a26">libnet-headers.h</a><li>LIBNET_IPV6_DESTOPTS_H
+: <a class="el" href="libnet-headers_8h.html#a30">libnet-headers.h</a><li>LIBNET_IPV6_FRAG_H
+: <a class="el" href="libnet-headers_8h.html#a28">libnet-headers.h</a><li>LIBNET_IPV6_H
+: <a class="el" href="libnet-headers_8h.html#a27">libnet-headers.h</a><li>LIBNET_IPV6_HBHOPTS_H
+: <a class="el" href="libnet-headers_8h.html#a31">libnet-headers.h</a><li>LIBNET_IPV6_ROUTING_H
+: <a class="el" href="libnet-headers_8h.html#a29">libnet-headers.h</a><li>LIBNET_ISL_H
+: <a class="el" href="libnet-headers_8h.html#a35">libnet-headers.h</a><li>LIBNET_MAX_PACKET
+: <a class="el" href="libnet-macros_8h.html#a12">libnet-macros.h</a><li>LIBNET_MAXOPTION_SIZE
+: <a class="el" href="libnet-macros_8h.html#a19">libnet-macros.h</a><li>LIBNET_MPLS_H
+: <a class="el" href="libnet-headers_8h.html#a38">libnet-headers.h</a><li>LIBNET_NTP_H
+: <a class="el" href="libnet-headers_8h.html#a51">libnet-headers.h</a><li>LIBNET_OFF
+: <a class="el" href="libnet-macros_8h.html#a3">libnet-macros.h</a><li>LIBNET_ON
+: <a class="el" href="libnet-macros_8h.html#a2">libnet-macros.h</a><li>LIBNET_OSPF_AUTH_H
+: <a class="el" href="libnet-headers_8h.html#a45">libnet-headers.h</a><li>LIBNET_OSPF_CKSUM
+: <a class="el" href="libnet-headers_8h.html#a46">libnet-headers.h</a><li>LIBNET_OSPF_DBD_H
+: <a class="el" href="libnet-headers_8h.html#a41">libnet-headers.h</a><li>LIBNET_OSPF_H
+: <a class="el" href="libnet-headers_8h.html#a39">libnet-headers.h</a><li>LIBNET_OSPF_HELLO_H
+: <a class="el" href="libnet-headers_8h.html#a40">libnet-headers.h</a><li>LIBNET_OSPF_LS_AS_EXT_H
+: <a class="el" href="libnet-headers_8h.html#a50">libnet-headers.h</a><li>LIBNET_OSPF_LS_NET_H
+: <a class="el" href="libnet-headers_8h.html#a48">libnet-headers.h</a><li>LIBNET_OSPF_LS_RTR_H
+: <a class="el" href="libnet-headers_8h.html#a47">libnet-headers.h</a><li>LIBNET_OSPF_LS_SUM_H
+: <a class="el" href="libnet-headers_8h.html#a49">libnet-headers.h</a><li>LIBNET_OSPF_LSA_H
+: <a class="el" href="libnet-headers_8h.html#a44">libnet-headers.h</a><li>LIBNET_OSPF_LSR_H
+: <a class="el" href="libnet-headers_8h.html#a42">libnet-headers.h</a><li>LIBNET_OSPF_LSU_H
+: <a class="el" href="libnet-headers_8h.html#a43">libnet-headers.h</a><li>LIBNET_PR2
+: <a class="el" href="libnet-macros_8h.html#a5">libnet-macros.h</a><li>LIBNET_RESOLVE
+: <a class="el" href="libnet-macros_8h.html#a1">libnet-macros.h</a><li>LIBNET_RIP_H
+: <a class="el" href="libnet-headers_8h.html#a52">libnet-headers.h</a><li>LIBNET_RPC_CALL_H
+: <a class="el" href="libnet-headers_8h.html#a53">libnet-headers.h</a><li>LIBNET_RPC_CALL_TCP_H
+: <a class="el" href="libnet-headers_8h.html#a54">libnet-headers.h</a><li>LIBNET_STP_CONF_H
+: <a class="el" href="libnet-headers_8h.html#a56">libnet-headers.h</a><li>LIBNET_STP_TCN_H
+: <a class="el" href="libnet-headers_8h.html#a57">libnet-headers.h</a><li>LIBNET_TCP_DNSV4_H
+: <a class="el" href="libnet-headers_8h.html#a14">libnet-headers.h</a><li>LIBNET_TCP_H
+: <a class="el" href="libnet-headers_8h.html#a59">libnet-headers.h</a><li>LIBNET_TOKEN_RING_H
+: <a class="el" href="libnet-headers_8h.html#a58">libnet-headers.h</a><li>LIBNET_UDP_DNSV4_H
+: <a class="el" href="libnet-headers_8h.html#a13">libnet-headers.h</a><li>LIBNET_UDP_H
+: <a class="el" href="libnet-headers_8h.html#a60">libnet-headers.h</a><li>LIBNET_VRRP_H
+: <a class="el" href="libnet-headers_8h.html#a61">libnet-headers.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/globals_func.html b/libnet/doc/html/globals_func.html
new file mode 100644
index 0000000..4c4f925
--- /dev/null
+++ b/libnet/doc/html/globals_func.html
@@ -0,0 +1,136 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: File Member Index</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindexHL" href="globals.html">Globals</a></div>
+<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a> | <a class="qindex" href="globals_defs.html">Defines</a></div>
+<div class="qindex"><a class="qindex" href="#index_l">l</a></div>
+
+<p>
+
+<p>
+<h3><a class="anchor" name="index_l">- l -</a></h3><ul>
+<li>libnet_addr2name4()
+: <a class="el" href="libnet-functions_8h.html#a14">libnet-functions.h</a><li>libnet_addr2name6_r()
+: <a class="el" href="libnet-functions_8h.html#a17">libnet-functions.h</a><li>libnet_adv_cull_header()
+: <a class="el" href="libnet-functions_8h.html#a99">libnet-functions.h</a><li>libnet_adv_cull_packet()
+: <a class="el" href="libnet-functions_8h.html#a98">libnet-functions.h</a><li>libnet_adv_free_packet()
+: <a class="el" href="libnet-functions_8h.html#a101">libnet-functions.h</a><li>libnet_adv_write_link()
+: <a class="el" href="libnet-functions_8h.html#a100">libnet-functions.h</a><li>libnet_autobuild_arp()
+: <a class="el" href="libnet-functions_8h.html#a33">libnet-functions.h</a><li>libnet_autobuild_ethernet()
+: <a class="el" href="libnet-functions_8h.html#a29">libnet-functions.h</a><li>libnet_autobuild_fddi()
+: <a class="el" href="libnet-functions_8h.html#a31">libnet-functions.h</a><li>libnet_autobuild_ipv4()
+: <a class="el" href="libnet-functions_8h.html#a47">libnet-functions.h</a><li>libnet_autobuild_ipv6()
+: <a class="el" href="libnet-functions_8h.html#a53">libnet-functions.h</a><li>libnet_autobuild_link()
+: <a class="el" href="libnet-functions_8h.html#a92">libnet-functions.h</a><li>libnet_autobuild_token_ring()
+: <a class="el" href="libnet-functions_8h.html#a64">libnet-functions.h</a><li>libnet_build_802_1q()
+: <a class="el" href="libnet-functions_8h.html#a23">libnet-functions.h</a><li>libnet_build_802_1x()
+: <a class="el" href="libnet-functions_8h.html#a24">libnet-functions.h</a><li>libnet_build_802_2()
+: <a class="el" href="libnet-functions_8h.html#a25">libnet-functions.h</a><li>libnet_build_802_2snap()
+: <a class="el" href="libnet-functions_8h.html#a26">libnet-functions.h</a><li>libnet_build_802_3()
+: <a class="el" href="libnet-functions_8h.html#a27">libnet-functions.h</a><li>libnet_build_arp()
+: <a class="el" href="libnet-functions_8h.html#a32">libnet-functions.h</a><li>libnet_build_bgp4_header()
+: <a class="el" href="libnet-functions_8h.html#a86">libnet-functions.h</a><li>libnet_build_bgp4_notification()
+: <a class="el" href="libnet-functions_8h.html#a89">libnet-functions.h</a><li>libnet_build_bgp4_open()
+: <a class="el" href="libnet-functions_8h.html#a87">libnet-functions.h</a><li>libnet_build_bgp4_update()
+: <a class="el" href="libnet-functions_8h.html#a88">libnet-functions.h</a><li>libnet_build_bootpv4()
+: <a class="el" href="libnet-functions_8h.html#a80">libnet-functions.h</a><li>libnet_build_cdp()
+: <a class="el" href="libnet-functions_8h.html#a37">libnet-functions.h</a><li>libnet_build_data()
+: <a class="el" href="libnet-functions_8h.html#a78">libnet-functions.h</a><li>libnet_build_dhcpv4()
+: <a class="el" href="libnet-functions_8h.html#a79">libnet-functions.h</a><li>libnet_build_dnsv4()
+: <a class="el" href="libnet-functions_8h.html#a58">libnet-functions.h</a><li>libnet_build_egre()
+: <a class="el" href="libnet-functions_8h.html#a83">libnet-functions.h</a><li>libnet_build_ethernet()
+: <a class="el" href="libnet-functions_8h.html#a28">libnet-functions.h</a><li>libnet_build_fddi()
+: <a class="el" href="libnet-functions_8h.html#a30">libnet-functions.h</a><li>libnet_build_gre()
+: <a class="el" href="libnet-functions_8h.html#a82">libnet-functions.h</a><li>libnet_build_gre_last_sre()
+: <a class="el" href="libnet-functions_8h.html#a85">libnet-functions.h</a><li>libnet_build_gre_sre()
+: <a class="el" href="libnet-functions_8h.html#a84">libnet-functions.h</a><li>libnet_build_icmpv4_echo()
+: <a class="el" href="libnet-functions_8h.html#a38">libnet-functions.h</a><li>libnet_build_icmpv4_mask()
+: <a class="el" href="libnet-functions_8h.html#a39">libnet-functions.h</a><li>libnet_build_icmpv4_redirect()
+: <a class="el" href="libnet-functions_8h.html#a41">libnet-functions.h</a><li>libnet_build_icmpv4_timeexceed()
+: <a class="el" href="libnet-functions_8h.html#a42">libnet-functions.h</a><li>libnet_build_icmpv4_timestamp()
+: <a class="el" href="libnet-functions_8h.html#a43">libnet-functions.h</a><li>libnet_build_icmpv4_unreach()
+: <a class="el" href="libnet-functions_8h.html#a40">libnet-functions.h</a><li>libnet_build_igmp()
+: <a class="el" href="libnet-functions_8h.html#a44">libnet-functions.h</a><li>libnet_build_ipsec_ah()
+: <a class="el" href="libnet-functions_8h.html#a57">libnet-functions.h</a><li>libnet_build_ipsec_esp_ftr()
+: <a class="el" href="libnet-functions_8h.html#a56">libnet-functions.h</a><li>libnet_build_ipsec_esp_hdr()
+: <a class="el" href="libnet-functions_8h.html#a55">libnet-functions.h</a><li>libnet_build_ipv4()
+: <a class="el" href="libnet-functions_8h.html#a45">libnet-functions.h</a><li>libnet_build_ipv4_options()
+: <a class="el" href="libnet-functions_8h.html#a46">libnet-functions.h</a><li>libnet_build_ipv6()
+: <a class="el" href="libnet-functions_8h.html#a48">libnet-functions.h</a><li>libnet_build_ipv6_destopts()
+: <a class="el" href="libnet-functions_8h.html#a51">libnet-functions.h</a><li>libnet_build_ipv6_frag()
+: <a class="el" href="libnet-functions_8h.html#a49">libnet-functions.h</a><li>libnet_build_ipv6_hbhopts()
+: <a class="el" href="libnet-functions_8h.html#a52">libnet-functions.h</a><li>libnet_build_ipv6_routing()
+: <a class="el" href="libnet-functions_8h.html#a50">libnet-functions.h</a><li>libnet_build_isl()
+: <a class="el" href="libnet-functions_8h.html#a54">libnet-functions.h</a><li>libnet_build_link()
+: <a class="el" href="libnet-functions_8h.html#a91">libnet-functions.h</a><li>libnet_build_mpls()
+: <a class="el" href="libnet-functions_8h.html#a66">libnet-functions.h</a><li>libnet_build_ntp()
+: <a class="el" href="libnet-functions_8h.html#a67">libnet-functions.h</a><li>libnet_build_ospfv2()
+: <a class="el" href="libnet-functions_8h.html#a68">libnet-functions.h</a><li>libnet_build_ospfv2_dbd()
+: <a class="el" href="libnet-functions_8h.html#a70">libnet-functions.h</a><li>libnet_build_ospfv2_hello()
+: <a class="el" href="libnet-functions_8h.html#a69">libnet-functions.h</a><li>libnet_build_ospfv2_lsa()
+: <a class="el" href="libnet-functions_8h.html#a73">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_as()
+: <a class="el" href="libnet-functions_8h.html#a77">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_net()
+: <a class="el" href="libnet-functions_8h.html#a75">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_rtr()
+: <a class="el" href="libnet-functions_8h.html#a74">libnet-functions.h</a><li>libnet_build_ospfv2_lsa_sum()
+: <a class="el" href="libnet-functions_8h.html#a76">libnet-functions.h</a><li>libnet_build_ospfv2_lsr()
+: <a class="el" href="libnet-functions_8h.html#a71">libnet-functions.h</a><li>libnet_build_ospfv2_lsu()
+: <a class="el" href="libnet-functions_8h.html#a72">libnet-functions.h</a><li>libnet_build_rip()
+: <a class="el" href="libnet-functions_8h.html#a59">libnet-functions.h</a><li>libnet_build_rpc_call()
+: <a class="el" href="libnet-functions_8h.html#a60">libnet-functions.h</a><li>libnet_build_sebek()
+: <a class="el" href="libnet-functions_8h.html#a90">libnet-functions.h</a><li>libnet_build_stp_conf()
+: <a class="el" href="libnet-functions_8h.html#a61">libnet-functions.h</a><li>libnet_build_stp_tcn()
+: <a class="el" href="libnet-functions_8h.html#a62">libnet-functions.h</a><li>libnet_build_tcp()
+: <a class="el" href="libnet-functions_8h.html#a34">libnet-functions.h</a><li>libnet_build_tcp_options()
+: <a class="el" href="libnet-functions_8h.html#a35">libnet-functions.h</a><li>libnet_build_token_ring()
+: <a class="el" href="libnet-functions_8h.html#a63">libnet-functions.h</a><li>libnet_build_udp()
+: <a class="el" href="libnet-functions_8h.html#a36">libnet-functions.h</a><li>libnet_build_vrrp()
+: <a class="el" href="libnet-functions_8h.html#a65">libnet-functions.h</a><li>libnet_clear_packet()
+: <a class="el" href="libnet-functions_8h.html#a3">libnet-functions.h</a><li>libnet_cq_add()
+: <a class="el" href="libnet-functions_8h.html#a102">libnet-functions.h</a><li>libnet_cq_destroy()
+: <a class="el" href="libnet-functions_8h.html#a107">libnet-functions.h</a><li>libnet_cq_find_by_label()
+: <a class="el" href="libnet-functions_8h.html#a106">libnet-functions.h</a><li>libnet_cq_getlabel()
+: <a class="el" href="libnet-functions_8h.html#a105">libnet-functions.h</a><li>libnet_cq_head()
+: <a class="el" href="libnet-functions_8h.html#a108">libnet-functions.h</a><li>libnet_cq_last()
+: <a class="el" href="libnet-functions_8h.html#a109">libnet-functions.h</a><li>libnet_cq_next()
+: <a class="el" href="libnet-functions_8h.html#a110">libnet-functions.h</a><li>libnet_cq_remove()
+: <a class="el" href="libnet-functions_8h.html#a103">libnet-functions.h</a><li>libnet_cq_remove_by_label()
+: <a class="el" href="libnet-functions_8h.html#a104">libnet-functions.h</a><li>libnet_cq_size()
+: <a class="el" href="libnet-functions_8h.html#a111">libnet-functions.h</a><li>libnet_destroy()
+: <a class="el" href="libnet-functions_8h.html#a2">libnet-functions.h</a><li>libnet_diag_dump_context()
+: <a class="el" href="libnet-functions_8h.html#a112">libnet-functions.h</a><li>libnet_diag_dump_hex()
+: <a class="el" href="libnet-functions_8h.html#a115">libnet-functions.h</a><li>libnet_diag_dump_pblock()
+: <a class="el" href="libnet-functions_8h.html#a113">libnet-functions.h</a><li>libnet_diag_dump_pblock_type()
+: <a class="el" href="libnet-functions_8h.html#a114">libnet-functions.h</a><li>libnet_get_hwaddr()
+: <a class="el" href="libnet-functions_8h.html#a96">libnet-functions.h</a><li>libnet_get_ipaddr4()
+: <a class="el" href="libnet-functions_8h.html#a94">libnet-functions.h</a><li>libnet_get_ipaddr6()
+: <a class="el" href="libnet-functions_8h.html#a95">libnet-functions.h</a><li>libnet_get_prand()
+: <a class="el" href="libnet-functions_8h.html#a12">libnet-functions.h</a><li>libnet_getdevice()
+: <a class="el" href="libnet-functions_8h.html#a6">libnet-functions.h</a><li>libnet_geterror()
+: <a class="el" href="libnet-functions_8h.html#a9">libnet-functions.h</a><li>libnet_getfd()
+: <a class="el" href="libnet-functions_8h.html#a5">libnet-functions.h</a><li>libnet_getgre_length()
+: <a class="el" href="libnet-functions_8h.html#a81">libnet-functions.h</a><li>libnet_getpacket_size()
+: <a class="el" href="libnet-functions_8h.html#a10">libnet-functions.h</a><li>libnet_getpbuf()
+: <a class="el" href="libnet-functions_8h.html#a7">libnet-functions.h</a><li>libnet_getpbuf_size()
+: <a class="el" href="libnet-functions_8h.html#a8">libnet-functions.h</a><li>libnet_hex_aton()
+: <a class="el" href="libnet-functions_8h.html#a97">libnet-functions.h</a><li>libnet_init()
+: <a class="el" href="libnet-functions_8h.html#a1">libnet-functions.h</a><li>libnet_name2addr4()
+: <a class="el" href="libnet-functions_8h.html#a15">libnet-functions.h</a><li>libnet_name2addr6()
+: <a class="el" href="libnet-functions_8h.html#a16">libnet-functions.h</a><li>libnet_plist_chain_dump()
+: <a class="el" href="libnet-functions_8h.html#a20">libnet-functions.h</a><li>libnet_plist_chain_dump_string()
+: <a class="el" href="libnet-functions_8h.html#a21">libnet-functions.h</a><li>libnet_plist_chain_free()
+: <a class="el" href="libnet-functions_8h.html#a22">libnet-functions.h</a><li>libnet_plist_chain_new()
+: <a class="el" href="libnet-functions_8h.html#a18">libnet-functions.h</a><li>libnet_plist_chain_next_pair()
+: <a class="el" href="libnet-functions_8h.html#a19">libnet-functions.h</a><li>libnet_seed_prand()
+: <a class="el" href="libnet-functions_8h.html#a11">libnet-functions.h</a><li>libnet_stats()
+: <a class="el" href="libnet-functions_8h.html#a4">libnet-functions.h</a><li>libnet_toggle_checksum()
+: <a class="el" href="libnet-functions_8h.html#a13">libnet-functions.h</a><li>libnet_write()
+: <a class="el" href="libnet-functions_8h.html#a93">libnet-functions.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/gnuc_8h-source.html b/libnet/doc/html/gnuc_8h-source.html
new file mode 100644
index 0000000..2ff4c44
--- /dev/null
+++ b/libnet/doc/html/gnuc_8h-source.html
@@ -0,0 +1,56 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: gnuc.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>gnuc.h</h1><div class="fragment"><pre>00001 <span class="comment">/* @(#) $Header: /usr/local/CVS/libnet/include/gnuc.h,v 1.1.1.1 2003/06/26 21:55:10 route Exp $ (LBL) */</span>
+00002
+00003 <span class="comment">/* Define __P() macro, if necessary */</span>
+00004 <span class="preprocessor">#ifndef __P</span>
+00005 <span class="preprocessor"></span><span class="preprocessor">#if __STDC__</span>
+00006 <span class="preprocessor"></span><span class="preprocessor">#define __P(protos) protos</span>
+00007 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00008 <span class="preprocessor"></span><span class="preprocessor">#define __P(protos) ()</span>
+00009 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00010 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00011 <span class="preprocessor"></span>
+00012 <span class="comment">/* inline foo */</span>
+00013 <span class="preprocessor">#ifdef __GNUC__</span>
+00014 <span class="preprocessor"></span><span class="preprocessor">#define inline __inline</span>
+00015 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00016 <span class="preprocessor"></span><span class="preprocessor">#define inline</span>
+00017 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00018 <span class="preprocessor"></span>
+00019 <span class="comment">/*</span>
+00020 <span class="comment"> * Handle new and old "dead" routine prototypes</span>
+00021 <span class="comment"> *</span>
+00022 <span class="comment"> * For example:</span>
+00023 <span class="comment"> *</span>
+00024 <span class="comment"> * __dead void foo(void) __attribute__((volatile));</span>
+00025 <span class="comment"> *</span>
+00026 <span class="comment"> */</span>
+00027 <span class="preprocessor">#ifdef __GNUC__</span>
+00028 <span class="preprocessor"></span><span class="preprocessor">#ifndef __dead</span>
+00029 <span class="preprocessor"></span><span class="preprocessor">#define __dead volatile</span>
+00030 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00031 <span class="preprocessor"></span><span class="preprocessor">#if __GNUC__ &lt; 2 || (__GNUC__ == 2 &amp;&amp; __GNUC_MINOR__ &lt; 5)</span>
+00032 <span class="preprocessor"></span><span class="preprocessor">#ifndef __attribute__</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#define __attribute__(args)</span>
+00034 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00035 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00036 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00037 <span class="preprocessor"></span><span class="preprocessor">#ifndef __dead</span>
+00038 <span class="preprocessor"></span><span class="preprocessor">#define __dead</span>
+00039 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00040 <span class="preprocessor"></span><span class="preprocessor">#ifndef __attribute__</span>
+00041 <span class="preprocessor"></span><span class="preprocessor">#define __attribute__(args)</span>
+00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00043 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/graph_legend.dot b/libnet/doc/html/graph_legend.dot
new file mode 100644
index 0000000..5420927
--- /dev/null
+++ b/libnet/doc/html/graph_legend.dot
@@ -0,0 +1,22 @@
+digraph G
+{
+ edge [fontname="Helvetica",fontsize=10,labelfontname="Helvetica",labelfontsize=10];
+ node [fontname="Helvetica",fontsize=10,shape=record];
+ Node9 [shape="box",label="Inherited",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",style="filled" fontcolor="white"];
+ Node10 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node10 [shape="box",label="PublicBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPublicBase.html"];
+ Node11 -> Node10 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node11 [shape="box",label="Truncated",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="red",URL="$classTruncated.html"];
+ Node13 -> Node9 [dir=back,color="darkgreen",fontsize=10,style="solid",fontname="Helvetica"];
+ Node13 [shape="box",label="ProtectedBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classProtectedBase.html"];
+ Node14 -> Node9 [dir=back,color="firebrick4",fontsize=10,style="solid",fontname="Helvetica"];
+ Node14 [shape="box",label="PrivateBase",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classPrivateBase.html"];
+ Node15 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node15 [shape="box",label="Undocumented",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="grey75"];
+ Node16 -> Node9 [dir=back,color="midnightblue",fontsize=10,style="solid",fontname="Helvetica"];
+ Node16 [shape="box",label="Templ< int >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"];
+ Node17 -> Node16 [dir=back,color="orange",fontsize=10,style="dashed",label="< int >",fontname="Helvetica"];
+ Node17 [shape="box",label="Templ< T >",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classTempl.html"];
+ Node18 -> Node9 [dir=back,color="darkorchid3",fontsize=10,style="dashed",label="m_usedClass",fontname="Helvetica"];
+ Node18 [shape="box",label="Used",fontsize=10,height=0.2,width=0.4,fontname="Helvetica",color="black",URL="$classUsed.html"];
+}
diff --git a/libnet/doc/html/graph_legend.html b/libnet/doc/html/graph_legend.html
new file mode 100644
index 0000000..c6e7273
--- /dev/null
+++ b/libnet/doc/html/graph_legend.html
@@ -0,0 +1,75 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: Graph Legend</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>Graph Legend</h1>This page explains how to interpret the graphs that are generated by doxygen.<p>
+Consider the following example: <div class="fragment"><pre><span class="comment">/*! Invisible class because of truncation */</span>
+<span class="keyword">class </span>Invisible { };
+<span class="comment"></span>
+<span class="comment">/*! Truncated class, inheritance relation is hidden */</span>
+<span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };
+
+<span class="comment">/* Class not documented with doxygen comments */</span>
+<span class="keyword">class </span>Undocumented { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using public inheritance */</span>
+<span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };
+<span class="comment"></span>
+<span class="comment">/*! A template class */</span>
+<span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using protected inheritance */</span>
+<span class="keyword">class </span>ProtectedBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is inherited using private inheritance */</span>
+<span class="keyword">class </span>PrivateBase { };
+<span class="comment"></span>
+<span class="comment">/*! Class that is used by the Inherited class */</span>
+<span class="keyword">class </span>Used { };
+<span class="comment"></span>
+<span class="comment">/*! Super class that inherits a number of other classes */</span>
+<span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,
+ <span class="keyword">protected</span> ProtectedBase,
+ <span class="keyword">private</span> PrivateBase,
+ <span class="keyword">public</span> Undocumented
+ <span class="keyword">public</span> Templ&lt;int&gt;
+{
+ <span class="keyword">private</span>:
+ Used *m_usedClass;
+};
+</pre></div>If the <code>MAX_DOT_GRAPH_HEIGHT</code> tag in the configuration file is set to 240 this will result in the following graph:<p>
+<center><div align="center">
+<img src="graph_legend.png" alt="graph_legend.png">
+</div>
+</center> <p>
+The boxes in the above graph have the following meaning: <ul>
+<li>
+A filled black box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a grey border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+The arrows have the following meaning: <ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
+</ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/ifaddrlist_8h-source.html b/libnet/doc/html/ifaddrlist_8h-source.html
new file mode 100644
index 0000000..35603cc
--- /dev/null
+++ b/libnet/doc/html/ifaddrlist_8h-source.html
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: ifaddrlist.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>ifaddrlist.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * Copyright (c) 1997</span>
+00003 <span class="comment"> * The Regents of the University of California. All rights reserved.</span>
+00004 <span class="comment"> *</span>
+00005 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00006 <span class="comment"> * modification, are permitted provided that: (1) source code distributions</span>
+00007 <span class="comment"> * retain the above copyright notice and this paragraph in its entirety, (2)</span>
+00008 <span class="comment"> * distributions including binary code include the above copyright notice and</span>
+00009 <span class="comment"> * this paragraph in its entirety in the documentation or other materials</span>
+00010 <span class="comment"> * provided with the distribution, and (3) all advertising materials mentioning</span>
+00011 <span class="comment"> * features or use of this software display the following acknowledgement:</span>
+00012 <span class="comment"> * ``This product includes software developed by the University of California,</span>
+00013 <span class="comment"> * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of</span>
+00014 <span class="comment"> * the University nor the names of its contributors may be used to endorse</span>
+00015 <span class="comment"> * or promote products derived from this software without specific prior</span>
+00016 <span class="comment"> * written permission.</span>
+00017 <span class="comment"> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED</span>
+00018 <span class="comment"> * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF</span>
+00019 <span class="comment"> * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</span>
+00020 <span class="comment"> *</span>
+00021 <span class="comment"> */</span>
+00022
+00023 <span class="keyword">struct </span>ifaddrlist
+00024 {
+00025 <span class="preprocessor">#if (HAVE_SOLARIS || HAVE_HPUX11)</span>
+00026 <span class="preprocessor"></span> u_int addr;
+00027 <span class="preprocessor">#else</span>
+00028 <span class="preprocessor"></span> u_int32_t addr;
+00029 <span class="preprocessor">#endif</span>
+00030 <span class="preprocessor"></span> int8_t *device;
+00031 };
+00032
+00033 <span class="keyword">struct </span>libnet_ifaddr_list
+00034 {
+00035 u_int32_t addr;
+00036 int8_t *device;
+00037 };
+00038
+00039 <span class="keywordtype">int</span>
+00040 ifaddrlist(
+00041 <span class="keyword">struct</span> ifaddrlist **,
+00042 int8_t *
+00043 );
+00044
+00045
+00046 <span class="keywordtype">int</span>
+00047 set_up_interface(
+00048 <span class="keyword">struct</span> sockaddr_in **,
+00049 u_int8_t **
+00050 );
+00051
+00052 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/in__systm_8h-source.html b/libnet/doc/html/in__systm_8h-source.html
new file mode 100644
index 0000000..b57135e
--- /dev/null
+++ b/libnet/doc/html/in__systm_8h-source.html
@@ -0,0 +1,90 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: in_systm.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>in_systm.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * Copyright (c) 1982, 1986, 1993</span>
+00003 <span class="comment"> * The Regents of the University of California. All rights reserved.</span>
+00004 <span class="comment"> *</span>
+00005 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00006 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00007 <span class="comment"> * are met:</span>
+00008 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00009 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00010 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00011 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00012 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00013 <span class="comment"> * 3. All advertising materials mentioning features or use of this software</span>
+00014 <span class="comment"> * must display the following acknowledgement:</span>
+00015 <span class="comment"> * This product includes software developed by the University of</span>
+00016 <span class="comment"> * California, Berkeley and its contributors.</span>
+00017 <span class="comment"> * 4. Neither the name of the University nor the names of its contributors</span>
+00018 <span class="comment"> * may be used to endorse or promote products derived from this software</span>
+00019 <span class="comment"> * without specific prior written permission.</span>
+00020 <span class="comment"> *</span>
+00021 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND</span>
+00022 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00023 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00024 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE</span>
+00025 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00026 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00027 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00028 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00029 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00030 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00031 <span class="comment"> * SUCH DAMAGE.</span>
+00032 <span class="comment"> *</span>
+00033 <span class="comment"> * @(#)in_systm.h 8.1 (Berkeley) 6/10/93</span>
+00034 <span class="comment"> * $FreeBSD: src/sys/netinet/in_systm.h,v 1.9 1999/12/29 04:41:00 peter Exp $</span>
+00035 <span class="comment"> */</span>
+00036
+00037 <span class="preprocessor">#ifdef _WIN32</span>
+00038 <span class="preprocessor"></span><span class="preprocessor">#ifndef _NETINET_IN_SYSTM_H_</span>
+00039 <span class="preprocessor"></span><span class="preprocessor">#define _NETINET_IN_SYSTM_H_</span>
+00040 <span class="preprocessor"></span>
+00041 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> u_int8_t;
+00042 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> u_int16_t;
+00043 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> u_int32_t;
+00044 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> __int64 u_int64_t;
+00045
+00046 <span class="keyword">typedef</span> __int64 int64_t;
+00047 <span class="keyword">typedef</span> int64_t rlim_t;
+00048
+00049
+00050 <span class="keyword">typedef</span> u_int32_t in_addr_t;
+00051 <span class="keyword">typedef</span> u_int32_t in_port_t;
+00052
+00053 <span class="comment">/*</span>
+00054 <span class="comment"> * Miscellaneous internetwork</span>
+00055 <span class="comment"> * definitions for kernel.</span>
+00056 <span class="comment"> */</span>
+00057
+00058 <span class="comment">/*</span>
+00059 <span class="comment"> * Network types.</span>
+00060 <span class="comment"> *</span>
+00061 <span class="comment"> * Internally the system keeps counters in the headers with the bytes</span>
+00062 <span class="comment"> * swapped so that VAX instructions will work on them. It reverses</span>
+00063 <span class="comment"> * the bytes before transmission at each protocol level. The n_ types</span>
+00064 <span class="comment"> * represent the types with the bytes in ``high-ender'' order.</span>
+00065 <span class="comment"> */</span>
+00066 <span class="keyword">typedef</span> u_int16_t n_short; <span class="comment">/* short as received from the net */</span>
+00067 <span class="keyword">typedef</span> u_int32_t n_long; <span class="comment">/* long as received from the net */</span>
+00068
+00069 <span class="keyword">typedef</span> u_int32_t n_time; <span class="comment">/* ms since 00:00 GMT, byte rev */</span>
+00070
+00071 <span class="preprocessor">#ifdef _KERNEL</span>
+00072 <span class="preprocessor"></span>n_time iptime __P((<span class="keywordtype">void</span>));
+00073 <span class="preprocessor">#endif</span>
+00074 <span class="preprocessor"></span>
+00075 <span class="preprocessor">#endif</span>
+00076 <span class="preprocessor"></span>
+00077 <span class="preprocessor">#endif</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/index.html b/libnet/doc/html/index.html
new file mode 100644
index 0000000..13391c0
--- /dev/null
+++ b/libnet/doc/html/index.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: Libnet Packet Assembly Library</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindexHL" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>Libnet Packet Assembly Library </h1>
+<p>
+<h3 align="center">1.1.1 </h3><h2><a class="anchor" name="intro">
+Overview</a></h2>
+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 <a href="www.tcpdump.org">libpcap</a>). <hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-asn1_8h-source.html b/libnet/doc/html/libnet-asn1_8h-source.html
new file mode 100644
index 0000000..ddf6d2a
--- /dev/null
+++ b/libnet/doc/html/libnet-asn1_8h-source.html
@@ -0,0 +1,268 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-asn1.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-asn1.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet-asn1.h,v 1.3 2004/01/17 07:51:19 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet-asn1.h - Network routine library ASN.1 header file</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Definitions for Abstract Syntax Notation One, ASN.1</span>
+00010 <span class="comment"> * As defined in ISO/IS 8824 and ISO/IS 8825</span>
+00011 <span class="comment"> *</span>
+00012 <span class="comment"> * Copyright 1988, 1989 by Carnegie Mellon University</span>
+00013 <span class="comment"> * All rights reserved.</span>
+00014 <span class="comment"> *</span>
+00015 <span class="comment"> * Permission to use, copy, modify, and distribute this software and its</span>
+00016 <span class="comment"> * documentation for any purpose and without fee is hereby granted,</span>
+00017 <span class="comment"> * provided that the above copyright notice appear in all copies and that</span>
+00018 <span class="comment"> * both that copyright notice and this permission notice appear in</span>
+00019 <span class="comment"> * supporting documentation, and that the name of CMU not be</span>
+00020 <span class="comment"> * used in advertising or publicity pertaining to distribution of the</span>
+00021 <span class="comment"> * software without specific, written prior permission.</span>
+00022 <span class="comment"> *</span>
+00023 <span class="comment"> * CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING</span>
+00024 <span class="comment"> * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL</span>
+00025 <span class="comment"> * CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR</span>
+00026 <span class="comment"> * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,</span>
+00027 <span class="comment"> * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,</span>
+00028 <span class="comment"> * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS</span>
+00029 <span class="comment"> * SOFTWARE.</span>
+00030 <span class="comment"> *</span>
+00031 <span class="comment"> * Copyright (c) 1998 - 2001 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00032 <span class="comment"> * All rights reserved.</span>
+00033 <span class="comment"> *</span>
+00034 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00035 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00036 <span class="comment"> * are met:</span>
+00037 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00038 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00039 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00040 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00041 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00042 <span class="comment"> *</span>
+00043 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00044 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00045 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00046 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00047 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00048 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00049 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00050 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00051 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00052 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00053 <span class="comment"> * SUCH DAMAGE.</span>
+00054 <span class="comment"> */</span>
+00055
+00056 <span class="preprocessor">#ifndef __LIBNET_ASN1_H</span>
+00057 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_ASN1_H</span>
+00058 <span class="preprocessor"></span>
+00059 <span class="preprocessor">#ifndef EIGHTBIT_SUBIDS</span>
+00060 <span class="preprocessor"></span><span class="keyword">typedef</span> u_int32_t oid;
+00061 <span class="preprocessor">#define MAX_SUBID 0xFFFFFFFF</span>
+00062 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00063 <span class="preprocessor"></span><span class="keyword">typedef</span> u_int8_t oid;
+00064 <span class="preprocessor">#define MAX_SUBID 0xFF</span>
+00065 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00066 <span class="preprocessor"></span>
+00067 <span class="preprocessor">#define MAX_OID_LEN 64 </span><span class="comment">/* max subid's in an oid */</span>
+00068
+00069 <span class="preprocessor">#define ASN_BOOLEAN (0x01)</span>
+00070 <span class="preprocessor"></span><span class="preprocessor">#define ASN_INTEGER (0x02)</span>
+00071 <span class="preprocessor"></span><span class="preprocessor">#define ASN_BIT_STR (0x03)</span>
+00072 <span class="preprocessor"></span><span class="preprocessor">#define ASN_OCTET_STR (0x04)</span>
+00073 <span class="preprocessor"></span><span class="preprocessor">#define ASN_NULL (0x05)</span>
+00074 <span class="preprocessor"></span><span class="preprocessor">#define ASN_OBJECT_ID (0x06)</span>
+00075 <span class="preprocessor"></span><span class="preprocessor">#define ASN_SEQUENCE (0x10)</span>
+00076 <span class="preprocessor"></span><span class="preprocessor">#define ASN_SET (0x11)</span>
+00077 <span class="preprocessor"></span>
+00078 <span class="preprocessor">#define ASN_UNIVERSAL (0x00)</span>
+00079 <span class="preprocessor"></span><span class="preprocessor">#define ASN_APPLICATION (0x40)</span>
+00080 <span class="preprocessor"></span><span class="preprocessor">#define ASN_CONTEXT (0x80)</span>
+00081 <span class="preprocessor"></span><span class="preprocessor">#define ASN_PRIVATE (0xC0)</span>
+00082 <span class="preprocessor"></span>
+00083 <span class="preprocessor">#define ASN_PRIMITIVE (0x00)</span>
+00084 <span class="preprocessor"></span><span class="preprocessor">#define ASN_CONSTRUCTOR (0x20)</span>
+00085 <span class="preprocessor"></span>
+00086 <span class="preprocessor">#define ASN_LONG_LEN (0x80)</span>
+00087 <span class="preprocessor"></span><span class="preprocessor">#define ASN_EXTENSION_ID (0x1F)</span>
+00088 <span class="preprocessor"></span><span class="preprocessor">#define ASN_BIT8 (0x80)</span>
+00089 <span class="preprocessor"></span>
+00090 <span class="preprocessor">#define IS_CONSTRUCTOR(byte) ((byte) &amp; ASN_CONSTRUCTOR)</span>
+00091 <span class="preprocessor"></span><span class="preprocessor">#define IS_EXTENSION_ID(byte) (((byte) &amp; ASN_EXTENSION_ID) = ASN_EXTENSION_ID)</span>
+00092 <span class="preprocessor"></span>
+00093 <span class="comment">/*</span>
+00094 <span class="comment"> * All of the build_asn1_* (build_asn1_length being an exception) functions</span>
+00095 <span class="comment"> * take the same first 3 arguments:</span>
+00096 <span class="comment"> *</span>
+00097 <span class="comment"> * u_int8_t *data: This is a pointer to the start of the data object to be</span>
+00098 <span class="comment"> * manipulated.</span>
+00099 <span class="comment"> * int *datalen: This is a pointer to the number of valid bytes following</span>
+00100 <span class="comment"> * "data". This should be not be exceeded in any function.</span>
+00101 <span class="comment"> * Upon exiting a function, this value will reflect the</span>
+00102 <span class="comment"> * changed "data" and then refer to the new number of valid</span>
+00103 <span class="comment"> * bytes until the end of "data".</span>
+00104 <span class="comment"> * u_int8_t type: The ASN.1 object type.</span>
+00105 <span class="comment"> */</span>
+00106
+00107
+00108 <span class="comment">/*</span>
+00109 <span class="comment"> * Builds an ASN object containing an integer.</span>
+00110 <span class="comment"> *</span>
+00111 <span class="comment"> * Returns NULL upon error or a pointer to the first byte past the end of</span>
+00112 <span class="comment"> * this object (the start of the next object).</span>
+00113 <span class="comment"> */</span>
+00114
+00115 u_int8_t *
+00116 libnet_build_asn1_int(
+00117 u_int8_t *, <span class="comment">/* Pointer to the output buffer */</span>
+00118 <span class="keywordtype">int</span> *, <span class="comment">/* Number of valid bytes left in the buffer */</span>
+00119 u_int8_t, <span class="comment">/* ASN object type */</span>
+00120 int32_t *, <span class="comment">/* Pointer to a int32_t integer */</span>
+00121 <span class="keywordtype">int</span> <span class="comment">/* Size of a int32_t integer */</span>
+00122 );
+00123
+00124
+00125 <span class="comment">/*</span>
+00126 <span class="comment"> * Builds an ASN object containing an unsigned integer.</span>
+00127 <span class="comment"> *</span>
+00128 <span class="comment"> * Returns NULL upon error or a pointer to the first byte past the end of</span>
+00129 <span class="comment"> * this object (the start of the next object).</span>
+00130 <span class="comment"> */</span>
+00131
+00132 u_int8_t *
+00133 libnet_build_asn1_uint(
+00134 u_int8_t *, <span class="comment">/* Pointer to the output buffer */</span>
+00135 <span class="keywordtype">int</span> *, <span class="comment">/* Number of valid bytes left in the buffer */</span>
+00136 u_int8_t, <span class="comment">/* ASN object type */</span>
+00137 u_int32_t *, <span class="comment">/* Pointer to an unsigned int32_t integer */</span>
+00138 <span class="keywordtype">int</span> <span class="comment">/* Size of a int32_t integer */</span>
+00139 );
+00140
+00141
+00142 <span class="comment">/*</span>
+00143 <span class="comment"> * Builds an ASN object containing an octect string.</span>
+00144 <span class="comment"> *</span>
+00145 <span class="comment"> * Returns NULL upon error or a pointer to the first byte past the end of</span>
+00146 <span class="comment"> * this object (the start of the next object).</span>
+00147 <span class="comment"> */</span>
+00148
+00149 u_int8_t *
+00150 libnet_build_asn1_string(
+00151 u_int8_t *, <span class="comment">/* Pointer to the output buffer */</span>
+00152 <span class="keywordtype">int</span> *, <span class="comment">/* Number of valid bytes left in the buffer */</span>
+00153 u_int8_t, <span class="comment">/* ASN object type */</span>
+00154 u_int8_t *, <span class="comment">/* Pointer to a string to be built into an object */</span>
+00155 <span class="keywordtype">int</span> <span class="comment">/* Size of the string */</span>
+00156 );
+00157
+00158
+00159 <span class="comment">/*</span>
+00160 <span class="comment"> * Builds an ASN header for an object with the ID and length specified. This</span>
+00161 <span class="comment"> * only works on data types &lt; 30, i.e. no extension octets. The maximum</span>
+00162 <span class="comment"> * length is 0xFFFF;</span>
+00163 <span class="comment"> *</span>
+00164 <span class="comment"> * Returns a pointer to the first byte of the contents of this object or</span>
+00165 <span class="comment"> * NULL upon error</span>
+00166 <span class="comment"> */</span>
+00167
+00168 u_int8_t *
+00169 libnet_build_asn1_header(
+00170 u_int8_t *, <span class="comment">/* Pointer to the start of the object */</span>
+00171 <span class="keywordtype">int</span> *, <span class="comment">/* Number of valid bytes left in buffer */</span>
+00172 u_int8_t, <span class="comment">/* ASN object type */</span>
+00173 <span class="keywordtype">int</span> <span class="comment">/* ASN object length */</span>
+00174 );
+00175
+00176
+00177 u_int8_t *
+00178 libnet_build_asn1_length(
+00179 u_int8_t *, <span class="comment">/* Pointer to start of object */</span>
+00180 <span class="keywordtype">int</span> *, <span class="comment">/* Number of valid bytes in buffer */</span>
+00181 <span class="keywordtype">int</span> <span class="comment">/* Length of object */</span>
+00182 );
+00183
+00184
+00185 <span class="comment">/*</span>
+00186 <span class="comment"> * Builds an ASN header for a sequence with the ID and length specified.</span>
+00187 <span class="comment"> *</span>
+00188 <span class="comment"> * This only works on data types &lt; 30, i.e. no extension octets.</span>
+00189 <span class="comment"> * The maximum length is 0xFFFF;</span>
+00190 <span class="comment"> *</span>
+00191 <span class="comment"> * Returns a pointer to the first byte of the contents of this object.</span>
+00192 <span class="comment"> * Returns NULL on any error.</span>
+00193 <span class="comment"> */</span>
+00194
+00195 u_int8_t *
+00196 libnet_build_asn1_sequence(
+00197 u_int8_t *,
+00198 <span class="keywordtype">int</span> *,
+00199 u_int8_t,
+00200 <span class="keywordtype">int</span>
+00201 );
+00202
+00203
+00204 <span class="comment">/*</span>
+00205 <span class="comment"> * Builds an ASN object identifier object containing the input string.</span>
+00206 <span class="comment"> *</span>
+00207 <span class="comment"> * Returns NULL upon error or a pointer to the first byte past the end of</span>
+00208 <span class="comment"> * this object (the start of the next object).</span>
+00209 <span class="comment"> */</span>
+00210
+00211 u_int8_t *
+00212 libnet_build_asn1_objid(
+00213 u_int8_t *,
+00214 <span class="keywordtype">int</span> *,
+00215 u_int8_t,
+00216 oid *,
+00217 <span class="keywordtype">int</span>
+00218 );
+00219
+00220
+00221 <span class="comment">/*</span>
+00222 <span class="comment"> * Builds an ASN null object.</span>
+00223 <span class="comment"> *</span>
+00224 <span class="comment"> * Returns NULL upon error or a pointer to the first byte past the end of</span>
+00225 <span class="comment"> * this object (the start of the next object).</span>
+00226 <span class="comment"> */</span>
+00227
+00228 u_int8_t *
+00229 libnet_build_asn1_null(
+00230 u_int8_t *,
+00231 <span class="keywordtype">int</span> *,
+00232 u_int8_t
+00233 );
+00234
+00235
+00236 <span class="comment">/*</span>
+00237 <span class="comment"> * Builds an ASN bitstring.</span>
+00238 <span class="comment"> *</span>
+00239 <span class="comment"> * Returns NULL upon error or a pointer to the first byte past the end of</span>
+00240 <span class="comment"> * this object (the start of the next object).</span>
+00241 <span class="comment"> */</span>
+00242
+00243 u_int8_t *
+00244 libnet_build_asn1_bitstring(
+00245 u_int8_t *,
+00246 <span class="keywordtype">int</span> *,
+00247 u_int8_t,
+00248 u_int8_t *, <span class="comment">/* Pointer to the input buffer */</span>
+00249 <span class="keywordtype">int</span> <span class="comment">/* Length of the input buffer */</span>
+00250 );
+00251
+00252
+00253 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_ASN1_H */</span>
+00254
+00255 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-functions_8h-source.html b/libnet/doc/html/libnet-functions_8h-source.html
new file mode 100644
index 0000000..e7b2151
--- /dev/null
+++ b/libnet/doc/html/libnet-functions_8h-source.html
@@ -0,0 +1,742 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-functions.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-functions.h</h1><a href="libnet-functions_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet-functions.h,v 1.39 2004/03/01 20:26:11 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet-functions.h - function prototypes</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00011 <span class="comment"> * are met:</span>
+00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00017 <span class="comment"> *</span>
+00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00028 <span class="comment"> * SUCH DAMAGE.</span>
+00029 <span class="comment"> *</span>
+00030 <span class="comment"> */</span>
+00031
+00032 <span class="preprocessor">#ifndef __LIBNET_FUNCTIONS_H</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_FUNCTIONS_H</span>
+00034 <span class="preprocessor"></span>
+00063 libnet_t *
+00064 libnet_init(<span class="keywordtype">int</span> injection_type, <span class="keywordtype">char</span> *device, <span class="keywordtype">char</span> *err_buf);
+00065
+00071 <span class="keywordtype">void</span>
+00072 libnet_destroy(libnet_t *l);
+00073
+00080 <span class="keywordtype">void</span>
+00081 libnet_clear_packet(libnet_t *l);
+00082
+00089 <span class="keywordtype">void</span>
+00090 libnet_stats(libnet_t *l, <span class="keyword">struct</span> libnet_stats *ls);
+00091
+00097 <span class="keywordtype">int</span>
+00098 libnet_getfd(libnet_t *l);
+00099
+00106 int8_t *
+00107 libnet_getdevice(libnet_t *l);
+00108
+00117 u_int8_t *
+00118 libnet_getpbuf(libnet_t *l, libnet_ptag_t ptag);
+00119
+00128 u_int32_t
+00129 libnet_getpbuf_size(libnet_t *l, libnet_ptag_t ptag);
+00130
+00138 <span class="keywordtype">char</span> *
+00139 libnet_geterror(libnet_t *l);
+00140
+00147 u_int32_t
+00148 libnet_getpacket_size(libnet_t *l);
+00149
+00155 <span class="keywordtype">int</span>
+00156 libnet_seed_prand(libnet_t *l);
+00157
+00171 u_int32_t
+00172 libnet_get_prand(<span class="keywordtype">int</span> mod);
+00173
+00195 <span class="keywordtype">int</span>
+00196 libnet_toggle_checksum(libnet_t *l, libnet_ptag_t ptag, <span class="keywordtype">int</span> mode);
+00197
+00210 <span class="keywordtype">char</span> *
+00211 libnet_addr2name4(u_int32_t in, u_int8_t use_name);
+00212
+00226 u_int32_t
+00227 libnet_name2addr4(libnet_t *l, <span class="keywordtype">char</span> *host_name, u_int8_t use_name);
+00228
+00229 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keyword">struct </span>libnet_in6_addr in6addr_error;
+00230
+00244 <span class="keyword">struct </span>libnet_in6_addr
+00245 libnet_name2addr6(libnet_t *l, <span class="keywordtype">char</span> *host_name, u_int8_t use_name);
+00246
+00250 <span class="keywordtype">void</span>
+00251 libnet_addr2name6_r(<span class="keyword">struct</span> libnet_in6_addr addr, u_int8_t use_name,
+00252 <span class="keywordtype">char</span> *host_name, <span class="keywordtype">int</span> host_name_len);
+00253
+00269 <span class="keywordtype">int</span>
+00270 libnet_plist_chain_new(libnet_t *l, libnet_plist_t **plist, <span class="keywordtype">char</span> *token_list);
+00271
+00283 <span class="keywordtype">int</span>
+00284 libnet_plist_chain_next_pair(libnet_plist_t *plist, u_int16_t *bport,
+00285 u_int16_t *eport);
+00286
+00293 <span class="keywordtype">int</span>
+00294 libnet_plist_chain_dump(libnet_plist_t *plist);
+00295
+00304 <span class="keywordtype">char</span> *
+00305 libnet_plist_chain_dump_string(libnet_plist_t *plist);
+00306
+00312 <span class="keywordtype">int</span>
+00313 libnet_plist_chain_free(libnet_plist_t *plist);
+00314
+00402 libnet_ptag_t
+00403 libnet_build_802_1q(u_int8_t *dst, u_int8_t *src, u_int16_t tpi,
+00404 u_int8_t priority, u_int8_t cfi, u_int16_t vlan_id, u_int16_t len_proto,
+00405 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00406
+00418 libnet_ptag_t
+00419 libnet_build_802_1x(u_int8_t eap_ver, u_int8_t eap_type, u_int16_t length,
+00420 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00421
+00433 libnet_ptag_t
+00434 libnet_build_802_2(u_int8_t dsap, u_int8_t ssap, u_int8_t control,
+00435 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00436
+00450 libnet_ptag_t
+00451 libnet_build_802_2snap(u_int8_t dsap, u_int8_t ssap, u_int8_t control,
+00452 u_int8_t *oui, u_int16_t type, u_int8_t *payload, u_int32_t payload_s,
+00453 libnet_t *l, libnet_ptag_t ptag);
+00454
+00470 libnet_ptag_t
+00471 libnet_build_802_3(u_int8_t *dst, u_int8_t *src, u_int16_t len,
+00472 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00473
+00489 libnet_ptag_t
+00490 libnet_build_ethernet(u_int8_t *dst, u_int8_t *src, u_int16_t type,
+00491 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00492
+00504 libnet_ptag_t
+00505 libnet_autobuild_ethernet(u_int8_t *dst, u_int16_t type, libnet_t *l);
+00506
+00523 libnet_ptag_t
+00524 libnet_build_fddi(u_int8_t fc, u_int8_t *dst, u_int8_t *src, u_int8_t dsap,
+00525 u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, u_int8_t *payload,
+00526 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00527
+00540 libnet_ptag_t
+00541 libnet_autobuild_fddi(u_int8_t fc, u_int8_t *dst, u_int8_t dsap, u_int8_t ssap,
+00542 u_int8_t cf, u_int8_t *org, u_int16_t type, libnet_t *l);
+00543
+00563 libnet_ptag_t
+00564 libnet_build_arp(u_int16_t hrd, u_int16_t pro, u_int8_t hln, u_int8_t pln,
+00565 u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha, u_int8_t *tpa,
+00566 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00567
+00580 libnet_ptag_t
+00581 libnet_autobuild_arp(u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha,
+00582 u_int8_t *tpa, libnet_t *l);
+00583
+00600 libnet_ptag_t
+00601 libnet_build_tcp(u_int16_t sp, u_int16_t dp, u_int32_t seq, u_int32_t ack,
+00602 u_int8_t control, u_int16_t win, u_int16_t sum, u_int16_t urg, u_int16_t len,
+00603 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00604
+00620 libnet_ptag_t
+00621 libnet_build_tcp_options(u_int8_t *options, u_int32_t options_s, libnet_t *l,
+00622 libnet_ptag_t ptag);
+00623
+00636 libnet_ptag_t
+00637 libnet_build_udp(u_int16_t sp, u_int16_t dp, u_int16_t len, u_int16_t sum,
+00638 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00639
+00659 libnet_ptag_t
+00660 libnet_build_cdp(u_int8_t version, u_int8_t ttl, u_int16_t sum, u_int16_t type,
+00661 u_int16_t len, u_int8_t *value, u_int8_t *payload, u_int32_t payload_s,
+00662 libnet_t *l, libnet_ptag_t ptag);
+00663
+00678 libnet_ptag_t
+00679 libnet_build_icmpv4_echo(u_int8_t type, u_int8_t code, u_int16_t sum,
+00680 u_int16_t id, u_int16_t seq, u_int8_t *payload, u_int32_t payload_s,
+00681 libnet_t *l, libnet_ptag_t ptag);
+00682
+00698 libnet_ptag_t
+00699 libnet_build_icmpv4_mask(u_int8_t type, u_int8_t code, u_int16_t sum,
+00700 u_int16_t id, u_int16_t seq, u_int32_t mask, u_int8_t *payload,
+00701 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00702
+00725 libnet_ptag_t
+00726 libnet_build_icmpv4_unreach(u_int8_t type, u_int8_t code, u_int16_t sum,
+00727 u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag,
+00728 u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check,
+00729 u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s,
+00730 libnet_t *l, libnet_ptag_t ptag);
+00731
+00753 libnet_ptag_t
+00754 libnet_build_icmpv4_redirect(u_int8_t type, u_int8_t code, u_int16_t sum,
+00755 u_int32_t gateway, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id,
+00756 u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot,
+00757 u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst,
+00758 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00759
+00783 libnet_ptag_t
+00784 libnet_build_icmpv4_timeexceed(u_int8_t type, u_int8_t code, u_int16_t sum,
+00785 u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag,
+00786 u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check,
+00787 u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s,
+00788 libnet_t *l, libnet_ptag_t ptag);
+00789
+00807 libnet_ptag_t
+00808 libnet_build_icmpv4_timestamp(u_int8_t type, u_int8_t code, u_int16_t sum,
+00809 u_int16_t id, u_int16_t seq, n_time otime, n_time rtime, n_time ttime,
+00810 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00811
+00824 libnet_ptag_t
+00825 libnet_build_igmp(u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t ip,
+00826 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00827
+00845 libnet_ptag_t
+00846 libnet_build_ipv4(u_int16_t len, u_int8_t tos, u_int16_t id, u_int16_t frag,
+00847 u_int8_t ttl, u_int8_t prot, u_int16_t sum, u_int32_t src, u_int32_t dst,
+00848 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00849
+00864 libnet_ptag_t
+00865 libnet_build_ipv4_options(u_int8_t *options, u_int32_t options_s, libnet_t *l,
+00866 libnet_ptag_t ptag);
+00867
+00880 libnet_ptag_t
+00881 libnet_autobuild_ipv4(u_int16_t len, u_int8_t prot, u_int32_t dst, libnet_t *l);
+00882
+00898 libnet_ptag_t
+00899 libnet_build_ipv6(u_int8_t tc, u_int32_t fl, u_int16_t len, u_int8_t nh,
+00900 u_int8_t hl, <span class="keyword">struct</span> libnet_in6_addr src, <span class="keyword">struct</span> libnet_in6_addr dst,
+00901 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00902
+00915 libnet_ptag_t
+00916 libnet_build_ipv6_frag(u_int8_t nh, u_int8_t reserved, u_int16_t frag,
+00917 u_int32_t id, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+00918 libnet_ptag_t ptag);
+00919
+00937 libnet_ptag_t
+00938 libnet_build_ipv6_routing(u_int8_t nh, u_int8_t len, u_int8_t rtype,
+00939 u_int8_t segments, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+00940 libnet_ptag_t ptag);
+00941
+00955 libnet_ptag_t
+00956 libnet_build_ipv6_destopts(u_int8_t nh, u_int8_t len, u_int8_t *payload,
+00957 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00958
+00973 libnet_ptag_t
+00974 libnet_build_ipv6_hbhopts(u_int8_t nh, u_int8_t len, u_int8_t *payload,
+00975 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+00976
+00988 libnet_ptag_t
+00989 libnet_autobuild_ipv6(u_int16_t len, u_int8_t nh, <span class="keyword">struct</span> libnet_in6_addr dst,
+00990 libnet_t *l);
+00991
+01009 libnet_ptag_t
+01010 libnet_build_isl(u_int8_t *dhost, u_int8_t type, u_int8_t user, u_int8_t *shost,
+01011 u_int16_t len, u_int8_t *snap, u_int16_t vid, u_int16_t index,
+01012 u_int16_t reserved, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01013 libnet_ptag_t ptag);
+01014
+01026 libnet_ptag_t
+01027 libnet_build_ipsec_esp_hdr(u_int32_t spi, u_int32_t seq, u_int32_t iv,
+01028 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01029
+01041 libnet_ptag_t
+01042 libnet_build_ipsec_esp_ftr(u_int8_t len, u_int8_t nh, int8_t *auth,
+01043 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01044
+01059 libnet_ptag_t
+01060 libnet_build_ipsec_ah(u_int8_t nh, u_int8_t len, u_int16_t res,
+01061 u_int32_t spi, u_int32_t seq, u_int32_t auth, u_int8_t *payload,
+01062 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01063
+01079 libnet_ptag_t
+01080 libnet_build_dnsv4(u_int16_t h_len, u_int16_t id, u_int16_t flags,
+01081 u_int16_t num_q, u_int16_t num_anws_rr, u_int16_t num_auth_rr,
+01082 u_int16_t num_addi_rr, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01083 libnet_ptag_t ptag);
+01084
+01102 libnet_ptag_t
+01103 libnet_build_rip(u_int8_t cmd, u_int8_t version, u_int16_t rd, u_int16_t af,
+01104 u_int16_t rt, u_int32_t addr, u_int32_t mask, u_int32_t next_hop,
+01105 u_int32_t metric, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01106 libnet_ptag_t ptag);
+01107
+01130 libnet_ptag_t
+01131 libnet_build_rpc_call(u_int32_t rm, u_int32_t xid, u_int32_t prog_num,
+01132 u_int32_t prog_vers, u_int32_t procedure, u_int32_t cflavor, u_int32_t clength,
+01133 u_int8_t *cdata, u_int32_t vflavor, u_int32_t vlength, u_int8_t *vdata,
+01134 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01135
+01158 libnet_ptag_t
+01159 libnet_build_stp_conf(u_int16_t id, u_int8_t version, u_int8_t bpdu_type,
+01160 u_int8_t flags, u_int8_t *root_id, u_int32_t root_pc, u_int8_t *bridge_id,
+01161 u_int16_t port_id, u_int16_t message_age, u_int16_t max_age,
+01162 u_int16_t hello_time, u_int16_t f_delay, u_int8_t *payload,
+01163 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01164
+01178 libnet_ptag_t
+01179 libnet_build_stp_tcn(u_int16_t id, u_int8_t version, u_int8_t bpdu_type,
+01180 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01181
+01199 libnet_ptag_t
+01200 libnet_build_token_ring(u_int8_t ac, u_int8_t fc, u_int8_t *dst, u_int8_t *src,
+01201 u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type,
+01202 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01203
+01217 libnet_ptag_t
+01218 libnet_autobuild_token_ring(u_int8_t ac, u_int8_t fc, u_int8_t *dst,
+01219 u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type,
+01220 libnet_t *l);
+01221
+01241 libnet_ptag_t
+01242 libnet_build_vrrp(u_int8_t version, u_int8_t type, u_int8_t vrouter_id,
+01243 u_int8_t priority, u_int8_t ip_count, u_int8_t auth_type, u_int8_t advert_int,
+01244 u_int16_t sum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01245 libnet_ptag_t ptag);
+01246
+01259 libnet_ptag_t
+01260 libnet_build_mpls(u_int32_t label, u_int8_t experimental, u_int8_t bos,
+01261 u_int8_t ttl, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01262 libnet_ptag_t ptag);
+01263
+01291 libnet_ptag_t
+01292 libnet_build_ntp(u_int8_t leap_indicator, u_int8_t version, u_int8_t mode,
+01293 u_int8_t stratum, u_int8_t poll, u_int8_t precision, u_int16_t delay_int,
+01294 u_int16_t delay_frac, u_int16_t dispersion_int, u_int16_t dispersion_frac,
+01295 u_int32_t reference_id, u_int32_t ref_ts_int, u_int32_t ref_ts_frac,
+01296 u_int32_t orig_ts_int, u_int32_t orig_ts_frac, u_int32_t rec_ts_int,
+01297 u_int32_t rec_ts_frac, u_int32_t xmt_ts_int, u_int32_t xmt_ts_frac,
+01298 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01299
+01307 libnet_ptag_t
+01308 libnet_build_ospfv2(u_int16_t len, u_int8_t type, u_int32_t rtr_id,
+01309 u_int32_t area_id, u_int16_t sum, u_int16_t autype, u_int8_t *payload,
+01310 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01311
+01319 libnet_ptag_t
+01320 <a class="code" href="libnet-functions_8h.html#a69">libnet_build_ospfv2_hello</a>(u_int32_t netmask, u_int16_t interval, u_int8_t opts,
+01321 u_int8_t priority, u_int dead_int, u_int32_t des_rtr, u_int32_t bkup_rtr,
+01322 u_int32_t neighbor, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01323 libnet_ptag_t ptag);
+01324
+01332 libnet_ptag_t
+01333 <a class="code" href="libnet-functions_8h.html#a70">libnet_build_ospfv2_dbd</a>(u_int16_t dgram_len, u_int8_t opts, u_int8_t type,
+01334 u_int seqnum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01335 libnet_ptag_t ptag);
+01336
+01344 libnet_ptag_t
+01345 <a class="code" href="libnet-functions_8h.html#a71">libnet_build_ospfv2_lsr</a>(u_int type, u_int lsid, u_int32_t advrtr,
+01346 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01347
+01355 libnet_ptag_t
+01356 <a class="code" href="libnet-functions_8h.html#a72">libnet_build_ospfv2_lsu</a>(u_int num, u_int8_t *payload, u_int32_t payload_s,
+01357 libnet_t *l, libnet_ptag_t ptag);
+01358
+01366 libnet_ptag_t
+01367 <a class="code" href="libnet-functions_8h.html#a73">libnet_build_ospfv2_lsa</a>(u_int16_t age, u_int8_t opts, u_int8_t type,
+01368 u_int lsid, u_int32_t advrtr, u_int seqnum, u_int16_t sum, u_int16_t len,
+01369 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01370
+01378 libnet_ptag_t
+01379 <a class="code" href="libnet-functions_8h.html#a74">libnet_build_ospfv2_lsa_rtr</a>(u_int16_t flags, u_int16_t num, u_int id,
+01380 u_int data, u_int8_t type, u_int8_t tos, u_int16_t metric, u_int8_t *payload,
+01381 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01382
+01390 libnet_ptag_t
+01391 <a class="code" href="libnet-functions_8h.html#a75">libnet_build_ospfv2_lsa_net</a>(u_int32_t nmask, u_int rtrid, u_int8_t *payload,
+01392 u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01393
+01401 libnet_ptag_t
+01402 <a class="code" href="libnet-functions_8h.html#a76">libnet_build_ospfv2_lsa_sum</a>(u_int32_t nmask, u_int metric, u_int tos,
+01403 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01404
+01412 libnet_ptag_t
+01413 <a class="code" href="libnet-functions_8h.html#a77">libnet_build_ospfv2_lsa_as</a>(u_int32_t nmask, u_int metric, u_int32_t fwdaddr,
+01414 u_int tag, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01415 libnet_ptag_t ptag);
+01416
+01427 libnet_ptag_t
+01428 libnet_build_data(u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01429 libnet_ptag_t ptag);
+01430
+01438 libnet_ptag_t
+01439 libnet_build_dhcpv4(u_int8_t opcode, u_int8_t htype, u_int8_t hlen,
+01440 u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags,
+01441 u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr,
+01442 u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s,
+01443 libnet_t *l, libnet_ptag_t ptag);
+01444
+01452 libnet_ptag_t
+01453 libnet_build_bootpv4(u_int8_t opcode, u_int8_t htype, u_int8_t hlen,
+01454 u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags,
+01455 u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr,
+01456 u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s,
+01457 libnet_t *l, libnet_ptag_t ptag);
+01458
+01466 <span class="keyword">inline</span> u_int32_t
+01467 libnet_getgre_length(u_int16_t fv);
+01468
+01490 libnet_ptag_t
+01491 libnet_build_gre(u_int16_t fv, u_int16_t type, u_int16_t sum,
+01492 u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len,
+01493 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01494
+01516 libnet_ptag_t
+01517 libnet_build_egre(u_int16_t fv, u_int16_t type, u_int16_t sum,
+01518 u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len,
+01519 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01520
+01528 libnet_ptag_t
+01529 libnet_build_gre_sre(u_int16_t af, u_int8_t offset, u_int8_t length,
+01530 u_int8_t *routing, u_int8_t *payload, u_int32_t payload_s, libnet_t *l,
+01531 libnet_ptag_t ptag);
+01532
+01540 libnet_ptag_t
+01541 libnet_build_gre_last_sre(libnet_t *l, libnet_ptag_t ptag);
+01542
+01564 libnet_ptag_t
+01565 libnet_build_bgp4_header(u_int8_t marker[LIBNET_BGP4_MARKER_SIZE],
+01566 u_int16_t len, u_int8_t type, u_int8_t *payload, u_int32_t payload_s,
+01567 libnet_t *l, libnet_ptag_t ptag);
+01568
+01585 libnet_ptag_t
+01586 libnet_build_bgp4_open(u_int8_t version, u_int16_t src_as, u_int16_t hold_time,
+01587 u_int32_t bgp_id, u_int8_t opt_len, u_int8_t *payload, u_int32_t payload_s,
+01588 libnet_t *l, libnet_ptag_t ptag);
+01589
+01605 libnet_ptag_t
+01606 libnet_build_bgp4_update(u_int16_t unfeasible_rt_len, u_int8_t *withdrawn_rt,
+01607 u_int16_t total_path_attr_len, u_int8_t *path_attributes, u_int16_t info_len,
+01608 u_int8_t *reachability_info, u_int8_t *payload, u_int32_t payload_s,
+01609 libnet_t *l, libnet_ptag_t ptag);
+01610
+01623 libnet_ptag_t
+01624 libnet_build_bgp4_notification(u_int8_t err_code, u_int8_t err_subcode,
+01625 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01626
+01649 libnet_ptag_t
+01650 libnet_build_sebek(u_int32_t magic, u_int16_t version, u_int16_t type,
+01651 u_int32_t counter, u_int32_t time_sec, u_int32_t time_usec, u_int32_t pid,
+01652 u_int32_t uid, u_int32_t fd, u_int8_t cmd[SEBEK_CMD_LENGTH], u_int32_t length,
+01653 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01654
+01669 libnet_ptag_t
+01670 libnet_build_link(u_int8_t *dst, u_int8_t *src, u_int8_t *oui, u_int16_t type,
+01671 u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag);
+01672
+01683 libnet_ptag_t
+01684 libnet_autobuild_link(u_int8_t *dst, u_int8_t *oui, u_int16_t type,
+01685 libnet_t *l);
+01686
+01699 <span class="keywordtype">int</span>
+01700 libnet_write(libnet_t *l);
+01701
+01711 u_int32_t
+01712 libnet_get_ipaddr4(libnet_t *l);
+01713
+01719 <span class="keyword">struct </span>libnet_in6_addr
+01720 libnet_get_ipaddr6(libnet_t *l);
+01721
+01730 <span class="keyword">struct </span>libnet_ether_addr *
+01731 libnet_get_hwaddr(libnet_t *l);
+01732
+01742 u_int8_t *
+01743 libnet_hex_aton(int8_t *s, <span class="keywordtype">int</span> *len);
+01744
+01760 <span class="keywordtype">int</span>
+01761 libnet_adv_cull_packet(libnet_t *l, u_int8_t **packet, u_int32_t *packet_s);
+01762
+01775 <span class="keywordtype">int</span>
+01776 libnet_adv_cull_header(libnet_t *l, libnet_ptag_t ptag, u_int8_t **header,
+01777 u_int32_t *header_s);
+01778
+01792 <span class="keywordtype">int</span>
+01793 libnet_adv_write_link(libnet_t *l, u_int8_t *packet, u_int32_t packet_s);
+01794
+01801 <span class="keywordtype">void</span>
+01802 libnet_adv_free_packet(libnet_t *l, u_int8_t *packet);
+01803
+01817 <span class="keywordtype">int</span>
+01818 libnet_cq_add(libnet_t *l, <span class="keywordtype">char</span> *label);
+01819
+01834 libnet_t *
+01835 libnet_cq_remove(libnet_t *l);
+01836
+01848 libnet_t *
+01849 libnet_cq_remove_by_label(<span class="keywordtype">char</span> *label);
+01850
+01857 int8_t *
+01858 libnet_cq_getlabel(libnet_t *l);
+01859
+01866 libnet_t *
+01867 libnet_cq_find_by_label(<span class="keywordtype">char</span> *label);
+01868
+01874 <span class="keywordtype">void</span>
+01875 libnet_cq_destroy();
+01876
+01896 libnet_t *
+01897 libnet_cq_head();
+01898
+01904 <span class="keywordtype">int</span>
+01905 libnet_cq_last();
+01906
+01912 libnet_t *
+01913 libnet_cq_next();
+01914
+01920 u_int32_t
+01921 libnet_cq_size();
+01922
+01928 <span class="keywordtype">void</span>
+01929 libnet_diag_dump_context(libnet_t *l);
+01930
+01936 <span class="keywordtype">void</span>
+01937 libnet_diag_dump_pblock(libnet_t *l);
+01938
+01945 <span class="keywordtype">char</span> *
+01946 libnet_diag_dump_pblock_type(u_int8_t type);
+01947
+01959 <span class="keywordtype">void</span>
+01960 libnet_diag_dump_hex(u_int8_t *packet, u_int32_t len, <span class="keywordtype">int</span> swap, FILE *stream);
+01961
+01962 <span class="comment">/*</span>
+01963 <span class="comment"> * [Internal] </span>
+01964 <span class="comment"> */</span>
+01965 <span class="keywordtype">int</span>
+01966 libnet_write_raw_ipv4(libnet_t *l, u_int8_t *packet, u_int32_t size);
+01967
+01968 <span class="comment">/*</span>
+01969 <span class="comment"> * [Internal] </span>
+01970 <span class="comment"> */</span>
+01971 <span class="keywordtype">int</span>
+01972 libnet_write_raw_ipv6(libnet_t *l, u_int8_t *packet, u_int32_t size);
+01973
+01974 <span class="comment">/*</span>
+01975 <span class="comment"> * [Internal] </span>
+01976 <span class="comment"> */</span>
+01977 <span class="keywordtype">int</span>
+01978 libnet_write_link(libnet_t *l, u_int8_t *packet, u_int32_t size);
+01979
+01980 <span class="preprocessor">#if ((__WIN32__) &amp;&amp; !(__CYGWIN__))</span>
+01981 <span class="preprocessor"></span><span class="comment">/*</span>
+01982 <span class="comment"> * [Internal] </span>
+01983 <span class="comment"> */</span>
+01984 SOCKET
+01985 libnet_open_raw4(libnet_t *l);
+01986 <span class="preprocessor">#else</span>
+01987 <span class="preprocessor"></span><span class="comment">/*</span>
+01988 <span class="comment"> * [Internal] </span>
+01989 <span class="comment"> */</span>
+01990 <span class="keywordtype">int</span>
+01991 libnet_open_raw4(libnet_t *l);
+01992 <span class="preprocessor">#endif</span>
+01993 <span class="preprocessor"></span>
+01994 <span class="comment">/*</span>
+01995 <span class="comment"> * [Internal] </span>
+01996 <span class="comment"> */</span>
+01997 <span class="keywordtype">int</span>
+01998 libnet_close_raw4(libnet_t *l);
+01999
+02000 <span class="comment">/*</span>
+02001 <span class="comment"> * [Internal] </span>
+02002 <span class="comment"> */</span>
+02003 <span class="keywordtype">int</span>
+02004 libnet_open_raw6(libnet_t *l);
+02005
+02006 <span class="comment">/*</span>
+02007 <span class="comment"> * [Internal] </span>
+02008 <span class="comment"> */</span>
+02009 <span class="keywordtype">int</span>
+02010 libnet_close_raw6(libnet_t *l);
+02011
+02012 <span class="comment">/*</span>
+02013 <span class="comment"> * [Internal] </span>
+02014 <span class="comment"> */</span>
+02015 <span class="keywordtype">int</span>
+02016 libnet_select_device(libnet_t *l);
+02017
+02018 <span class="comment">/*</span>
+02019 <span class="comment"> * [Internal] </span>
+02020 <span class="comment"> */</span>
+02021 <span class="keywordtype">int</span>
+02022 libnet_open_link(libnet_t *l);
+02023
+02024 <span class="comment">/*</span>
+02025 <span class="comment"> * [Internal] </span>
+02026 <span class="comment"> */</span>
+02027 <span class="keywordtype">int</span>
+02028 libnet_close_link(libnet_t *l);
+02029
+02030 <span class="comment">/*</span>
+02031 <span class="comment"> * [Internal] </span>
+02032 <span class="comment"> */</span>
+02033 <span class="keywordtype">int</span>
+02034 libnet_do_checksum(libnet_t *l, u_int8_t *packet, <span class="keywordtype">int</span> protocol, <span class="keywordtype">int</span> len);
+02035
+02036 <span class="comment">/*</span>
+02037 <span class="comment"> * [Internal] </span>
+02038 <span class="comment"> */</span>
+02039 u_int32_t
+02040 libnet_compute_crc(u_int8_t *buf, u_int32_t len);
+02041
+02042 <span class="comment">/*</span>
+02043 <span class="comment"> * [Internal] </span>
+02044 <span class="comment"> */</span>
+02045 u_int16_t
+02046 libnet_ip_check(u_int16_t *addr, <span class="keywordtype">int</span> len);
+02047
+02048 <span class="comment">/*</span>
+02049 <span class="comment"> * [Internal] </span>
+02050 <span class="comment"> */</span>
+02051 <span class="keywordtype">int</span>
+02052 libnet_in_cksum(u_int16_t *addr, <span class="keywordtype">int</span> len);
+02053
+02054 <span class="comment">/*</span>
+02055 <span class="comment"> * [Internal] </span>
+02056 <span class="comment"> * If ptag is 0, function will create a pblock for the protocol unit type,</span>
+02057 <span class="comment"> * append it to the list and return a pointer to it. If ptag is not 0,</span>
+02058 <span class="comment"> * function will search the pblock list for the specified protocol block </span>
+02059 <span class="comment"> * and return a pointer to it.</span>
+02060 <span class="comment"> */</span>
+02061 libnet_pblock_t *
+02062 libnet_pblock_probe(libnet_t *l, libnet_ptag_t ptag, u_int32_t n,
+02063 u_int8_t type);
+02064
+02065 <span class="comment">/*</span>
+02066 <span class="comment"> * [Internal] </span>
+02067 <span class="comment"> * Function creates the pblock list if l-&gt;protocol_blocks == NULL or appends</span>
+02068 <span class="comment"> * an entry to the doubly linked list.</span>
+02069 <span class="comment"> */</span>
+02070 libnet_pblock_t *
+02071 libnet_pblock_new(libnet_t *l, u_int32_t size);
+02072
+02073 <span class="comment">/*</span>
+02074 <span class="comment"> * [Internal] </span>
+02075 <span class="comment"> * Function swaps two pblocks in memory.</span>
+02076 <span class="comment"> */</span>
+02077 <span class="keywordtype">int</span>
+02078 libnet_pblock_swap(libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2);
+02079
+02080 <span class="comment">/*</span>
+02081 <span class="comment"> * [Internal] </span>
+02082 <span class="comment"> * Function inserts a pblock into the doubly linked list.</span>
+02083 <span class="comment"> */</span>
+02084 <span class="keywordtype">int</span>
+02085 libnet_pblock_insert_before(libnet_t *l, libnet_ptag_t ptag1,
+02086 libnet_ptag_t ptag2);
+02087
+02088 <span class="comment">/*</span>
+02089 <span class="comment"> * [Internal] </span>
+02090 <span class="comment"> * Function removes a pblock from context </span>
+02091 <span class="comment"> */</span>
+02092 <span class="keywordtype">void</span>
+02093 libnet_pblock_delete(libnet_t *l, libnet_pblock_t *p);
+02094
+02095 <span class="comment">/*</span>
+02096 <span class="comment"> * [Internal] </span>
+02097 <span class="comment"> * Function updates the pblock meta-inforation. Internally it updates the</span>
+02098 <span class="comment"> * ptag with a monotonically increasing variable kept in l. This way each</span>
+02099 <span class="comment"> * pblock has a succesively increasing ptag identifier.</span>
+02100 <span class="comment"> */</span>
+02101 libnet_ptag_t
+02102 libnet_pblock_update(libnet_t *l, libnet_pblock_t *p, u_int32_t h,
+02103 u_int8_t type);
+02104
+02105 <span class="comment">/*</span>
+02106 <span class="comment"> * [Internal] </span>
+02107 <span class="comment"> * Function locates a given block by it's ptag. </span>
+02108 <span class="comment"> */</span>
+02109 libnet_pblock_t *
+02110 libnet_pblock_find(libnet_t *l, libnet_ptag_t ptag);
+02111
+02112 <span class="comment">/*</span>
+02113 <span class="comment"> * [Internal] </span>
+02114 <span class="comment"> * Function copies protocol block data over.</span>
+02115 <span class="comment"> */</span>
+02116 <span class="keywordtype">int</span>
+02117 libnet_pblock_append(libnet_t *l, libnet_pblock_t *p, u_int8_t *buf,
+02118 u_int32_t len);
+02119
+02120 <span class="comment">/*</span>
+02121 <span class="comment"> * [Internal] </span>
+02122 <span class="comment"> * Function sets pblock flags.</span>
+02123 <span class="comment"> */</span>
+02124 <span class="keywordtype">void</span>
+02125 libnet_pblock_setflags(libnet_pblock_t *p, u_int8_t flags);
+02126
+02127 <span class="comment">/*</span>
+02128 <span class="comment"> * [Internal] </span>
+02129 <span class="comment"> * Function returns the protocol number for the protocol block type. If</span>
+02130 <span class="comment"> * the type is unknown, the function defaults to returning IPPROTO_IP.</span>
+02131 <span class="comment"> */</span>
+02132 <span class="keywordtype">int</span>
+02133 libnet_pblock_p2p(u_int8_t type);
+02134
+02135 <span class="comment">/*</span>
+02136 <span class="comment"> * [Internal] </span>
+02137 <span class="comment"> * Function assembles the packet for subsequent writing. Function makes two</span>
+02138 <span class="comment"> * passes through the pblock list:</span>
+02139 <span class="comment"> */</span>
+02140 <span class="keywordtype">int</span>
+02141 libnet_pblock_coalesce(libnet_t *l, u_int8_t **packet, u_int32_t *size);
+02142
+02143 <span class="preprocessor">#if !(__WIN32__)</span>
+02144 <span class="preprocessor"></span><span class="comment">/*</span>
+02145 <span class="comment"> * [Internal] </span>
+02146 <span class="comment"> * By testing if we can retrieve the FLAGS of an iface</span>
+02147 <span class="comment"> * we can know if it exists or not and if it is up.</span>
+02148 <span class="comment"> */</span>
+02149 <span class="keywordtype">int</span>
+02150 libnet_check_iface(libnet_t *l);
+02151 <span class="preprocessor">#endif</span>
+02152 <span class="preprocessor"></span>
+02153 <span class="preprocessor">#if defined(__WIN32__)</span>
+02154 <span class="preprocessor"></span><span class="comment">/*</span>
+02155 <span class="comment"> * [Internal] </span>
+02156 <span class="comment"> */</span>
+02157 BYTE *
+02158 libnet_win32_get_remote_mac(libnet_t *l, DWORD IP);
+02159
+02160 <span class="comment">/*</span>
+02161 <span class="comment"> * [Internal] </span>
+02162 <span class="comment"> */</span>
+02163 <span class="keywordtype">int</span>
+02164 libnet_close_link_interface(libnet_t *l);
+02165
+02166 <span class="comment">/*</span>
+02167 <span class="comment"> * [Internal] </span>
+02168 <span class="comment"> */</span>
+02169 BYTE *
+02170 libnet_win32_read_arp_table(DWORD IP);
+02171 <span class="preprocessor">#endif</span>
+02172 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_FUNCTIONS_H */</span>
+02173
+02174 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-functions_8h.html b/libnet/doc/html/libnet-functions_8h.html
new file mode 100644
index 0000000..a3d37d3
--- /dev/null
+++ b/libnet/doc/html/libnet-functions_8h.html
@@ -0,0 +1,8844 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-functions.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-functions.h File Reference</h1>libnet exported function prototypes
+<a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="libnet-functions_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a1">libnet_init</a> (int injection_type, char *device, char *err_buf)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a2">libnet_destroy</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a3">libnet_clear_packet</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a4">libnet_stats</a> (libnet_t *l, struct libnet_stats *ls)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a5">libnet_getfd</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int8_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a6">libnet_getdevice</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int8_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a7">libnet_getpbuf</a> (libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a8">libnet_getpbuf_size</a> (libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a9">libnet_geterror</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a10">libnet_getpacket_size</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a11">libnet_seed_prand</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a12">libnet_get_prand</a> (int mod)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a13">libnet_toggle_checksum</a> (libnet_t *l, libnet_ptag_t ptag, int mode)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a14">libnet_addr2name4</a> (u_int32_t in, u_int8_t use_name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a15">libnet_name2addr4</a> (libnet_t *l, char *host_name, u_int8_t use_name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_in6_addr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a16">libnet_name2addr6</a> (libnet_t *l, char *host_name, u_int8_t use_name)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a17">libnet_addr2name6_r</a> (struct libnet_in6_addr addr, u_int8_t use_name, char *host_name, int host_name_len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a18">libnet_plist_chain_new</a> (libnet_t *l, libnet_plist_t **plist, char *token_list)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a19">libnet_plist_chain_next_pair</a> (libnet_plist_t *plist, u_int16_t *bport, u_int16_t *eport)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a20">libnet_plist_chain_dump</a> (libnet_plist_t *plist)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a21">libnet_plist_chain_dump_string</a> (libnet_plist_t *plist)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a22">libnet_plist_chain_free</a> (libnet_plist_t *plist)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a23">libnet_build_802_1q</a> (u_int8_t *dst, u_int8_t *src, u_int16_t tpi, u_int8_t priority, u_int8_t cfi, u_int16_t vlan_id, u_int16_t len_proto, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a24">libnet_build_802_1x</a> (u_int8_t eap_ver, u_int8_t eap_type, u_int16_t length, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a25">libnet_build_802_2</a> (u_int8_t dsap, u_int8_t ssap, u_int8_t control, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a26">libnet_build_802_2snap</a> (u_int8_t dsap, u_int8_t ssap, u_int8_t control, u_int8_t *oui, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a27">libnet_build_802_3</a> (u_int8_t *dst, u_int8_t *src, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a28">libnet_build_ethernet</a> (u_int8_t *dst, u_int8_t *src, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a29">libnet_autobuild_ethernet</a> (u_int8_t *dst, u_int16_t type, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a30">libnet_build_fddi</a> (u_int8_t fc, u_int8_t *dst, u_int8_t *src, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a31">libnet_autobuild_fddi</a> (u_int8_t fc, u_int8_t *dst, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a32">libnet_build_arp</a> (u_int16_t hrd, u_int16_t pro, u_int8_t hln, u_int8_t pln, u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha, u_int8_t *tpa, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a33">libnet_autobuild_arp</a> (u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha, u_int8_t *tpa, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a34">libnet_build_tcp</a> (u_int16_t sp, u_int16_t dp, u_int32_t seq, u_int32_t ack, u_int8_t control, u_int16_t win, u_int16_t sum, u_int16_t urg, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a35">libnet_build_tcp_options</a> (u_int8_t *options, u_int32_t options_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a36">libnet_build_udp</a> (u_int16_t sp, u_int16_t dp, u_int16_t len, u_int16_t sum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a37">libnet_build_cdp</a> (u_int8_t version, u_int8_t ttl, u_int16_t sum, u_int16_t type, u_int16_t len, u_int8_t *value, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a38">libnet_build_icmpv4_echo</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a39">libnet_build_icmpv4_mask</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, u_int32_t mask, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a40">libnet_build_icmpv4_unreach</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a41">libnet_build_icmpv4_redirect</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t gateway, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a42">libnet_build_icmpv4_timeexceed</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a43">libnet_build_icmpv4_timestamp</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, n_time otime, n_time rtime, n_time ttime, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a44">libnet_build_igmp</a> (u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t ip, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a45">libnet_build_ipv4</a> (u_int16_t len, u_int8_t tos, u_int16_t id, u_int16_t frag, u_int8_t ttl, u_int8_t prot, u_int16_t sum, u_int32_t src, u_int32_t dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a46">libnet_build_ipv4_options</a> (u_int8_t *options, u_int32_t options_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a47">libnet_autobuild_ipv4</a> (u_int16_t len, u_int8_t prot, u_int32_t dst, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a48">libnet_build_ipv6</a> (u_int8_t tc, u_int32_t fl, u_int16_t len, u_int8_t nh, u_int8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a49">libnet_build_ipv6_frag</a> (u_int8_t nh, u_int8_t reserved, u_int16_t frag, u_int32_t id, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a50">libnet_build_ipv6_routing</a> (u_int8_t nh, u_int8_t len, u_int8_t rtype, u_int8_t segments, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a51">libnet_build_ipv6_destopts</a> (u_int8_t nh, u_int8_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a52">libnet_build_ipv6_hbhopts</a> (u_int8_t nh, u_int8_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a53">libnet_autobuild_ipv6</a> (u_int16_t len, u_int8_t nh, struct libnet_in6_addr dst, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a54">libnet_build_isl</a> (u_int8_t *dhost, u_int8_t type, u_int8_t user, u_int8_t *shost, u_int16_t len, u_int8_t *snap, u_int16_t vid, u_int16_t index, u_int16_t reserved, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a55">libnet_build_ipsec_esp_hdr</a> (u_int32_t spi, u_int32_t seq, u_int32_t iv, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a56">libnet_build_ipsec_esp_ftr</a> (u_int8_t len, u_int8_t nh, int8_t *auth, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a57">libnet_build_ipsec_ah</a> (u_int8_t nh, u_int8_t len, u_int16_t res, u_int32_t spi, u_int32_t seq, u_int32_t auth, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a58">libnet_build_dnsv4</a> (u_int16_t h_len, u_int16_t id, u_int16_t flags, u_int16_t num_q, u_int16_t num_anws_rr, u_int16_t num_auth_rr, u_int16_t num_addi_rr, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a59">libnet_build_rip</a> (u_int8_t cmd, u_int8_t version, u_int16_t rd, u_int16_t af, u_int16_t rt, u_int32_t addr, u_int32_t mask, u_int32_t next_hop, u_int32_t metric, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a60">libnet_build_rpc_call</a> (u_int32_t rm, u_int32_t xid, u_int32_t prog_num, u_int32_t prog_vers, u_int32_t procedure, u_int32_t cflavor, u_int32_t clength, u_int8_t *cdata, u_int32_t vflavor, u_int32_t vlength, u_int8_t *vdata, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a61">libnet_build_stp_conf</a> (u_int16_t id, u_int8_t version, u_int8_t bpdu_type, u_int8_t flags, u_int8_t *root_id, u_int32_t root_pc, u_int8_t *bridge_id, u_int16_t port_id, u_int16_t message_age, u_int16_t max_age, u_int16_t hello_time, u_int16_t f_delay, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a62">libnet_build_stp_tcn</a> (u_int16_t id, u_int8_t version, u_int8_t bpdu_type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a63">libnet_build_token_ring</a> (u_int8_t ac, u_int8_t fc, u_int8_t *dst, u_int8_t *src, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a64">libnet_autobuild_token_ring</a> (u_int8_t ac, u_int8_t fc, u_int8_t *dst, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a65">libnet_build_vrrp</a> (u_int8_t version, u_int8_t type, u_int8_t vrouter_id, u_int8_t priority, u_int8_t ip_count, u_int8_t auth_type, u_int8_t advert_int, u_int16_t sum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a66">libnet_build_mpls</a> (u_int32_t label, u_int8_t experimental, u_int8_t bos, u_int8_t ttl, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a67">libnet_build_ntp</a> (u_int8_t leap_indicator, u_int8_t version, u_int8_t mode, u_int8_t stratum, u_int8_t poll, u_int8_t precision, u_int16_t delay_int, u_int16_t delay_frac, u_int16_t dispersion_int, u_int16_t dispersion_frac, u_int32_t reference_id, u_int32_t ref_ts_int, u_int32_t ref_ts_frac, u_int32_t orig_ts_int, u_int32_t orig_ts_frac, u_int32_t rec_ts_int, u_int32_t rec_ts_frac, u_int32_t xmt_ts_int, u_int32_t xmt_ts_frac, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a68">libnet_build_ospfv2</a> (u_int16_t len, u_int8_t type, u_int32_t rtr_id, u_int32_t area_id, u_int16_t sum, u_int16_t autype, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a69">libnet_build_ospfv2_hello</a> (u_int32_t netmask, u_int16_t interval, u_int8_t opts, u_int8_t priority, u_int dead_int, u_int32_t des_rtr, u_int32_t bkup_rtr, u_int32_t neighbor, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a70">libnet_build_ospfv2_dbd</a> (u_int16_t dgram_len, u_int8_t opts, u_int8_t type, u_int seqnum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a71">libnet_build_ospfv2_lsr</a> (u_int type, u_int lsid, u_int32_t advrtr, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a72">libnet_build_ospfv2_lsu</a> (u_int num, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a73">libnet_build_ospfv2_lsa</a> (u_int16_t age, u_int8_t opts, u_int8_t type, u_int lsid, u_int32_t advrtr, u_int seqnum, u_int16_t sum, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a74">libnet_build_ospfv2_lsa_rtr</a> (u_int16_t flags, u_int16_t num, u_int id, u_int data, u_int8_t type, u_int8_t tos, u_int16_t metric, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a75">libnet_build_ospfv2_lsa_net</a> (u_int32_t nmask, u_int rtrid, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a76">libnet_build_ospfv2_lsa_sum</a> (u_int32_t nmask, u_int metric, u_int tos, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a77">libnet_build_ospfv2_lsa_as</a> (u_int32_t nmask, u_int metric, u_int32_t fwdaddr, u_int tag, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a78">libnet_build_data</a> (u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a79">libnet_build_dhcpv4</a> (u_int8_t opcode, u_int8_t htype, u_int8_t hlen, u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags, u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr, u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a80">libnet_build_bootpv4</a> (u_int8_t opcode, u_int8_t htype, u_int8_t hlen, u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags, u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr, u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a81">libnet_getgre_length</a> (u_int16_t fv)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a82">libnet_build_gre</a> (u_int16_t fv, u_int16_t type, u_int16_t sum, u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a83">libnet_build_egre</a> (u_int16_t fv, u_int16_t type, u_int16_t sum, u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a84">libnet_build_gre_sre</a> (u_int16_t af, u_int8_t offset, u_int8_t length, u_int8_t *routing, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a85">libnet_build_gre_last_sre</a> (libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a86">libnet_build_bgp4_header</a> (u_int8_t marker[LIBNET_BGP4_MARKER_SIZE], u_int16_t len, u_int8_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a87">libnet_build_bgp4_open</a> (u_int8_t version, u_int16_t src_as, u_int16_t hold_time, u_int32_t bgp_id, u_int8_t opt_len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a88">libnet_build_bgp4_update</a> (u_int16_t unfeasible_rt_len, u_int8_t *withdrawn_rt, u_int16_t total_path_attr_len, u_int8_t *path_attributes, u_int16_t info_len, u_int8_t *reachability_info, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a89">libnet_build_bgp4_notification</a> (u_int8_t err_code, u_int8_t err_subcode, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a90">libnet_build_sebek</a> (u_int32_t magic, u_int16_t version, u_int16_t type, u_int32_t counter, u_int32_t time_sec, u_int32_t time_usec, u_int32_t pid, u_int32_t uid, u_int32_t fd, u_int8_t cmd[SEBEK_CMD_LENGTH], u_int32_t length, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a91">libnet_build_link</a> (u_int8_t *dst, u_int8_t *src, u_int8_t *oui, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a92">libnet_autobuild_link</a> (u_int8_t *dst, u_int8_t *oui, u_int16_t type, libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a93">libnet_write</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a94">libnet_get_ipaddr4</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_in6_addr&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a95">libnet_get_ipaddr6</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_ether_addr *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a96">libnet_get_hwaddr</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int8_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a97">libnet_hex_aton</a> (int8_t *s, int *len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a98">libnet_adv_cull_packet</a> (libnet_t *l, u_int8_t **packet, u_int32_t *packet_s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a99">libnet_adv_cull_header</a> (libnet_t *l, libnet_ptag_t ptag, u_int8_t **header, u_int32_t *header_s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a100">libnet_adv_write_link</a> (libnet_t *l, u_int8_t *packet, u_int32_t packet_s)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a101">libnet_adv_free_packet</a> (libnet_t *l, u_int8_t *packet)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a102">libnet_cq_add</a> (libnet_t *l, char *label)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a103">libnet_cq_remove</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a104">libnet_cq_remove_by_label</a> (char *label)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int8_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a105">libnet_cq_getlabel</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a106">libnet_cq_find_by_label</a> (char *label)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a107">libnet_cq_destroy</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a108">libnet_cq_head</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a109">libnet_cq_last</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>libnet_t *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a110">libnet_cq_next</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a111">libnet_cq_size</a> ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a112">libnet_diag_dump_context</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a113">libnet_diag_dump_pblock</a> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a114">libnet_diag_dump_pblock_type</a> (u_int8_t type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-functions_8h.html#a115">libnet_diag_dump_hex</a> (u_int8_t *packet, u_int32_t len, int swap, FILE *stream)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a116" doxytag="libnet-functions.h::libnet_write_raw_ipv4" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_write_raw_ipv4</b> (libnet_t *l, u_int8_t *packet, u_int32_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a117" doxytag="libnet-functions.h::libnet_write_raw_ipv6" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_write_raw_ipv6</b> (libnet_t *l, u_int8_t *packet, u_int32_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a118" doxytag="libnet-functions.h::libnet_write_link" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_write_link</b> (libnet_t *l, u_int8_t *packet, u_int32_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a119" doxytag="libnet-functions.h::libnet_open_raw4" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_open_raw4</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a120" doxytag="libnet-functions.h::libnet_close_raw4" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_close_raw4</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a121" doxytag="libnet-functions.h::libnet_open_raw6" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_open_raw6</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a122" doxytag="libnet-functions.h::libnet_close_raw6" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_close_raw6</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a123" doxytag="libnet-functions.h::libnet_select_device" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_select_device</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a124" doxytag="libnet-functions.h::libnet_open_link" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_open_link</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a125" doxytag="libnet-functions.h::libnet_close_link" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_close_link</b> (libnet_t *l)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a126" doxytag="libnet-functions.h::libnet_do_checksum" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_do_checksum</b> (libnet_t *l, u_int8_t *packet, int protocol, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a127" doxytag="libnet-functions.h::libnet_compute_crc" ></a>
+u_int32_t&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_compute_crc</b> (u_int8_t *buf, u_int32_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a128" doxytag="libnet-functions.h::libnet_ip_check" ></a>
+u_int16_t&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ip_check</b> (u_int16_t *addr, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a129" doxytag="libnet-functions.h::libnet_in_cksum" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_in_cksum</b> (u_int16_t *addr, int len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a130" doxytag="libnet-functions.h::libnet_pblock_probe" ></a>
+libnet_pblock_t *&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_probe</b> (libnet_t *l, libnet_ptag_t ptag, u_int32_t n, u_int8_t type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a131" doxytag="libnet-functions.h::libnet_pblock_new" ></a>
+libnet_pblock_t *&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_new</b> (libnet_t *l, u_int32_t size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a132" doxytag="libnet-functions.h::libnet_pblock_swap" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_swap</b> (libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a133" doxytag="libnet-functions.h::libnet_pblock_insert_before" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_insert_before</b> (libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a134" doxytag="libnet-functions.h::libnet_pblock_delete" ></a>
+void&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_delete</b> (libnet_t *l, libnet_pblock_t *p)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a135" doxytag="libnet-functions.h::libnet_pblock_update" ></a>
+libnet_ptag_t&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_update</b> (libnet_t *l, libnet_pblock_t *p, u_int32_t h, u_int8_t type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a136" doxytag="libnet-functions.h::libnet_pblock_find" ></a>
+libnet_pblock_t *&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_find</b> (libnet_t *l, libnet_ptag_t ptag)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a137" doxytag="libnet-functions.h::libnet_pblock_append" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_append</b> (libnet_t *l, libnet_pblock_t *p, u_int8_t *buf, u_int32_t len)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a138" doxytag="libnet-functions.h::libnet_pblock_setflags" ></a>
+void&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_setflags</b> (libnet_pblock_t *p, u_int8_t flags)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a139" doxytag="libnet-functions.h::libnet_pblock_p2p" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_p2p</b> (u_int8_t type)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a140" doxytag="libnet-functions.h::libnet_pblock_coalesce" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_pblock_coalesce</b> (libnet_t *l, u_int8_t **packet, u_int32_t *size)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a141" doxytag="libnet-functions.h::libnet_check_iface" ></a>
+int&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_check_iface</b> (libnet_t *l)</td></tr>
+
+<tr><td colspan=2><br><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a0" doxytag="libnet-functions.h::in6addr_error" ></a>
+const struct libnet_in6_addr&nbsp;</td><td class="memItemRight" valign=bottom><b>in6addr_error</b></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+libnet exported function prototypes
+<p>
+<hr><h2>Function Documentation</h2>
+<a class="anchor" name="a14" doxytag="libnet-functions.h::libnet_addr2name4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char* libnet_addr2name4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>in</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>use_name</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Takes a network byte ordered IPv4 address and returns a pointer to either a canonical DNS name (if it has one) or a string of dotted decimals. This may incur a DNS lookup if the hostname and mode is set to LIBNET_RESOLVE. If mode is set to LIBNET_DONT_RESOLVE, no DNS lookup will be performed and the function will return a pointer to a dotted decimal string. The function cannot fail -- if no canonical name exists, it will fall back on returning a dotted decimal string. This function is non-reentrant. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>in</em>&nbsp;</td><td>network byte ordered IPv4 address </td></tr>
+ <tr><td valign=top><em>use_name</em>&nbsp;</td><td>LIBNET_RESOLVE or LIBNET_DONT_RESOLVE </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to presentation format string </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a17" doxytag="libnet-functions.h::libnet_addr2name6_r" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_addr2name6_r </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">struct libnet_in6_addr&nbsp;</td>
+ <td class="mdname" nowrap> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>use_name</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>host_name</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>host_name_len</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Should document this baby right here. </td>
+ </tr>
+</table>
+<a class="anchor" name="a99" doxytag="libnet-functions.h::libnet_adv_cull_header" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_adv_cull_header </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t **&nbsp;</td>
+ <td class="mdname" nowrap> <em>header</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>header_s</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Advanced Interface] Pulls the header from the specified ptag from the given libnet context. This function is part of the advanced interface and is only available when libnet is initialized in advanced mode. If the function fails <a class="el" href="libnet-functions_8h.html#a9">libnet_geterror()</a> can tell you why. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>the ptag referencing the header to pull </td></tr>
+ <tr><td valign=top><em>header</em>&nbsp;</td><td>will contain the header </td></tr>
+ <tr><td valign=top><em>header_s</em>&nbsp;</td><td>will contain the header size </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a98" doxytag="libnet-functions.h::libnet_adv_cull_packet" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_adv_cull_packet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t **&nbsp;</td>
+ <td class="mdname" nowrap> <em>packet</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>packet_s</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Advanced Interface] Yanks a prebuilt, wire-ready packet from the given libnet context. If libnet was configured to do so (which it is by default) the packet will have all checksums written in. This function is part of the advanced interface and is only available when libnet is initialized in advanced mode. It is important to note that the function performs an implicit malloc() and a corresponding call to <a class="el" href="libnet-functions_8h.html#a101">libnet_adv_free_packet()</a> should be made to free the memory packet occupies. If the function fails <a class="el" href="libnet-functions_8h.html#a9">libnet_geterror()</a> can tell you why. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>packet</em>&nbsp;</td><td>will contain the wire-ready packet </td></tr>
+ <tr><td valign=top><em>packet_s</em>&nbsp;</td><td>will contain the packet size </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a101" doxytag="libnet-functions.h::libnet_adv_free_packet" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_adv_free_packet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>packet</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Advanced Interface] Frees the memory allocated when <a class="el" href="libnet-functions_8h.html#a98">libnet_adv_cull_packet()</a> is called. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>packet</em>&nbsp;</td><td>a pointer to the packet to free </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a100" doxytag="libnet-functions.h::libnet_adv_write_link" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_adv_write_link </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>packet</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>packet_s</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Advanced Interface] Writes a packet the network at the link layer. This function is useful to write a packet that has been constructed by hand by the application programmer or, more commonly, to write a packet that has been returned by a call to <a class="el" href="libnet-functions_8h.html#a98">libnet_adv_cull_packet()</a>. This function is part of the advanced interface and is only available when libnet is initialized in advanced mode. If the function fails <a class="el" href="libnet-functions_8h.html#a9">libnet_geterror()</a> can tell you why. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>packet</em>&nbsp;</td><td>a pointer to the packet to inject </td></tr>
+ <tr><td valign=top><em>packet_s</em>&nbsp;</td><td>the size of the packet </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of bytes written, or -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a33" doxytag="libnet-functions.h::libnet_autobuild_arp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_arp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>op</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sha</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>spa</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tha</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tpa</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Autouilds an Address Resolution Protocol (ARP) header. Depending on the op value, the function builds one of several different types of RFC 826 or RFC 903 RARP packets. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>op</em>&nbsp;</td><td>ARP operation type </td></tr>
+ <tr><td valign=top><em>sha</em>&nbsp;</td><td>sender's hardware address </td></tr>
+ <tr><td valign=top><em>spa</em>&nbsp;</td><td>sender's protocol address </td></tr>
+ <tr><td valign=top><em>tha</em>&nbsp;</td><td>target hardware address </td></tr>
+ <tr><td valign=top><em>tpa</em>&nbsp;</td><td>targer protocol address </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a29" doxytag="libnet-functions.h::libnet_autobuild_ethernet" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_ethernet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Autobuilds an Ethernet header. The RFC 894 Ethernet II header is almost identical to the IEEE 802.3 header, with the exception that the field immediately following the source address holds the layer 3 protocol (as opposed to frame's length). You should only use this function when libnet is initialized with the LIBNET_LINK interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination ethernet address </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol type </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a31" doxytag="libnet-functions.h::libnet_autobuild_fddi" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_fddi </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fc</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dsap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ssap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>org</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Autobuilds a Fiber Distributed Data Interface (FDDI) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>fc</em>&nbsp;</td><td>class format and priority dst destination fddi address </td></tr>
+ <tr><td valign=top><em>dsap</em>&nbsp;</td><td>destination service access point </td></tr>
+ <tr><td valign=top><em>ssap</em>&nbsp;</td><td>source service access point </td></tr>
+ <tr><td valign=top><em>cf</em>&nbsp;</td><td>cf </td></tr>
+ <tr><td valign=top><em>org</em>&nbsp;</td><td>IEEE organizational code </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a47" doxytag="libnet-functions.h::libnet_autobuild_ipv4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_ipv4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>prot</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Autobuilds a version 4 Internet Protocol (IP) header. The function is useful * to build an IP header quickly when you do not need a granular level of control. The function takes the same len, prot, and dst arguments as <a class="el" href="libnet-functions_8h.html#a45">libnet_build_ipv4()</a>. The function does not accept a ptag argument, but it does return a ptag. In other words, you can use it to build a new IP header but not to modify an existing one. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>total length of the IP packet including all subsequent data </td></tr>
+ <tr><td valign=top><em>prot</em>&nbsp;</td><td>upper layer protocol </td></tr>
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination IPv4 address (little endian) </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a53" doxytag="libnet-functions.h::libnet_autobuild_ipv6" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_ipv6 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>struct libnet_in6_addr&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is not yet implement and is a NONOP. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>length </td></tr>
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination IPv6 address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a92" doxytag="libnet-functions.h::libnet_autobuild_link" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_link </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>oui</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Automatically builds a link layer header for an initialized l. The function determines the proper link layer header format from how l was initialized. The function current supports Ethernet and Token Ring link layers. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>the destination MAC address </td></tr>
+ <tr><td valign=top><em>oui</em>&nbsp;</td><td>Organizationally Unique Identifier (unused for Ethernet) </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>the upper layer protocol type </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a64" doxytag="libnet-functions.h::libnet_autobuild_token_ring" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_autobuild_token_ring </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fc</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dsap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ssap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>org</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Auto-builds a token ring header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>ac</em>&nbsp;</td><td>access control </td></tr>
+ <tr><td valign=top><em>fc</em>&nbsp;</td><td>frame control </td></tr>
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination address </td></tr>
+ <tr><td valign=top><em>dsap</em>&nbsp;</td><td>destination service access point </td></tr>
+ <tr><td valign=top><em>ssap</em>&nbsp;</td><td>source service access point </td></tr>
+ <tr><td valign=top><em>cf</em>&nbsp;</td><td>control field </td></tr>
+ <tr><td valign=top><em>oui</em>&nbsp;</td><td>Organizationally Unique Identifier </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol type </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a23" doxytag="libnet-functions.h::libnet_build_802_1q" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_802_1q </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>tpi</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>priority</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cfi</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>vlan_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len_proto</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.1q VLAN tagging header. Depending on the value of len_proto, the function wraps the 802.1q header inside either an IEEE 802.3 header or an RFC 894 Ethernet II (DIX) header (both resulting in an 18-byte frame). If len is 1500 or less, most receiving protocol stacks parse the frame as an IEEE 802.3 encapsulated frame. If len is one of the Ethernet type values, most protocol stacks parse the frame as an RFC 894 Ethernet II encapsulated frame. Note the length value is calculated without the 802.1q header of 18 bytes. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>pointer to a six byte source ethernet address </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>pointer to a six byte destination ethernet address </td></tr>
+ <tr><td valign=top><em>tpi</em>&nbsp;</td><td>tag protocol identifier </td></tr>
+ <tr><td valign=top><em>priority</em>&nbsp;</td><td>priority </td></tr>
+ <tr><td valign=top><em>cfi</em>&nbsp;</td><td>canonical format indicator </td></tr>
+ <tr><td valign=top><em>vlan_id</em>&nbsp;</td><td>vlan identifier </td></tr>
+ <tr><td valign=top><em>len_proto</em>&nbsp;</td><td>length (802.3) protocol (Ethernet II) </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a24" doxytag="libnet-functions.h::libnet_build_802_1x" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_802_1x </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>eap_ver</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>eap_type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.1x extended authentication protocol header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>eap_ver</em>&nbsp;</td><td>the EAP version </td></tr>
+ <tr><td valign=top><em>eap_type</em>&nbsp;</td><td>the EAP type </td></tr>
+ <tr><td valign=top><em>length</em>&nbsp;</td><td>frame length </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a25" doxytag="libnet-functions.h::libnet_build_802_2" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_802_2 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dsap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ssap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>control</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.2 LLC header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dsap</em>&nbsp;</td><td>destination service access point </td></tr>
+ <tr><td valign=top><em>ssap</em>&nbsp;</td><td>source service access point </td></tr>
+ <tr><td valign=top><em>control</em>&nbsp;</td><td>control field </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a26" doxytag="libnet-functions.h::libnet_build_802_2snap" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_802_2snap </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dsap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ssap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>control</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>oui</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.2 LLC SNAP header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dsap</em>&nbsp;</td><td>destination service access point </td></tr>
+ <tr><td valign=top><em>ssap</em>&nbsp;</td><td>source service access point </td></tr>
+ <tr><td valign=top><em>control</em>&nbsp;</td><td>control field </td></tr>
+ <tr><td valign=top><em>oui</em>&nbsp;</td><td>Organizationally Unique Identifier </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a27" doxytag="libnet-functions.h::libnet_build_802_3" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_802_3 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.3 header. The 802.3 header is almost identical to the RFC 894 Ethernet II header, the exception being that the field immediately following the source address holds the frame's length (as opposed to the layer 3 protocol). You should only use this function when libnet is initialized with the LIBNET_LINK interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination ethernet address </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>source ethernet address </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>frame length sans header </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a32" doxytag="libnet-functions.h::libnet_build_arp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_arp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hrd</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>pro</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hln</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>pln</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>op</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sha</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>spa</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tha</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>tpa</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an Address Resolution Protocol (ARP) header. Depending on the op value, the function builds one of several different types of RFC 826 or RFC 903 RARP packets. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>hrd</em>&nbsp;</td><td>hardware address format </td></tr>
+ <tr><td valign=top><em>pro</em>&nbsp;</td><td>protocol address format </td></tr>
+ <tr><td valign=top><em>hln</em>&nbsp;</td><td>hardware address length </td></tr>
+ <tr><td valign=top><em>pln</em>&nbsp;</td><td>protocol address length </td></tr>
+ <tr><td valign=top><em>op</em>&nbsp;</td><td>ARP operation type </td></tr>
+ <tr><td valign=top><em>sha</em>&nbsp;</td><td>sender's hardware address </td></tr>
+ <tr><td valign=top><em>spa</em>&nbsp;</td><td>sender's protocol address </td></tr>
+ <tr><td valign=top><em>tha</em>&nbsp;</td><td>target hardware address </td></tr>
+ <tr><td valign=top><em>tpa</em>&nbsp;</td><td>targer protocol address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a86" doxytag="libnet-functions.h::libnet_build_bgp4_header" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_bgp4_header </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>marker</em>[LIBNET_BGP4_MARKER_SIZE], </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) header. The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASs) that reachability information traverses. This information is sufficient to construct a graph of AS connectivity from which routing loops may be pruned and some policy decisions at the AS level may be enforced. This function builds the base BGP header which is used as a preamble before any other BGP header. For example, a BGP KEEPALIVE message may be built with only this function, while an error notification requires a subsequent call to libnet_build_bgp4_notification. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>marker</em>&nbsp;</td><td>a value the receiver can predict (if the message type is not BGP OPEN, or no authentication is used, these 16 bytes are normally set as all ones) </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>total length of the BGP message, including the header </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type code of the message (OPEN, UPDATE, NOTIFICATION or KEEPALIVE) </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a89" doxytag="libnet-functions.h::libnet_build_bgp4_notification" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_bgp4_notification </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>err_code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>err_subcode</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) notification header. A NOTIFICATION message is sent when an error condition is detected. Specific error information may be passed through the payload interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>err_code</em>&nbsp;</td><td>type of notification </td></tr>
+ <tr><td valign=top><em>err_subcode</em>&nbsp;</td><td>more specific information about the reported error. </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a87" doxytag="libnet-functions.h::libnet_build_bgp4_open" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_bgp4_open </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>src_as</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hold_time</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bgp_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>opt_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) OPEN header. This is the first message sent by each side of a BGP connection. The optional parameters options should be constructed using the payload interface (see RFC 1771 for the options structures). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>protocol version (should be set to 4) </td></tr>
+ <tr><td valign=top><em>src_as</em>&nbsp;</td><td>Autonomous System of the sender </td></tr>
+ <tr><td valign=top><em>hold_time</em>&nbsp;</td><td>used to compute the maximum allowed time between the receipt of KEEPALIVE, and/or UPDATE messages by the sender </td></tr>
+ <tr><td valign=top><em>bgp_id</em>&nbsp;</td><td>BGP identifier of the sender </td></tr>
+ <tr><td valign=top><em>opt_len</em>&nbsp;</td><td>total length of the optional parameters field in bytes </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a88" doxytag="libnet-functions.h::libnet_build_bgp4_update" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_bgp4_update </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>unfeasible_rt_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>withdrawn_rt</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>total_path_attr_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>path_attributes</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>info_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>reachability_info</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) update header. Update messages are used to transfer routing information between BGP peers. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>unfeasible_rt_len</em>&nbsp;</td><td>indicates the length of the (next) "withdrawn routes" field in bytes </td></tr>
+ <tr><td valign=top><em>withdrawn_rt</em>&nbsp;</td><td>list of IP addresses prefixes for the routes that are being withdrawn; each IP address prefix is built as a 2-tuple &lt;length (1 byte), prefix (variable)&gt; </td></tr>
+ <tr><td valign=top><em>total_path_attr_len</em>&nbsp;</td><td>indicates the length of the (next) "path attributes" field in bytes </td></tr>
+ <tr><td valign=top><em>path_attributes</em>&nbsp;</td><td>each attribute is a 3-tuple &lt;type (2 bytes), length, value&gt; </td></tr>
+ <tr><td valign=top><em>info_len</em>&nbsp;</td><td>indicates the length of the (next) "network layer reachability information" field in bytes (needed for internal memory size calculation) </td></tr>
+ <tr><td valign=top><em>reachability_info</em>&nbsp;</td><td>2-tuples &lt;length (1 byte), prefix (variable)&gt;. </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a80" doxytag="libnet-functions.h::libnet_build_bootpv4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_bootpv4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>opcode</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>htype</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hlen</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hopcount</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>xid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>secs</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>yip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>gip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>chaddr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sname</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>file</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a37" doxytag="libnet-functions.h::libnet_build_cdp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_cdp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ttl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>value</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a Cisco Discovery Protocol (CDP) header. Cisco Systems designed CDP to aid in the network management of adjacent Cisco devices. The CDP protocol specifies data by using a type/length/value (TLV) setup. The first TLV can specified by using the functions type, length, and value arguments. To specify additional TLVs, the programmer could either use the payload interface or <a class="el" href="libnet-functions_8h.html#a78">libnet_build_data()</a> to construct them. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>CDP version </td></tr>
+ <tr><td valign=top><em>ttl</em>&nbsp;</td><td>time to live (time information should be cached by recipient) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of data contained in value </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>length of value arugment </td></tr>
+ <tr><td valign=top><em>value</em>&nbsp;</td><td>the CDP information string </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a78" doxytag="libnet-functions.h::libnet_build_data" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_data </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a generic libnet protocol header. This is useful for including an optional payload to a packet that might need to change repeatedly inside of a loop. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a79" doxytag="libnet-functions.h::libnet_build_dhcpv4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_dhcpv4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>opcode</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>htype</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hlen</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hopcount</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>xid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>secs</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>yip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>gip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>chaddr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>sname</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>file</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a58" doxytag="libnet-functions.h::libnet_build_dnsv4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_dnsv4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>h_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>num_q</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>num_anws_rr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>num_auth_rr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>num_addi_rr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 1035 version 4 DNS header. Additional DNS payload information should be specified using the payload interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>DNS packet id </td></tr>
+ <tr><td valign=top><em>flags</em>&nbsp;</td><td>control flags </td></tr>
+ <tr><td valign=top><em>num_q</em>&nbsp;</td><td>number of questions </td></tr>
+ <tr><td valign=top><em>num_anws_rr</em>&nbsp;</td><td>number of answer resource records </td></tr>
+ <tr><td valign=top><em>num_auth_rr</em>&nbsp;</td><td>number of authority resource records </td></tr>
+ <tr><td valign=top><em>num_addi_rr</em>&nbsp;</td><td>number of additional resource records </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a83" doxytag="libnet-functions.h::libnet_build_egre" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_egre </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fv</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Generic Routing Encapsulation (GRE - RFC 1701) is used to encapsulate any protocol. Hence, the IP part of the packet is usually referred as "delivery header". It is then followed by the GRE header and finally the encapsulated packet (IP or whatever). As GRE is very modular, the first GRE header describes the structure of the header, using bits and flag to specify which fields will be present in the header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>fv</em>&nbsp;</td><td>the 16 0 to 7: which fields are included in the header (checksum, seq. number, key, ...), bits 8 to 12: flag, bits 13 to 15: version. </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>which protocol is encapsulated (PPP, IP, ...) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill). </td></tr>
+ <tr><td valign=top><em>offset</em>&nbsp;</td><td>byte offset from the start of the routing field to the first byte of the SRE </td></tr>
+ <tr><td valign=top><em>key</em>&nbsp;</td><td>inserted by the encapsulator to authenticate the source </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>sequence number used by the receiver to sort the packets </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>size of the GRE packet </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a28" doxytag="libnet-functions.h::libnet_build_ethernet" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ethernet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an Ethernet header. The RFC 894 Ethernet II header is almost identical to the IEEE 802.3 header, with the exception that the field immediately following the source address holds the layer 3 protocol (as opposed to frame's length). You should only use this function when libnet is initialized with the LIBNET_LINK interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination ethernet address </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>source ethernet address </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol type </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a30" doxytag="libnet-functions.h::libnet_build_fddi" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_fddi </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fc</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dsap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ssap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>org</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a Fiber Distributed Data Interface (FDDI) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>fc</em>&nbsp;</td><td>class format and priority dst destination fddi address src source fddi address </td></tr>
+ <tr><td valign=top><em>dsap</em>&nbsp;</td><td>destination service access point </td></tr>
+ <tr><td valign=top><em>ssap</em>&nbsp;</td><td>source service access point </td></tr>
+ <tr><td valign=top><em>cf</em>&nbsp;</td><td>cf </td></tr>
+ <tr><td valign=top><em>org</em>&nbsp;</td><td>3 byte IEEE organizational code </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a82" doxytag="libnet-functions.h::libnet_build_gre" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_gre </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fv</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Generic Routing Encapsulation (GRE - RFC 1701) is used to encapsulate any protocol. Hence, the IP part of the packet is usually referred as "delivery header". It is then followed by the GRE header and finally the encapsulated packet (IP or whatever). As GRE is very modular, the first GRE header describes the structure of the header, using bits and flag to specify which fields will be present in the header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>fv</em>&nbsp;</td><td>the 16 0 to 7: which fields are included in the header (checksum, seq. number, key, ...), bits 8 to 12: flag, bits 13 to 15: version. </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>which protocol is encapsulated (PPP, IP, ...) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill). </td></tr>
+ <tr><td valign=top><em>offset</em>&nbsp;</td><td>byte offset from the start of the routing field to the first byte of the SRE </td></tr>
+ <tr><td valign=top><em>key</em>&nbsp;</td><td>inserted by the encapsulator to authenticate the source </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>sequence number used by the receiver to sort the packets </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>size of the GRE packet </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a85" doxytag="libnet-functions.h::libnet_build_gre_last_sre" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_gre_last_sre </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a84" doxytag="libnet-functions.h::libnet_build_gre_sre" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_gre_sre </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>af</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>offset</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>routing</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a38" doxytag="libnet-functions.h::libnet_build_icmpv4_echo" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_icmpv4_echo </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) echo request/reply header <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of ICMP packet (should be ICMP_ECHOREPLY or ICMP_ECHO) </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>code of ICMP packet (should be 0) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>identification number </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>packet sequence number </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a39" doxytag="libnet-functions.h::libnet_build_icmpv4_mask" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_icmpv4_mask </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>mask</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) IP netmask request/reply header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of ICMP packet (should be ICMP_MASKREQ or ICMP_MASKREPLY) </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>code of ICMP packet (should be 0) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>identification number </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>packet sequence number </td></tr>
+ <tr><td valign=top><em>mask</em>&nbsp;</td><td>subnet mask </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a41" doxytag="libnet-functions.h::libnet_build_icmpv4_redirect" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_icmpv4_redirect </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>gateway</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_tos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_frag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_ttl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_prot</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_check</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IP version 4 RFC 792 Internet Message Control Protocol (ICMP) redirect header. The additional arguments enable the application programmer to easily specify the original IP header values (the IP header of the packet that supposedly caused the ICMP redirect message in the first place). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of ICMP packet (should be ICMP_REDIRECT) </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>code of ICMP packet (should be one of the four redirect codes) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>orig_id</em>&nbsp;</td><td>original IP header identification </td></tr>
+ <tr><td valign=top><em>orig_frag</em>&nbsp;</td><td>original IP header fragmentation information </td></tr>
+ <tr><td valign=top><em>orig_ttl</em>&nbsp;</td><td>orginal IP header time to live </td></tr>
+ <tr><td valign=top><em>orig_prot</em>&nbsp;</td><td>original IP header protocol </td></tr>
+ <tr><td valign=top><em>orig_check</em>&nbsp;</td><td>original IP header checksum </td></tr>
+ <tr><td valign=top><em>orig_src</em>&nbsp;</td><td>original IP header source address </td></tr>
+ <tr><td valign=top><em>orig_dst</em>&nbsp;</td><td>original IP header destination address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a42" doxytag="libnet-functions.h::libnet_build_icmpv4_timeexceed" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_icmpv4_timeexceed </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_tos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_frag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_ttl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_prot</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_check</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) time exceeded header. The additional arguments enable the application programmer to easily specify the original IPv4 header values (the IP header of the packet that supposedly caused the ICMP time exceeded message in the first place). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of ICMP packet (should be ICMP_TIMXCEED) </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>code of ICMP packet (ICMP_TIMXCEED_INTRANS / ICMP_TIMXCEED_REASS) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>orig_id</em>&nbsp;</td><td>original IP header identification </td></tr>
+ <tr><td valign=top><em>orig_frag</em>&nbsp;</td><td>original IP header fragmentation information </td></tr>
+ <tr><td valign=top><em>orig_ttl</em>&nbsp;</td><td>orginal IP header time to live </td></tr>
+ <tr><td valign=top><em>orig_prot</em>&nbsp;</td><td>original IP header protocol </td></tr>
+ <tr><td valign=top><em>orig_check</em>&nbsp;</td><td>original IP header checksum </td></tr>
+ <tr><td valign=top><em>orig_src</em>&nbsp;</td><td>original IP header source address </td></tr>
+ <tr><td valign=top><em>orig_dst</em>&nbsp;</td><td>original IP header destination address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a43" doxytag="libnet-functions.h::libnet_build_icmpv4_timestamp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_icmpv4_timestamp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>n_time&nbsp;</td>
+ <td class="mdname" nowrap> <em>otime</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>n_time&nbsp;</td>
+ <td class="mdname" nowrap> <em>rtime</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>n_time&nbsp;</td>
+ <td class="mdname" nowrap> <em>ttime</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) timestamp request/reply header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of ICMP packet (should be ICMP_TSTAMP or ICMP_TSTAMPREPLY) </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>code of ICMP packet (should be 0) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>identification number </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>sequence number </td></tr>
+ <tr><td valign=top><em>otime</em>&nbsp;</td><td>originate timestamp </td></tr>
+ <tr><td valign=top><em>rtime</em>&nbsp;</td><td>receive timestamp </td></tr>
+ <tr><td valign=top><em>ttime</em>&nbsp;</td><td>transmit timestamp </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a40" doxytag="libnet-functions.h::libnet_build_icmpv4_unreach" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_icmpv4_unreach </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_tos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_frag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_ttl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_prot</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_check</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) unreachable header. The additional arguments enable the application programmer to easily specify the original IPv4 header values (the IP header of the packet that supposedly caused the ICMP unreachable message in the first place). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of ICMP packet (should be ICMP_UNREACH) </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>code of ICMP packet (should be one of the 16 unreachable codes) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>orig_id</em>&nbsp;</td><td>original IP header identification </td></tr>
+ <tr><td valign=top><em>orig_frag</em>&nbsp;</td><td>original IP header fragmentation information </td></tr>
+ <tr><td valign=top><em>orig_ttl</em>&nbsp;</td><td>orginal IP header time to live </td></tr>
+ <tr><td valign=top><em>orig_prot</em>&nbsp;</td><td>original IP header protocol </td></tr>
+ <tr><td valign=top><em>orig_check</em>&nbsp;</td><td>original IP header checksum </td></tr>
+ <tr><td valign=top><em>orig_src</em>&nbsp;</td><td>original IP header source address </td></tr>
+ <tr><td valign=top><em>orig_dst</em>&nbsp;</td><td>original IP header destination address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a44" doxytag="libnet-functions.h::libnet_build_igmp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_igmp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>code</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ip</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 1112 Internet Group Memebership Protocol (IGMP) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>packet type </td></tr>
+ <tr><td valign=top><em>code</em>&nbsp;</td><td>packet code (should be 0) </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>ip</em>&nbsp;</td><td>IPv4 address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a57" doxytag="libnet-functions.h::libnet_build_ipsec_ah" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipsec_ah </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>res</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>spi</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>auth</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an Internet Protocol Security Authentication header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>payload length </td></tr>
+ <tr><td valign=top><em>res</em>&nbsp;</td><td>reserved </td></tr>
+ <tr><td valign=top><em>spi</em>&nbsp;</td><td>security parameter index </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>sequence number </td></tr>
+ <tr><td valign=top><em>auth</em>&nbsp;</td><td>authentication data </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a56" doxytag="libnet-functions.h::libnet_build_ipsec_esp_ftr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipsec_esp_ftr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>auth</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an Internet Protocol Security Encapsulating Security Payload footer. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>padding length </td></tr>
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>auth</em>&nbsp;</td><td>authentication data </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a55" doxytag="libnet-functions.h::libnet_build_ipsec_esp_hdr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipsec_esp_hdr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>spi</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>iv</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an Internet Protocol Security Encapsulating Security Payload header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>spi</em>&nbsp;</td><td>security parameter index </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>ESP sequence number </td></tr>
+ <tr><td valign=top><em>iv</em>&nbsp;</td><td>initialization vector </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a45" doxytag="libnet-functions.h::libnet_build_ipv4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>tos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>frag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ttl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>prot</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a version 4 RFC 791 Internet Protocol (IP) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>total length of the IP packet including all subsequent data </td></tr>
+ <tr><td valign=top><em>tos</em>&nbsp;</td><td>type of service bits </td></tr>
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>IP identification number </td></tr>
+ <tr><td valign=top><em>frag</em>&nbsp;</td><td>fragmentation bits and offset </td></tr>
+ <tr><td valign=top><em>ttl</em>&nbsp;</td><td>time to live in the network </td></tr>
+ <tr><td valign=top><em>prot</em>&nbsp;</td><td>upper layer protocol </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>source IPv4 address (little endian) </td></tr>
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination IPv4 address (little endian) </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a46" doxytag="libnet-functions.h::libnet_build_ipv4_options" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv4_options </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>options</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>options_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an version 4 Internet Protocol (IP) options header. The function expects options to be a valid IP options string of size options_s, no larger than 40 bytes (the maximum size of an options string). The function checks to make sure that the preceding header is an IPv4 header and that the options string would not result in a packet larger than 65,535 bytes (IPMAXPACKET). The function counts up the number of 32-bit words in the options string and adjusts the IP header length value as necessary. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>options</em>&nbsp;</td><td>byte string of IP options </td></tr>
+ <tr><td valign=top><em>options_s</em>&nbsp;</td><td>length of options string </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a48" doxytag="libnet-functions.h::libnet_build_ipv6" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv6 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>tc</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>struct libnet_in6_addr&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>struct libnet_in6_addr&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a version 6 RFC 2460 Internet Protocol (IP) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>tc</em>&nbsp;</td><td>traffic class </td></tr>
+ <tr><td valign=top><em>fl</em>&nbsp;</td><td>flow label </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>total length of the IP packet </td></tr>
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>hl</em>&nbsp;</td><td>hop limit </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>source IPv6 address </td></tr>
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination IPv6 address </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a51" doxytag="libnet-functions.h::libnet_build_ipv6_destopts" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv6_destopts </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a version 6 RFC 2460 Internet Protocol (IP) destination options header. This function is special in that it uses the payload interface to include the options data. The application programmer will build an IPv6 options byte string and pass it to the function using the payload interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>length of the header in 8-byte octets not including the first 8 octets </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>options payload </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a49" doxytag="libnet-functions.h::libnet_build_ipv6_frag" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv6_frag </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>reserved</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>frag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a version 6 RFC 2460 Internet Protocol (IP) fragmentation header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>reserved</em>&nbsp;</td><td>unused value... OR IS IT! </td></tr>
+ <tr><td valign=top><em>frag</em>&nbsp;</td><td>fragmentation bits (ala ipv4) </td></tr>
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>packet identification </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a52" doxytag="libnet-functions.h::libnet_build_ipv6_hbhopts" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv6_hbhopts </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a version 6 RFC 2460 Internet Protocol (IP) hop by hop options header. This function is special in that it uses the payload interface to include the options data. The application programmer will build an IPv6 hop by hop options byte string and pass it to the function using the payload interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>length of the header in 8-byte octets not including the first 8 octets </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>options payload </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a50" doxytag="libnet-functions.h::libnet_build_ipv6_routing" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ipv6_routing </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nh</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rtype</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>segments</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a version 6 RFC 2460 Internet Protocol (IP) routing header. This function is special in that it uses the payload interface to include the "type-specific data"; that is the routing information. Most often this will be a number of 128-bit IPv6 addresses. The application programmer will build a byte string of IPv6 address and pass them to the function using the payload interface. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>nh</em>&nbsp;</td><td>next header </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>length of the header in 8-byte octets not including the first 8 octets routing header type </td></tr>
+ <tr><td valign=top><em>segments</em>&nbsp;</td><td>number of routing segments that follow </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload of routing information </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a54" doxytag="libnet-functions.h::libnet_build_isl" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_isl </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dhost</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>user</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>shost</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>snap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>vid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>index</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>reserved</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a Cisco Inter-Switch Link (ISL) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dhost</em>&nbsp;</td><td>destination address (should be 01:00:0c:00:00) </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of frame </td></tr>
+ <tr><td valign=top><em>user</em>&nbsp;</td><td>user defined data </td></tr>
+ <tr><td valign=top><em>shost</em>&nbsp;</td><td>source mac address </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>total length of the encapuslated packet less 18 bytes </td></tr>
+ <tr><td valign=top><em>snap</em>&nbsp;</td><td>SNAP information (0xaaaa03 + vendor code) </td></tr>
+ <tr><td valign=top><em>vid</em>&nbsp;</td><td>15 bit VLAN ID, 1 bit BPDU or CDP indicator </td></tr>
+ <tr><td valign=top><em>index</em>&nbsp;</td><td>port index </td></tr>
+ <tr><td valign=top><em>reserved</em>&nbsp;</td><td>used for FDDI and token ring </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a91" doxytag="libnet-functions.h::libnet_build_link" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_link </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>oui</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a link layer header for an initialized l. The function determines the proper link layer header format from how l was initialized. The function current supports Ethernet and Token Ring link layers. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>the destination MAC address </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>the source MAC address </td></tr>
+ <tr><td valign=top><em>oui</em>&nbsp;</td><td>Organizationally Unique Identifier (unused for Ethernet) </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>the upper layer protocol type </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a66" doxytag="libnet-functions.h::libnet_build_mpls" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_mpls </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>label</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>experimental</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ttl</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 3032 Multi-Protocol Label Switching (MPLS) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>label</em>&nbsp;</td><td>20-bit label value </td></tr>
+ <tr><td valign=top><em>experimental</em>&nbsp;</td><td>3-bit reserved field </td></tr>
+ <tr><td valign=top><em>bos</em>&nbsp;</td><td>1-bit bottom of stack identifier </td></tr>
+ <tr><td valign=top><em>ttl</em>&nbsp;</td><td>time to live </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a67" doxytag="libnet-functions.h::libnet_build_ntp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ntp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>leap_indicator</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>mode</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>stratum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>poll</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>precision</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>delay_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>delay_frac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dispersion_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dispersion_frac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>reference_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ref_ts_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ref_ts_frac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_ts_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>orig_ts_frac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rec_ts_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rec_ts_frac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmt_ts_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>xmt_ts_frac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 958 Network Time Protocol (NTP) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>leap_indicator</em>&nbsp;</td><td>the leap indicator </td></tr>
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>NTP protocol version </td></tr>
+ <tr><td valign=top><em>mode</em>&nbsp;</td><td>NTP mode </td></tr>
+ <tr><td valign=top><em>stratum</em>&nbsp;</td><td>stratum </td></tr>
+ <tr><td valign=top><em>poll</em>&nbsp;</td><td>polling interval </td></tr>
+ <tr><td valign=top><em>precision</em>&nbsp;</td><td>precision </td></tr>
+ <tr><td valign=top><em>delay_interval</em>&nbsp;</td><td>delay interval </td></tr>
+ <tr><td valign=top><em>delay_frac</em>&nbsp;</td><td>delay fraction </td></tr>
+ <tr><td valign=top><em>dispersion_int</em>&nbsp;</td><td>dispersion interval </td></tr>
+ <tr><td valign=top><em>dispersion_frac</em>&nbsp;</td><td>dispersion fraction </td></tr>
+ <tr><td valign=top><em>reference_id</em>&nbsp;</td><td>reference id </td></tr>
+ <tr><td valign=top><em>ref_ts_int</em>&nbsp;</td><td>reference timestamp integer </td></tr>
+ <tr><td valign=top><em>ref_ts_frac</em>&nbsp;</td><td>reference timestamp fraction </td></tr>
+ <tr><td valign=top><em>orig_ts_int</em>&nbsp;</td><td>original timestamp integer </td></tr>
+ <tr><td valign=top><em>orig_ts_frac</em>&nbsp;</td><td>original timestamp fraction </td></tr>
+ <tr><td valign=top><em>rec_ts_int</em>&nbsp;</td><td>receiver timestamp integer </td></tr>
+ <tr><td valign=top><em>rec_ts_frac</em>&nbsp;</td><td>reciever timestamp fraction </td></tr>
+ <tr><td valign=top><em>xmt_ts_int</em>&nbsp;</td><td>transmit timestamp integer </td></tr>
+ <tr><td valign=top><em>xmt_ts_frac</em>&nbsp;</td><td>transmit timestamp integer </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a68" doxytag="libnet-functions.h::libnet_build_ospfv2" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rtr_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>area_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>autype</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a70" doxytag="libnet-functions.h::libnet_build_ospfv2_dbd" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_dbd </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dgram_len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>opts</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>seqnum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a69" doxytag="libnet-functions.h::libnet_build_ospfv2_hello" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_hello </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>netmask</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>interval</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>opts</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>priority</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>dead_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>des_rtr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bkup_rtr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>neighbor</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a73" doxytag="libnet-functions.h::libnet_build_ospfv2_lsa" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsa </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>age</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>opts</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>lsid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>advrtr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>seqnum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a77" doxytag="libnet-functions.h::libnet_build_ospfv2_lsa_as" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsa_as </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nmask</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>metric</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fwdaddr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>tag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a75" doxytag="libnet-functions.h::libnet_build_ospfv2_lsa_net" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsa_net </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nmask</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>rtrid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a74" doxytag="libnet-functions.h::libnet_build_ospfv2_lsa_rtr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsa_rtr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>num</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>data</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>tos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>metric</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a76" doxytag="libnet-functions.h::libnet_build_ospfv2_lsa_sum" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsa_sum </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>nmask</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>metric</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>tos</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a71" doxytag="libnet-functions.h::libnet_build_ospfv2_lsr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>lsid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>advrtr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a72" doxytag="libnet-functions.h::libnet_build_ospfv2_lsu" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_ospfv2_lsu </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int&nbsp;</td>
+ <td class="mdname" nowrap> <em>num</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a59" doxytag="libnet-functions.h::libnet_build_rip" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_rip </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cmd</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rd</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>af</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rt</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>addr</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>mask</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>next_hop</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>metric</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a Routing Information Protocol header (RFCs 1058 and 2453). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>cmd</em>&nbsp;</td><td>command </td></tr>
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>protocol version </td></tr>
+ <tr><td valign=top><em>rd</em>&nbsp;</td><td>version one: 0, version two: routing domain </td></tr>
+ <tr><td valign=top><em>af</em>&nbsp;</td><td>address family </td></tr>
+ <tr><td valign=top><em>rt</em>&nbsp;</td><td>version one: 0, version two: route tag </td></tr>
+ <tr><td valign=top><em>addr</em>&nbsp;</td><td>IPv4 address </td></tr>
+ <tr><td valign=top><em>mask</em>&nbsp;</td><td>version one: 0, version two: subnet mask </td></tr>
+ <tr><td valign=top><em>next_hop</em>&nbsp;</td><td>version one: 0, version two: next hop address </td></tr>
+ <tr><td valign=top><em>metric</em>&nbsp;</td><td>routing metric </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a60" doxytag="libnet-functions.h::libnet_build_rpc_call" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_rpc_call </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>rm</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>xid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>prog_num</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>prog_vers</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>procedure</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cflavor</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>clength</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>cdata</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>vflavor</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>vlength</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>vdata</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an Remote Procedure Call (Version 2) Call message header as specified in RFC 1831. This builder provides the option for specifying the record marking which is required when used with streaming protocols (TCP). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>rm</em>&nbsp;</td><td>record marking indicating the position in a stream, 0 otherwise </td></tr>
+ <tr><td valign=top><em>xid</em>&nbsp;</td><td>transaction identifier used to link calls and replies </td></tr>
+ <tr><td valign=top><em>prog_num</em>&nbsp;</td><td>remote program specification typically between 0 - 1fffffff </td></tr>
+ <tr><td valign=top><em>prog_vers</em>&nbsp;</td><td>remote program version specification </td></tr>
+ <tr><td valign=top><em>procedure</em>&nbsp;</td><td>procedure to be performed by remote program </td></tr>
+ <tr><td valign=top><em>cflavor</em>&nbsp;</td><td>authentication credential type </td></tr>
+ <tr><td valign=top><em>clength</em>&nbsp;</td><td>credential length (should be 0) </td></tr>
+ <tr><td valign=top><em>cdata</em>&nbsp;</td><td>opaque credential data (currently unused) </td></tr>
+ <tr><td valign=top><em>vflavor</em>&nbsp;</td><td>authentication verifier type </td></tr>
+ <tr><td valign=top><em>vlength</em>&nbsp;</td><td>verifier length (should be 0) </td></tr>
+ <tr><td valign=top><em>vdata</em>&nbsp;</td><td>opaque verifier data (currently unused) </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a90" doxytag="libnet-functions.h::libnet_build_sebek" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_sebek </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>magic</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>counter</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>time_sec</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>time_usec</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>pid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>uid</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fd</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cmd</em>[SEBEK_CMD_LENGTH], </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>length</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a Sebek header. The Sebek protocol was designed by the Honeynet Project as a transport mechanism for post-intrusion forensic data. More information may be found here: <a href="http://www.honeynet.org/papers/sebek.pdf.">http://www.honeynet.org/papers/sebek.pdf.</a><p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>magic</em>&nbsp;</td><td>identify packets that should be hidden </td></tr>
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>protocol version, currently 1 </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>type of record (read data is type 0, write data is type 1) </td></tr>
+ <tr><td valign=top><em>counter</em>&nbsp;</td><td>PDU counter used to identify when packet are lost </td></tr>
+ <tr><td valign=top><em>time_sec</em>&nbsp;</td><td>seconds since EPOCH according to the honeypot </td></tr>
+ <tr><td valign=top><em>time_usec</em>&nbsp;</td><td>residual microseconds </td></tr>
+ <tr><td valign=top><em>pid</em>&nbsp;</td><td>PID </td></tr>
+ <tr><td valign=top><em>uid</em>&nbsp;</td><td>UID </td></tr>
+ <tr><td valign=top><em>fd</em>&nbsp;</td><td>FD </td></tr>
+ <tr><td valign=top><em>cmd[SEBEK_CMD_LENGTH]</em>&nbsp;</td><td>12 first characters of the command </td></tr>
+ <tr><td valign=top><em>length</em>&nbsp;</td><td>length in bytes of the PDU's body </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a61" doxytag="libnet-functions.h::libnet_build_stp_conf" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_stp_conf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bpdu_type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>flags</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>root_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>root_pc</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>bridge_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>port_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>message_age</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>max_age</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>hello_time</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>f_delay</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.1d Spanning Tree Protocol (STP) configuration header. STP frames are usually encapsulated inside of an 802.2 + 802.3 frame combination. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>protocol id </td></tr>
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>protocol version </td></tr>
+ <tr><td valign=top><em>bpdu_type</em>&nbsp;</td><td>bridge protocol data unit type </td></tr>
+ <tr><td valign=top><em>flags</em>&nbsp;</td><td>flags </td></tr>
+ <tr><td valign=top><em>root_id</em>&nbsp;</td><td>root id </td></tr>
+ <tr><td valign=top><em>root_pc</em>&nbsp;</td><td>root path cost </td></tr>
+ <tr><td valign=top><em>bridge_id</em>&nbsp;</td><td>bridge id </td></tr>
+ <tr><td valign=top><em>port_id</em>&nbsp;</td><td>port id </td></tr>
+ <tr><td valign=top><em>message_age</em>&nbsp;</td><td>message age </td></tr>
+ <tr><td valign=top><em>max_age</em>&nbsp;</td><td>max age </td></tr>
+ <tr><td valign=top><em>hello_time</em>&nbsp;</td><td>hello time </td></tr>
+ <tr><td valign=top><em>f_delay</em>&nbsp;</td><td>forward delay </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a62" doxytag="libnet-functions.h::libnet_build_stp_tcn" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_stp_tcn </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>bpdu_type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an IEEE 802.1d Spanning Tree Protocol (STP) topology change notification header. STP frames are usually encapsulated inside of an 802.2 + 802.3 frame combination. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>id</em>&nbsp;</td><td>protocol id </td></tr>
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>protocol version </td></tr>
+ <tr><td valign=top><em>bpdu_type</em>&nbsp;</td><td>bridge protocol data unit type </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a34" doxytag="libnet-functions.h::libnet_build_tcp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_tcp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dp</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>seq</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ack</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>control</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>win</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>urg</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 793 Transmission Control Protocol (TCP) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>sp</em>&nbsp;</td><td>source port </td></tr>
+ <tr><td valign=top><em>dp</em>&nbsp;</td><td>destination port </td></tr>
+ <tr><td valign=top><em>seq</em>&nbsp;</td><td>sequence number </td></tr>
+ <tr><td valign=top><em>ack</em>&nbsp;</td><td>acknowledgement number </td></tr>
+ <tr><td valign=top><em>control</em>&nbsp;</td><td>control flags </td></tr>
+ <tr><td valign=top><em>win</em>&nbsp;</td><td>window size </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>urg</em>&nbsp;</td><td>urgent pointer len total length of the TCP packet (for checksum calculation) </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a35" doxytag="libnet-functions.h::libnet_build_tcp_options" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_tcp_options </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>options</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>options_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 793 Transmission Control Protocol (TCP) options header. The function expects options to be a valid TCP options string of size options_s, which is no larger than 40 bytes (the maximum size of an options string). The function checks to ensure that the packet consists of a TCP header preceded by an IPv4 header, and that the addition of the options string would not result in a packet larger than 65,535 bytes (IPMAXPACKET). The function counts up the number of 32-bit words in the options string and adjusts the TCP header length value as necessary. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>options</em>&nbsp;</td><td>byte string of TCP options </td></tr>
+ <tr><td valign=top><em>options_s</em>&nbsp;</td><td>length of options string </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a63" doxytag="libnet-functions.h::libnet_build_token_ring" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_token_ring </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ac</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>fc</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>dst</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>src</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dsap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ssap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>cf</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>org</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds a token ring header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>ac</em>&nbsp;</td><td>access control </td></tr>
+ <tr><td valign=top><em>fc</em>&nbsp;</td><td>frame control </td></tr>
+ <tr><td valign=top><em>dst</em>&nbsp;</td><td>destination address </td></tr>
+ <tr><td valign=top><em>src</em>&nbsp;</td><td>source address </td></tr>
+ <tr><td valign=top><em>dsap</em>&nbsp;</td><td>destination service access point </td></tr>
+ <tr><td valign=top><em>ssap</em>&nbsp;</td><td>source service access point </td></tr>
+ <tr><td valign=top><em>cf</em>&nbsp;</td><td>control field </td></tr>
+ <tr><td valign=top><em>oui</em>&nbsp;</td><td>Organizationally Unique Identifier </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>upper layer protocol type </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a36" doxytag="libnet-functions.h::libnet_build_udp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_udp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sp</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>dp</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 768 User Datagram Protocol (UDP) header. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>sp</em>&nbsp;</td><td>source port </td></tr>
+ <tr><td valign=top><em>dp</em>&nbsp;</td><td>destination port </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>total length of the UDP packet </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a65" doxytag="libnet-functions.h::libnet_build_vrrp" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_ptag_t libnet_build_vrrp </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>version</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>vrouter_id</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>priority</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ip_count</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>auth_type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>advert_int</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>sum</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>payload_s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Builds an RFC 2338 Virtual Router Redundacy Protool (VRRP) header. Use the payload interface to specify address and autthentication information. To build a "legal" packet, the destination IPv4 address should be the multicast * address 224.0.0.18, the IP TTL should be set to 255, and the IP protocol should be set to 112. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>version</em>&nbsp;</td><td>VRRP version (should be 2) </td></tr>
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>VRRP packet type (should be 1 -- ADVERTISEMENT) </td></tr>
+ <tr><td valign=top><em>vrouter_id</em>&nbsp;</td><td>virtual router identification </td></tr>
+ <tr><td valign=top><em>priority</em>&nbsp;</td><td>priority (higher numbers indicate higher priority) </td></tr>
+ <tr><td valign=top><em>ip_count</em>&nbsp;</td><td>number of IPv4 addresses contained in this advertisement </td></tr>
+ <tr><td valign=top><em>auth_type</em>&nbsp;</td><td>type of authentication (0, 1, 2 -- see RFC) </td></tr>
+ <tr><td valign=top><em>advert_int</em>&nbsp;</td><td>interval between advertisements </td></tr>
+ <tr><td valign=top><em>sum</em>&nbsp;</td><td>checksum (0 for libnet to autofill) </td></tr>
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a3" doxytag="libnet-functions.h::libnet_clear_packet" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_clear_packet </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Clears the current packet referenced and frees all pblocks. Should be called when the programmer want to send a completely new packet of a different type using the same context. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a102" doxytag="libnet-functions.h::libnet_cq_add" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_cq_add </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>label</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Adds a new context to the libnet context queue. If no queue exists, this function will create the queue and add the specified libnet context as the first entry on the list. The functions checks to ensure niether l nor label are NULL, and that label doesn't refer to an existing context already in the queue. Additionally, l should refer to a libnet context previously initialized with a call to <a class="el" href="libnet-functions_8h.html#a1">libnet_init()</a>. If the context queue in write locked, this function will fail. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>label</em>&nbsp;</td><td>a canonical name given to recognize the new context, no longer than LIBNET_LABEL_SIZE </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a107" doxytag="libnet-functions.h::libnet_cq_destroy" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_cq_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Destroys the entire context queue, calling <a class="el" href="libnet-functions_8h.html#a2">libnet_destroy()</a> on each member context. </td>
+ </tr>
+</table>
+<a class="anchor" name="a106" doxytag="libnet-functions.h::libnet_cq_find_by_label" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_t* libnet_cq_find_by_label </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>label</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Locates a libnet context from the queue, indexed by a canonical label. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>label</em>&nbsp;</td><td>canonical label of the libnet context to retrieve </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the expected libnet context, NULL on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a105" doxytag="libnet-functions.h::libnet_cq_getlabel" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int8_t* libnet_cq_getlabel </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Returns the canonical label associated with the context. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>pointer to the libnet context's label </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a108" doxytag="libnet-functions.h::libnet_cq_head" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_t* libnet_cq_head </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Intiailizes the interator interface and set a write lock on the entire queue. This function is intended to be called just prior to interating through the entire list of contexts (with the probable intent of inject a series of packets in rapid succession). This function is often used as per the following:<p>
+for (l = <a class="el" href="libnet-functions_8h.html#a108">libnet_cq_head()</a>; <a class="el" href="libnet-functions_8h.html#a109">libnet_cq_last()</a>; l = <a class="el" href="libnet-functions_8h.html#a110">libnet_cq_next()</a>) { ... }<p>
+Much of the time, the application programmer will use the iterator as it is written above; as such, libnet provides a macro to do exactly that, <a class="el" href="libnet-macros_8h.html#a33">for_each_context_in_cq(l)</a>. Warning: do not call the iterator more than once in a single loop. <dl compact><dt><b>Returns:</b></dt><dd>the head of the context queue </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a109" doxytag="libnet-functions.h::libnet_cq_last" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_cq_last </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Check whether the iterator is at the last context in the queue. <dl compact><dt><b>Returns:</b></dt><dd>1 if at the end of the context queue, 0 otherwise </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a110" doxytag="libnet-functions.h::libnet_cq_next" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_t* libnet_cq_next </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Get next context from the context queue. the next context from the context queue </td>
+ </tr>
+</table>
+<a class="anchor" name="a103" doxytag="libnet-functions.h::libnet_cq_remove" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_t* libnet_cq_remove </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Removes a specified context from the libnet context queue by specifying the libnet context pointer. Note the function will remove the specified context from the context queue and cleanup internal memory from the queue, it is up to the application programmer to free the returned libnet context with a call to <a class="el" href="libnet-functions_8h.html#a2">libnet_destroy()</a>. Also, as it is not necessary to keep the libnet context pointer when initially adding it to the context queue, most application programmers will prefer to refer to entries on the context queue by canonical name and would use <a class="el" href="libnet-functions_8h.html#a104">libnet_cq_remove_by_label()</a>. If the context queue is write locked, this function will fail. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the pointer to the removed libnet context, NULL on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a104" doxytag="libnet-functions.h::libnet_cq_remove_by_label" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_t* libnet_cq_remove_by_label </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">char *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>label</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Removes a specified context from the libnet context queue by specifying the canonical name. Note the function will remove the specified context from the context queue and cleanup internal memory from the queue, it is up to the application programmer to free the returned libnet context with a call to <a class="el" href="libnet-functions_8h.html#a2">libnet_destroy()</a>. If the context queue is write locked, this function will fail. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>label</em>&nbsp;</td><td>canonical name of the context to remove </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the pointer to the removed libnet context, NULL on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a111" doxytag="libnet-functions.h::libnet_cq_size" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_cq_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Context Queue] Function returns the number of libnet contexts that are in the queue. <dl compact><dt><b>Returns:</b></dt><dd>the number of libnet contexts currently in the queue </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a2" doxytag="libnet-functions.h::libnet_destroy" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_destroy </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Shuts down the libnet session referenced by l. It closes the network interface and frees all internal memory structures associated with l. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a112" doxytag="libnet-functions.h::libnet_diag_dump_context" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_diag_dump_context </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Diagnostic] Prints the contents of the given context. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a115" doxytag="libnet-functions.h::libnet_diag_dump_hex" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_diag_dump_hex </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>packet</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int32_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>swap</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>FILE *&nbsp;</td>
+ <td class="mdname" nowrap> <em>stream</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Diagnostic] Function prints the contents of the supplied buffer to the supplied stream pointer. Will swap endianness based disposition of mode variable. Useful to be used in conjunction with the advanced interface and a culled packet. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>packet</em>&nbsp;</td><td>the packet to print </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>length of the packet in bytes </td></tr>
+ <tr><td valign=top><em>swap</em>&nbsp;</td><td>1 to swap byte order, 0 to not </td></tr>
+ <tr><td valign=top><em>stream</em>&nbsp;</td><td>a stream pointer to print to </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a113" doxytag="libnet-functions.h::libnet_diag_dump_pblock" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_diag_dump_pblock </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Diagnostic] Prints the contents of every pblock. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a114" doxytag="libnet-functions.h::libnet_diag_dump_pblock_type" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char* libnet_diag_dump_pblock_type </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int8_t&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>type</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+[Diagnostic] Returns the canonical name of the pblock type. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>type</em>&nbsp;</td><td>pblock type </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a string representing the pblock type type or "unknown" for an unknown value </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a96" doxytag="libnet-functions.h::libnet_get_hwaddr" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> struct libnet_ether_addr* libnet_get_hwaddr </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the MAC address for the device libnet was initialized with. If libnet was initialized without a device the function will attempt to find one. If the function fails and returns NULL a call to <a class="el" href="libnet-functions_8h.html#a9">libnet_geterror()</a> will tell you why. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the MAC address or NULL </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a94" doxytag="libnet-functions.h::libnet_get_ipaddr4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_get_ipaddr4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the IP address for the device libnet was initialized with. If libnet was initialized without a device (in raw socket mode) the function will attempt to find one. If the function fails and returns -1 a call to libnet_geterrror() will tell you why. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a big endian IP address suitable for use in a libnet_build function or -1 </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a95" doxytag="libnet-functions.h::libnet_get_ipaddr6" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> struct libnet_in6_addr libnet_get_ipaddr6 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+This function is not yet implemented under IPv6. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>well, nothing yet </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a12" doxytag="libnet-functions.h::libnet_get_prand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_get_prand </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>mod</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Generates an unsigned psuedo-random value within the range specified by mod. LIBNET_PR2 0 - 1 LIBNET_PR8 0 - 255 LIBNET_PR16 0 - 32767 LIBNET_PRu16 0 - 65535 LIBNET_PR32 0 - 2147483647 LIBNET_PRu32 0 - 4294967295<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>mod</em>&nbsp;</td><td>one the of LIBNET_PR* constants </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a6" doxytag="libnet-functions.h::libnet_getdevice" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int8_t* libnet_getdevice </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the canonical name of the device used for packet injection. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the canonical name of the device used for packet injection. Note it can be NULL without being an error. </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a9" doxytag="libnet-functions.h::libnet_geterror" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char* libnet_geterror </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the last error set inside of the referenced libnet context. This function should be called anytime a function fails or an error condition is detected inside of libnet. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>an error string or NULL if no error has occured </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a5" doxytag="libnet-functions.h::libnet_getfd" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_getfd </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the FILENO of the file descriptor used for packet injection. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the file number of the file descriptor used for packet injection </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a81" doxytag="libnet-functions.h::libnet_getgre_length" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_getgre_length </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">u_int16_t&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>fv</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>payload</em>&nbsp;</td><td>optional payload or NULL </td></tr>
+ <tr><td valign=top><em>payload_s</em>&nbsp;</td><td>payload length or 0 </td></tr>
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>protocol tag to modify an existing header, 0 to build a new one </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>protocol tag value on success, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a10" doxytag="libnet-functions.h::libnet_getpacket_size" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_getpacket_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the sum of the size of all of the pblocks inside of l (this should be the resuling packet size). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the size of the packet in l </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a7" doxytag="libnet-functions.h::libnet_getpbuf" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int8_t* libnet_getpbuf </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the pblock buffer contents for the specified ptag; a subsequent call to <a class="el" href="libnet-functions_8h.html#a8">libnet_getpbuf_size()</a> should be made to determine the size of the buffer. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>the ptag reference number </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a pointer to the pblock buffer or NULL on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a8" doxytag="libnet-functions.h::libnet_getpbuf_size" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_getpbuf_size </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the pblock buffer size for the specified ptag; a previous call to <a class="el" href="libnet-functions_8h.html#a7">libnet_getpbuf()</a> should be made to pull the actual buffer contents. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>the ptag reference number </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the size of the pblock buffer </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a97" doxytag="libnet-functions.h::libnet_hex_aton" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int8_t* libnet_hex_aton </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int8_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>s</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int *&nbsp;</td>
+ <td class="mdname" nowrap> <em>len</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Takes a colon separated hexidecimal address (from the command line) and returns a bytestring suitable for use in a libnet_build function. Note this function performs an implicit malloc and the return value should be freed after its use. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>s</em>&nbsp;</td><td>the string to be parsed </td></tr>
+ <tr><td valign=top><em>len</em>&nbsp;</td><td>the resulting size of the returned byte string </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a byte string or NULL on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a1" doxytag="libnet-functions.h::libnet_init" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> libnet_t* libnet_init </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">int&nbsp;</td>
+ <td class="mdname" nowrap> <em>injection_type</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>device</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>err_buf</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Creates the libnet environment. It initializes the library and returns a libnet context. If the injection_type is LIBNET_LINK or LIBNET_LINK_ADV, the function initializes the injection primitives for the link-layer interface enabling the application programmer to build packets starting at the data-link layer (which also provides more granular control over the IP layer). If libnet uses the link-layer and the device argument is non-NULL, the function attempts to use the specified network device for packet injection. This is either a canonical string that references the device (such as "eth0" for a 100MB Ethernet card on Linux or "fxp0" for a 100MB Ethernet card on OpenBSD) or the dots and decimals representation of the device's IP address (192.168.0.1). If device is NULL, libnet attempts to find a suitable device to use. If the injection_type is LIBNET_RAW4 or LIBNET_RAW4_ADV, the function initializes the injection primitives for the IPv4 raw socket interface. The final argument, err_buf, should be a buffer of size LIBNET_ERRBUF_SIZE and holds an error message if the function fails. This function requires root privileges to execute successfully. Upon success, the function returns a valid libnet context for use in later function calls; upon failure, the function returns NULL. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>injection_type</em>&nbsp;</td><td>packet injection type (LIBNET_LINK, LIBNET_LINK_ADV, LIBNET_RAW4, LIBNET_RAW4_ADV, LIBNET_RAW6, LIBNET_RAW6_ADV) </td></tr>
+ <tr><td valign=top><em>device</em>&nbsp;</td><td>the interface to use (NULL and libnet will choose one) </td></tr>
+ <tr><td valign=top><em>err_buf</em>&nbsp;</td><td>will contain an error message on failure </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>libnet context ready for use or NULL on error. </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a15" doxytag="libnet-functions.h::libnet_name2addr4" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int32_t libnet_name2addr4 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>host_name</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>use_name</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Takes a dotted decimal string or a canonical DNS name and returns a network byte ordered IPv4 address. This may incur a DNS lookup if mode is set to LIBNET_RESOLVE and host_name refers to a canonical DNS name. If mode is set to LIBNET_DONT_RESOLVE no DNS lookup will occur. The function can fail if DNS lookup fails or if mode is set to LIBNET_DONT_RESOLVE and host_name refers to a canonical DNS name. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>host_name</em>&nbsp;</td><td>pointer to a string containing a presentation format host name </td></tr>
+ <tr><td valign=top><em>use_name</em>&nbsp;</td><td>LIBNET_RESOLVE or LIBNET_DONT_RESOLVE </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>network byte ordered IPv4 address or -1 (2^32 - 1) on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a16" doxytag="libnet-functions.h::libnet_name2addr6" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> struct libnet_in6_addr libnet_name2addr6 </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>host_name</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int8_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>use_name</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Takes a dotted decimal string or a canonical DNS name and returns a network byte ordered IPv6 address. This may incur a DNS lookup if mode is set to LIBNET_RESOLVE and host_name refers to a canonical DNS name. If mode is set to LIBNET_DONT_RESOLVE no DNS lookup will occur. The function can fail if DNS lookup fails or if mode is set to LIBNET_DONT_RESOLVE and host_name refers to a canonical DNS name. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>host_name</em>&nbsp;</td><td>pointer to a string containing a presentation format host name </td></tr>
+ <tr><td valign=top><em>use_name</em>&nbsp;</td><td>LIBNET_RESOLVE or LIBNET_DONT_RESOLVE </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>network byte ordered IPv6 address structure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a20" doxytag="libnet-functions.h::libnet_plist_chain_dump" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_plist_chain_dump </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_plist_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>plist</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Runs through the port list and prints the contents of the port list chain list to stdout. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>plist</em>&nbsp;</td><td>previously created portlist </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a21" doxytag="libnet-functions.h::libnet_plist_chain_dump_string" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> char* libnet_plist_chain_dump_string </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_plist_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>plist</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Runs through the port list and prints the contents of the port list chain list to string. This function uses strdup and is not re-entrant. It also has a memory leak and should not really be used. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>plist</em>&nbsp;</td><td>previously created portlist </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>a printable string containing the port list contents on success NULL on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a22" doxytag="libnet-functions.h::libnet_plist_chain_free" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_plist_chain_free </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_plist_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>plist</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Frees all memory associated with port list chain. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>plist</em>&nbsp;</td><td>previously created portlist </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a18" doxytag="libnet-functions.h::libnet_plist_chain_new" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_plist_chain_new </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_plist_t **&nbsp;</td>
+ <td class="mdname" nowrap> <em>plist</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>token_list</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Creates a new port list. Port list chains are useful for TCP and UDP-based applications that need to send packets to a range of ports (contiguous or otherwise). The port list chain, which token_list points to, should contain a series of int8_tacters from the following list: "0123456789,-" of the general format "x - y, z", where "xyz" are port numbers between 0 and 65,535. plist points to the front of the port list chain list for use in further libnet_plist_chain() functions. Upon success, the function returns 1. Upon failure, the function returns -1 and <a class="el" href="libnet-functions_8h.html#a9">libnet_geterror()</a> can tell you why. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>plist</em>&nbsp;</td><td>if successful, will refer to the portlist, if not, NULL </td></tr>
+ <tr><td valign=top><em>token_list</em>&nbsp;</td><td>string containing the port list primitive </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a19" doxytag="libnet-functions.h::libnet_plist_chain_next_pair" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_plist_chain_next_pair </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_plist_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>plist</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>bport</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>u_int16_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>eport</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Returns the next port list chain pair from the port list chain plist. bport and eport contain the starting port number and ending port number, respectively. Upon success, the function returns 1 and fills in the port variables; however, if the list is empty, the function returns 0 and sets both port variables to 0. Upon failure, the function returns -1. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>plist</em>&nbsp;</td><td>previously created portlist </td></tr>
+ <tr><td valign=top><em>bport</em>&nbsp;</td><td>will contain the beginning port number or 0 </td></tr>
+ <tr><td valign=top><em>eport</em>&nbsp;</td><td>will contain the ending port number or 0 </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, 0 if empty, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a11" doxytag="libnet-functions.h::libnet_seed_prand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_seed_prand </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Seeds the psuedo-random number generator. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a4" doxytag="libnet-functions.h::libnet_stats" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void libnet_stats </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>struct libnet_stats *&nbsp;</td>
+ <td class="mdname" nowrap> <em>ls</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Fills in a libnet_stats structure with packet injection statistics (packets written, bytes written, packet sending errors). <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ls</em>&nbsp;</td><td>pointer to a libnet statistics structure </td></tr>
+ </table>
+</dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a13" doxytag="libnet-functions.h::libnet_toggle_checksum" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_toggle_checksum </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname" nowrap> <em>l</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>libnet_ptag_t&nbsp;</td>
+ <td class="mdname" nowrap> <em>ptag</em>, </td>
+ </tr>
+ <tr>
+ <td></td>
+ <td></td>
+ <td class="md" nowrap>int&nbsp;</td>
+ <td class="mdname" nowrap> <em>mode</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+If a given protocol header is built with the checksum field set to "0", by default libnet will calculate the header checksum prior to injection. If the header is set to any other value, by default libnet will not calculate the header checksum. To over-ride this behavior, use <a class="el" href="libnet-functions_8h.html#a13">libnet_toggle_checksum()</a>. Switches auto-checksumming on or off for the specified ptag. If mode is set to LIBNET_ON, libnet will mark the specificed ptag to calculate a checksum for the ptag prior to injection. This assumes that the ptag refers to a protocol that has a checksum field. If mode is set to LIBNET_OFF, libnet will clear the checksum flag and no checksum will be computed prior to injection. This assumes that the programmer will assign a value (zero or otherwise) to the checksum field. Often times this is useful if a precomputed checksum or some other predefined value is going to be used. Note that when libnet is initialized with LIBNET_RAW4, the IPv4 header checksum will always be computed by the kernel prior to injection, regardless of what the programmer sets. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ <tr><td valign=top><em>ptag</em>&nbsp;</td><td>the ptag reference number </td></tr>
+ <tr><td valign=top><em>mode</em>&nbsp;</td><td>LIBNET_ON or LIBNET_OFF </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>1 on success, -1 on failure </dd></dl>
+ </td>
+ </tr>
+</table>
+<a class="anchor" name="a93" doxytag="libnet-functions.h::libnet_write" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> int libnet_write </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">libnet_t *&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>l</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Writes a prebuilt packet to the network. The function assumes that l was previously initialized (via a call to <a class="el" href="libnet-functions_8h.html#a1">libnet_init()</a>) and that a previously constructed packet has been built inside this context (via one or more calls to the libnet_build* family of functions) and is ready to go. Depending on how libnet was initialized, the function will write the packet to the wire either via the raw or link layer interface. The function will also bump up the internal libnet stat counters which are retrievable via <a class="el" href="libnet-functions_8h.html#a4">libnet_stats()</a>. <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>l</em>&nbsp;</td><td>pointer to a libnet context </td></tr>
+ </table>
+</dl>
+<dl compact><dt><b>Returns:</b></dt><dd>the number of bytes written, -1 on error </dd></dl>
+ </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-headers_8h-source.html b/libnet/doc/html/libnet-headers_8h-source.html
new file mode 100644
index 0000000..1aaa4d1
--- /dev/null
+++ b/libnet/doc/html/libnet-headers_8h-source.html
@@ -0,0 +1,1655 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-headers.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-headers.h</h1><a href="libnet-headers_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet-headers.h,v 1.13 2004/03/01 20:26:12 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet-headers.h - Network routine library headers header file</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00011 <span class="comment"> * are met:</span>
+00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00017 <span class="comment"> *</span>
+00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00028 <span class="comment"> * SUCH DAMAGE.</span>
+00029 <span class="comment"> *</span>
+00030 <span class="comment"> */</span>
+00031
+00032 <span class="preprocessor">#ifndef __LIBNET_HEADERS_H</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_HEADERS_H</span>
+00034 <span class="preprocessor"></span>
+<a name="l00042"></a><a class="code" href="libnet-headers_8h.html#a0">00042</a> <span class="preprocessor">#define LIBNET_802_1Q_H 0x12 </span>
+<a name="l00043"></a><a class="code" href="libnet-headers_8h.html#a1">00043</a> <span class="preprocessor">#define LIBNET_802_1X_H 0x04 </span>
+<a name="l00044"></a><a class="code" href="libnet-headers_8h.html#a2">00044</a> <span class="preprocessor">#define LIBNET_802_2_H 0x03 </span>
+<a name="l00045"></a><a class="code" href="libnet-headers_8h.html#a3">00045</a> <span class="preprocessor">#define LIBNET_802_2SNAP_H 0x08 </span>
+<a name="l00046"></a><a class="code" href="libnet-headers_8h.html#a4">00046</a> <span class="preprocessor">#define LIBNET_802_3_H 0x0e </span>
+<a name="l00047"></a><a class="code" href="libnet-headers_8h.html#a5">00047</a> <span class="preprocessor">#define LIBNET_ARP_H 0x08 </span>
+<a name="l00048"></a><a class="code" href="libnet-headers_8h.html#a6">00048</a> <span class="preprocessor">#define LIBNET_ARP_ETH_IP_H 0x1c </span>
+<a name="l00049"></a><a class="code" href="libnet-headers_8h.html#a7">00049</a> <span class="preprocessor">#define LIBNET_BGP4_HEADER_H 0x13 </span>
+<a name="l00050"></a><a class="code" href="libnet-headers_8h.html#a8">00050</a> <span class="preprocessor">#define LIBNET_BGP4_OPEN_H 0x0a </span>
+<a name="l00051"></a><a class="code" href="libnet-headers_8h.html#a9">00051</a> <span class="preprocessor">#define LIBNET_BGP4_UPDATE_H 0x04 </span>
+<a name="l00052"></a><a class="code" href="libnet-headers_8h.html#a10">00052</a> <span class="preprocessor">#define LIBNET_BGP4_NOTIFICATION_H 0x02 </span>
+<a name="l00053"></a><a class="code" href="libnet-headers_8h.html#a11">00053</a> <span class="preprocessor">#define LIBNET_CDP_H 0x08 </span>
+<a name="l00054"></a><a class="code" href="libnet-headers_8h.html#a12">00054</a> <span class="preprocessor">#define LIBNET_DHCPV4_H 0xf0 </span>
+<a name="l00055"></a><a class="code" href="libnet-headers_8h.html#a13">00055</a> <span class="preprocessor">#define LIBNET_UDP_DNSV4_H 0x0c </span>
+<a name="l00056"></a><a class="code" href="libnet-headers_8h.html#a14">00056</a> <span class="preprocessor">#define LIBNET_TCP_DNSV4_H 0x0e </span>
+<a name="l00057"></a><a class="code" href="libnet-headers_8h.html#a15">00057</a> <span class="preprocessor">#define LIBNET_ETH_H 0x0e </span>
+<a name="l00058"></a><a class="code" href="libnet-headers_8h.html#a16">00058</a> <span class="preprocessor">#define LIBNET_FDDI_H 0x15 </span>
+<a name="l00059"></a><a class="code" href="libnet-headers_8h.html#a17">00059</a> <span class="preprocessor">#define LIBNET_ICMPV4_H 0x04 </span>
+<a name="l00060"></a><a class="code" href="libnet-headers_8h.html#a18">00060</a> <span class="preprocessor">#define LIBNET_ICMPV4_ECHO_H 0x08 </span>
+<a name="l00061"></a><a class="code" href="libnet-headers_8h.html#a19">00061</a> <span class="preprocessor">#define LIBNET_ICMPV4_MASK_H 0x0c </span>
+<a name="l00062"></a><a class="code" href="libnet-headers_8h.html#a20">00062</a> <span class="preprocessor">#define LIBNET_ICMPV4_UNREACH_H 0x08 </span>
+<a name="l00063"></a><a class="code" href="libnet-headers_8h.html#a21">00063</a> <span class="preprocessor">#define LIBNET_ICMPV4_TIMXCEED_H 0x08 </span>
+<a name="l00064"></a><a class="code" href="libnet-headers_8h.html#a22">00064</a> <span class="preprocessor">#define LIBNET_ICMPV4_REDIRECT_H 0x08 </span>
+<a name="l00065"></a><a class="code" href="libnet-headers_8h.html#a23">00065</a> <span class="preprocessor">#define LIBNET_ICMPV4_TS_H 0x14 </span>
+<a name="l00066"></a><a class="code" href="libnet-headers_8h.html#a24">00066</a> <span class="preprocessor">#define LIBNET_ICMPV6_H 0x08 </span>
+<a name="l00067"></a><a class="code" href="libnet-headers_8h.html#a25">00067</a> <span class="preprocessor">#define LIBNET_IGMP_H 0x08 </span>
+<a name="l00068"></a><a class="code" href="libnet-headers_8h.html#a26">00068</a> <span class="preprocessor">#define LIBNET_IPV4_H 0x14 </span>
+<a name="l00069"></a><a class="code" href="libnet-headers_8h.html#a27">00069</a> <span class="preprocessor">#define LIBNET_IPV6_H 0x28 </span>
+<a name="l00070"></a><a class="code" href="libnet-headers_8h.html#a28">00070</a> <span class="preprocessor">#define LIBNET_IPV6_FRAG_H 0x08 </span>
+<a name="l00071"></a><a class="code" href="libnet-headers_8h.html#a29">00071</a> <span class="preprocessor">#define LIBNET_IPV6_ROUTING_H 0x04 </span>
+<a name="l00072"></a><a class="code" href="libnet-headers_8h.html#a30">00072</a> <span class="preprocessor">#define LIBNET_IPV6_DESTOPTS_H 0x02 </span>
+<a name="l00073"></a><a class="code" href="libnet-headers_8h.html#a31">00073</a> <span class="preprocessor">#define LIBNET_IPV6_HBHOPTS_H 0x02 </span>
+<a name="l00074"></a><a class="code" href="libnet-headers_8h.html#a32">00074</a> <span class="preprocessor">#define LIBNET_IPSEC_ESP_HDR_H 0x0c </span>
+<a name="l00075"></a><a class="code" href="libnet-headers_8h.html#a33">00075</a> <span class="preprocessor">#define LIBNET_IPSEC_ESP_FTR_H 0x02 </span>
+<a name="l00076"></a><a class="code" href="libnet-headers_8h.html#a34">00076</a> <span class="preprocessor">#define LIBNET_IPSEC_AH_H 0x10 </span>
+<a name="l00077"></a><a class="code" href="libnet-headers_8h.html#a35">00077</a> <span class="preprocessor">#define LIBNET_ISL_H 0x1a </span>
+<a name="l00078"></a><a class="code" href="libnet-headers_8h.html#a36">00078</a> <span class="preprocessor">#define LIBNET_GRE_H 0x04 </span>
+<a name="l00079"></a><a class="code" href="libnet-headers_8h.html#a37">00079</a> <span class="preprocessor">#define LIBNET_GRE_SRE_H 0x04 </span>
+<a name="l00080"></a><a class="code" href="libnet-headers_8h.html#a38">00080</a> <span class="preprocessor">#define LIBNET_MPLS_H 0x04 </span>
+<a name="l00081"></a><a class="code" href="libnet-headers_8h.html#a39">00081</a> <span class="preprocessor">#define LIBNET_OSPF_H 0x10 </span>
+<a name="l00082"></a><a class="code" href="libnet-headers_8h.html#a40">00082</a> <span class="preprocessor">#define LIBNET_OSPF_HELLO_H 0x18 </span>
+<a name="l00083"></a><a class="code" href="libnet-headers_8h.html#a41">00083</a> <span class="preprocessor">#define LIBNET_OSPF_DBD_H 0x08 </span>
+<a name="l00084"></a><a class="code" href="libnet-headers_8h.html#a42">00084</a> <span class="preprocessor">#define LIBNET_OSPF_LSR_H 0x0c </span>
+<a name="l00085"></a><a class="code" href="libnet-headers_8h.html#a43">00085</a> <span class="preprocessor">#define LIBNET_OSPF_LSU_H 0x04 </span>
+<a name="l00086"></a><a class="code" href="libnet-headers_8h.html#a44">00086</a> <span class="preprocessor">#define LIBNET_OSPF_LSA_H 0x14 </span>
+<a name="l00087"></a><a class="code" href="libnet-headers_8h.html#a45">00087</a> <span class="preprocessor">#define LIBNET_OSPF_AUTH_H 0x08 </span>
+<a name="l00088"></a><a class="code" href="libnet-headers_8h.html#a46">00088</a> <span class="preprocessor">#define LIBNET_OSPF_CKSUM 0x10 </span>
+<a name="l00089"></a><a class="code" href="libnet-headers_8h.html#a47">00089</a> <span class="preprocessor">#define LIBNET_OSPF_LS_RTR_H 0x10 </span>
+<a name="l00090"></a><a class="code" href="libnet-headers_8h.html#a48">00090</a> <span class="preprocessor">#define LIBNET_OSPF_LS_NET_H 0x08 </span>
+<a name="l00091"></a><a class="code" href="libnet-headers_8h.html#a49">00091</a> <span class="preprocessor">#define LIBNET_OSPF_LS_SUM_H 0x0c </span>
+<a name="l00092"></a><a class="code" href="libnet-headers_8h.html#a50">00092</a> <span class="preprocessor">#define LIBNET_OSPF_LS_AS_EXT_H 0x10 </span>
+<a name="l00093"></a><a class="code" href="libnet-headers_8h.html#a51">00093</a> <span class="preprocessor">#define LIBNET_NTP_H 0x30 </span>
+<a name="l00094"></a><a class="code" href="libnet-headers_8h.html#a52">00094</a> <span class="preprocessor">#define LIBNET_RIP_H 0x18 </span>
+<a name="l00095"></a><a class="code" href="libnet-headers_8h.html#a53">00095</a> <span class="preprocessor">#define LIBNET_RPC_CALL_H 0x28 </span>
+<a name="l00098"></a><a class="code" href="libnet-headers_8h.html#a54">00098</a> <span class="preprocessor">#define LIBNET_RPC_CALL_TCP_H 0x2c </span>
+00101 <span class="preprocessor">#define LIBNET_SEBEK_H 0x30 </span><span class="comment">/* sebek header: 48 bytes */</span>
+<a name="l00102"></a><a class="code" href="libnet-headers_8h.html#a56">00102</a> <span class="preprocessor">#define LIBNET_STP_CONF_H 0x23 </span>
+<a name="l00103"></a><a class="code" href="libnet-headers_8h.html#a57">00103</a> <span class="preprocessor">#define LIBNET_STP_TCN_H 0x04 </span>
+<a name="l00104"></a><a class="code" href="libnet-headers_8h.html#a58">00104</a> <span class="preprocessor">#define LIBNET_TOKEN_RING_H 0x16 </span>
+<a name="l00105"></a><a class="code" href="libnet-headers_8h.html#a59">00105</a> <span class="preprocessor">#define LIBNET_TCP_H 0x14 </span>
+<a name="l00106"></a><a class="code" href="libnet-headers_8h.html#a60">00106</a> <span class="preprocessor">#define LIBNET_UDP_H 0x08 </span>
+<a name="l00107"></a><a class="code" href="libnet-headers_8h.html#a61">00107</a> <span class="preprocessor">#define LIBNET_VRRP_H 0x08 </span>
+<a name="l00113"></a><a class="code" href="structlibnet__802__1q__hdr.html">00113</a> <span class="preprocessor">struct libnet_802_1q_hdr</span>
+00114 <span class="preprocessor"></span>{
+<a name="l00115"></a><a class="code" href="structlibnet__802__1q__hdr.html#o0">00115</a> u_int8_t vlan_dhost[ETHER_ADDR_LEN];
+<a name="l00116"></a><a class="code" href="structlibnet__802__1q__hdr.html#o1">00116</a> u_int8_t vlan_shost[ETHER_ADDR_LEN];
+<a name="l00117"></a><a class="code" href="structlibnet__802__1q__hdr.html#o2">00117</a> u_int16_t vlan_tpi;
+<a name="l00118"></a><a class="code" href="structlibnet__802__1q__hdr.html#o3">00118</a> u_int16_t vlan_priority_c_vid;
+<a name="l00119"></a><a class="code" href="libnet-headers_8h.html#a62">00119</a> <span class="preprocessor">#define LIBNET_802_1Q_PRIMASK 0x0007 </span>
+<a name="l00120"></a><a class="code" href="libnet-headers_8h.html#a63">00120</a> <span class="preprocessor">#define LIBNET_802_1Q_CFIMASK 0x0001 </span>
+<a name="l00121"></a><a class="code" href="libnet-headers_8h.html#a64">00121</a> <span class="preprocessor">#define LIBNET_802_1Q_VIDMASK 0x0fff </span>
+<a name="l00122"></a><a class="code" href="structlibnet__802__1q__hdr.html#o4">00122</a> <span class="preprocessor"> u_int16_t vlan_len; </span>
+00123 <span class="preprocessor">}; </span>
+00124 <span class="preprocessor"></span>
+<a name="l00129"></a><a class="code" href="structlibnet__802__1x__hdr.html">00129</a> <span class="keyword">struct </span><a class="code" href="structlibnet__802__1x__hdr.html">libnet_802_1x_hdr</a>
+00130 {
+<a name="l00131"></a><a class="code" href="structlibnet__802__1x__hdr.html#o0">00131</a> u_int8_t <a class="code" href="structlibnet__802__1x__hdr.html#o0">dot1x_version</a>;
+<a name="l00132"></a><a class="code" href="structlibnet__802__1x__hdr.html#o1">00132</a> u_int8_t <a class="code" href="structlibnet__802__1x__hdr.html#o1">dot1x_type</a>;
+<a name="l00133"></a><a class="code" href="libnet-headers_8h.html#a65">00133</a> <span class="preprocessor">#define LIBNET_802_1X_PACKET 0x00 </span>
+<a name="l00134"></a><a class="code" href="libnet-headers_8h.html#a66">00134</a> <span class="preprocessor">#define LIBNET_802_1X_START 0x01 </span>
+<a name="l00135"></a><a class="code" href="libnet-headers_8h.html#a67">00135</a> <span class="preprocessor">#define LIBNET_802_1X_LOGOFF 0x02 </span>
+<a name="l00136"></a><a class="code" href="libnet-headers_8h.html#a68">00136</a> <span class="preprocessor">#define LIBNET_802_1X_KEY 0x03 </span>
+<a name="l00137"></a><a class="code" href="libnet-headers_8h.html#a69">00137</a> <span class="preprocessor">#define LIBNET_802_1X_ENCASFAL 0x04 </span>
+<a name="l00138"></a><a class="code" href="structlibnet__802__1x__hdr.html#o2">00138</a> <span class="preprocessor"> u_int16_t dot1x_length; </span>
+00139 <span class="preprocessor">}; </span>
+00140 <span class="preprocessor"></span>
+00141 <span class="comment">/*</span>
+00142 <span class="comment"> * IEEE 802.2 LLC header</span>
+00143 <span class="comment"> * Link Layer Control</span>
+00144 <span class="comment"> * static header size: 3 bytes</span>
+00145 <span class="comment"> */</span>
+00146 <span class="keyword">struct </span>libnet_802_2_hdr
+00147 {
+00148 u_int8_t llc_dsap; <span class="comment">/* destination service access point */</span>
+00149 u_int8_t llc_ssap; <span class="comment">/* source service access point */</span>
+00150 <span class="preprocessor">#define LIBNET_SAP_STP 0x42</span>
+00151 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_SAP_SNAP 0xaa</span>
+00152 <span class="preprocessor"></span> u_int8_t llc_control; <span class="comment">/* control field */</span>
+00153 };
+00154
+00155
+00156 <span class="comment">/*</span>
+00157 <span class="comment"> * IEEE 802.2 LLC/SNAP header</span>
+00158 <span class="comment"> * SubNetwork Attachment Point</span>
+00159 <span class="comment"> * static header size: 8 bytes</span>
+00160 <span class="comment"> */</span>
+00161 <span class="keyword">struct </span>libnet_802_2snap_hdr
+00162 {
+00163 u_int8_t snap_dsap; <span class="comment">/* destination service access point */</span>
+00164 u_int8_t snap_ssap; <span class="comment">/* destination service access point */</span>
+00165 u_int8_t snap_control; <span class="comment">/* control field */</span>
+00166 u_int8_t snap_oui[3]; <span class="comment">/* OUI */</span>
+00167 u_int16_t snap_type; <span class="comment">/* type */</span>
+00168 };
+00169
+00170
+00171 <span class="comment">/*</span>
+00172 <span class="comment"> * 802.3 header</span>
+00173 <span class="comment"> * IEEE Ethernet</span>
+00174 <span class="comment"> * Static header size: 14 bytes</span>
+00175 <span class="comment"> */</span>
+00176 <span class="keyword">struct </span>libnet_802_3_hdr
+00177 {
+00178 u_int8_t _802_3_dhost[ETHER_ADDR_LEN];<span class="comment">/* destination ethernet address */</span>
+00179 u_int8_t _802_3_shost[ETHER_ADDR_LEN];<span class="comment">/* source ethernet address */</span>
+00180 u_int16_t _802_3_len; <span class="comment">/* packet type ID */</span>
+00181 };
+00182
+00183
+00184 <span class="comment">/* </span>
+00185 <span class="comment"> * ARP header</span>
+00186 <span class="comment"> * Address Resolution Protocol</span>
+00187 <span class="comment"> * Base header size: 8 bytes</span>
+00188 <span class="comment"> */</span>
+00189 <span class="keyword">struct </span>libnet_arp_hdr
+00190 {
+00191 u_int16_t ar_hrd; <span class="comment">/* format of hardware address */</span>
+00192 <span class="preprocessor">#define ARPHRD_NETROM 0 </span><span class="comment">/* from KA9Q: NET/ROM pseudo */</span>
+00193 <span class="preprocessor">#define ARPHRD_ETHER 1 </span><span class="comment">/* Ethernet 10Mbps */</span>
+00194 <span class="preprocessor">#define ARPHRD_EETHER 2 </span><span class="comment">/* Experimental Ethernet */</span>
+00195 <span class="preprocessor">#define ARPHRD_AX25 3 </span><span class="comment">/* AX.25 Level 2 */</span>
+00196 <span class="preprocessor">#define ARPHRD_PRONET 4 </span><span class="comment">/* PROnet token ring */</span>
+00197 <span class="preprocessor">#define ARPHRD_CHAOS 5 </span><span class="comment">/* Chaosnet */</span>
+00198 <span class="preprocessor">#define ARPHRD_IEEE802 6 </span><span class="comment">/* IEEE 802.2 Ethernet/TR/TB */</span>
+00199 <span class="preprocessor">#define ARPHRD_ARCNET 7 </span><span class="comment">/* ARCnet */</span>
+00200 <span class="preprocessor">#define ARPHRD_APPLETLK 8 </span><span class="comment">/* APPLEtalk */</span>
+00201 <span class="preprocessor">#define ARPHRD_LANSTAR 9 </span><span class="comment">/* Lanstar */</span>
+00202 <span class="preprocessor">#define ARPHRD_DLCI 15 </span><span class="comment">/* Frame Relay DLCI */</span>
+00203 <span class="preprocessor">#define ARPHRD_ATM 19 </span><span class="comment">/* ATM */</span>
+00204 <span class="preprocessor">#define ARPHRD_METRICOM 23 </span><span class="comment">/* Metricom STRIP (new IANA id) */</span>
+00205 <span class="preprocessor">#define ARPHRD_IPSEC 31 </span><span class="comment">/* IPsec tunnel */</span>
+00206 u_int16_t ar_pro; <span class="comment">/* format of protocol address */</span>
+00207 u_int8_t ar_hln; <span class="comment">/* length of hardware address */</span>
+00208 u_int8_t ar_pln; <span class="comment">/* length of protocol addres */</span>
+00209 u_int16_t ar_op; <span class="comment">/* operation type */</span>
+00210 <span class="preprocessor">#define ARPOP_REQUEST 1 </span><span class="comment">/* req to resolve address */</span>
+00211 <span class="preprocessor">#define ARPOP_REPLY 2 </span><span class="comment">/* resp to previous request */</span>
+00212 <span class="preprocessor">#define ARPOP_REVREQUEST 3 </span><span class="comment">/* req protocol address given hardware */</span>
+00213 <span class="preprocessor">#define ARPOP_REVREPLY 4 </span><span class="comment">/* resp giving protocol address */</span>
+00214 <span class="preprocessor">#define ARPOP_INVREQUEST 8 </span><span class="comment">/* req to identify peer */</span>
+00215 <span class="preprocessor">#define ARPOP_INVREPLY 9 </span><span class="comment">/* resp identifying peer */</span>
+00216 <span class="comment">/* address information allocated dynamically */</span>
+00217 };
+00218
+00219 <span class="comment">/*</span>
+00220 <span class="comment"> * BGP4 header</span>
+00221 <span class="comment"> * Border Gateway Protocol 4</span>
+00222 <span class="comment"> * Base header size : 19 bytes</span>
+00223 <span class="comment"> */</span>
+00224 <span class="keyword">struct </span>libnet_bgp4_header_hdr
+00225 {
+00226 <span class="preprocessor">#define LIBNET_BGP4_MARKER_SIZE 16</span>
+00227 <span class="preprocessor"></span> u_int8_t marker[LIBNET_BGP4_MARKER_SIZE];
+00228 u_int16_t len;
+00229 u_int8_t type;
+00230 <span class="preprocessor">#define LIBNET_BGP4_OPEN 1</span>
+00231 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UPDATE 2</span>
+00232 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_NOTIFICATION 3</span>
+00233 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_KEEPALIVE 4</span>
+00234 <span class="preprocessor"></span>};
+00235
+00236 <span class="comment">/*</span>
+00237 <span class="comment"> * BGP4 open header</span>
+00238 <span class="comment"> * Border Gateway Protocol 4</span>
+00239 <span class="comment"> * Base header size : 10 bytes</span>
+00240 <span class="comment"> */</span>
+00241 <span class="keyword">struct </span>libnet_bgp4_open_hdr
+00242 {
+00243 u_int8_t version;
+00244 u_int16_t src_as;
+00245 u_int16_t hold_time;
+00246 u_int32_t bgp_id;
+00247 u_int8_t opt_len;
+00248 };
+00249
+00250 <span class="comment">/*</span>
+00251 <span class="comment"> * BGP4 notification message</span>
+00252 <span class="comment"> *</span>
+00253 <span class="comment"> * Border Gateway Protocol 4</span>
+00254 <span class="comment"> * Base header size : 2 bytes</span>
+00255 <span class="comment"> *</span>
+00256 <span class="comment"> * Use payload if you need data</span>
+00257 <span class="comment"> */</span>
+00258 <span class="keyword">struct </span>libnet_bgp4_notification_hdr
+00259 {
+00260 <span class="preprocessor">#define LIBNET_BGP4_MESSAGE_HEADER_ERROR 1</span>
+00261 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_OPEN_MESSAGE_ERROR 2</span>
+00262 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UPDATE_MESSAGE_ERROR 3</span>
+00263 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_HOLD_TIMER_EXPIRED 4</span>
+00264 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_FINITE_STATE__ERROR 5</span>
+00265 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_CEASE 6</span>
+00266 <span class="preprocessor"></span> u_int8_t err_code;
+00267
+00268 <span class="comment">/* Message Header Error subcodes */</span>
+00269 <span class="preprocessor">#define LIBNET_BGP4_CONNECTION_NOT_SYNCHRONIZED 1</span>
+00270 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_MESSAGE_LENGTH 2</span>
+00271 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_MESSAGE_TYPE 3</span>
+00272 <span class="preprocessor"></span><span class="comment">/* OPEN Message Error subcodes */</span>
+00273 <span class="preprocessor">#define LIBNET_BGP4_UNSUPPORTED_VERSION_NUMBER 1</span>
+00274 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_PEER_AS 2</span>
+00275 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_BGP_IDENTIFIER 3</span>
+00276 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNSUPPORTED_OPTIONAL_PARAMETER 4</span>
+00277 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_AUTHENTICATION_FAILURE 5</span>
+00278 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNACCEPTABLE_HOLD_TIME 6</span>
+00279 <span class="preprocessor"></span><span class="comment">/* UPDATE Message Error subcodes */</span>
+00280 <span class="preprocessor">#define LIBNET_BGP4_MALFORMED_ATTRIBUTE_LIST</span>
+00281 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE</span>
+00282 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_MISSING_WELL_KNOWN_ATTRIBUTE</span>
+00283 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_ATTRIBUTE_FLAGS_ERROR</span>
+00284 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_ATTRIBUTE_LENGTH_ERROR</span>
+00285 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_ORIGIN_ATTRIBUTE</span>
+00286 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_AS_ROUTING_LOOP</span>
+00287 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_NEXT_HOP_ATTRIBUTE</span>
+00288 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_OPTIONAL_ATTRIBUTE_ERROR</span>
+00289 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_NETWORK_FIELD</span>
+00290 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_MALFORMED_AS_PATH</span>
+00291 <span class="preprocessor"></span> u_int8_t err_subcode;
+00292 };
+00293
+00294
+00295
+00296 <span class="comment">/*</span>
+00297 <span class="comment"> * CDP header</span>
+00298 <span class="comment"> * Cisco Discovery Protocol</span>
+00299 <span class="comment"> * Base header size: 8 bytes</span>
+00300 <span class="comment"> */</span>
+00301
+00302 <span class="comment">/*</span>
+00303 <span class="comment"> * For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.</span>
+00304 <span class="comment"> * Let's hope this one stays that way for a while!</span>
+00305 <span class="comment"> */</span>
+00306 <span class="preprocessor">#define LIBNET_PROTO_CDP 200</span>
+00307 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_cdp_hdr
+00308 {
+00309 u_int8_t cdp_version; <span class="comment">/* version (should always be 0x01) */</span>
+00310 u_int8_t cdp_ttl; <span class="comment">/* time reciever should hold info in this packet */</span>
+00311 u_int16_t cdp_sum; <span class="comment">/* checksum */</span>
+00312 u_int16_t cdp_type; <span class="comment">/* type */</span>
+00313 <span class="preprocessor">#define LIBNET_CDP_DEVID 0x1 </span><span class="comment">/* device id */</span>
+00314 <span class="preprocessor">#define LIBNET_CDP_ADDRESS 0x2 </span><span class="comment">/* address */</span>
+00315 <span class="preprocessor">#define LIBNET_CDP_PORTID 0x3 </span><span class="comment">/* port id */</span>
+00316 <span class="preprocessor">#define LIBNET_CDP_CAPABIL 0x4 </span><span class="comment">/* capabilities */</span>
+00317 <span class="preprocessor">#define LIBNET_CDP_VERSION 0x5 </span><span class="comment">/* version */</span>
+00318 <span class="preprocessor">#define LIBNET_CDP_PLATFORM 0x6 </span><span class="comment">/* platform */</span>
+00319 <span class="preprocessor">#define LIBNET_CDP_IPPREFIX 0x7 </span><span class="comment">/* ip prefix */</span>
+00320 u_int16_t cdp_len; <span class="comment">/* type + length + value */</span>
+00321 <span class="comment">/* value information done dynamically */</span>
+00322
+00323 <span class="comment">/* CDP capabilities */</span>
+00324 <span class="preprocessor">#define LIBNET_CDP_CAP_L3R 0x01</span><span class="comment">/* performs level 3 routing */</span>
+00325 <span class="preprocessor">#define LIBNET_CDP_CAP_L2B 0x02</span><span class="comment">/* performs level 2 transparent bridging */</span>
+00326 <span class="preprocessor">#define LIBNET_CDP_CAP_L2SRB 0x04</span><span class="comment">/* performs level 2 sourceroute bridging */</span>
+00327 <span class="preprocessor">#define LIBNET_CDP_CAP_L2S 0x08</span><span class="comment">/* performs level 2 switching */</span>
+00328 <span class="preprocessor">#define LIBNET_CDP_CAP_SR 0x10</span><span class="comment">/* sends and recieves packets on a network */</span>
+00329 <span class="preprocessor">#define LIBNET_CDP_CAP_NOI 0x20</span><span class="comment">/* does not forward IGMP on non-router ports */</span>
+00330 <span class="preprocessor">#define LIBNET_CDP_CAP_L1F 0x40</span><span class="comment">/* provides level 1 functionality */</span>
+00331 };
+00332
+00333
+00334 <span class="comment">/*</span>
+00335 <span class="comment"> * Used as an overlay for type/len/values</span>
+00336 <span class="comment"> */</span>
+00337 <span class="keyword">struct </span>libnet_cdp_value_hdr
+00338 {
+00339 u_int16_t cdp_type;
+00340 u_int16_t cdp_len;
+00341 };
+00342
+00343
+00344 <span class="comment">/*</span>
+00345 <span class="comment"> * DHCP header</span>
+00346 <span class="comment"> * Dynamic Host Configuration Protocol</span>
+00347 <span class="comment"> * Static header size: f0 bytes</span>
+00348 <span class="comment"> */</span>
+00349 <span class="keyword">struct </span>libnet_dhcpv4_hdr
+00350 {
+00351 u_int8_t dhcp_opcode; <span class="comment">/* opcode */</span>
+00352 <span class="preprocessor">#define LIBNET_DHCP_REQUEST 0x1</span>
+00353 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_REPLY 0x2</span>
+00354 <span class="preprocessor"></span> u_int8_t dhcp_htype; <span class="comment">/* hardware address type */</span>
+00355 u_int8_t dhcp_hlen; <span class="comment">/* hardware address length */</span>
+00356 u_int8_t dhcp_hopcount; <span class="comment">/* used by proxy servers */</span>
+00357 u_int32_t dhcp_xid; <span class="comment">/* transaction ID */</span>
+00358 u_int16_t dhcp_secs; <span class="comment">/* number of seconds since trying to bootstrap */</span>
+00359 u_int16_t dhcp_flags; <span class="comment">/* flags for DHCP, unused for BOOTP */</span>
+00360 u_int32_t dhcp_cip; <span class="comment">/* client's IP */</span>
+00361 u_int32_t dhcp_yip; <span class="comment">/* your IP */</span>
+00362 u_int32_t dhcp_sip; <span class="comment">/* server's IP */</span>
+00363 u_int32_t dhcp_gip; <span class="comment">/* gateway IP */</span>
+00364 u_int8_t dhcp_chaddr[16]; <span class="comment">/* client hardware address */</span>
+00365 u_int8_t dhcp_sname[64]; <span class="comment">/* server host name */</span>
+00366 u_int8_t dhcp_file[128]; <span class="comment">/* boot file name */</span>
+00367 u_int32_t dhcp_magic; <span class="comment">/* BOOTP magic header */</span>
+00368 <span class="preprocessor">#define DHCP_MAGIC 0x63825363</span>
+00369 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BOOTP_MIN_LEN 0x12c</span>
+00370 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_PAD 0x00</span>
+00371 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SUBNETMASK 0x01</span>
+00372 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TIMEOFFSET 0x02</span>
+00373 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROUTER 0x03</span>
+00374 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TIMESERVER 0x04</span>
+00375 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NAMESERVER 0x05</span>
+00376 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DNS 0x06</span>
+00377 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LOGSERV 0x07</span>
+00378 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_COOKIESERV 0x08</span>
+00379 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LPRSERV 0x09</span>
+00380 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IMPSERV 0x0a</span>
+00381 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_RESSERV 0x0b</span>
+00382 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_HOSTNAME 0x0c</span>
+00383 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_BOOTFILESIZE 0x0d</span>
+00384 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DUMPFILE 0x0e</span>
+00385 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOMAINNAME 0x0f</span>
+00386 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SWAPSERV 0x10</span>
+00387 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROOTPATH 0x11</span>
+00388 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_EXTENPATH 0x12</span>
+00389 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IPFORWARD 0x13</span>
+00390 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SRCROUTE 0x14</span>
+00391 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_POLICYFILTER 0x15</span>
+00392 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MAXASMSIZE 0x16</span>
+00393 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IPTTL 0x17</span>
+00394 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUTIMEOUT 0x18</span>
+00395 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUTABLE 0x19</span>
+00396 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUSIZE 0x1a</span>
+00397 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LOCALSUBNETS 0x1b</span>
+00398 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_BROADCASTADDR 0x1c</span>
+00399 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOMASKDISCOV 0x1d</span>
+00400 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MASKSUPPLY 0x1e</span>
+00401 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOROUTEDISC 0x1f</span>
+00402 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROUTERSOLICIT 0x20</span>
+00403 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STATICROUTE 0x21</span>
+00404 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TRAILERENCAP 0x22</span>
+00405 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ARPTIMEOUT 0x23</span>
+00406 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ETHERENCAP 0x24</span>
+00407 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPTTL 0x25</span>
+00408 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPKEEPALIVE 0x26</span>
+00409 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPALIVEGARBAGE 0x27</span>
+00410 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISDOMAIN 0x28</span>
+00411 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISSERVERS 0x29</span>
+00412 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISTIMESERV 0x2a</span>
+00413 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_VENDSPECIFIC 0x2b</span>
+00414 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBNS 0x2c</span>
+00415 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBDD 0x2d</span>
+00416 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBTCPIP 0x2e</span>
+00417 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBTCPSCOPE 0x2f</span>
+00418 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_XFONT 0x30</span>
+00419 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_XDISPLAYMGR 0x31</span>
+00420 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DISCOVERADDR 0x32</span>
+00421 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LEASETIME 0x33</span>
+00422 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_OPTIONOVERLOAD 0x34</span>
+00423 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MESSAGETYPE 0x35</span>
+00424 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SERVIDENT 0x36</span>
+00425 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_PARAMREQUEST 0x37</span>
+00426 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MESSAGE 0x38</span>
+00427 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MAXMSGSIZE 0x39</span>
+00428 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_RENEWTIME 0x3a</span>
+00429 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_REBINDTIME 0x3b</span>
+00430 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_CLASSSID 0x3c</span>
+00431 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_CLIENTID 0x3d</span>
+00432 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISPLUSDOMAIN 0x40</span>
+00433 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISPLUSSERVERS 0x41</span>
+00434 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MOBILEIPAGENT 0x44</span>
+00435 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SMTPSERVER 0x45</span>
+00436 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_POP3SERVER 0x46</span>
+00437 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NNTPSERVER 0x47</span>
+00438 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_WWWSERVER 0x48</span>
+00439 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_FINGERSERVER 0x49</span>
+00440 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IRCSERVER 0x4a</span>
+00441 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STSERVER 0x4b</span>
+00442 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STDASERVER 0x4c</span>
+00443 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_END 0xff</span>
+00444 <span class="preprocessor"></span>
+00445 <span class="preprocessor">#define LIBNET_DHCP_MSGDISCOVER 0x01</span>
+00446 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGOFFER 0x02</span>
+00447 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGREQUEST 0x03</span>
+00448 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGDECLINE 0x04</span>
+00449 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGACK 0x05</span>
+00450 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGNACK 0x06</span>
+00451 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGRELEASE 0x07</span>
+00452 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGINFORM 0x08</span>
+00453 <span class="preprocessor"></span>};
+00454
+00455
+00456 <span class="comment">/*</span>
+00457 <span class="comment"> * Base DNSv4 header</span>
+00458 <span class="comment"> * Domain Name System</span>
+00459 <span class="comment"> * Base header size: 12/14 bytes</span>
+00460 <span class="comment"> */</span>
+00461 <span class="comment">/* this little guy got left out in the cold */</span>
+00462 <span class="preprocessor">#define LIBNET_DNS_H LIBNET_UDP_DNSV4_H</span>
+00463 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_dnsv4_hdr
+00464 {
+00465 u_int16_t h_len; <span class="comment">/* length of the packet - only used with TCP */</span>
+00466 u_int16_t id; <span class="comment">/* DNS packet ID */</span>
+00467 u_int16_t flags; <span class="comment">/* DNS flags */</span>
+00468 u_int16_t num_q; <span class="comment">/* Number of questions */</span>
+00469 u_int16_t num_answ_rr; <span class="comment">/* Number of answer resource records */</span>
+00470 u_int16_t num_auth_rr; <span class="comment">/* Number of authority resource records */</span>
+00471 u_int16_t num_addi_rr; <span class="comment">/* Number of additional resource records */</span>
+00472 };
+00473
+00474
+00475 <span class="comment">/*</span>
+00476 <span class="comment"> * Ethernet II header</span>
+00477 <span class="comment"> * Static header size: 14 bytes</span>
+00478 <span class="comment"> */</span>
+00479 <span class="keyword">struct </span>libnet_ethernet_hdr
+00480 {
+00481 u_int8_t ether_dhost[ETHER_ADDR_LEN];<span class="comment">/* destination ethernet address */</span>
+00482 u_int8_t ether_shost[ETHER_ADDR_LEN];<span class="comment">/* source ethernet address */</span>
+00483 u_int16_t ether_type; <span class="comment">/* protocol */</span>
+00484 };
+00485
+00486 <span class="preprocessor">#ifndef ETHERTYPE_PUP</span>
+00487 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_PUP 0x0200 </span><span class="comment">/* PUP protocol */</span>
+00488 <span class="preprocessor">#endif</span>
+00489 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_IP</span>
+00490 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_IP 0x0800 </span><span class="comment">/* IP protocol */</span>
+00491 <span class="preprocessor">#endif</span>
+00492 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_ARP</span>
+00493 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_ARP 0x0806 </span><span class="comment">/* addr. resolution protocol */</span>
+00494 <span class="preprocessor">#endif</span>
+00495 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_REVARP</span>
+00496 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_REVARP 0x8035 </span><span class="comment">/* reverse addr. resolution protocol */</span>
+00497 <span class="preprocessor">#endif</span>
+00498 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_VLAN</span>
+00499 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_VLAN 0x8100 </span><span class="comment">/* IEEE 802.1Q VLAN tagging */</span>
+00500 <span class="preprocessor">#endif</span>
+00501 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_EAP</span>
+00502 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_EAP 0x888e </span><span class="comment">/* IEEE 802.1X EAP authentication */</span>
+00503 <span class="preprocessor">#endif</span>
+00504 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_MPLS</span>
+00505 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_MPLS 0x8847 </span><span class="comment">/* MPLS */</span>
+00506 <span class="preprocessor">#endif</span>
+00507 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_LOOPBACK</span>
+00508 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_LOOPBACK 0x9000 </span><span class="comment">/* used to test interfaces */</span>
+00509 <span class="preprocessor">#endif</span>
+00510 <span class="preprocessor"></span>
+00511 <span class="keyword">struct </span>libnet_ether_addr
+00512 {
+00513 u_int8_t ether_addr_octet[6]; <span class="comment">/* Ethernet address */</span>
+00514 };
+00515
+00516 <span class="comment">/*</span>
+00517 <span class="comment"> * Fiber Distributed Data Interface header</span>
+00518 <span class="comment"> *</span>
+00519 <span class="comment"> * Static header size: 21 bytes (LLC and 48-bit address addr only)</span>
+00520 <span class="comment"> *</span>
+00521 <span class="comment"> * Note: Organization field is 3 bytes which throws off the</span>
+00522 <span class="comment"> * alignment of type. Therefore fddi_type (19 bytes in) </span>
+00523 <span class="comment"> * is specified as two u_int8_ts.</span>
+00524 <span class="comment"> */</span>
+00525 <span class="keyword">struct </span>libnet_fddi_hdr
+00526 {
+00527 u_int8_t fddi_frame_control; <span class="comment">/* Class/Format/Priority */</span>
+00528 <span class="preprocessor">#define LIBNET_FDDI_LLC_FRAME 0x10</span>
+00529 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_FDDI_48BIT_ADDR 0x40</span>
+00530 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_FDDI_FC_REQD LIBNET_FDDI_LLC_FRAME | LIBNET_FDDI_48BIT_ADDR </span>
+00531 <span class="preprocessor"></span> u_int8_t fddi_dhost[FDDI_ADDR_LEN]; <span class="comment">/* destination fddi address */</span>
+00532 u_int8_t fddi_shost[FDDI_ADDR_LEN]; <span class="comment">/* source fddi address */</span>
+00533 u_int8_t fddi_llc_dsap; <span class="comment">/* DSAP */</span>
+00534 u_int8_t fddi_llc_ssap; <span class="comment">/* SSAP */</span>
+00535 u_int8_t fddi_llc_control_field; <span class="comment">/* Class/Format/Priority */</span>
+00536 u_int8_t fddi_llc_org_code[LIBNET_ORG_CODE_SIZE]; <span class="comment">/* Organization Code 3-bytes */</span>
+00537 u_int8_t fddi_type; <span class="comment">/* Protocol Type */</span>
+00538 u_int8_t fddi_type1; <span class="comment">/* see note above. */</span>
+00539 <span class="preprocessor">#define FDDI_TYPE_IP 0x0800 </span><span class="comment">/* IP protocol */</span>
+00540 <span class="preprocessor">#define FDDI_TYPE_ARP 0x0806 </span><span class="comment">/* addr. resolution protocol */</span>
+00541 <span class="preprocessor">#define FDDI_TYPE_REVARP 0x8035 </span><span class="comment">/* reverse addr. resolution protocol */</span>
+00542 };
+00543
+00544
+00545 <span class="keyword">struct </span>libnet_fddi_addr
+00546 {
+00547 u_int8_t fddi_addr_octet[6]; <span class="comment">/* FDDI address */</span>
+00548 };
+00549
+00550
+00551 <span class="comment">/*</span>
+00552 <span class="comment"> * GRE header - RFC 1701 &amp; 2637</span>
+00553 <span class="comment"> * Generic Routing Encapsulation (GRE) </span>
+00554 <span class="comment"> * Base header size: 4 bytes</span>
+00555 <span class="comment"> */</span>
+00556 <span class="keyword">struct </span>libnet_gre_hdr
+00557 {
+00558 u_int16_t flags_ver;
+00559 <span class="preprocessor">#define GRE_CSUM 0x8000</span>
+00560 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ROUTING 0x4000</span>
+00561 <span class="preprocessor"></span><span class="preprocessor">#define GRE_KEY 0x2000</span>
+00562 <span class="preprocessor"></span><span class="preprocessor">#define GRE_SEQ 0x1000</span>
+00563 <span class="preprocessor"></span><span class="preprocessor">#define GRE_STRICT 0x0800</span>
+00564 <span class="preprocessor"></span><span class="preprocessor">#define GRE_REC 0x0700</span>
+00565 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ACK 0x0080</span>
+00566 <span class="preprocessor"></span>
+00567 <span class="preprocessor">#define GRE_FLAGS_MASK 0x00F8</span>
+00568 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VERSION_MASK 0x0007</span>
+00569 <span class="preprocessor"></span>
+00570 <span class="preprocessor">#define GRE_VERSION_0 0x0000</span>
+00571 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VERSION_1 0x0001</span>
+00572 <span class="preprocessor"></span>
+00573 u_int16_t type;
+00574 <span class="preprocessor">#define GRE_SNA 0x0004</span>
+00575 <span class="preprocessor"></span><span class="preprocessor">#define GRE_OSI_NETWORK_LAYER 0x00FE</span>
+00576 <span class="preprocessor"></span><span class="preprocessor">#define GRE_PUP 0x0200</span>
+00577 <span class="preprocessor"></span><span class="preprocessor">#define GRE_XNS 0x0600</span>
+00578 <span class="preprocessor"></span><span class="preprocessor">#define GRE_IP 0x0800</span>
+00579 <span class="preprocessor"></span><span class="preprocessor">#define GRE_CHAOS 0x0804</span>
+00580 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RFC_826_ARP 0x0806</span>
+00581 <span class="preprocessor"></span><span class="preprocessor">#define GRE_FRAME_RELAY_ARP 0x0808</span>
+00582 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES 0x0BAD</span>
+00583 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES_ECHO 0x0BAE</span>
+00584 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES_LOOPBACK 0x0BAF</span>
+00585 <span class="preprocessor"></span><span class="preprocessor">#define GRE_DECNET 0x6003</span>
+00586 <span class="preprocessor"></span><span class="preprocessor">#define GRE_TRANSPARENT_ETHERNET_BRIDGING 0x6558</span>
+00587 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RAW_FRAME_RELAY 0x6559</span>
+00588 <span class="preprocessor"></span><span class="preprocessor">#define GRE_APOLLO_DOMAIN 0x8019</span>
+00589 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ETHERTALK 0x809B</span>
+00590 <span class="preprocessor"></span><span class="preprocessor">#define GRE_NOVELL_IPX 0x8137</span>
+00591 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RFC_1144_TCP_IP_COMPRESSION 0x876B</span>
+00592 <span class="preprocessor"></span><span class="preprocessor">#define GRE_IP_AUTONOMOUS_SYSTEMS 0x876C</span>
+00593 <span class="preprocessor"></span><span class="preprocessor">#define GRE_SECURE_DATA 0x876D</span>
+00594 <span class="preprocessor"></span><span class="preprocessor">#define GRE_PPP 0x880b </span><span class="comment">/* taken from RFC 2637 */</span>
+00595
+00596 <span class="keyword">union </span>{
+00597 <span class="keyword">struct </span>{
+00598 u_int16_t sum; <span class="comment">/* optional */</span>
+00599 u_int16_t offset; <span class="comment">/* optional */</span>
+00600 u_int32_t key; <span class="comment">/* optional */</span>
+00601 u_int32_t seq; <span class="comment">/* optional */</span>
+00602 } _gre;
+00603
+00604 <span class="keyword">struct </span>{
+00605 u_int16_t payload_s; <span class="comment">/* optional */</span>
+00606 u_int16_t callID; <span class="comment">/* optional */</span>
+00607 u_int32_t seq; <span class="comment">/* optional */</span>
+00608 u_int32_t ack; <span class="comment">/* optional */</span>
+00609 } _egre;
+00610 }_data;
+00611
+00612 <span class="preprocessor">#define gre_sum _data._gre.sum</span>
+00613 <span class="preprocessor"></span><span class="preprocessor">#define gre_offset _data._gre.offset</span>
+00614 <span class="preprocessor"></span><span class="preprocessor">#define gre_key _data._gre.key</span>
+00615 <span class="preprocessor"></span><span class="preprocessor">#define gre_seq _data._gre.seq</span>
+00616 <span class="preprocessor"></span>
+00617 <span class="preprocessor">#define egre_payload_s _data._egre.payload_s</span>
+00618 <span class="preprocessor"></span><span class="preprocessor">#define egre_callID _data._egre.callID</span>
+00619 <span class="preprocessor"></span><span class="preprocessor">#define egre_seq _data._egre.seq</span>
+00620 <span class="preprocessor"></span><span class="preprocessor">#define egre_ack _data._egre.ack</span>
+00621 <span class="preprocessor"></span>};
+00622
+00623
+00624 <span class="preprocessor">#ifndef IPPROTO_GRE</span>
+00625 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_GRE 47</span>
+00626 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00627 <span class="preprocessor"></span>
+00628 <span class="comment">/*</span>
+00629 <span class="comment"> * Source Route Entries (SRE)</span>
+00630 <span class="comment"> * This is used for GRE as the Routing field is a list of SREs - RFC 1701</span>
+00631 <span class="comment"> * Base header size: 4 bytes</span>
+00632 <span class="comment"> */</span>
+00633 <span class="keyword">struct </span>libnet_gre_sre_hdr
+00634 {
+00635 u_int16_t af; <span class="comment">/* address familly */</span>
+00636 u_int8_t sre_offset;
+00637 u_int8_t sre_length;
+00638 u_int8_t *routing;
+00639 };
+00640
+00641
+00642 <span class="comment">/*</span>
+00643 <span class="comment"> * IPv4 header</span>
+00644 <span class="comment"> * Internet Protocol, version 4</span>
+00645 <span class="comment"> * Static header size: 20 bytes</span>
+00646 <span class="comment"> */</span>
+00647 <span class="keyword">struct </span>libnet_ipv4_hdr
+00648 {
+00649 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
+00650 <span class="preprocessor"></span> u_int8_t ip_hl:4, <span class="comment">/* header length */</span>
+00651 ip_v:4; <span class="comment">/* version */</span>
+00652 <span class="preprocessor">#endif</span>
+00653 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
+00654 <span class="preprocessor"></span> u_int8_t ip_v:4, <span class="comment">/* version */</span>
+00655 ip_hl:4; <span class="comment">/* header length */</span>
+00656 <span class="preprocessor">#endif</span>
+00657 <span class="preprocessor"></span> u_int8_t ip_tos; <span class="comment">/* type of service */</span>
+00658 <span class="preprocessor">#ifndef IPTOS_LOWDELAY</span>
+00659 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWDELAY 0x10</span>
+00660 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00661 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_THROUGHPUT</span>
+00662 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_THROUGHPUT 0x08</span>
+00663 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00664 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_RELIABILITY</span>
+00665 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_RELIABILITY 0x04</span>
+00666 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00667 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_LOWCOST</span>
+00668 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWCOST 0x02</span>
+00669 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00670 <span class="preprocessor"></span> u_int16_t ip_len; <span class="comment">/* total length */</span>
+00671 u_int16_t ip_id; <span class="comment">/* identification */</span>
+00672 u_int16_t ip_off;
+00673 <span class="preprocessor">#ifndef IP_RF</span>
+00674 <span class="preprocessor"></span><span class="preprocessor">#define IP_RF 0x8000 </span><span class="comment">/* reserved fragment flag */</span>
+00675 <span class="preprocessor">#endif</span>
+00676 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_DF</span>
+00677 <span class="preprocessor"></span><span class="preprocessor">#define IP_DF 0x4000 </span><span class="comment">/* dont fragment flag */</span>
+00678 <span class="preprocessor">#endif</span>
+00679 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_MF</span>
+00680 <span class="preprocessor"></span><span class="preprocessor">#define IP_MF 0x2000 </span><span class="comment">/* more fragments flag */</span>
+00681 <span class="preprocessor">#endif </span>
+00682 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_OFFMASK</span>
+00683 <span class="preprocessor"></span><span class="preprocessor">#define IP_OFFMASK 0x1fff </span><span class="comment">/* mask for fragmenting bits */</span>
+00684 <span class="preprocessor">#endif</span>
+00685 <span class="preprocessor"></span> u_int8_t ip_ttl; <span class="comment">/* time to live */</span>
+00686 u_int8_t ip_p; <span class="comment">/* protocol */</span>
+00687 u_int16_t ip_sum; <span class="comment">/* checksum */</span>
+00688 <span class="keyword">struct </span>in_addr ip_src, ip_dst; <span class="comment">/* source and dest address */</span>
+00689 };
+00690
+00691 <span class="comment">/*</span>
+00692 <span class="comment"> * IP options</span>
+00693 <span class="comment"> */</span>
+00694 <span class="preprocessor">#ifndef IPOPT_EOL</span>
+00695 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_EOL 0 </span><span class="comment">/* end of option list */</span>
+00696 <span class="preprocessor">#endif</span>
+00697 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_NOP</span>
+00698 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_NOP 1 </span><span class="comment">/* no operation */</span>
+00699 <span class="preprocessor">#endif </span>
+00700 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_RR</span>
+00701 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_RR 7 </span><span class="comment">/* record packet route */</span>
+00702 <span class="preprocessor">#endif</span>
+00703 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_TS</span>
+00704 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_TS 68 </span><span class="comment">/* timestamp */</span>
+00705 <span class="preprocessor">#endif</span>
+00706 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SECURITY</span>
+00707 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SECURITY 130 </span><span class="comment">/* provide s,c,h,tcc */</span>
+00708 <span class="preprocessor">#endif</span>
+00709 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_LSRR</span>
+00710 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_LSRR 131 </span><span class="comment">/* loose source route */</span>
+00711 <span class="preprocessor">#endif</span>
+00712 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SATID</span>
+00713 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SATID 136 </span><span class="comment">/* satnet id */</span>
+00714 <span class="preprocessor">#endif</span>
+00715 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SSRR</span>
+00716 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SSRR 137 </span><span class="comment">/* strict source route */</span>
+00717 <span class="preprocessor">#endif</span>
+00718 <span class="preprocessor"></span>
+00719 <span class="keyword">struct </span>libnet_in6_addr
+00720 {
+00721 <span class="keyword">union</span>
+00722 <span class="keyword"> </span>{
+00723 u_int8_t __u6_addr8[16];
+00724 u_int16_t __u6_addr16[8];
+00725 u_int32_t __u6_addr32[4];
+00726 } __u6_addr; <span class="comment">/* 128-bit IP6 address */</span>
+00727 };
+00728 <span class="preprocessor">#define libnet_s6_addr __u6_addr.__u6_addr8</span>
+00729 <span class="preprocessor"></span>
+00730 <span class="comment">/*</span>
+00731 <span class="comment"> * IPv6 header</span>
+00732 <span class="comment"> * Internet Protocol, version 6</span>
+00733 <span class="comment"> * Static header size: 40 bytes</span>
+00734 <span class="comment"> */</span>
+00735 <span class="keyword">struct </span>libnet_ipv6_hdr
+00736 {
+00737 u_int8_t ip_flags[4]; <span class="comment">/* version, traffic class, flow label */</span>
+00738 u_int16_t ip_len; <span class="comment">/* total length */</span>
+00739 u_int8_t ip_nh; <span class="comment">/* next header */</span>
+00740 u_int8_t ip_hl; <span class="comment">/* hop limit */</span>
+00741 <span class="keyword">struct </span>libnet_in6_addr ip_src, ip_dst; <span class="comment">/* source and dest address */</span>
+00742
+00743 };
+00744
+00745 <span class="comment">/*</span>
+00746 <span class="comment"> * IPv6 frag header</span>
+00747 <span class="comment"> * Internet Protocol, version 6</span>
+00748 <span class="comment"> * Static header size: 8 bytes</span>
+00749 <span class="comment"> */</span>
+00750 <span class="preprocessor">#define LIBNET_IPV6_NH_FRAGMENT 44</span>
+00751 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_frag_hdr
+00752 {
+00753 u_int8_t ip_nh; <span class="comment">/* next header */</span>
+00754 u_int8_t ip_reserved; <span class="comment">/* reserved */</span>
+00755 u_int16_t ip_frag; <span class="comment">/* fragmentation stuff */</span>
+00756 u_int32_t ip_id; <span class="comment">/* id */</span>
+00757 };
+00758
+00759 <span class="comment">/*</span>
+00760 <span class="comment"> * IPv6 routing header</span>
+00761 <span class="comment"> * Internet Protocol, version 6</span>
+00762 <span class="comment"> * Base header size: 4 bytes</span>
+00763 <span class="comment"> */</span>
+00764 <span class="preprocessor">#define LIBNET_IPV6_NH_ROUTING 43</span>
+00765 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_routing_hdr
+00766 {
+00767 u_int8_t ip_nh; <span class="comment">/* next header */</span>
+00768 u_int8_t ip_len; <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
+00769 u_int8_t ip_rtype; <span class="comment">/* routing type */</span>
+00770 u_int8_t ip_segments; <span class="comment">/* segments left */</span>
+00771 <span class="comment">/* routing information allocated dynamically */</span>
+00772 };
+00773
+00774 <span class="comment">/*</span>
+00775 <span class="comment"> * IPv6 destination options header</span>
+00776 <span class="comment"> * Internet Protocol, version 6</span>
+00777 <span class="comment"> * Base header size: 2 bytes</span>
+00778 <span class="comment"> */</span>
+00779 <span class="preprocessor">#define LIBNET_IPV6_NH_DESTOPTS 60</span>
+00780 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_destopts_hdr
+00781 {
+00782 u_int8_t ip_nh; <span class="comment">/* next header */</span>
+00783 u_int8_t ip_len; <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
+00784 <span class="comment">/* destination options information allocated dynamically */</span>
+00785 };
+00786
+00787 <span class="comment">/*</span>
+00788 <span class="comment"> * IPv6 hop by hop options header</span>
+00789 <span class="comment"> * Internet Protocol, version 6</span>
+00790 <span class="comment"> * Base header size: 2 bytes</span>
+00791 <span class="comment"> */</span>
+00792 <span class="preprocessor">#define LIBNET_IPV6_NH_HBH 0</span>
+00793 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_hbhopts_hdr
+00794 {
+00795 u_int8_t ip_nh; <span class="comment">/* next header */</span>
+00796 u_int8_t ip_len; <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
+00797 <span class="comment">/* destination options information allocated dynamically */</span>
+00798 };
+00799
+00800 <span class="comment">/*</span>
+00801 <span class="comment"> * ICMP6 header</span>
+00802 <span class="comment"> * Internet Control Message Protocol v6</span>
+00803 <span class="comment"> * Base header size: 8 bytes</span>
+00804 <span class="comment"> */</span>
+00805 <span class="preprocessor">#ifndef IPPROTO_ICMP6</span>
+00806 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_ICMP6 0x3a</span>
+00807 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00808 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_icmpv6_hdr
+00809 {
+00810 u_int8_t icmp_type; <span class="comment">/* ICMP type */</span>
+00811 <span class="preprocessor">#ifndef ICMP6_ECHO</span>
+00812 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_ECHO 128</span>
+00813 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00814 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_ECHOREPLY</span>
+00815 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_ECHOREPLY 129</span>
+00816 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00817 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_UNREACH</span>
+00818 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_UNREACH 1</span>
+00819 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00820 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_PKTTOOBIG</span>
+00821 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_PKTTOOBIG 2</span>
+00822 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00823 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_TIMXCEED</span>
+00824 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_TIMXCEED 3</span>
+00825 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00826 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_PARAMPROB</span>
+00827 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_PARAMPROB 4</span>
+00828 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00829 <span class="preprocessor"></span> u_int8_t icmp_code; <span class="comment">/* ICMP code */</span>
+00830 u_int16_t icmp_sum; <span class="comment">/* ICMP Checksum */</span>
+00831 u_int16_t id; <span class="comment">/* ICMP id */</span>
+00832 u_int16_t seq; <span class="comment">/* ICMP sequence number */</span>
+00833 };
+00834
+00835
+00836
+00837 <span class="comment">/*</span>
+00838 <span class="comment"> * ICMP header</span>
+00839 <span class="comment"> * Internet Control Message Protocol</span>
+00840 <span class="comment"> * Base header size: 4 bytes</span>
+00841 <span class="comment"> */</span>
+00842 <span class="keyword">struct </span>libnet_icmpv4_hdr
+00843 {
+00844 u_int8_t icmp_type; <span class="comment">/* ICMP type */</span>
+00845 <span class="preprocessor">#ifndef ICMP_ECHOREPLY</span>
+00846 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ECHOREPLY 0</span>
+00847 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00848 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH</span>
+00849 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH 3</span>
+00850 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00851 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_SOURCEQUENCH</span>
+00852 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_SOURCEQUENCH 4</span>
+00853 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00854 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT</span>
+00855 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT 5</span>
+00856 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00857 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_ECHO</span>
+00858 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ECHO 8</span>
+00859 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00860 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_ROUTERADVERT</span>
+00861 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ROUTERADVERT 9</span>
+00862 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00863 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_ROUTERSOLICIT</span>
+00864 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ROUTERSOLICIT 10</span>
+00865 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00866 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TIMXCEED</span>
+00867 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TIMXCEED 11</span>
+00868 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00869 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_PARAMPROB</span>
+00870 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_PARAMPROB 12</span>
+00871 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00872 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TSTAMP</span>
+00873 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TSTAMP 13</span>
+00874 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00875 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TSTAMPREPLY</span>
+00876 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TSTAMPREPLY 14</span>
+00877 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00878 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_IREQ</span>
+00879 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_IREQ 15</span>
+00880 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00881 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_IREQREPLY</span>
+00882 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_IREQREPLY 16</span>
+00883 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00884 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_MASKREQ</span>
+00885 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_MASKREQ 17</span>
+00886 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00887 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_MASKREPLY</span>
+00888 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_MASKREPLY 18</span>
+00889 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00890 <span class="preprocessor"></span> u_int8_t icmp_code; <span class="comment">/* ICMP code */</span>
+00891 <span class="preprocessor">#ifndef ICMP_UNREACH_NET</span>
+00892 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NET 0</span>
+00893 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00894 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST</span>
+00895 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST 1</span>
+00896 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00897 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_PROTOCOL</span>
+00898 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_PROTOCOL 2</span>
+00899 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00900 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_PORT</span>
+00901 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_PORT 3</span>
+00902 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00903 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_NEEDFRAG</span>
+00904 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NEEDFRAG 4</span>
+00905 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00906 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_SRCFAIL</span>
+00907 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_SRCFAIL 5</span>
+00908 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00909 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_NET_UNKNOWN</span>
+00910 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NET_UNKNOWN 6</span>
+00911 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00912 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST_UNKNOWN</span>
+00913 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST_UNKNOWN 7</span>
+00914 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00915 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_ISOLATED</span>
+00916 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_ISOLATED 8</span>
+00917 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00918 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_NET_PROHIB</span>
+00919 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NET_PROHIB 9</span>
+00920 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00921 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST_PROHIB</span>
+00922 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST_PROHIB 10</span>
+00923 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00924 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_TOSNET</span>
+00925 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_TOSNET 11</span>
+00926 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00927 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_TOSHOST</span>
+00928 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_TOSHOST 12</span>
+00929 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00930 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_FILTER_PROHIB</span>
+00931 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_FILTER_PROHIB 13</span>
+00932 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00933 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST_PRECEDENCE</span>
+00934 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST_PRECEDENCE 14</span>
+00935 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00936 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_PRECEDENCE_CUTOFF</span>
+00937 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15</span>
+00938 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00939 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_NET</span>
+00940 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_NET 0</span>
+00941 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00942 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_HOST</span>
+00943 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_HOST 1</span>
+00944 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00945 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_TOSNET</span>
+00946 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_TOSNET 2</span>
+00947 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00948 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_TOSHOST</span>
+00949 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_TOSHOST 3</span>
+00950 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00951 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TIMXCEED_INTRANS</span>
+00952 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TIMXCEED_INTRANS 0</span>
+00953 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00954 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TIMXCEED_REASS</span>
+00955 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TIMXCEED_REASS 1</span>
+00956 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00957 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_PARAMPROB_OPTABSENT</span>
+00958 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_PARAMPROB_OPTABSENT 1</span>
+00959 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00960 <span class="preprocessor"></span>
+00961 u_int16_t icmp_sum; <span class="comment">/* ICMP Checksum */</span>
+00962
+00963 <span class="keyword">union</span>
+00964 <span class="keyword"> </span>{
+00965 <span class="keyword">struct</span>
+00966 <span class="keyword"> </span>{
+00967 u_int16_t id; <span class="comment">/* ICMP id */</span>
+00968 u_int16_t seq;<span class="comment">/* ICMP sequence number */</span>
+00969 } echo;
+00970
+00971 <span class="preprocessor">#undef icmp_id</span>
+00972 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_seq</span>
+00973 <span class="preprocessor"></span><span class="preprocessor">#define icmp_id hun.echo.id</span>
+00974 <span class="preprocessor"></span><span class="preprocessor">#define icmp_seq hun.echo.seq</span>
+00975 <span class="preprocessor"></span>
+00976 u_int32_t gateway; <span class="comment">/* gateway host */</span>
+00977 <span class="keyword">struct</span>
+00978 <span class="keyword"> </span>{
+00979 u_int16_t pad;<span class="comment">/* padding */</span>
+00980 u_int16_t mtu;<span class="comment">/* MTU size */</span>
+00981 } frag;
+00982 } hun;
+00983 <span class="keyword">union</span>
+00984 <span class="keyword"> </span>{
+00985 <span class="keyword">struct</span>
+00986 <span class="keyword"> </span>{
+00987 n_time its_otime;
+00988 n_time its_rtime;
+00989 n_time its_ttime;
+00990 } ts;
+00991 <span class="keyword">struct</span>
+00992 <span class="keyword"> </span>{
+00993 <span class="keyword">struct </span>libnet_ipv4_hdr idi_ip;
+00994 <span class="comment">/* options and then 64 bits of data */</span>
+00995 } ip;
+00996 u_int32_t mask;
+00997 int8_t data[1];
+00998
+00999 <span class="preprocessor">#undef icmp_mask</span>
+01000 <span class="preprocessor"></span><span class="preprocessor">#define icmp_mask dun.mask</span>
+01001 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_data</span>
+01002 <span class="preprocessor"></span><span class="preprocessor">#define icmp_data dun.data</span>
+01003 <span class="preprocessor"></span>
+01004 <span class="preprocessor">#undef icmp_otime</span>
+01005 <span class="preprocessor"></span><span class="preprocessor">#define icmp_otime dun.ts.its_otime</span>
+01006 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_rtime</span>
+01007 <span class="preprocessor"></span><span class="preprocessor">#define icmp_rtime dun.ts.its_rtime</span>
+01008 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_ttime</span>
+01009 <span class="preprocessor"></span><span class="preprocessor">#define icmp_ttime dun.ts.its_ttime</span>
+01010 <span class="preprocessor"></span> }dun;
+01011 };
+01012
+01013
+01014 <span class="comment">/*</span>
+01015 <span class="comment"> * IGMP header</span>
+01016 <span class="comment"> * Internet Group Message Protocol</span>
+01017 <span class="comment"> * Static header size: 8 bytes</span>
+01018 <span class="comment"> */</span>
+01019 <span class="keyword">struct </span>libnet_igmp_hdr
+01020 {
+01021 u_int8_t igmp_type; <span class="comment">/* IGMP type */</span>
+01022 <span class="preprocessor">#ifndef IGMP_MEMBERSHIP_QUERY</span>
+01023 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_MEMBERSHIP_QUERY 0x11 </span><span class="comment">/* membership query */</span>
+01024 <span class="preprocessor">#endif</span>
+01025 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_V1_MEMBERSHIP_REPORT</span>
+01026 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_V1_MEMBERSHIP_REPORT 0x12 </span><span class="comment">/* Ver. 1 membership report */</span>
+01027 <span class="preprocessor">#endif</span>
+01028 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_V2_MEMBERSHIP_REPORT</span>
+01029 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_V2_MEMBERSHIP_REPORT 0x16 </span><span class="comment">/* Ver. 2 membership report */</span>
+01030 <span class="preprocessor">#endif</span>
+01031 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_LEAVE_GROUP</span>
+01032 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_LEAVE_GROUP 0x17 </span><span class="comment">/* Leave-group message */</span>
+01033 <span class="preprocessor">#endif</span>
+01034 <span class="preprocessor"></span> u_int8_t igmp_code; <span class="comment">/* IGMP code */</span>
+01035 u_int16_t igmp_sum; <span class="comment">/* IGMP checksum */</span>
+01036 <span class="keyword">struct </span>in_addr igmp_group;<span class="comment">/* IGMP host IP */</span>
+01037 };
+01038
+01039
+01040 <span class="comment">/*</span>
+01041 <span class="comment"> * IPSEC header</span>
+01042 <span class="comment"> * Internet Protocol Security Protocol</span>
+01043 <span class="comment"> * Encapsulating Security Payload Header Static header size: 12 bytes</span>
+01044 <span class="comment"> * Encapsulating Security Payload Footer Base header size: 2 bytes</span>
+01045 <span class="comment"> * Authentication Header Static Size: 16 bytes</span>
+01046 <span class="comment"> */</span>
+01047 <span class="preprocessor">#ifndef IPPROTO_ESP</span>
+01048 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_ESP 50 </span><span class="comment">/* not everyone's got this */</span>
+01049 <span class="preprocessor">#endif</span>
+01050 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_esp_hdr
+01051 {
+01052 u_int32_t esp_spi; <span class="comment">/* security parameter index */</span>
+01053 u_int32_t esp_seq; <span class="comment">/* ESP sequence number */</span>
+01054 u_int32_t esp_iv; <span class="comment">/* initialization vector */</span>
+01055 };
+01056
+01057 <span class="keyword">struct </span>libnet_esp_ftr
+01058 {
+01059 u_int8_t esp_pad_len; <span class="comment">/* padding length */</span>
+01060 u_int8_t esp_nh; <span class="comment">/* next header pointer */</span>
+01061 int8_t *esp_auth; <span class="comment">/* authentication data */</span>
+01062 };
+01063
+01064 <span class="preprocessor">#ifndef IPPROTO_AH</span>
+01065 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_AH 51 </span><span class="comment">/* not everyone's got this */</span>
+01066 <span class="preprocessor">#endif</span>
+01067 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ah_hdr
+01068 {
+01069 u_int8_t ah_nh; <span class="comment">/* next header */</span>
+01070 u_int8_t ah_len; <span class="comment">/* payload length */</span>
+01071 u_int16_t ah_res; <span class="comment">/* reserved */</span>
+01072 u_int32_t ah_spi; <span class="comment">/* security parameter index */</span>
+01073 u_int32_t ah_seq; <span class="comment">/* AH sequence number */</span>
+01074 u_int32_t ah_auth; <span class="comment">/* authentication data */</span>
+01075 };
+01076
+01077
+01078 <span class="comment">/*</span>
+01079 <span class="comment"> * ISL header</span>
+01080 <span class="comment"> * Cisco Inter-Switch Link</span>
+01081 <span class="comment"> * Static header size: 26 bytes</span>
+01082 <span class="comment"> */</span>
+01083 <span class="comment">/*</span>
+01084 <span class="comment"> * For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.</span>
+01085 <span class="comment"> * Let's hope this one stays that way for a while!</span>
+01086 <span class="comment"> */</span>
+01087 <span class="preprocessor">#define LIBNET_PROTO_ISL 201</span>
+01088 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_isl_hdr
+01089 {
+01090 u_int8_t isl_dhost[5]; <span class="comment">/* destination address "01:00:0c:00:00" */</span>
+01091 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
+01092 <span class="preprocessor"></span> u_int8_t isl_type:4, <span class="comment">/* type of frame */</span>
+01093 isl_user:4; <span class="comment">/* user defined bits */</span>
+01094 <span class="preprocessor">#endif</span>
+01095 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
+01096 <span class="preprocessor"></span> u_int8_t isl_user:4, <span class="comment">/* user defined bits */</span>
+01097 isl_type:4; <span class="comment">/* type of frame */</span>
+01098 <span class="preprocessor">#endif</span>
+01099 <span class="preprocessor"></span> u_int8_t isl_shost[6]; <span class="comment">/* source address */</span>
+01100 u_int16_t isl_len; <span class="comment">/* total length of packet - 18 bytes */</span>
+01101 u_int8_t isl_snap[6]; <span class="comment">/* 0xaaaa03 + vendor code */</span>
+01102 u_int16_t isl_vid; <span class="comment">/* 15 bit VLAN ID, 1 bit BPDU / CDP indicator */</span>
+01103 u_int16_t isl_index; <span class="comment">/* port index */</span>
+01104 u_int16_t isl_reserved; <span class="comment">/* used for FDDI and token ring */</span>
+01105 <span class="comment">/* ethernet frame and 4 byte isl crc */</span>
+01106 };
+01107
+01108 <span class="preprocessor">#ifndef IPPROTO_OSPF</span>
+01109 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_OSPF 89 </span><span class="comment">/* not everyone's got this */</span>
+01110 <span class="preprocessor">#endif</span>
+01111 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_OSPF_LSA 890 </span><span class="comment">/* made this up. Hope it's unused */</span>
+01112 <span class="preprocessor">#define LIBNET_MODX 4102 </span><span class="comment">/* used in LSA checksum */</span>
+01113
+01114 <span class="comment">/*</span>
+01115 <span class="comment"> * Options used in multiple OSPF packets</span>
+01116 <span class="comment"> * More info can be found in section A.2 of RFC 2328.</span>
+01117 <span class="comment"> */</span>
+01118 <span class="preprocessor">#define LIBNET_OPT_EBIT 0x02 </span><span class="comment">/* describes the way AS-external-LSAs are flooded */</span>
+01119 <span class="preprocessor">#define LIBNET_OPT_MCBIT 0x04 </span><span class="comment">/* whether or not IP multicast dgrams are fwdd */</span>
+01120 <span class="preprocessor">#define LIBNET_OPT_NPBIT 0x08 </span><span class="comment">/* describes handling of type-7 LSAs */</span>
+01121 <span class="preprocessor">#define LIBNET_OPT_EABIT 0x10 </span><span class="comment">/* rtr's willingness to send/recv EA-LSAs */</span>
+01122 <span class="preprocessor">#define LIBNET_OPT_DCBIT 0x20 </span><span class="comment">/* describes handling of demand circuits */</span>
+01123
+01124
+01125 <span class="comment">/*</span>
+01126 <span class="comment"> * MPLS header</span>
+01127 <span class="comment"> * Multi-Protocol Label Switching</span>
+01128 <span class="comment"> * Static header size: 4 bytes</span>
+01129 <span class="comment"> */</span>
+01130 <span class="keyword">struct </span>libnet_mpls_hdr
+01131 {
+01132 u_int32_t mpls_les; <span class="comment">/* 20 bits label, 3 bits exp, 1 bit bos, ttl */</span>
+01133 <span class="preprocessor">#define LIBNET_MPLS_BOS_ON 1</span>
+01134 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_MPLS_BOS_OFF 0</span>
+01135 <span class="preprocessor"></span>};
+01136
+01137 <span class="comment">/*</span>
+01138 <span class="comment"> * NTP header</span>
+01139 <span class="comment"> * Network Time Protocol</span>
+01140 <span class="comment"> * Static header size: 48 bytes</span>
+01141 <span class="comment"> */</span>
+01142 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp <span class="comment">/* int32_t floating point (64-bit) */</span>
+01143 {
+01144 u_int32_t integer; <span class="comment">/* integer */</span>
+01145 u_int32_t fraction; <span class="comment">/* fraction */</span>
+01146 };
+01147
+01148 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp <span class="comment">/* int16_t floating point (32-bit) */</span>
+01149 {
+01150 u_int16_t integer; <span class="comment">/* integer */</span>
+01151 u_int16_t fraction; <span class="comment">/* fraction */</span>
+01152 };
+01153
+01154
+01155 <span class="keyword">struct </span>libnet_ntp_hdr
+01156 {
+01157 u_int8_t ntp_li_vn_mode; <span class="comment">/* leap indicator, version, mode */</span>
+01158 <span class="preprocessor">#define LIBNET_NTP_LI_NW 0x0 </span><span class="comment">/* no warning */</span>
+01159 <span class="preprocessor">#define LIBNET_NTP_LI_AS 0x1 </span><span class="comment">/* last minute has 61 seconds */</span>
+01160 <span class="preprocessor">#define LIBNET_NTP_LI_DS 0x2 </span><span class="comment">/* last minute has 59 seconds */</span>
+01161 <span class="preprocessor">#define LIBNET_NTP_LI_AC 0x3 </span><span class="comment">/* alarm condition */</span>
+01162
+01163 <span class="preprocessor">#define LIBNET_NTP_VN_2 0x2 </span><span class="comment">/* version 2 */</span>
+01164 <span class="preprocessor">#define LIBNET_NTP_VN_3 0x3 </span><span class="comment">/* version 3 */</span>
+01165 <span class="preprocessor">#define LIBNET_NTP_VN_4 0x4 </span><span class="comment">/* version 4 */</span>
+01166
+01167 <span class="preprocessor">#define LIBNET_NTP_MODE_R 0x0 </span><span class="comment">/* reserved */</span>
+01168 <span class="preprocessor">#define LIBNET_NTP_MODE_A 0x1 </span><span class="comment">/* symmetric active */</span>
+01169 <span class="preprocessor">#define LIBNET_NTP_MODE_P 0x2 </span><span class="comment">/* symmetric passive */</span>
+01170 <span class="preprocessor">#define LIBNET_NTP_MODE_C 0x3 </span><span class="comment">/* client */</span>
+01171 <span class="preprocessor">#define LIBNET_NTP_MODE_S 0x4 </span><span class="comment">/* server */</span>
+01172 <span class="preprocessor">#define LIBNET_NTP_MODE_B 0x5 </span><span class="comment">/* broadcast */</span>
+01173 <span class="preprocessor">#define LIBNET_NTP_MODE_RC 0x6 </span><span class="comment">/* reserved for NTP control message */</span>
+01174 <span class="preprocessor">#define LIBNET_NTP_MODE_RP 0x7 </span><span class="comment">/* reserved for private use */</span>
+01175 u_int8_t ntp_stratum; <span class="comment">/* stratum */</span>
+01176 <span class="preprocessor">#define LIBNET_NTP_STRATUM_UNAVAIL 0x0 </span><span class="comment">/* unspecified or unavailable */</span>
+01177 <span class="preprocessor">#define LIBNET_NTP_STRATUM_PRIMARY 0x1 </span><span class="comment">/* primary reference (radio clock) */</span>
+01178 <span class="comment">/* 2 - 15 is secondary */</span>
+01179 <span class="comment">/* 16 - 255 is reserved */</span>
+01180 u_int8_t ntp_poll; <span class="comment">/* poll interval (should be 4 - 12) */</span>
+01181 u_int8_t ntp_precision; <span class="comment">/* local clock precision */</span>
+01182 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp ntp_delay; <span class="comment">/* roundtrip delay */</span>
+01183 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp ntp_dispersion; <span class="comment">/* nominal error */</span>
+01184 u_int32_t ntp_reference_id; <span class="comment">/* reference source id */</span>
+01185 <span class="preprocessor">#define LIBNET_NTP_REF_LOCAL 0x4c4f434c </span><span class="comment">/* uncalibrated local clock */</span>
+01186 <span class="preprocessor">#define LIBNET_NTP_REF_PPS 0x50505300 </span><span class="comment">/* atomic / pulse-per-second clock */</span>
+01187 <span class="preprocessor">#define LIBNET_NTP_REF_ACTS 0x41435453 </span><span class="comment">/* NIST dialup modem */</span>
+01188 <span class="preprocessor">#define LIBNET_NTP_REF_USNO 0x55534e4f </span><span class="comment">/* USNO modem service */</span>
+01189 <span class="preprocessor">#define LIBNET_NTP_REF_PTB 0x50544200 </span><span class="comment">/* PTB (German) modem service */</span>
+01190 <span class="preprocessor">#define LIBNET_NTP_REF_TDF 0x54444600 </span><span class="comment">/* Allouis (French) radio */</span>
+01191 <span class="preprocessor">#define LIBNET_NTP_REF_DCF 0x44434600 </span><span class="comment">/* Mainflingen (German) radio */</span>
+01192 <span class="preprocessor">#define LIBNET_NTP_REF_MSF 0x4d534600 </span><span class="comment">/* Rugby (UK) radio */</span>
+01193 <span class="preprocessor">#define LIBNET_NTP_REF_WWV 0x57575600 </span><span class="comment">/* Ft Collins (US) radio */</span>
+01194 <span class="preprocessor">#define LIBNET_NTP_REF_WWVB 0x57575642 </span><span class="comment">/* Boulder (US) radio */</span>
+01195 <span class="preprocessor">#define LIBNET_NTP_REF_WWVH 0x57575648 </span><span class="comment">/* Kaui Hawaii (US) radio */</span>
+01196 <span class="preprocessor">#define LIBNET_NTP_REF_CHU 0x43485500 </span><span class="comment">/* Ottaha (Canada) radio */</span>
+01197 <span class="preprocessor">#define LIBNET_NTP_REF_LORC 0x4c4f5243 </span><span class="comment">/* LORAN-C radionavigation */</span>
+01198 <span class="preprocessor">#define LIBNET_NTP_REF_OMEG 0x4f4d4547 </span><span class="comment">/* OMEGA radionavigation */</span>
+01199 <span class="preprocessor">#define LIBNET_NTP_REF_GPS 0x47505300 </span><span class="comment">/* global positioning system */</span>
+01200 <span class="preprocessor">#define LIBNET_NTP_REF_GOES 0x474f4553 </span><span class="comment">/* geostationary orbit env satellite */</span>
+01201 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_ref_ts; <span class="comment">/* reference timestamp */</span>
+01202 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_orig_ts; <span class="comment">/* originate timestamp */</span>
+01203 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_rec_ts; <span class="comment">/* receive timestamp */</span>
+01204 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_xmt_ts; <span class="comment">/* transmit timestamp */</span>
+01205 };
+01206
+01207
+01208 <span class="comment">/*</span>
+01209 <span class="comment"> * OSPFv2 header</span>
+01210 <span class="comment"> * Open Shortest Path First</span>
+01211 <span class="comment"> * Static header size: 16 bytes</span>
+01212 <span class="comment"> */</span>
+01213 <span class="keyword">struct </span>libnet_ospf_hdr
+01214 {
+01215 u_int8_t ospf_v; <span class="comment">/* version */</span>
+01216 <span class="preprocessor">#define OSPFVERSION 2</span>
+01217 <span class="preprocessor"></span> u_int8_t ospf_type; <span class="comment">/* type */</span>
+01218 <span class="preprocessor">#define LIBNET_OSPF_UMD 0 </span><span class="comment">/* UMd monitoring packet */</span>
+01219 <span class="preprocessor">#define LIBNET_OSPF_HELLO 1 </span><span class="comment">/* HELLO packet */</span>
+01220 <span class="preprocessor">#define LIBNET_OSPF_DBD 2 </span><span class="comment">/* dataBase description packet */</span>
+01221 <span class="preprocessor">#define LIBNET_OSPF_LSR 3 </span><span class="comment">/* link state request packet */</span>
+01222 <span class="preprocessor">#define LIBNET_OSPF_LSU 4 </span><span class="comment">/* link state Update Packet */</span>
+01223 <span class="preprocessor">#define LIBNET_OSPF_LSA 5 </span><span class="comment">/* link state acknowledgement packet */</span>
+01224 u_int16_t ospf_len; <span class="comment">/* length */</span>
+01225 <span class="keyword">struct </span>in_addr ospf_rtr_id; <span class="comment">/* source router ID */</span>
+01226 <span class="keyword">struct </span>in_addr ospf_area_id;<span class="comment">/* roam ID */</span>
+01227 u_int16_t ospf_sum; <span class="comment">/* checksum */</span>
+01228 u_int16_t ospf_auth_type; <span class="comment">/* authentication type */</span>
+01229 <span class="preprocessor">#define LIBNET_OSPF_AUTH_NULL 0 </span><span class="comment">/* null password */</span>
+01230 <span class="preprocessor">#define LIBNET_OSPF_AUTH_SIMPLE 1 </span><span class="comment">/* simple, plaintext, 8 int8_t password */</span>
+01231 <span class="preprocessor">#define LIBNET_OSPF_AUTH_MD5 2 </span><span class="comment">/* MD5 */</span>
+01232 };
+01233
+01234
+01235 <span class="comment">/*</span>
+01236 <span class="comment"> * OSPF authentication header</span>
+01237 <span class="comment"> * Open Shortest Path First</span>
+01238 <span class="comment"> * Static header size: 8 bytes</span>
+01239 <span class="comment"> */</span>
+01240 <span class="keyword">struct </span>libnet_auth_hdr
+01241 {
+01242 u_int16_t ospf_auth_null; <span class="comment">/* NULL */</span>
+01243 u_int8_t ospf_auth_keyid; <span class="comment">/* authentication key ID */</span>
+01244 u_int8_t ospf_auth_len; <span class="comment">/* auth data length */</span>
+01245 u_int ospf_auth_seq; <span class="comment">/* cryptographic sequence number */</span>
+01246 };
+01247
+01248
+01249 <span class="comment">/*</span>
+01250 <span class="comment"> * OSPF hello header</span>
+01251 <span class="comment"> * Open Shortest Path First</span>
+01252 <span class="comment"> * Static header size: 28 bytes</span>
+01253 <span class="comment"> */</span>
+01254 <span class="keyword">struct </span>libnet_ospf_hello_hdr
+01255 {
+01256 <span class="keyword">struct </span>in_addr hello_nmask; <span class="comment">/* netmask associated with the interface */</span>
+01257 u_int16_t hello_intrvl; <span class="comment">/* num of seconds between routers last packet */</span>
+01258 u_int8_t hello_opts; <span class="comment">/* Options for HELLO packets (look above) */</span>
+01259 u_int8_t hello_rtr_pri; <span class="comment">/* router's priority (if 0, can't be backup) */</span>
+01260 u_int hello_dead_intvl; <span class="comment">/* # of secs a router is silent till deemed down */</span>
+01261 <span class="keyword">struct </span>in_addr hello_des_rtr; <span class="comment">/* Designated router on the network */</span>
+01262 <span class="keyword">struct </span>in_addr hello_bkup_rtr; <span class="comment">/* Backup router */</span>
+01263 <span class="keyword">struct </span>in_addr hello_nbr; <span class="comment">/* neighbor router, memcpy more as needed */</span>
+01264 };
+01265
+01266
+01267 <span class="comment">/*</span>
+01268 <span class="comment"> * Database Description header.</span>
+01269 <span class="comment"> */</span>
+01270 <span class="keyword">struct </span>libnet_dbd_hdr
+01271 {
+01272 u_int16_t dbd_mtu_len; <span class="comment">/* max length of IP dgram that this 'if' can use */</span>
+01273 u_int8_t dbd_opts; <span class="comment">/* DBD packet options (from above) */</span>
+01274 u_int8_t dbd_type; <span class="comment">/* type of exchange occurring */</span>
+01275 <span class="preprocessor">#define LIBNET_DBD_IBI 0x01 </span><span class="comment">/* init */</span>
+01276 <span class="preprocessor">#define LIBNET_DBD_MBIT 0x02 </span><span class="comment">/* more DBD packets are to come */</span>
+01277 <span class="preprocessor">#define LIBNET_DBD_MSBIT 0x04 </span><span class="comment">/* If 1, sender is the master in the exchange */</span>
+01278 u_int dbd_seq; <span class="comment">/* DBD sequence number */</span>
+01279 };
+01280
+01281
+01282 <span class="comment">/*</span>
+01283 <span class="comment"> * used for the LS type field in all LS* headers</span>
+01284 <span class="comment"> */</span>
+01285 <span class="preprocessor">#define LIBNET_LS_TYPE_RTR 1 </span><span class="comment">/* router-LSA */</span>
+01286 <span class="preprocessor">#define LIBNET_LS_TYPE_NET 2 </span><span class="comment">/* network-LSA */</span>
+01287 <span class="preprocessor">#define LIBNET_LS_TYPE_IP 3 </span><span class="comment">/* summary-LSA (IP Network) */</span>
+01288 <span class="preprocessor">#define LIBNET_LS_TYPE_ASBR 4 </span><span class="comment">/* summary-LSA (ASBR) */</span>
+01289 <span class="preprocessor">#define LIBNET_LS_TYPE_ASEXT 5 </span><span class="comment">/* AS-external-LSA */</span>
+01290
+01291
+01292 <span class="comment">/*</span>
+01293 <span class="comment"> * Link State Request header</span>
+01294 <span class="comment"> */</span>
+01295 <span class="keyword">struct </span>libnet_lsr_hdr
+01296 {
+01297 u_int lsr_type; <span class="comment">/* type of LS being requested */</span>
+01298 u_int lsr_lsid; <span class="comment">/* link state ID */</span>
+01299 <span class="keyword">struct </span>in_addr lsr_adrtr; <span class="comment">/* advertising router (memcpy more as needed) */</span>
+01300 };
+01301
+01302
+01303 <span class="comment">/*</span>
+01304 <span class="comment"> * Link State Update header</span>
+01305 <span class="comment"> */</span>
+01306 <span class="keyword">struct </span>libnet_lsu_hdr
+01307 {
+01308 u_int lsu_num; <span class="comment">/* number of LSAs that will be broadcasted */</span>
+01309 };
+01310
+01311
+01312 <span class="comment">/*</span>
+01313 <span class="comment"> * Link State Acknowledgement header.</span>
+01314 <span class="comment"> */</span>
+01315 <span class="keyword">struct </span>libnet_lsa_hdr
+01316 {
+01317 u_int16_t lsa_age; <span class="comment">/* time in seconds since the LSA was originated */</span>
+01318 u_int8_t lsa_opts; <span class="comment">/* look above for OPTS_* */</span>
+01319 u_int8_t lsa_type; <span class="comment">/* look below for LS_TYPE_* */</span>
+01320 u_int lsa_id; <span class="comment">/* link State ID */</span>
+01321 <span class="keyword">struct </span>in_addr lsa_adv; <span class="comment">/* router ID of Advertising router */</span>
+01322 u_int lsa_seq; <span class="comment">/* LSA sequence number to detect old/bad ones */</span>
+01323 u_int16_t lsa_sum; <span class="comment">/* "Fletcher Checksum" of all fields minus age */</span>
+01324 u_int16_t lsa_len; <span class="comment">/* length in bytes including the 20 byte header */</span>
+01325 };
+01326
+01327
+01328 <span class="comment">/*</span>
+01329 <span class="comment"> * Router LSA data format</span>
+01330 <span class="comment"> *</span>
+01331 <span class="comment"> * Other stuff for TOS can be added for backward compatability, for this</span>
+01332 <span class="comment"> * version, only OSPFv2 is being FULLY supported.</span>
+01333 <span class="comment"> */</span>
+01334 <span class="keyword">struct </span>libnet_rtr_lsa_hdr
+01335 {
+01336 u_int16_t rtr_flags; <span class="comment">/* set to help describe packet */</span>
+01337 <span class="preprocessor">#define LIBNET_RTR_FLAGS_W 0x0100 </span><span class="comment">/* W bit */</span>
+01338 <span class="preprocessor">#define LIBNET_RTR_FLAGS_E 0x0200 </span><span class="comment">/* E bit */</span>
+01339 <span class="preprocessor">#define LIBNET_RTR_FLAGS_B 0x0400 </span><span class="comment">/* B bit */</span>
+01340 u_int16_t rtr_num; <span class="comment">/* number of links within that packet */</span>
+01341 u_int rtr_link_id; <span class="comment">/* describes link_data (look below) */</span>
+01342 <span class="preprocessor">#define LIBNET_LINK_ID_NBR_ID 1 </span><span class="comment">/* Neighbors router ID, also can be 4 */</span>
+01343 <span class="preprocessor">#define LIBNET_LINK_ID_IP_DES 2 </span><span class="comment">/* IP address of designated router */</span>
+01344 <span class="preprocessor">#define LIBNET_LINK_ID_SUB 3 </span><span class="comment">/* IP subnet number */</span>
+01345 u_int rtr_link_data; <span class="comment">/* Depending on link_id, info is here */</span>
+01346 u_int8_t rtr_type; <span class="comment">/* Description of router link */</span>
+01347 <span class="preprocessor">#define LIBNET_RTR_TYPE_PTP 1 </span><span class="comment">/* Point-To-Point */</span>
+01348 <span class="preprocessor">#define LIBNET_RTR_TYPE_TRANS 2 </span><span class="comment">/* Connection to a "transit network" */</span>
+01349 <span class="preprocessor">#define LIBNET_RTR_TYPE_STUB 3 </span><span class="comment">/* Connectin to a "stub network" */</span>
+01350 <span class="preprocessor">#define RTR_TYPE_VRTL 4 </span><span class="comment">/* connects to a "virtual link" */</span>
+01351 u_int8_t rtr_tos_num; <span class="comment">/* number of different TOS metrics for this link */</span>
+01352 u_int16_t rtr_metric; <span class="comment">/* the "cost" of using this link */</span>
+01353 };
+01354
+01355
+01356 <span class="comment">/*</span>
+01357 <span class="comment"> * Network LSA data format.</span>
+01358 <span class="comment"> */</span>
+01359 <span class="keyword">struct </span>libnet_net_lsa_hdr
+01360 {
+01361 <span class="keyword">struct </span>in_addr net_nmask; <span class="comment">/* Netmask for that network */</span>
+01362 u_int net_rtr_id; <span class="comment">/* ID of router attached to that network */</span>
+01363 };
+01364
+01365
+01366 <span class="comment">/*</span>
+01367 <span class="comment"> * Summary LSA data format.</span>
+01368 <span class="comment"> */</span>
+01369 <span class="keyword">struct </span>libnet_sum_lsa_hdr
+01370 {
+01371 <span class="keyword">struct </span>in_addr sum_nmask; <span class="comment">/* Netmask of destination IP address */</span>
+01372 u_int sum_metric; <span class="comment">/* Same as in rtr_lsa (&amp;0xfff to use last 24bit */</span>
+01373 u_int sum_tos_metric; <span class="comment">/* first 8bits are TOS, 24bits are TOS Metric */</span>
+01374 };
+01375
+01376
+01377 <span class="comment">/*</span>
+01378 <span class="comment"> * AS External LSA data format.</span>
+01379 <span class="comment"> * &amp; 0xfff logic operator for as_metric to get last 24bits.</span>
+01380 <span class="comment"> */</span>
+01381 <span class="keyword">struct </span>libnet_as_lsa_hdr
+01382 {
+01383 <span class="keyword">struct </span>in_addr as_nmask; <span class="comment">/* Netmask for advertised destination */</span>
+01384 u_int as_metric; <span class="comment">/* May have to set E bit in first 8bits */</span>
+01385 <span class="preprocessor">#define LIBNET_AS_E_BIT_ON 0x80000000 </span><span class="comment">/* as_metric */</span>
+01386 <span class="keyword">struct </span>in_addr as_fwd_addr; <span class="comment">/* Forwarding address */</span>
+01387 u_int as_rte_tag; <span class="comment">/* External route tag */</span>
+01388 };
+01389
+01390
+01391 <span class="comment">/*</span>
+01392 <span class="comment"> * Base RIP header</span>
+01393 <span class="comment"> * Routing Information Protocol</span>
+01394 <span class="comment"> * Base header size: 24 bytes</span>
+01395 <span class="comment"> */</span>
+01396 <span class="keyword">struct </span>libnet_rip_hdr
+01397 {
+01398 u_int8_t rip_cmd; <span class="comment">/* RIP command */</span>
+01399 <span class="preprocessor">#define RIPCMD_REQUEST 1 </span><span class="comment">/* want info */</span>
+01400 <span class="preprocessor">#define RIPCMD_RESPONSE 2 </span><span class="comment">/* responding to request */</span>
+01401 <span class="preprocessor">#define RIPCMD_TRACEON 3 </span><span class="comment">/* turn tracing on */</span>
+01402 <span class="preprocessor">#define RIPCMD_TRACEOFF 4 </span><span class="comment">/* turn it off */</span>
+01403 <span class="preprocessor">#define RIPCMD_POLL 5 </span><span class="comment">/* like request, but anyone answers */</span>
+01404 <span class="preprocessor">#define RIPCMD_POLLENTRY 6 </span><span class="comment">/* like poll, but for entire entry */</span>
+01405 <span class="preprocessor">#define RIPCMD_MAX 7 </span><span class="comment">/* ? command */</span>
+01406 u_int8_t rip_ver; <span class="comment">/* RIP version */</span>
+01407 <span class="preprocessor">#define RIPVER_0 0</span>
+01408 <span class="preprocessor"></span><span class="preprocessor">#define RIPVER_1 1</span>
+01409 <span class="preprocessor"></span><span class="preprocessor">#define RIPVER_2 2</span>
+01410 <span class="preprocessor"></span> u_int16_t rip_rd; <span class="comment">/* Zero (v1) or Routing Domain (v2) */</span>
+01411 u_int16_t rip_af; <span class="comment">/* Address family */</span>
+01412 u_int16_t rip_rt; <span class="comment">/* Zero (v1) or Route Tag (v2) */</span>
+01413 u_int32_t rip_addr; <span class="comment">/* IP address */</span>
+01414 u_int32_t rip_mask; <span class="comment">/* Zero (v1) or Subnet Mask (v2) */</span>
+01415 u_int32_t rip_next_hop; <span class="comment">/* Zero (v1) or Next hop IP address (v2) */</span>
+01416 u_int32_t rip_metric; <span class="comment">/* Metric */</span>
+01417 };
+01418
+01419 <span class="comment">/*</span>
+01420 <span class="comment"> * RPC headers</span>
+01421 <span class="comment"> * Remote Procedure Call</span>
+01422 <span class="comment"> */</span>
+01423 <span class="preprocessor">#define LIBNET_RPC_CALL 0</span>
+01424 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_REPLY 1</span>
+01425 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_VERS 2</span>
+01426 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_LAST_FRAG 0x80000000</span>
+01427 <span class="preprocessor"></span>
+01428 <span class="comment">/*</span>
+01429 <span class="comment"> * Portmap defines</span>
+01430 <span class="comment"> */</span>
+01431 <span class="preprocessor">#define LIBNET_PMAP_PROGRAM 100000</span>
+01432 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_NULL 0</span>
+01433 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_SET 1</span>
+01434 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_UNSET 2</span>
+01435 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETADDR 3</span>
+01436 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_DUMP 4</span>
+01437 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_CALLIT 5</span>
+01438 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_BCAST 5 </span><span class="comment">/* Not a typo */</span>
+01439 <span class="preprocessor">#define LIBNET_PMAP_PROC_GETTIME 6</span>
+01440 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_UADDR2TADDR 7</span>
+01441 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_TADDR2UADDR 8</span>
+01442 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETVERSADDR 9</span>
+01443 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_INDIRECT 10</span>
+01444 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETADDRLIST 11</span>
+01445 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETSTAT 12</span>
+01446 <span class="preprocessor"></span>
+01447 <span class="comment">/* There will be more to add... */</span>
+01448
+01449 <span class="keyword">struct </span>libnet_rpc_opaque_auth
+01450 {
+01451 u_int32_t rpc_auth_flavor;
+01452 u_int32_t rpc_auth_length;
+01453 <span class="comment">// u_int8_t *rpc_auth_data;</span>
+01454 };
+01455
+01456 <span class="keyword">struct </span>libnet_rpc_call
+01457 {
+01458 u_int32_t rpc_rpcvers; <span class="comment">/* RPC version - must be 2 */</span>
+01459 u_int32_t rpc_prognum; <span class="comment">/* Program Number */</span>
+01460 u_int32_t rpc_vers; <span class="comment">/* Program Version */</span>
+01461 u_int32_t rpc_procedure; <span class="comment">/* RPC procedure */</span>
+01462 <span class="keyword">struct </span>libnet_rpc_opaque_auth rpc_credentials;
+01463 <span class="keyword">struct </span>libnet_rpc_opaque_auth rpc_verifier;
+01464 };
+01465
+01466 <span class="keyword">struct </span>libnet_rpc_call_hdr
+01467 {
+01468 u_int32_t rpc_xid; <span class="comment">/* xid (transaction identifier) */</span>
+01469 u_int32_t rpc_type;
+01470 <span class="keyword">struct </span>libnet_rpc_call rpc_call;
+01471 };
+01472
+01473 <span class="keyword">struct </span>libnet_rpc_call_tcp_hdr
+01474 {
+01475 u_int32_t rpc_record_marking; <span class="comment">/* used with byte stream protocols */</span>
+01476 <span class="keyword">struct </span>libnet_rpc_call_hdr rpc_common;
+01477 };
+01478
+01479 <span class="comment">/*</span>
+01480 <span class="comment"> * STP configuration header</span>
+01481 <span class="comment"> * Spanning Tree Protocol</span>
+01482 <span class="comment"> * Static header size: 35 bytes</span>
+01483 <span class="comment"> */</span>
+01484 <span class="keyword">struct </span>libnet_stp_conf_hdr
+01485 {
+01486 u_int16_t stp_id; <span class="comment">/* protocol id */</span>
+01487 u_int8_t stp_version; <span class="comment">/* protocol version */</span>
+01488 u_int8_t stp_bpdu_type; <span class="comment">/* bridge protocol data unit type */</span>
+01489 u_int8_t stp_flags; <span class="comment">/* control flags */</span>
+01490 u_int8_t stp_rootid[8]; <span class="comment">/* root id */</span>
+01491 u_int32_t stp_rootpc; <span class="comment">/* root path cost */</span>
+01492 u_int8_t stp_bridgeid[8]; <span class="comment">/* bridge id */</span>
+01493 u_int16_t stp_portid; <span class="comment">/* port id */</span>
+01494 u_int16_t stp_mage; <span class="comment">/* message age */</span>
+01495 u_int16_t stp_maxage; <span class="comment">/* max age */</span>
+01496 u_int16_t stp_hellot; <span class="comment">/* hello time */</span>
+01497 u_int16_t stp_fdelay; <span class="comment">/* forward delay */</span>
+01498 };
+01499
+01500
+01501 <span class="comment">/*</span>
+01502 <span class="comment"> * STP topology change notification header</span>
+01503 <span class="comment"> * Spanning Tree Protocol</span>
+01504 <span class="comment"> * Static header size: 4 bytes</span>
+01505 <span class="comment"> */</span>
+01506 <span class="keyword">struct </span>libnet_stp_tcn_hdr
+01507 {
+01508 u_int16_t stp_id; <span class="comment">/* protocol id */</span>
+01509 u_int8_t stp_version; <span class="comment">/* protocol version */</span>
+01510 u_int8_t stp_bpdu_type; <span class="comment">/* bridge protocol data unit type */</span>
+01511 };
+01512
+01513
+01514 <span class="comment">/*</span>
+01515 <span class="comment"> * TCP header</span>
+01516 <span class="comment"> * Transmission Control Protocol</span>
+01517 <span class="comment"> * Static header size: 20 bytes</span>
+01518 <span class="comment"> */</span>
+01519 <span class="keyword">struct </span>libnet_tcp_hdr
+01520 {
+01521 u_int16_t th_sport; <span class="comment">/* source port */</span>
+01522 u_int16_t th_dport; <span class="comment">/* destination port */</span>
+01523 u_int32_t th_seq; <span class="comment">/* sequence number */</span>
+01524 u_int32_t th_ack; <span class="comment">/* acknowledgement number */</span>
+01525 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
+01526 <span class="preprocessor"></span> u_int8_t th_x2:4, <span class="comment">/* (unused) */</span>
+01527 th_off:4; <span class="comment">/* data offset */</span>
+01528 <span class="preprocessor">#endif</span>
+01529 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
+01530 <span class="preprocessor"></span> u_int8_t th_off:4, <span class="comment">/* data offset */</span>
+01531 th_x2:4; <span class="comment">/* (unused) */</span>
+01532 <span class="preprocessor">#endif</span>
+01533 <span class="preprocessor"></span> u_int8_t th_flags; <span class="comment">/* control flags */</span>
+01534 <span class="preprocessor">#ifndef TH_FIN</span>
+01535 <span class="preprocessor"></span><span class="preprocessor">#define TH_FIN 0x01 </span><span class="comment">/* finished send data */</span>
+01536 <span class="preprocessor">#endif</span>
+01537 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_SYN</span>
+01538 <span class="preprocessor"></span><span class="preprocessor">#define TH_SYN 0x02 </span><span class="comment">/* synchronize sequence numbers */</span>
+01539 <span class="preprocessor">#endif</span>
+01540 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_RST</span>
+01541 <span class="preprocessor"></span><span class="preprocessor">#define TH_RST 0x04 </span><span class="comment">/* reset the connection */</span>
+01542 <span class="preprocessor">#endif</span>
+01543 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_PUSH</span>
+01544 <span class="preprocessor"></span><span class="preprocessor">#define TH_PUSH 0x08 </span><span class="comment">/* push data to the app layer */</span>
+01545 <span class="preprocessor">#endif</span>
+01546 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_ACK</span>
+01547 <span class="preprocessor"></span><span class="preprocessor">#define TH_ACK 0x10 </span><span class="comment">/* acknowledge */</span>
+01548 <span class="preprocessor">#endif</span>
+01549 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_URG</span>
+01550 <span class="preprocessor"></span><span class="preprocessor">#define TH_URG 0x20 </span><span class="comment">/* urgent! */</span>
+01551 <span class="preprocessor">#endif</span>
+01552 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_ECE</span>
+01553 <span class="preprocessor"></span><span class="preprocessor">#define TH_ECE 0x40</span>
+01554 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+01555 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_CWR </span>
+01556 <span class="preprocessor"></span><span class="preprocessor">#define TH_CWR 0x80</span>
+01557 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+01558 <span class="preprocessor"></span> u_int16_t th_win; <span class="comment">/* window */</span>
+01559 u_int16_t th_sum; <span class="comment">/* checksum */</span>
+01560 u_int16_t th_urp; <span class="comment">/* urgent pointer */</span>
+01561 };
+01562
+01563 <span class="comment">/*</span>
+01564 <span class="comment"> * Token Ring Header</span>
+01565 <span class="comment"> */</span>
+01566 <span class="keyword">struct </span>libnet_token_ring_hdr
+01567 {
+01568 u_int8_t token_ring_access_control;
+01569 <span class="preprocessor">#define LIBNET_TOKEN_RING_FRAME 0x10</span>
+01570 <span class="preprocessor"></span> u_int8_t token_ring_frame_control;
+01571 <span class="preprocessor">#define LIBNET_TOKEN_RING_LLC_FRAME 0x40</span>
+01572 <span class="preprocessor"></span> u_int8_t token_ring_dhost[TOKEN_RING_ADDR_LEN];
+01573 u_int8_t token_ring_shost[TOKEN_RING_ADDR_LEN];
+01574 u_int8_t token_ring_llc_dsap;
+01575 u_int8_t token_ring_llc_ssap;
+01576 u_int8_t token_ring_llc_control_field;
+01577 u_int8_t token_ring_llc_org_code[LIBNET_ORG_CODE_SIZE];
+01578 u_int16_t token_ring_type;
+01579 <span class="preprocessor">#define TOKEN_RING_TYPE_IP 0x0800 </span><span class="comment">/* IP protocol */</span>
+01580 <span class="preprocessor">#define TOKEN_RING_TYPE_ARP 0x0806 </span><span class="comment">/* addr. resolution protocol */</span>
+01581 <span class="preprocessor">#define TOKEN_RING_TYPE_REVARP 0x8035 </span><span class="comment">/* reverse addr. resolution protocol */</span>
+01582 };
+01583
+01584 <span class="keyword">struct </span>libnet_token_ring_addr
+01585 {
+01586 u_int8_t token_ring_addr_octet[6]; <span class="comment">/* Token Ring address */</span>
+01587 };
+01588
+01589 <span class="comment">/*</span>
+01590 <span class="comment"> * UDP header</span>
+01591 <span class="comment"> * User Data Protocol</span>
+01592 <span class="comment"> * Static header size: 8 bytes</span>
+01593 <span class="comment"> */</span>
+01594 <span class="keyword">struct </span>libnet_udp_hdr
+01595 {
+01596 u_int16_t uh_sport; <span class="comment">/* soure port */</span>
+01597 u_int16_t uh_dport; <span class="comment">/* destination port */</span>
+01598 u_int16_t uh_ulen; <span class="comment">/* length */</span>
+01599 u_int16_t uh_sum; <span class="comment">/* checksum */</span>
+01600 };
+01601
+01602 <span class="comment">/*</span>
+01603 <span class="comment"> * Sebek header</span>
+01604 <span class="comment"> * Static header size: 48 bytes</span>
+01605 <span class="comment"> */</span>
+01606 <span class="keyword">struct </span>libnet_sebek_hdr
+01607 {
+01608 u_int32_t magic; <span class="comment">/* identify packets that should be hidden */</span>
+01609 u_int16_t version; <span class="comment">/* protocol version, currently 1 */</span>
+01610 <span class="preprocessor">#define SEBEK_PROTO_VERSION 1</span>
+01611 <span class="preprocessor"></span> u_int16_t type; <span class="comment">/* type of record (read data is type 0, write data is type 1) */</span>
+01612 <span class="preprocessor">#define SEBEK_TYPE_READ 0 </span><span class="comment">/* Currently, only read is supported */</span>
+01613 <span class="preprocessor">#define SEBEK_TYPE_WRITE 1</span>
+01614 <span class="preprocessor"></span> u_int32_t counter; <span class="comment">/* PDU counter used to identify when packet are lost */</span>
+01615 u_int32_t time_sec; <span class="comment">/* seconds since EPOCH according to the honeypot */</span>
+01616 u_int32_t time_usec; <span class="comment">/* residual microseconds */</span>
+01617 u_int32_t pid; <span class="comment">/* PID */</span>
+01618 u_int32_t uid; <span class="comment">/* UID */</span>
+01619 u_int32_t fd; <span class="comment">/* FD */</span>
+01620 <span class="preprocessor">#define SEBEK_CMD_LENGTH 12</span>
+01621 <span class="preprocessor"></span> u_int8_t cmd[SEBEK_CMD_LENGTH]; <span class="comment">/* 12 first characters of the command */</span>
+01622 u_int32_t length; <span class="comment">/* length in bytes of the PDU's body */</span>
+01623 };
+01624
+01625
+01626 <span class="comment">/*</span>
+01627 <span class="comment"> * VRRP header</span>
+01628 <span class="comment"> * Virtual Router Redundancy Protocol</span>
+01629 <span class="comment"> * Static header size: 8 bytes</span>
+01630 <span class="comment"> */</span>
+01631 <span class="preprocessor">#ifndef IPPROTO_VRRP</span>
+01632 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_VRRP 112 </span><span class="comment">/* not everyone's got this */</span>
+01633 <span class="preprocessor">#endif</span>
+01634 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_vrrp_hdr
+01635 {
+01636 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
+01637 <span class="preprocessor"></span> u_int8_t vrrp_v:4, <span class="comment">/* protocol version */</span>
+01638 vrrp_t:4; <span class="comment">/* packet type */</span>
+01639 <span class="preprocessor">#endif</span>
+01640 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
+01641 <span class="preprocessor"></span> u_int8_t vrrp_t:4, <span class="comment">/* packet type */</span>
+01642 vrrp_v:4; <span class="comment">/* protocol version */</span>
+01643 <span class="preprocessor">#endif</span>
+01644 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_VERSION_01 0x1</span>
+01645 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_VERSION_02 0x2</span>
+01646 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_TYPE_ADVERT 0x1</span>
+01647 <span class="preprocessor"></span> u_int8_t vrrp_vrouter_id; <span class="comment">/* virtual router id */</span>
+01648 u_int8_t vrrp_priority; <span class="comment">/* priority */</span>
+01649 u_int8_t vrrp_ip_count; <span class="comment">/* number of IP addresses */</span>
+01650 u_int8_t vrrp_auth_type; <span class="comment">/* authorization type */</span>
+01651 <span class="preprocessor">#define LIBNET_VRRP_AUTH_NONE 0x1</span>
+01652 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_AUTH_PASSWD 0x2</span>
+01653 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_AUTH_IPAH 0x3</span>
+01654 <span class="preprocessor"></span> u_int8_t vrrp_advert_int; <span class="comment">/* advertisement interval */</span>
+01655 u_int16_t vrrp_sum; <span class="comment">/* checksum */</span>
+01656 <span class="comment">/* additional addresses */</span>
+01657 <span class="comment">/* authentication info */</span>
+01658 };
+01659
+01660 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_HEADERS_H */</span>
+01661
+01662 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-headers_8h.html b/libnet/doc/html/libnet-headers_8h.html
new file mode 100644
index 0000000..e2e5da4
--- /dev/null
+++ b/libnet/doc/html/libnet-headers_8h.html
@@ -0,0 +1,3053 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-headers.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-headers.h File Reference</h1>libnet header information
+<a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="libnet-headers_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Data Structures</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1q__hdr.html">libnet_802_1q_hdr</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1x__hdr.html">libnet_802_1x_hdr</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_802_2_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_802_2snap_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_802_3_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ah_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_arp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_as_lsa_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_auth_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_bgp4_header_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_bgp4_notification_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_bgp4_open_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_cdp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_cdp_value_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_dbd_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_dhcpv4_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_dnsv4_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_esp_ftr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_esp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ether_addr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ethernet_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_fddi_addr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_fddi_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_gre_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_gre_sre_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_icmpv4_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_icmpv6_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_igmp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_in6_addr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ipv4_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ipv6_destopts_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ipv6_frag_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ipv6_hbhopts_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ipv6_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ipv6_routing_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_isl_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_lsa_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_lsr_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_lsu_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_mpls_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_net_lsa_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ntp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ntp_hdr_l_fp</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ntp_hdr_s_fp</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ospf_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_ospf_hello_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_rip_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_rpc_call</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_rpc_call_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_rpc_call_tcp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_rpc_opaque_auth</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_rtr_lsa_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_sebek_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_stp_conf_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_stp_tcn_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_sum_lsa_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_tcp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_token_ring_addr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_token_ring_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_udp_hdr</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>struct &nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_vrrp_hdr</b></td></tr>
+
+<tr><td colspan=2><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a0">LIBNET_802_1Q_H</a>&nbsp;&nbsp;&nbsp;0x12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a1">LIBNET_802_1X_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a2">LIBNET_802_2_H</a>&nbsp;&nbsp;&nbsp;0x03</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a3">LIBNET_802_2SNAP_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a4">LIBNET_802_3_H</a>&nbsp;&nbsp;&nbsp;0x0e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a5">LIBNET_ARP_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a6">LIBNET_ARP_ETH_IP_H</a>&nbsp;&nbsp;&nbsp;0x1c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a7">LIBNET_BGP4_HEADER_H</a>&nbsp;&nbsp;&nbsp;0x13</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a8">LIBNET_BGP4_OPEN_H</a>&nbsp;&nbsp;&nbsp;0x0a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a9">LIBNET_BGP4_UPDATE_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a10">LIBNET_BGP4_NOTIFICATION_H</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a11">LIBNET_CDP_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a12">LIBNET_DHCPV4_H</a>&nbsp;&nbsp;&nbsp;0xf0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a13">LIBNET_UDP_DNSV4_H</a>&nbsp;&nbsp;&nbsp;0x0c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a14">LIBNET_TCP_DNSV4_H</a>&nbsp;&nbsp;&nbsp;0x0e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a15">LIBNET_ETH_H</a>&nbsp;&nbsp;&nbsp;0x0e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a16">LIBNET_FDDI_H</a>&nbsp;&nbsp;&nbsp;0x15</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a17">LIBNET_ICMPV4_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a18">LIBNET_ICMPV4_ECHO_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a19">LIBNET_ICMPV4_MASK_H</a>&nbsp;&nbsp;&nbsp;0x0c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a20">LIBNET_ICMPV4_UNREACH_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a21">LIBNET_ICMPV4_TIMXCEED_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a22">LIBNET_ICMPV4_REDIRECT_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a23">LIBNET_ICMPV4_TS_H</a>&nbsp;&nbsp;&nbsp;0x14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a24">LIBNET_ICMPV6_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a25">LIBNET_IGMP_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a26">LIBNET_IPV4_H</a>&nbsp;&nbsp;&nbsp;0x14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a27">LIBNET_IPV6_H</a>&nbsp;&nbsp;&nbsp;0x28</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a28">LIBNET_IPV6_FRAG_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a29">LIBNET_IPV6_ROUTING_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a30">LIBNET_IPV6_DESTOPTS_H</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a31">LIBNET_IPV6_HBHOPTS_H</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a32">LIBNET_IPSEC_ESP_HDR_H</a>&nbsp;&nbsp;&nbsp;0x0c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a33">LIBNET_IPSEC_ESP_FTR_H</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a34">LIBNET_IPSEC_AH_H</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a35">LIBNET_ISL_H</a>&nbsp;&nbsp;&nbsp;0x1a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a36">LIBNET_GRE_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a37">LIBNET_GRE_SRE_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a38">LIBNET_MPLS_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a39">LIBNET_OSPF_H</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a40">LIBNET_OSPF_HELLO_H</a>&nbsp;&nbsp;&nbsp;0x18</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a41">LIBNET_OSPF_DBD_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a42">LIBNET_OSPF_LSR_H</a>&nbsp;&nbsp;&nbsp;0x0c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a43">LIBNET_OSPF_LSU_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a44">LIBNET_OSPF_LSA_H</a>&nbsp;&nbsp;&nbsp;0x14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a45">LIBNET_OSPF_AUTH_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a46">LIBNET_OSPF_CKSUM</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a47">LIBNET_OSPF_LS_RTR_H</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a48">LIBNET_OSPF_LS_NET_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a49">LIBNET_OSPF_LS_SUM_H</a>&nbsp;&nbsp;&nbsp;0x0c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a50">LIBNET_OSPF_LS_AS_EXT_H</a>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a51">LIBNET_NTP_H</a>&nbsp;&nbsp;&nbsp;0x30</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a52">LIBNET_RIP_H</a>&nbsp;&nbsp;&nbsp;0x18</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a53">LIBNET_RPC_CALL_H</a>&nbsp;&nbsp;&nbsp;0x28</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a54">LIBNET_RPC_CALL_TCP_H</a>&nbsp;&nbsp;&nbsp;0x2c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a55" doxytag="libnet-headers.h::LIBNET_SEBEK_H" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_SEBEK_H</b>&nbsp;&nbsp;&nbsp;0x30</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a56">LIBNET_STP_CONF_H</a>&nbsp;&nbsp;&nbsp;0x23</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a57">LIBNET_STP_TCN_H</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a58">LIBNET_TOKEN_RING_H</a>&nbsp;&nbsp;&nbsp;0x16</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a59">LIBNET_TCP_H</a>&nbsp;&nbsp;&nbsp;0x14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a60">LIBNET_UDP_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a61">LIBNET_VRRP_H</a>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a62">LIBNET_802_1Q_PRIMASK</a>&nbsp;&nbsp;&nbsp;0x0007</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a63">LIBNET_802_1Q_CFIMASK</a>&nbsp;&nbsp;&nbsp;0x0001</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a64">LIBNET_802_1Q_VIDMASK</a>&nbsp;&nbsp;&nbsp;0x0fff</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a65">LIBNET_802_1X_PACKET</a>&nbsp;&nbsp;&nbsp;0x00</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a66">LIBNET_802_1X_START</a>&nbsp;&nbsp;&nbsp;0x01</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a67">LIBNET_802_1X_LOGOFF</a>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a68">LIBNET_802_1X_KEY</a>&nbsp;&nbsp;&nbsp;0x03</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-headers_8h.html#a69">LIBNET_802_1X_ENCASFAL</a>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a70" doxytag="libnet-headers.h::LIBNET_SAP_STP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_SAP_STP</b>&nbsp;&nbsp;&nbsp;0x42</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a71" doxytag="libnet-headers.h::LIBNET_SAP_SNAP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_SAP_SNAP</b>&nbsp;&nbsp;&nbsp;0xaa</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a72" doxytag="libnet-headers.h::ARPHRD_NETROM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_NETROM</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a73" doxytag="libnet-headers.h::ARPHRD_ETHER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_ETHER</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a74" doxytag="libnet-headers.h::ARPHRD_EETHER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_EETHER</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a75" doxytag="libnet-headers.h::ARPHRD_AX25" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_AX25</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a76" doxytag="libnet-headers.h::ARPHRD_PRONET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_PRONET</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a77" doxytag="libnet-headers.h::ARPHRD_CHAOS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_CHAOS</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a78" doxytag="libnet-headers.h::ARPHRD_IEEE802" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_IEEE802</b>&nbsp;&nbsp;&nbsp;6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a79" doxytag="libnet-headers.h::ARPHRD_ARCNET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_ARCNET</b>&nbsp;&nbsp;&nbsp;7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a80" doxytag="libnet-headers.h::ARPHRD_APPLETLK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_APPLETLK</b>&nbsp;&nbsp;&nbsp;8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a81" doxytag="libnet-headers.h::ARPHRD_LANSTAR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_LANSTAR</b>&nbsp;&nbsp;&nbsp;9</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a82" doxytag="libnet-headers.h::ARPHRD_DLCI" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_DLCI</b>&nbsp;&nbsp;&nbsp;15</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a83" doxytag="libnet-headers.h::ARPHRD_ATM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_ATM</b>&nbsp;&nbsp;&nbsp;19</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a84" doxytag="libnet-headers.h::ARPHRD_METRICOM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_METRICOM</b>&nbsp;&nbsp;&nbsp;23</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a85" doxytag="libnet-headers.h::ARPHRD_IPSEC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPHRD_IPSEC</b>&nbsp;&nbsp;&nbsp;31</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a86" doxytag="libnet-headers.h::ARPOP_REQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPOP_REQUEST</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a87" doxytag="libnet-headers.h::ARPOP_REPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPOP_REPLY</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a88" doxytag="libnet-headers.h::ARPOP_REVREQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPOP_REVREQUEST</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a89" doxytag="libnet-headers.h::ARPOP_REVREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPOP_REVREPLY</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a90" doxytag="libnet-headers.h::ARPOP_INVREQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPOP_INVREQUEST</b>&nbsp;&nbsp;&nbsp;8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a91" doxytag="libnet-headers.h::ARPOP_INVREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ARPOP_INVREPLY</b>&nbsp;&nbsp;&nbsp;9</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a92" doxytag="libnet-headers.h::LIBNET_BGP4_MARKER_SIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_MARKER_SIZE</b>&nbsp;&nbsp;&nbsp;16</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a93" doxytag="libnet-headers.h::LIBNET_BGP4_OPEN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_OPEN</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a94" doxytag="libnet-headers.h::LIBNET_BGP4_UPDATE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_UPDATE</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a95" doxytag="libnet-headers.h::LIBNET_BGP4_NOTIFICATION" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_NOTIFICATION</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a96" doxytag="libnet-headers.h::LIBNET_BGP4_KEEPALIVE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_KEEPALIVE</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a97" doxytag="libnet-headers.h::LIBNET_BGP4_MESSAGE_HEADER_ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_MESSAGE_HEADER_ERROR</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a98" doxytag="libnet-headers.h::LIBNET_BGP4_OPEN_MESSAGE_ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_OPEN_MESSAGE_ERROR</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a99" doxytag="libnet-headers.h::LIBNET_BGP4_UPDATE_MESSAGE_ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_UPDATE_MESSAGE_ERROR</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a100" doxytag="libnet-headers.h::LIBNET_BGP4_HOLD_TIMER_EXPIRED" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_HOLD_TIMER_EXPIRED</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a101" doxytag="libnet-headers.h::LIBNET_BGP4_FINITE_STATE__ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_FINITE_STATE__ERROR</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a102" doxytag="libnet-headers.h::LIBNET_BGP4_CEASE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_CEASE</b>&nbsp;&nbsp;&nbsp;6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a103" doxytag="libnet-headers.h::LIBNET_BGP4_CONNECTION_NOT_SYNCHRONIZED" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_CONNECTION_NOT_SYNCHRONIZED</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a104" doxytag="libnet-headers.h::LIBNET_BGP4_BAD_MESSAGE_LENGTH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_BAD_MESSAGE_LENGTH</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a105" doxytag="libnet-headers.h::LIBNET_BGP4_BAD_MESSAGE_TYPE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_BAD_MESSAGE_TYPE</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a106" doxytag="libnet-headers.h::LIBNET_BGP4_UNSUPPORTED_VERSION_NUMBER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_UNSUPPORTED_VERSION_NUMBER</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a107" doxytag="libnet-headers.h::LIBNET_BGP4_BAD_PEER_AS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_BAD_PEER_AS</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a108" doxytag="libnet-headers.h::LIBNET_BGP4_BAD_BGP_IDENTIFIER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_BAD_BGP_IDENTIFIER</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a109" doxytag="libnet-headers.h::LIBNET_BGP4_UNSUPPORTED_OPTIONAL_PARAMETER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_UNSUPPORTED_OPTIONAL_PARAMETER</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a110" doxytag="libnet-headers.h::LIBNET_BGP4_AUTHENTICATION_FAILURE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_AUTHENTICATION_FAILURE</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a111" doxytag="libnet-headers.h::LIBNET_BGP4_UNACCEPTABLE_HOLD_TIME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_UNACCEPTABLE_HOLD_TIME</b>&nbsp;&nbsp;&nbsp;6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a112" doxytag="libnet-headers.h::LIBNET_BGP4_MALFORMED_ATTRIBUTE_LIST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_MALFORMED_ATTRIBUTE_LIST</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a113" doxytag="libnet-headers.h::LIBNET_BGP4_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a114" doxytag="libnet-headers.h::LIBNET_BGP4_MISSING_WELL_KNOWN_ATTRIBUTE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_MISSING_WELL_KNOWN_ATTRIBUTE</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a115" doxytag="libnet-headers.h::LIBNET_BGP4_ATTRIBUTE_FLAGS_ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_ATTRIBUTE_FLAGS_ERROR</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a116" doxytag="libnet-headers.h::LIBNET_BGP4_ATTRIBUTE_LENGTH_ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_ATTRIBUTE_LENGTH_ERROR</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a117" doxytag="libnet-headers.h::LIBNET_BGP4_INVALID_ORIGIN_ATTRIBUTE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_INVALID_ORIGIN_ATTRIBUTE</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a118" doxytag="libnet-headers.h::LIBNET_BGP4_AS_ROUTING_LOOP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_AS_ROUTING_LOOP</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a119" doxytag="libnet-headers.h::LIBNET_BGP4_INVALID_NEXT_HOP_ATTRIBUTE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_INVALID_NEXT_HOP_ATTRIBUTE</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a120" doxytag="libnet-headers.h::LIBNET_BGP4_OPTIONAL_ATTRIBUTE_ERROR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_OPTIONAL_ATTRIBUTE_ERROR</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a121" doxytag="libnet-headers.h::LIBNET_BGP4_INVALID_NETWORK_FIELD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_INVALID_NETWORK_FIELD</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a122" doxytag="libnet-headers.h::LIBNET_BGP4_MALFORMED_AS_PATH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BGP4_MALFORMED_AS_PATH</b></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a123" doxytag="libnet-headers.h::LIBNET_PROTO_CDP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PROTO_CDP</b>&nbsp;&nbsp;&nbsp;200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a124" doxytag="libnet-headers.h::LIBNET_CDP_DEVID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_DEVID</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a125" doxytag="libnet-headers.h::LIBNET_CDP_ADDRESS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_ADDRESS</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a126" doxytag="libnet-headers.h::LIBNET_CDP_PORTID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_PORTID</b>&nbsp;&nbsp;&nbsp;0x3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a127" doxytag="libnet-headers.h::LIBNET_CDP_CAPABIL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAPABIL</b>&nbsp;&nbsp;&nbsp;0x4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a128" doxytag="libnet-headers.h::LIBNET_CDP_VERSION" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_VERSION</b>&nbsp;&nbsp;&nbsp;0x5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a129" doxytag="libnet-headers.h::LIBNET_CDP_PLATFORM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_PLATFORM</b>&nbsp;&nbsp;&nbsp;0x6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a130" doxytag="libnet-headers.h::LIBNET_CDP_IPPREFIX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_IPPREFIX</b>&nbsp;&nbsp;&nbsp;0x7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a131" doxytag="libnet-headers.h::LIBNET_CDP_CAP_L3R" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_L3R</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a132" doxytag="libnet-headers.h::LIBNET_CDP_CAP_L2B" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_L2B</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a133" doxytag="libnet-headers.h::LIBNET_CDP_CAP_L2SRB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_L2SRB</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a134" doxytag="libnet-headers.h::LIBNET_CDP_CAP_L2S" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_L2S</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a135" doxytag="libnet-headers.h::LIBNET_CDP_CAP_SR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_SR</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a136" doxytag="libnet-headers.h::LIBNET_CDP_CAP_NOI" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_NOI</b>&nbsp;&nbsp;&nbsp;0x20</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a137" doxytag="libnet-headers.h::LIBNET_CDP_CAP_L1F" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CDP_CAP_L1F</b>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a138" doxytag="libnet-headers.h::LIBNET_DHCP_REQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_REQUEST</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a139" doxytag="libnet-headers.h::LIBNET_DHCP_REPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_REPLY</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a140" doxytag="libnet-headers.h::DHCP_MAGIC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>DHCP_MAGIC</b>&nbsp;&nbsp;&nbsp;0x63825363</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a141" doxytag="libnet-headers.h::LIBNET_BOOTP_MIN_LEN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_BOOTP_MIN_LEN</b>&nbsp;&nbsp;&nbsp;0x12c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a142" doxytag="libnet-headers.h::LIBNET_DHCP_PAD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_PAD</b>&nbsp;&nbsp;&nbsp;0x00</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a143" doxytag="libnet-headers.h::LIBNET_DHCP_SUBNETMASK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_SUBNETMASK</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a144" doxytag="libnet-headers.h::LIBNET_DHCP_TIMEOFFSET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_TIMEOFFSET</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a145" doxytag="libnet-headers.h::LIBNET_DHCP_ROUTER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_ROUTER</b>&nbsp;&nbsp;&nbsp;0x03</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a146" doxytag="libnet-headers.h::LIBNET_DHCP_TIMESERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_TIMESERVER</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a147" doxytag="libnet-headers.h::LIBNET_DHCP_NAMESERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NAMESERVER</b>&nbsp;&nbsp;&nbsp;0x05</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a148" doxytag="libnet-headers.h::LIBNET_DHCP_DNS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_DNS</b>&nbsp;&nbsp;&nbsp;0x06</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a149" doxytag="libnet-headers.h::LIBNET_DHCP_LOGSERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_LOGSERV</b>&nbsp;&nbsp;&nbsp;0x07</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a150" doxytag="libnet-headers.h::LIBNET_DHCP_COOKIESERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_COOKIESERV</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a151" doxytag="libnet-headers.h::LIBNET_DHCP_LPRSERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_LPRSERV</b>&nbsp;&nbsp;&nbsp;0x09</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a152" doxytag="libnet-headers.h::LIBNET_DHCP_IMPSERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_IMPSERV</b>&nbsp;&nbsp;&nbsp;0x0a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a153" doxytag="libnet-headers.h::LIBNET_DHCP_RESSERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_RESSERV</b>&nbsp;&nbsp;&nbsp;0x0b</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a154" doxytag="libnet-headers.h::LIBNET_DHCP_HOSTNAME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_HOSTNAME</b>&nbsp;&nbsp;&nbsp;0x0c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a155" doxytag="libnet-headers.h::LIBNET_DHCP_BOOTFILESIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_BOOTFILESIZE</b>&nbsp;&nbsp;&nbsp;0x0d</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a156" doxytag="libnet-headers.h::LIBNET_DHCP_DUMPFILE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_DUMPFILE</b>&nbsp;&nbsp;&nbsp;0x0e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a157" doxytag="libnet-headers.h::LIBNET_DHCP_DOMAINNAME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_DOMAINNAME</b>&nbsp;&nbsp;&nbsp;0x0f</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a158" doxytag="libnet-headers.h::LIBNET_DHCP_SWAPSERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_SWAPSERV</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a159" doxytag="libnet-headers.h::LIBNET_DHCP_ROOTPATH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_ROOTPATH</b>&nbsp;&nbsp;&nbsp;0x11</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a160" doxytag="libnet-headers.h::LIBNET_DHCP_EXTENPATH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_EXTENPATH</b>&nbsp;&nbsp;&nbsp;0x12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a161" doxytag="libnet-headers.h::LIBNET_DHCP_IPFORWARD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_IPFORWARD</b>&nbsp;&nbsp;&nbsp;0x13</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a162" doxytag="libnet-headers.h::LIBNET_DHCP_SRCROUTE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_SRCROUTE</b>&nbsp;&nbsp;&nbsp;0x14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a163" doxytag="libnet-headers.h::LIBNET_DHCP_POLICYFILTER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_POLICYFILTER</b>&nbsp;&nbsp;&nbsp;0x15</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a164" doxytag="libnet-headers.h::LIBNET_DHCP_MAXASMSIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MAXASMSIZE</b>&nbsp;&nbsp;&nbsp;0x16</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a165" doxytag="libnet-headers.h::LIBNET_DHCP_IPTTL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_IPTTL</b>&nbsp;&nbsp;&nbsp;0x17</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a166" doxytag="libnet-headers.h::LIBNET_DHCP_MTUTIMEOUT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MTUTIMEOUT</b>&nbsp;&nbsp;&nbsp;0x18</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a167" doxytag="libnet-headers.h::LIBNET_DHCP_MTUTABLE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MTUTABLE</b>&nbsp;&nbsp;&nbsp;0x19</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a168" doxytag="libnet-headers.h::LIBNET_DHCP_MTUSIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MTUSIZE</b>&nbsp;&nbsp;&nbsp;0x1a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a169" doxytag="libnet-headers.h::LIBNET_DHCP_LOCALSUBNETS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_LOCALSUBNETS</b>&nbsp;&nbsp;&nbsp;0x1b</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a170" doxytag="libnet-headers.h::LIBNET_DHCP_BROADCASTADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_BROADCASTADDR</b>&nbsp;&nbsp;&nbsp;0x1c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a171" doxytag="libnet-headers.h::LIBNET_DHCP_DOMASKDISCOV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_DOMASKDISCOV</b>&nbsp;&nbsp;&nbsp;0x1d</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a172" doxytag="libnet-headers.h::LIBNET_DHCP_MASKSUPPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MASKSUPPLY</b>&nbsp;&nbsp;&nbsp;0x1e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a173" doxytag="libnet-headers.h::LIBNET_DHCP_DOROUTEDISC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_DOROUTEDISC</b>&nbsp;&nbsp;&nbsp;0x1f</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a174" doxytag="libnet-headers.h::LIBNET_DHCP_ROUTERSOLICIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_ROUTERSOLICIT</b>&nbsp;&nbsp;&nbsp;0x20</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a175" doxytag="libnet-headers.h::LIBNET_DHCP_STATICROUTE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_STATICROUTE</b>&nbsp;&nbsp;&nbsp;0x21</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a176" doxytag="libnet-headers.h::LIBNET_DHCP_TRAILERENCAP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_TRAILERENCAP</b>&nbsp;&nbsp;&nbsp;0x22</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a177" doxytag="libnet-headers.h::LIBNET_DHCP_ARPTIMEOUT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_ARPTIMEOUT</b>&nbsp;&nbsp;&nbsp;0x23</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a178" doxytag="libnet-headers.h::LIBNET_DHCP_ETHERENCAP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_ETHERENCAP</b>&nbsp;&nbsp;&nbsp;0x24</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a179" doxytag="libnet-headers.h::LIBNET_DHCP_TCPTTL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_TCPTTL</b>&nbsp;&nbsp;&nbsp;0x25</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a180" doxytag="libnet-headers.h::LIBNET_DHCP_TCPKEEPALIVE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_TCPKEEPALIVE</b>&nbsp;&nbsp;&nbsp;0x26</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a181" doxytag="libnet-headers.h::LIBNET_DHCP_TCPALIVEGARBAGE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_TCPALIVEGARBAGE</b>&nbsp;&nbsp;&nbsp;0x27</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a182" doxytag="libnet-headers.h::LIBNET_DHCP_NISDOMAIN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NISDOMAIN</b>&nbsp;&nbsp;&nbsp;0x28</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a183" doxytag="libnet-headers.h::LIBNET_DHCP_NISSERVERS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NISSERVERS</b>&nbsp;&nbsp;&nbsp;0x29</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a184" doxytag="libnet-headers.h::LIBNET_DHCP_NISTIMESERV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NISTIMESERV</b>&nbsp;&nbsp;&nbsp;0x2a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a185" doxytag="libnet-headers.h::LIBNET_DHCP_VENDSPECIFIC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_VENDSPECIFIC</b>&nbsp;&nbsp;&nbsp;0x2b</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a186" doxytag="libnet-headers.h::LIBNET_DHCP_NBNS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NBNS</b>&nbsp;&nbsp;&nbsp;0x2c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a187" doxytag="libnet-headers.h::LIBNET_DHCP_NBDD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NBDD</b>&nbsp;&nbsp;&nbsp;0x2d</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a188" doxytag="libnet-headers.h::LIBNET_DHCP_NBTCPIP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NBTCPIP</b>&nbsp;&nbsp;&nbsp;0x2e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a189" doxytag="libnet-headers.h::LIBNET_DHCP_NBTCPSCOPE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NBTCPSCOPE</b>&nbsp;&nbsp;&nbsp;0x2f</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a190" doxytag="libnet-headers.h::LIBNET_DHCP_XFONT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_XFONT</b>&nbsp;&nbsp;&nbsp;0x30</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a191" doxytag="libnet-headers.h::LIBNET_DHCP_XDISPLAYMGR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_XDISPLAYMGR</b>&nbsp;&nbsp;&nbsp;0x31</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a192" doxytag="libnet-headers.h::LIBNET_DHCP_DISCOVERADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_DISCOVERADDR</b>&nbsp;&nbsp;&nbsp;0x32</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a193" doxytag="libnet-headers.h::LIBNET_DHCP_LEASETIME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_LEASETIME</b>&nbsp;&nbsp;&nbsp;0x33</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a194" doxytag="libnet-headers.h::LIBNET_DHCP_OPTIONOVERLOAD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_OPTIONOVERLOAD</b>&nbsp;&nbsp;&nbsp;0x34</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a195" doxytag="libnet-headers.h::LIBNET_DHCP_MESSAGETYPE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MESSAGETYPE</b>&nbsp;&nbsp;&nbsp;0x35</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a196" doxytag="libnet-headers.h::LIBNET_DHCP_SERVIDENT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_SERVIDENT</b>&nbsp;&nbsp;&nbsp;0x36</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a197" doxytag="libnet-headers.h::LIBNET_DHCP_PARAMREQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_PARAMREQUEST</b>&nbsp;&nbsp;&nbsp;0x37</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a198" doxytag="libnet-headers.h::LIBNET_DHCP_MESSAGE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MESSAGE</b>&nbsp;&nbsp;&nbsp;0x38</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a199" doxytag="libnet-headers.h::LIBNET_DHCP_MAXMSGSIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MAXMSGSIZE</b>&nbsp;&nbsp;&nbsp;0x39</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a200" doxytag="libnet-headers.h::LIBNET_DHCP_RENEWTIME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_RENEWTIME</b>&nbsp;&nbsp;&nbsp;0x3a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a201" doxytag="libnet-headers.h::LIBNET_DHCP_REBINDTIME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_REBINDTIME</b>&nbsp;&nbsp;&nbsp;0x3b</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a202" doxytag="libnet-headers.h::LIBNET_DHCP_CLASSSID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_CLASSSID</b>&nbsp;&nbsp;&nbsp;0x3c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a203" doxytag="libnet-headers.h::LIBNET_DHCP_CLIENTID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_CLIENTID</b>&nbsp;&nbsp;&nbsp;0x3d</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a204" doxytag="libnet-headers.h::LIBNET_DHCP_NISPLUSDOMAIN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NISPLUSDOMAIN</b>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a205" doxytag="libnet-headers.h::LIBNET_DHCP_NISPLUSSERVERS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NISPLUSSERVERS</b>&nbsp;&nbsp;&nbsp;0x41</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a206" doxytag="libnet-headers.h::LIBNET_DHCP_MOBILEIPAGENT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MOBILEIPAGENT</b>&nbsp;&nbsp;&nbsp;0x44</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a207" doxytag="libnet-headers.h::LIBNET_DHCP_SMTPSERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_SMTPSERVER</b>&nbsp;&nbsp;&nbsp;0x45</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a208" doxytag="libnet-headers.h::LIBNET_DHCP_POP3SERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_POP3SERVER</b>&nbsp;&nbsp;&nbsp;0x46</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a209" doxytag="libnet-headers.h::LIBNET_DHCP_NNTPSERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_NNTPSERVER</b>&nbsp;&nbsp;&nbsp;0x47</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a210" doxytag="libnet-headers.h::LIBNET_DHCP_WWWSERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_WWWSERVER</b>&nbsp;&nbsp;&nbsp;0x48</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a211" doxytag="libnet-headers.h::LIBNET_DHCP_FINGERSERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_FINGERSERVER</b>&nbsp;&nbsp;&nbsp;0x49</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a212" doxytag="libnet-headers.h::LIBNET_DHCP_IRCSERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_IRCSERVER</b>&nbsp;&nbsp;&nbsp;0x4a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a213" doxytag="libnet-headers.h::LIBNET_DHCP_STSERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_STSERVER</b>&nbsp;&nbsp;&nbsp;0x4b</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a214" doxytag="libnet-headers.h::LIBNET_DHCP_STDASERVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_STDASERVER</b>&nbsp;&nbsp;&nbsp;0x4c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a215" doxytag="libnet-headers.h::LIBNET_DHCP_END" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_END</b>&nbsp;&nbsp;&nbsp;0xff</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a216" doxytag="libnet-headers.h::LIBNET_DHCP_MSGDISCOVER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGDISCOVER</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a217" doxytag="libnet-headers.h::LIBNET_DHCP_MSGOFFER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGOFFER</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a218" doxytag="libnet-headers.h::LIBNET_DHCP_MSGREQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGREQUEST</b>&nbsp;&nbsp;&nbsp;0x03</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a219" doxytag="libnet-headers.h::LIBNET_DHCP_MSGDECLINE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGDECLINE</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a220" doxytag="libnet-headers.h::LIBNET_DHCP_MSGACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGACK</b>&nbsp;&nbsp;&nbsp;0x05</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a221" doxytag="libnet-headers.h::LIBNET_DHCP_MSGNACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGNACK</b>&nbsp;&nbsp;&nbsp;0x06</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a222" doxytag="libnet-headers.h::LIBNET_DHCP_MSGRELEASE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGRELEASE</b>&nbsp;&nbsp;&nbsp;0x07</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a223" doxytag="libnet-headers.h::LIBNET_DHCP_MSGINFORM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DHCP_MSGINFORM</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a224" doxytag="libnet-headers.h::LIBNET_DNS_H" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DNS_H</b>&nbsp;&nbsp;&nbsp;LIBNET_UDP_DNSV4_H</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a225" doxytag="libnet-headers.h::ETHERTYPE_PUP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_PUP</b>&nbsp;&nbsp;&nbsp;0x0200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a226" doxytag="libnet-headers.h::ETHERTYPE_IP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_IP</b>&nbsp;&nbsp;&nbsp;0x0800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a227" doxytag="libnet-headers.h::ETHERTYPE_ARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_ARP</b>&nbsp;&nbsp;&nbsp;0x0806</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a228" doxytag="libnet-headers.h::ETHERTYPE_REVARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_REVARP</b>&nbsp;&nbsp;&nbsp;0x8035</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a229" doxytag="libnet-headers.h::ETHERTYPE_VLAN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_VLAN</b>&nbsp;&nbsp;&nbsp;0x8100</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a230" doxytag="libnet-headers.h::ETHERTYPE_EAP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_EAP</b>&nbsp;&nbsp;&nbsp;0x888e</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a231" doxytag="libnet-headers.h::ETHERTYPE_MPLS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_MPLS</b>&nbsp;&nbsp;&nbsp;0x8847</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a232" doxytag="libnet-headers.h::ETHERTYPE_LOOPBACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHERTYPE_LOOPBACK</b>&nbsp;&nbsp;&nbsp;0x9000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a233" doxytag="libnet-headers.h::LIBNET_FDDI_LLC_FRAME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_FDDI_LLC_FRAME</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a234" doxytag="libnet-headers.h::LIBNET_FDDI_48BIT_ADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_FDDI_48BIT_ADDR</b>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a235" doxytag="libnet-headers.h::LIBNET_FDDI_FC_REQD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_FDDI_FC_REQD</b>&nbsp;&nbsp;&nbsp;LIBNET_FDDI_LLC_FRAME | LIBNET_FDDI_48BIT_ADDR</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a236" doxytag="libnet-headers.h::FDDI_TYPE_IP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>FDDI_TYPE_IP</b>&nbsp;&nbsp;&nbsp;0x0800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a237" doxytag="libnet-headers.h::FDDI_TYPE_ARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>FDDI_TYPE_ARP</b>&nbsp;&nbsp;&nbsp;0x0806</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a238" doxytag="libnet-headers.h::FDDI_TYPE_REVARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>FDDI_TYPE_REVARP</b>&nbsp;&nbsp;&nbsp;0x8035</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a239" doxytag="libnet-headers.h::GRE_CSUM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_CSUM</b>&nbsp;&nbsp;&nbsp;0x8000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a240" doxytag="libnet-headers.h::GRE_ROUTING" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_ROUTING</b>&nbsp;&nbsp;&nbsp;0x4000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a241" doxytag="libnet-headers.h::GRE_KEY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_KEY</b>&nbsp;&nbsp;&nbsp;0x2000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a242" doxytag="libnet-headers.h::GRE_SEQ" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_SEQ</b>&nbsp;&nbsp;&nbsp;0x1000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a243" doxytag="libnet-headers.h::GRE_STRICT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_STRICT</b>&nbsp;&nbsp;&nbsp;0x0800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a244" doxytag="libnet-headers.h::GRE_REC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_REC</b>&nbsp;&nbsp;&nbsp;0x0700</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a245" doxytag="libnet-headers.h::GRE_ACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_ACK</b>&nbsp;&nbsp;&nbsp;0x0080</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a246" doxytag="libnet-headers.h::GRE_FLAGS_MASK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_FLAGS_MASK</b>&nbsp;&nbsp;&nbsp;0x00F8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a247" doxytag="libnet-headers.h::GRE_VERSION_MASK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_VERSION_MASK</b>&nbsp;&nbsp;&nbsp;0x0007</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a248" doxytag="libnet-headers.h::GRE_VERSION_0" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_VERSION_0</b>&nbsp;&nbsp;&nbsp;0x0000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a249" doxytag="libnet-headers.h::GRE_VERSION_1" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_VERSION_1</b>&nbsp;&nbsp;&nbsp;0x0001</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a250" doxytag="libnet-headers.h::GRE_SNA" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_SNA</b>&nbsp;&nbsp;&nbsp;0x0004</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a251" doxytag="libnet-headers.h::GRE_OSI_NETWORK_LAYER" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_OSI_NETWORK_LAYER</b>&nbsp;&nbsp;&nbsp;0x00FE</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a252" doxytag="libnet-headers.h::GRE_PUP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_PUP</b>&nbsp;&nbsp;&nbsp;0x0200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a253" doxytag="libnet-headers.h::GRE_XNS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_XNS</b>&nbsp;&nbsp;&nbsp;0x0600</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a254" doxytag="libnet-headers.h::GRE_IP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_IP</b>&nbsp;&nbsp;&nbsp;0x0800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a255" doxytag="libnet-headers.h::GRE_CHAOS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_CHAOS</b>&nbsp;&nbsp;&nbsp;0x0804</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a256" doxytag="libnet-headers.h::GRE_RFC_826_ARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_RFC_826_ARP</b>&nbsp;&nbsp;&nbsp;0x0806</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a257" doxytag="libnet-headers.h::GRE_FRAME_RELAY_ARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_FRAME_RELAY_ARP</b>&nbsp;&nbsp;&nbsp;0x0808</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a258" doxytag="libnet-headers.h::GRE_VINES" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_VINES</b>&nbsp;&nbsp;&nbsp;0x0BAD</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a259" doxytag="libnet-headers.h::GRE_VINES_ECHO" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_VINES_ECHO</b>&nbsp;&nbsp;&nbsp;0x0BAE</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a260" doxytag="libnet-headers.h::GRE_VINES_LOOPBACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_VINES_LOOPBACK</b>&nbsp;&nbsp;&nbsp;0x0BAF</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a261" doxytag="libnet-headers.h::GRE_DECNET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_DECNET</b>&nbsp;&nbsp;&nbsp;0x6003</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a262" doxytag="libnet-headers.h::GRE_TRANSPARENT_ETHERNET_BRIDGING" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_TRANSPARENT_ETHERNET_BRIDGING</b>&nbsp;&nbsp;&nbsp;0x6558</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a263" doxytag="libnet-headers.h::GRE_RAW_FRAME_RELAY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_RAW_FRAME_RELAY</b>&nbsp;&nbsp;&nbsp;0x6559</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a264" doxytag="libnet-headers.h::GRE_APOLLO_DOMAIN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_APOLLO_DOMAIN</b>&nbsp;&nbsp;&nbsp;0x8019</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a265" doxytag="libnet-headers.h::GRE_ETHERTALK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_ETHERTALK</b>&nbsp;&nbsp;&nbsp;0x809B</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a266" doxytag="libnet-headers.h::GRE_NOVELL_IPX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_NOVELL_IPX</b>&nbsp;&nbsp;&nbsp;0x8137</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a267" doxytag="libnet-headers.h::GRE_RFC_1144_TCP_IP_COMPRESSION" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_RFC_1144_TCP_IP_COMPRESSION</b>&nbsp;&nbsp;&nbsp;0x876B</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a268" doxytag="libnet-headers.h::GRE_IP_AUTONOMOUS_SYSTEMS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_IP_AUTONOMOUS_SYSTEMS</b>&nbsp;&nbsp;&nbsp;0x876C</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a269" doxytag="libnet-headers.h::GRE_SECURE_DATA" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_SECURE_DATA</b>&nbsp;&nbsp;&nbsp;0x876D</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a270" doxytag="libnet-headers.h::GRE_PPP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>GRE_PPP</b>&nbsp;&nbsp;&nbsp;0x880b</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a271" doxytag="libnet-headers.h::gre_sum" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>gre_sum</b>&nbsp;&nbsp;&nbsp;_data._gre.sum</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a272" doxytag="libnet-headers.h::gre_offset" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>gre_offset</b>&nbsp;&nbsp;&nbsp;_data._gre.offset</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a273" doxytag="libnet-headers.h::gre_key" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>gre_key</b>&nbsp;&nbsp;&nbsp;_data._gre.key</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a274" doxytag="libnet-headers.h::gre_seq" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>gre_seq</b>&nbsp;&nbsp;&nbsp;_data._gre.seq</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a275" doxytag="libnet-headers.h::egre_payload_s" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>egre_payload_s</b>&nbsp;&nbsp;&nbsp;_data._egre.payload_s</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a276" doxytag="libnet-headers.h::egre_callID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>egre_callID</b>&nbsp;&nbsp;&nbsp;_data._egre.callID</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a277" doxytag="libnet-headers.h::egre_seq" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>egre_seq</b>&nbsp;&nbsp;&nbsp;_data._egre.seq</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a278" doxytag="libnet-headers.h::egre_ack" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>egre_ack</b>&nbsp;&nbsp;&nbsp;_data._egre.ack</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a279" doxytag="libnet-headers.h::IPPROTO_GRE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_GRE</b>&nbsp;&nbsp;&nbsp;47</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a280" doxytag="libnet-headers.h::IPTOS_LOWDELAY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPTOS_LOWDELAY</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a281" doxytag="libnet-headers.h::IPTOS_THROUGHPUT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPTOS_THROUGHPUT</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a282" doxytag="libnet-headers.h::IPTOS_RELIABILITY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPTOS_RELIABILITY</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a283" doxytag="libnet-headers.h::IPTOS_LOWCOST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPTOS_LOWCOST</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a284" doxytag="libnet-headers.h::IP_RF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IP_RF</b>&nbsp;&nbsp;&nbsp;0x8000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a285" doxytag="libnet-headers.h::IP_DF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IP_DF</b>&nbsp;&nbsp;&nbsp;0x4000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a286" doxytag="libnet-headers.h::IP_MF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IP_MF</b>&nbsp;&nbsp;&nbsp;0x2000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a287" doxytag="libnet-headers.h::IP_OFFMASK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IP_OFFMASK</b>&nbsp;&nbsp;&nbsp;0x1fff</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a288" doxytag="libnet-headers.h::IPOPT_EOL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_EOL</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a289" doxytag="libnet-headers.h::IPOPT_NOP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_NOP</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a290" doxytag="libnet-headers.h::IPOPT_RR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_RR</b>&nbsp;&nbsp;&nbsp;7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a291" doxytag="libnet-headers.h::IPOPT_TS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_TS</b>&nbsp;&nbsp;&nbsp;68</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a292" doxytag="libnet-headers.h::IPOPT_SECURITY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_SECURITY</b>&nbsp;&nbsp;&nbsp;130</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a293" doxytag="libnet-headers.h::IPOPT_LSRR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_LSRR</b>&nbsp;&nbsp;&nbsp;131</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a294" doxytag="libnet-headers.h::IPOPT_SATID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_SATID</b>&nbsp;&nbsp;&nbsp;136</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a295" doxytag="libnet-headers.h::IPOPT_SSRR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPOPT_SSRR</b>&nbsp;&nbsp;&nbsp;137</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a296" doxytag="libnet-headers.h::libnet_s6_addr" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>libnet_s6_addr</b>&nbsp;&nbsp;&nbsp;__u6_addr.__u6_addr8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a297" doxytag="libnet-headers.h::LIBNET_IPV6_NH_FRAGMENT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_IPV6_NH_FRAGMENT</b>&nbsp;&nbsp;&nbsp;44</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a298" doxytag="libnet-headers.h::LIBNET_IPV6_NH_ROUTING" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_IPV6_NH_ROUTING</b>&nbsp;&nbsp;&nbsp;43</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a299" doxytag="libnet-headers.h::LIBNET_IPV6_NH_DESTOPTS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_IPV6_NH_DESTOPTS</b>&nbsp;&nbsp;&nbsp;60</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a300" doxytag="libnet-headers.h::LIBNET_IPV6_NH_HBH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_IPV6_NH_HBH</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a301" doxytag="libnet-headers.h::IPPROTO_ICMP6" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_ICMP6</b>&nbsp;&nbsp;&nbsp;0x3a</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a302" doxytag="libnet-headers.h::ICMP6_ECHO" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP6_ECHO</b>&nbsp;&nbsp;&nbsp;128</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a303" doxytag="libnet-headers.h::ICMP6_ECHOREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP6_ECHOREPLY</b>&nbsp;&nbsp;&nbsp;129</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a304" doxytag="libnet-headers.h::ICMP6_UNREACH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP6_UNREACH</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a305" doxytag="libnet-headers.h::ICMP6_PKTTOOBIG" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP6_PKTTOOBIG</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a306" doxytag="libnet-headers.h::ICMP6_TIMXCEED" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP6_TIMXCEED</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a307" doxytag="libnet-headers.h::ICMP6_PARAMPROB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP6_PARAMPROB</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a308" doxytag="libnet-headers.h::ICMP_ECHOREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_ECHOREPLY</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a309" doxytag="libnet-headers.h::ICMP_UNREACH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a310" doxytag="libnet-headers.h::ICMP_SOURCEQUENCH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_SOURCEQUENCH</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a311" doxytag="libnet-headers.h::ICMP_REDIRECT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_REDIRECT</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a312" doxytag="libnet-headers.h::ICMP_ECHO" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_ECHO</b>&nbsp;&nbsp;&nbsp;8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a313" doxytag="libnet-headers.h::ICMP_ROUTERADVERT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_ROUTERADVERT</b>&nbsp;&nbsp;&nbsp;9</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a314" doxytag="libnet-headers.h::ICMP_ROUTERSOLICIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_ROUTERSOLICIT</b>&nbsp;&nbsp;&nbsp;10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a315" doxytag="libnet-headers.h::ICMP_TIMXCEED" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_TIMXCEED</b>&nbsp;&nbsp;&nbsp;11</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a316" doxytag="libnet-headers.h::ICMP_PARAMPROB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_PARAMPROB</b>&nbsp;&nbsp;&nbsp;12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a317" doxytag="libnet-headers.h::ICMP_TSTAMP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_TSTAMP</b>&nbsp;&nbsp;&nbsp;13</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a318" doxytag="libnet-headers.h::ICMP_TSTAMPREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_TSTAMPREPLY</b>&nbsp;&nbsp;&nbsp;14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a319" doxytag="libnet-headers.h::ICMP_IREQ" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_IREQ</b>&nbsp;&nbsp;&nbsp;15</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a320" doxytag="libnet-headers.h::ICMP_IREQREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_IREQREPLY</b>&nbsp;&nbsp;&nbsp;16</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a321" doxytag="libnet-headers.h::ICMP_MASKREQ" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_MASKREQ</b>&nbsp;&nbsp;&nbsp;17</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a322" doxytag="libnet-headers.h::ICMP_MASKREPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_MASKREPLY</b>&nbsp;&nbsp;&nbsp;18</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a323" doxytag="libnet-headers.h::ICMP_UNREACH_NET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_NET</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a324" doxytag="libnet-headers.h::ICMP_UNREACH_HOST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_HOST</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a325" doxytag="libnet-headers.h::ICMP_UNREACH_PROTOCOL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_PROTOCOL</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a326" doxytag="libnet-headers.h::ICMP_UNREACH_PORT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_PORT</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a327" doxytag="libnet-headers.h::ICMP_UNREACH_NEEDFRAG" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_NEEDFRAG</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a328" doxytag="libnet-headers.h::ICMP_UNREACH_SRCFAIL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_SRCFAIL</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a329" doxytag="libnet-headers.h::ICMP_UNREACH_NET_UNKNOWN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_NET_UNKNOWN</b>&nbsp;&nbsp;&nbsp;6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a330" doxytag="libnet-headers.h::ICMP_UNREACH_HOST_UNKNOWN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_HOST_UNKNOWN</b>&nbsp;&nbsp;&nbsp;7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a331" doxytag="libnet-headers.h::ICMP_UNREACH_ISOLATED" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_ISOLATED</b>&nbsp;&nbsp;&nbsp;8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a332" doxytag="libnet-headers.h::ICMP_UNREACH_NET_PROHIB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_NET_PROHIB</b>&nbsp;&nbsp;&nbsp;9</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a333" doxytag="libnet-headers.h::ICMP_UNREACH_HOST_PROHIB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_HOST_PROHIB</b>&nbsp;&nbsp;&nbsp;10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a334" doxytag="libnet-headers.h::ICMP_UNREACH_TOSNET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_TOSNET</b>&nbsp;&nbsp;&nbsp;11</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a335" doxytag="libnet-headers.h::ICMP_UNREACH_TOSHOST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_TOSHOST</b>&nbsp;&nbsp;&nbsp;12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a336" doxytag="libnet-headers.h::ICMP_UNREACH_FILTER_PROHIB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_FILTER_PROHIB</b>&nbsp;&nbsp;&nbsp;13</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a337" doxytag="libnet-headers.h::ICMP_UNREACH_HOST_PRECEDENCE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_HOST_PRECEDENCE</b>&nbsp;&nbsp;&nbsp;14</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a338" doxytag="libnet-headers.h::ICMP_UNREACH_PRECEDENCE_CUTOFF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_UNREACH_PRECEDENCE_CUTOFF</b>&nbsp;&nbsp;&nbsp;15</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a339" doxytag="libnet-headers.h::ICMP_REDIRECT_NET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_REDIRECT_NET</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a340" doxytag="libnet-headers.h::ICMP_REDIRECT_HOST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_REDIRECT_HOST</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a341" doxytag="libnet-headers.h::ICMP_REDIRECT_TOSNET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_REDIRECT_TOSNET</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a342" doxytag="libnet-headers.h::ICMP_REDIRECT_TOSHOST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_REDIRECT_TOSHOST</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a343" doxytag="libnet-headers.h::ICMP_TIMXCEED_INTRANS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_TIMXCEED_INTRANS</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a344" doxytag="libnet-headers.h::ICMP_TIMXCEED_REASS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_TIMXCEED_REASS</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a345" doxytag="libnet-headers.h::ICMP_PARAMPROB_OPTABSENT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ICMP_PARAMPROB_OPTABSENT</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a346" doxytag="libnet-headers.h::icmp_id" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_id</b>&nbsp;&nbsp;&nbsp;hun.echo.id</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a347" doxytag="libnet-headers.h::icmp_seq" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_seq</b>&nbsp;&nbsp;&nbsp;hun.echo.seq</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a348" doxytag="libnet-headers.h::icmp_mask" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_mask</b>&nbsp;&nbsp;&nbsp;dun.mask</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a349" doxytag="libnet-headers.h::icmp_data" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_data</b>&nbsp;&nbsp;&nbsp;dun.data</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a350" doxytag="libnet-headers.h::icmp_otime" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_otime</b>&nbsp;&nbsp;&nbsp;dun.ts.its_otime</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a351" doxytag="libnet-headers.h::icmp_rtime" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_rtime</b>&nbsp;&nbsp;&nbsp;dun.ts.its_rtime</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a352" doxytag="libnet-headers.h::icmp_ttime" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>icmp_ttime</b>&nbsp;&nbsp;&nbsp;dun.ts.its_ttime</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a353" doxytag="libnet-headers.h::IGMP_MEMBERSHIP_QUERY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IGMP_MEMBERSHIP_QUERY</b>&nbsp;&nbsp;&nbsp;0x11</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a354" doxytag="libnet-headers.h::IGMP_V1_MEMBERSHIP_REPORT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IGMP_V1_MEMBERSHIP_REPORT</b>&nbsp;&nbsp;&nbsp;0x12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a355" doxytag="libnet-headers.h::IGMP_V2_MEMBERSHIP_REPORT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IGMP_V2_MEMBERSHIP_REPORT</b>&nbsp;&nbsp;&nbsp;0x16</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a356" doxytag="libnet-headers.h::IGMP_LEAVE_GROUP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IGMP_LEAVE_GROUP</b>&nbsp;&nbsp;&nbsp;0x17</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a357" doxytag="libnet-headers.h::IPPROTO_ESP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_ESP</b>&nbsp;&nbsp;&nbsp;50</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a358" doxytag="libnet-headers.h::IPPROTO_AH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_AH</b>&nbsp;&nbsp;&nbsp;51</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a359" doxytag="libnet-headers.h::LIBNET_PROTO_ISL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PROTO_ISL</b>&nbsp;&nbsp;&nbsp;201</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a360" doxytag="libnet-headers.h::IPPROTO_OSPF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_OSPF</b>&nbsp;&nbsp;&nbsp;89</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a361" doxytag="libnet-headers.h::IPPROTO_OSPF_LSA" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_OSPF_LSA</b>&nbsp;&nbsp;&nbsp;890</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a362" doxytag="libnet-headers.h::LIBNET_MODX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_MODX</b>&nbsp;&nbsp;&nbsp;4102</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a363" doxytag="libnet-headers.h::LIBNET_OPT_EBIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OPT_EBIT</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a364" doxytag="libnet-headers.h::LIBNET_OPT_MCBIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OPT_MCBIT</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a365" doxytag="libnet-headers.h::LIBNET_OPT_NPBIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OPT_NPBIT</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a366" doxytag="libnet-headers.h::LIBNET_OPT_EABIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OPT_EABIT</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a367" doxytag="libnet-headers.h::LIBNET_OPT_DCBIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OPT_DCBIT</b>&nbsp;&nbsp;&nbsp;0x20</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a368" doxytag="libnet-headers.h::LIBNET_MPLS_BOS_ON" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_MPLS_BOS_ON</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a369" doxytag="libnet-headers.h::LIBNET_MPLS_BOS_OFF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_MPLS_BOS_OFF</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a370" doxytag="libnet-headers.h::LIBNET_NTP_LI_NW" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_LI_NW</b>&nbsp;&nbsp;&nbsp;0x0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a371" doxytag="libnet-headers.h::LIBNET_NTP_LI_AS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_LI_AS</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a372" doxytag="libnet-headers.h::LIBNET_NTP_LI_DS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_LI_DS</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a373" doxytag="libnet-headers.h::LIBNET_NTP_LI_AC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_LI_AC</b>&nbsp;&nbsp;&nbsp;0x3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a374" doxytag="libnet-headers.h::LIBNET_NTP_VN_2" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_VN_2</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a375" doxytag="libnet-headers.h::LIBNET_NTP_VN_3" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_VN_3</b>&nbsp;&nbsp;&nbsp;0x3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a376" doxytag="libnet-headers.h::LIBNET_NTP_VN_4" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_VN_4</b>&nbsp;&nbsp;&nbsp;0x4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a377" doxytag="libnet-headers.h::LIBNET_NTP_MODE_R" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_R</b>&nbsp;&nbsp;&nbsp;0x0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a378" doxytag="libnet-headers.h::LIBNET_NTP_MODE_A" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_A</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a379" doxytag="libnet-headers.h::LIBNET_NTP_MODE_P" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_P</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a380" doxytag="libnet-headers.h::LIBNET_NTP_MODE_C" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_C</b>&nbsp;&nbsp;&nbsp;0x3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a381" doxytag="libnet-headers.h::LIBNET_NTP_MODE_S" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_S</b>&nbsp;&nbsp;&nbsp;0x4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a382" doxytag="libnet-headers.h::LIBNET_NTP_MODE_B" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_B</b>&nbsp;&nbsp;&nbsp;0x5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a383" doxytag="libnet-headers.h::LIBNET_NTP_MODE_RC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_RC</b>&nbsp;&nbsp;&nbsp;0x6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a384" doxytag="libnet-headers.h::LIBNET_NTP_MODE_RP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_MODE_RP</b>&nbsp;&nbsp;&nbsp;0x7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a385" doxytag="libnet-headers.h::LIBNET_NTP_STRATUM_UNAVAIL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_STRATUM_UNAVAIL</b>&nbsp;&nbsp;&nbsp;0x0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a386" doxytag="libnet-headers.h::LIBNET_NTP_STRATUM_PRIMARY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_STRATUM_PRIMARY</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a387" doxytag="libnet-headers.h::LIBNET_NTP_REF_LOCAL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_LOCAL</b>&nbsp;&nbsp;&nbsp;0x4c4f434c</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a388" doxytag="libnet-headers.h::LIBNET_NTP_REF_PPS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_PPS</b>&nbsp;&nbsp;&nbsp;0x50505300</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a389" doxytag="libnet-headers.h::LIBNET_NTP_REF_ACTS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_ACTS</b>&nbsp;&nbsp;&nbsp;0x41435453</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a390" doxytag="libnet-headers.h::LIBNET_NTP_REF_USNO" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_USNO</b>&nbsp;&nbsp;&nbsp;0x55534e4f</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a391" doxytag="libnet-headers.h::LIBNET_NTP_REF_PTB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_PTB</b>&nbsp;&nbsp;&nbsp;0x50544200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a392" doxytag="libnet-headers.h::LIBNET_NTP_REF_TDF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_TDF</b>&nbsp;&nbsp;&nbsp;0x54444600</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a393" doxytag="libnet-headers.h::LIBNET_NTP_REF_DCF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_DCF</b>&nbsp;&nbsp;&nbsp;0x44434600</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a394" doxytag="libnet-headers.h::LIBNET_NTP_REF_MSF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_MSF</b>&nbsp;&nbsp;&nbsp;0x4d534600</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a395" doxytag="libnet-headers.h::LIBNET_NTP_REF_WWV" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_WWV</b>&nbsp;&nbsp;&nbsp;0x57575600</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a396" doxytag="libnet-headers.h::LIBNET_NTP_REF_WWVB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_WWVB</b>&nbsp;&nbsp;&nbsp;0x57575642</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a397" doxytag="libnet-headers.h::LIBNET_NTP_REF_WWVH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_WWVH</b>&nbsp;&nbsp;&nbsp;0x57575648</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a398" doxytag="libnet-headers.h::LIBNET_NTP_REF_CHU" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_CHU</b>&nbsp;&nbsp;&nbsp;0x43485500</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a399" doxytag="libnet-headers.h::LIBNET_NTP_REF_LORC" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_LORC</b>&nbsp;&nbsp;&nbsp;0x4c4f5243</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a400" doxytag="libnet-headers.h::LIBNET_NTP_REF_OMEG" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_OMEG</b>&nbsp;&nbsp;&nbsp;0x4f4d4547</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a401" doxytag="libnet-headers.h::LIBNET_NTP_REF_GPS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_GPS</b>&nbsp;&nbsp;&nbsp;0x47505300</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a402" doxytag="libnet-headers.h::LIBNET_NTP_REF_GOES" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_REF_GOES</b>&nbsp;&nbsp;&nbsp;0x474f4553</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a403" doxytag="libnet-headers.h::OSPFVERSION" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>OSPFVERSION</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a404" doxytag="libnet-headers.h::LIBNET_OSPF_UMD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_UMD</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a405" doxytag="libnet-headers.h::LIBNET_OSPF_HELLO" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_HELLO</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a406" doxytag="libnet-headers.h::LIBNET_OSPF_DBD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_DBD</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a407" doxytag="libnet-headers.h::LIBNET_OSPF_LSR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_LSR</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a408" doxytag="libnet-headers.h::LIBNET_OSPF_LSU" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_LSU</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a409" doxytag="libnet-headers.h::LIBNET_OSPF_LSA" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_LSA</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a410" doxytag="libnet-headers.h::LIBNET_OSPF_AUTH_NULL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_AUTH_NULL</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a411" doxytag="libnet-headers.h::LIBNET_OSPF_AUTH_SIMPLE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_AUTH_SIMPLE</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a412" doxytag="libnet-headers.h::LIBNET_OSPF_AUTH_MD5" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_AUTH_MD5</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a413" doxytag="libnet-headers.h::LIBNET_DBD_IBI" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DBD_IBI</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a414" doxytag="libnet-headers.h::LIBNET_DBD_MBIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DBD_MBIT</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a415" doxytag="libnet-headers.h::LIBNET_DBD_MSBIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_DBD_MSBIT</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a416" doxytag="libnet-headers.h::LIBNET_LS_TYPE_RTR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LS_TYPE_RTR</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a417" doxytag="libnet-headers.h::LIBNET_LS_TYPE_NET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LS_TYPE_NET</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a418" doxytag="libnet-headers.h::LIBNET_LS_TYPE_IP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LS_TYPE_IP</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a419" doxytag="libnet-headers.h::LIBNET_LS_TYPE_ASBR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LS_TYPE_ASBR</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a420" doxytag="libnet-headers.h::LIBNET_LS_TYPE_ASEXT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LS_TYPE_ASEXT</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a421" doxytag="libnet-headers.h::LIBNET_RTR_FLAGS_W" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RTR_FLAGS_W</b>&nbsp;&nbsp;&nbsp;0x0100</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a422" doxytag="libnet-headers.h::LIBNET_RTR_FLAGS_E" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RTR_FLAGS_E</b>&nbsp;&nbsp;&nbsp;0x0200</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a423" doxytag="libnet-headers.h::LIBNET_RTR_FLAGS_B" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RTR_FLAGS_B</b>&nbsp;&nbsp;&nbsp;0x0400</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a424" doxytag="libnet-headers.h::LIBNET_LINK_ID_NBR_ID" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LINK_ID_NBR_ID</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a425" doxytag="libnet-headers.h::LIBNET_LINK_ID_IP_DES" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LINK_ID_IP_DES</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a426" doxytag="libnet-headers.h::LIBNET_LINK_ID_SUB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LINK_ID_SUB</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a427" doxytag="libnet-headers.h::LIBNET_RTR_TYPE_PTP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RTR_TYPE_PTP</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a428" doxytag="libnet-headers.h::LIBNET_RTR_TYPE_TRANS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RTR_TYPE_TRANS</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a429" doxytag="libnet-headers.h::LIBNET_RTR_TYPE_STUB" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RTR_TYPE_STUB</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a430" doxytag="libnet-headers.h::RTR_TYPE_VRTL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RTR_TYPE_VRTL</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a431" doxytag="libnet-headers.h::LIBNET_AS_E_BIT_ON" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_AS_E_BIT_ON</b>&nbsp;&nbsp;&nbsp;0x80000000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a432" doxytag="libnet-headers.h::RIPCMD_REQUEST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_REQUEST</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a433" doxytag="libnet-headers.h::RIPCMD_RESPONSE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_RESPONSE</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a434" doxytag="libnet-headers.h::RIPCMD_TRACEON" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_TRACEON</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a435" doxytag="libnet-headers.h::RIPCMD_TRACEOFF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_TRACEOFF</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a436" doxytag="libnet-headers.h::RIPCMD_POLL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_POLL</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a437" doxytag="libnet-headers.h::RIPCMD_POLLENTRY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_POLLENTRY</b>&nbsp;&nbsp;&nbsp;6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a438" doxytag="libnet-headers.h::RIPCMD_MAX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPCMD_MAX</b>&nbsp;&nbsp;&nbsp;7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a439" doxytag="libnet-headers.h::RIPVER_0" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPVER_0</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a440" doxytag="libnet-headers.h::RIPVER_1" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPVER_1</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a441" doxytag="libnet-headers.h::RIPVER_2" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>RIPVER_2</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a442" doxytag="libnet-headers.h::LIBNET_RPC_CALL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RPC_CALL</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a443" doxytag="libnet-headers.h::LIBNET_RPC_REPLY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RPC_REPLY</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a444" doxytag="libnet-headers.h::LIBNET_RPC_VERS" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RPC_VERS</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a445" doxytag="libnet-headers.h::LIBNET_RPC_LAST_FRAG" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_RPC_LAST_FRAG</b>&nbsp;&nbsp;&nbsp;0x80000000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a446" doxytag="libnet-headers.h::LIBNET_PMAP_PROGRAM" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROGRAM</b>&nbsp;&nbsp;&nbsp;100000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a447" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_NULL" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_NULL</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a448" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_SET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_SET</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a449" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_UNSET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_UNSET</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a450" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_GETADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_GETADDR</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a451" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_DUMP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_DUMP</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a452" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_CALLIT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_CALLIT</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a453" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_BCAST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_BCAST</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a454" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_GETTIME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_GETTIME</b>&nbsp;&nbsp;&nbsp;6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a455" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_UADDR2TADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_UADDR2TADDR</b>&nbsp;&nbsp;&nbsp;7</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a456" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_TADDR2UADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_TADDR2UADDR</b>&nbsp;&nbsp;&nbsp;8</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a457" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_GETVERSADDR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_GETVERSADDR</b>&nbsp;&nbsp;&nbsp;9</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a458" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_INDIRECT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_INDIRECT</b>&nbsp;&nbsp;&nbsp;10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a459" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_GETADDRLIST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_GETADDRLIST</b>&nbsp;&nbsp;&nbsp;11</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a460" doxytag="libnet-headers.h::LIBNET_PMAP_PROC_GETSTAT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PMAP_PROC_GETSTAT</b>&nbsp;&nbsp;&nbsp;12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a461" doxytag="libnet-headers.h::TH_FIN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_FIN</b>&nbsp;&nbsp;&nbsp;0x01</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a462" doxytag="libnet-headers.h::TH_SYN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_SYN</b>&nbsp;&nbsp;&nbsp;0x02</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a463" doxytag="libnet-headers.h::TH_RST" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_RST</b>&nbsp;&nbsp;&nbsp;0x04</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a464" doxytag="libnet-headers.h::TH_PUSH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_PUSH</b>&nbsp;&nbsp;&nbsp;0x08</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a465" doxytag="libnet-headers.h::TH_ACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_ACK</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a466" doxytag="libnet-headers.h::TH_URG" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_URG</b>&nbsp;&nbsp;&nbsp;0x20</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a467" doxytag="libnet-headers.h::TH_ECE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_ECE</b>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a468" doxytag="libnet-headers.h::TH_CWR" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TH_CWR</b>&nbsp;&nbsp;&nbsp;0x80</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a469" doxytag="libnet-headers.h::LIBNET_TOKEN_RING_FRAME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_TOKEN_RING_FRAME</b>&nbsp;&nbsp;&nbsp;0x10</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a470" doxytag="libnet-headers.h::LIBNET_TOKEN_RING_LLC_FRAME" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_TOKEN_RING_LLC_FRAME</b>&nbsp;&nbsp;&nbsp;0x40</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a471" doxytag="libnet-headers.h::TOKEN_RING_TYPE_IP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TOKEN_RING_TYPE_IP</b>&nbsp;&nbsp;&nbsp;0x0800</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a472" doxytag="libnet-headers.h::TOKEN_RING_TYPE_ARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TOKEN_RING_TYPE_ARP</b>&nbsp;&nbsp;&nbsp;0x0806</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a473" doxytag="libnet-headers.h::TOKEN_RING_TYPE_REVARP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TOKEN_RING_TYPE_REVARP</b>&nbsp;&nbsp;&nbsp;0x8035</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a474" doxytag="libnet-headers.h::SEBEK_PROTO_VERSION" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>SEBEK_PROTO_VERSION</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a475" doxytag="libnet-headers.h::SEBEK_TYPE_READ" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>SEBEK_TYPE_READ</b>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a476" doxytag="libnet-headers.h::SEBEK_TYPE_WRITE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>SEBEK_TYPE_WRITE</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a477" doxytag="libnet-headers.h::SEBEK_CMD_LENGTH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>SEBEK_CMD_LENGTH</b>&nbsp;&nbsp;&nbsp;12</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a478" doxytag="libnet-headers.h::IPPROTO_VRRP" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IPPROTO_VRRP</b>&nbsp;&nbsp;&nbsp;112</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a479" doxytag="libnet-headers.h::LIBNET_VRRP_VERSION_01" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_VRRP_VERSION_01</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a480" doxytag="libnet-headers.h::LIBNET_VRRP_VERSION_02" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_VRRP_VERSION_02</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a481" doxytag="libnet-headers.h::LIBNET_VRRP_TYPE_ADVERT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_VRRP_TYPE_ADVERT</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a482" doxytag="libnet-headers.h::LIBNET_VRRP_AUTH_NONE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_VRRP_AUTH_NONE</b>&nbsp;&nbsp;&nbsp;0x1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a483" doxytag="libnet-headers.h::LIBNET_VRRP_AUTH_PASSWD" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_VRRP_AUTH_PASSWD</b>&nbsp;&nbsp;&nbsp;0x2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a484" doxytag="libnet-headers.h::LIBNET_VRRP_AUTH_IPAH" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_VRRP_AUTH_IPAH</b>&nbsp;&nbsp;&nbsp;0x3</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+libnet header information
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a63" doxytag="libnet-headers.h::LIBNET_802_1Q_CFIMASK" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1Q_CFIMASK&nbsp;&nbsp;&nbsp;0x0001
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+CFI mask </td>
+ </tr>
+</table>
+<a class="anchor" name="a0" doxytag="libnet-headers.h::LIBNET_802_1Q_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1Q_H&nbsp;&nbsp;&nbsp;0x12
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1Q header: 18 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a62" doxytag="libnet-headers.h::LIBNET_802_1Q_PRIMASK" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1Q_PRIMASK&nbsp;&nbsp;&nbsp;0x0007
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+priority mask </td>
+ </tr>
+</table>
+<a class="anchor" name="a64" doxytag="libnet-headers.h::LIBNET_802_1Q_VIDMASK" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1Q_VIDMASK&nbsp;&nbsp;&nbsp;0x0fff
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+vid mask </td>
+ </tr>
+</table>
+<a class="anchor" name="a69" doxytag="libnet-headers.h::LIBNET_802_1X_ENCASFAL" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1X_ENCASFAL&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1x encasfal </td>
+ </tr>
+</table>
+<a class="anchor" name="a1" doxytag="libnet-headers.h::LIBNET_802_1X_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1X_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1X header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a68" doxytag="libnet-headers.h::LIBNET_802_1X_KEY" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1X_KEY&nbsp;&nbsp;&nbsp;0x03
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1x key </td>
+ </tr>
+</table>
+<a class="anchor" name="a67" doxytag="libnet-headers.h::LIBNET_802_1X_LOGOFF" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1X_LOGOFF&nbsp;&nbsp;&nbsp;0x02
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1x logoff </td>
+ </tr>
+</table>
+<a class="anchor" name="a65" doxytag="libnet-headers.h::LIBNET_802_1X_PACKET" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1X_PACKET&nbsp;&nbsp;&nbsp;0x00
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1x packet </td>
+ </tr>
+</table>
+<a class="anchor" name="a66" doxytag="libnet-headers.h::LIBNET_802_1X_START" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_1X_START&nbsp;&nbsp;&nbsp;0x01
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.1x start </td>
+ </tr>
+</table>
+<a class="anchor" name="a2" doxytag="libnet-headers.h::LIBNET_802_2_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_2_H&nbsp;&nbsp;&nbsp;0x03
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.2 LLC header: 3 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a3" doxytag="libnet-headers.h::LIBNET_802_2SNAP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_2SNAP_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.2 LLC/SNAP header:8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a4" doxytag="libnet-headers.h::LIBNET_802_3_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_802_3_H&nbsp;&nbsp;&nbsp;0x0e
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+802.3 header: 14 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a6" doxytag="libnet-headers.h::LIBNET_ARP_ETH_IP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ARP_ETH_IP_H&nbsp;&nbsp;&nbsp;0x1c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ARP w/ ETH and IP: 28 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a5" doxytag="libnet-headers.h::LIBNET_ARP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ARP_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ARP header w/o addrs: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a7" doxytag="libnet-headers.h::LIBNET_BGP4_HEADER_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_BGP4_HEADER_H&nbsp;&nbsp;&nbsp;0x13
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+BGP header: 19 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a10" doxytag="libnet-headers.h::LIBNET_BGP4_NOTIFICATION_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_BGP4_NOTIFICATION_H&nbsp;&nbsp;&nbsp;0x02
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+BGP notif. header: 2 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a8" doxytag="libnet-headers.h::LIBNET_BGP4_OPEN_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_BGP4_OPEN_H&nbsp;&nbsp;&nbsp;0x0a
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+BGP open header: 10 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a9" doxytag="libnet-headers.h::LIBNET_BGP4_UPDATE_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_BGP4_UPDATE_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+BGP open header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a11" doxytag="libnet-headers.h::LIBNET_CDP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_CDP_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+CDP header base: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a12" doxytag="libnet-headers.h::LIBNET_DHCPV4_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_DHCPV4_H&nbsp;&nbsp;&nbsp;0xf0
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+DHCP v4 header: 240 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a15" doxytag="libnet-headers.h::LIBNET_ETH_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ETH_H&nbsp;&nbsp;&nbsp;0x0e
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Ethernet header: 14 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a16" doxytag="libnet-headers.h::LIBNET_FDDI_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_FDDI_H&nbsp;&nbsp;&nbsp;0x15
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+FDDI header: 21 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a36" doxytag="libnet-headers.h::LIBNET_GRE_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_GRE_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+GRE header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a37" doxytag="libnet-headers.h::LIBNET_GRE_SRE_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_GRE_SRE_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+GRE SRE header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a18" doxytag="libnet-headers.h::LIBNET_ICMPV4_ECHO_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_ECHO_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP_ECHO header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a17" doxytag="libnet-headers.h::LIBNET_ICMPV4_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP header base: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a19" doxytag="libnet-headers.h::LIBNET_ICMPV4_MASK_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_MASK_H&nbsp;&nbsp;&nbsp;0x0c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP_MASK header: 12 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a22" doxytag="libnet-headers.h::LIBNET_ICMPV4_REDIRECT_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_REDIRECT_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP_REDIRECT header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a21" doxytag="libnet-headers.h::LIBNET_ICMPV4_TIMXCEED_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_TIMXCEED_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP_TIMXCEED header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a23" doxytag="libnet-headers.h::LIBNET_ICMPV4_TS_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_TS_H&nbsp;&nbsp;&nbsp;0x14
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP_TIMESTAMP headr:20 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a20" doxytag="libnet-headers.h::LIBNET_ICMPV4_UNREACH_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV4_UNREACH_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP_UNREACH header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a24" doxytag="libnet-headers.h::LIBNET_ICMPV6_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ICMPV6_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ICMP6 header base: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a25" doxytag="libnet-headers.h::LIBNET_IGMP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IGMP_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IGMP header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a34" doxytag="libnet-headers.h::LIBNET_IPSEC_AH_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPSEC_AH_H&nbsp;&nbsp;&nbsp;0x10
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPSEC AH header: 16 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a33" doxytag="libnet-headers.h::LIBNET_IPSEC_ESP_FTR_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPSEC_ESP_FTR_H&nbsp;&nbsp;&nbsp;0x02
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPSEC ESP footer: 2 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a32" doxytag="libnet-headers.h::LIBNET_IPSEC_ESP_HDR_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPSEC_ESP_HDR_H&nbsp;&nbsp;&nbsp;0x0c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPSEC ESP header: 12 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a26" doxytag="libnet-headers.h::LIBNET_IPV4_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPV4_H&nbsp;&nbsp;&nbsp;0x14
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPv4 header: 20 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a30" doxytag="libnet-headers.h::LIBNET_IPV6_DESTOPTS_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPV6_DESTOPTS_H&nbsp;&nbsp;&nbsp;0x02
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPv6 dest opts base: 2 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a28" doxytag="libnet-headers.h::LIBNET_IPV6_FRAG_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPV6_FRAG_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPv6 frag header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a27" doxytag="libnet-headers.h::LIBNET_IPV6_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPV6_H&nbsp;&nbsp;&nbsp;0x28
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPv6 header: 40 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a31" doxytag="libnet-headers.h::LIBNET_IPV6_HBHOPTS_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPV6_HBHOPTS_H&nbsp;&nbsp;&nbsp;0x02
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPv6 hop/hop opt base:2 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a29" doxytag="libnet-headers.h::LIBNET_IPV6_ROUTING_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_IPV6_ROUTING_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IPv6 frag header base:4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a35" doxytag="libnet-headers.h::LIBNET_ISL_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ISL_H&nbsp;&nbsp;&nbsp;0x1a
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+ISL header: 26 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a38" doxytag="libnet-headers.h::LIBNET_MPLS_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_MPLS_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+MPLS header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a51" doxytag="libnet-headers.h::LIBNET_NTP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_NTP_H&nbsp;&nbsp;&nbsp;0x30
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+NTP header: 48 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a45" doxytag="libnet-headers.h::LIBNET_OSPF_AUTH_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_AUTH_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF AUTH header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a46" doxytag="libnet-headers.h::LIBNET_OSPF_CKSUM" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_CKSUM&nbsp;&nbsp;&nbsp;0x10
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF CKSUM header: 16 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a41" doxytag="libnet-headers.h::LIBNET_OSPF_DBD_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_DBD_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF DBD header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a39" doxytag="libnet-headers.h::LIBNET_OSPF_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_H&nbsp;&nbsp;&nbsp;0x10
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF header: 16 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a40" doxytag="libnet-headers.h::LIBNET_OSPF_HELLO_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_HELLO_H&nbsp;&nbsp;&nbsp;0x18
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF hello header: 24 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a50" doxytag="libnet-headers.h::LIBNET_OSPF_LS_AS_EXT_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LS_AS_EXT_H&nbsp;&nbsp;&nbsp;0x10
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LS AS header: 16 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a48" doxytag="libnet-headers.h::LIBNET_OSPF_LS_NET_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LS_NET_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LS NET header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a47" doxytag="libnet-headers.h::LIBNET_OSPF_LS_RTR_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LS_RTR_H&nbsp;&nbsp;&nbsp;0x10
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LS RTR header: 16 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a49" doxytag="libnet-headers.h::LIBNET_OSPF_LS_SUM_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LS_SUM_H&nbsp;&nbsp;&nbsp;0x0c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LS SUM header: 12 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a44" doxytag="libnet-headers.h::LIBNET_OSPF_LSA_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LSA_H&nbsp;&nbsp;&nbsp;0x14
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LSA header: 20 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a42" doxytag="libnet-headers.h::LIBNET_OSPF_LSR_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LSR_H&nbsp;&nbsp;&nbsp;0x0c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LSR header: 12 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a43" doxytag="libnet-headers.h::LIBNET_OSPF_LSU_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OSPF_LSU_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+OSPF LSU header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a52" doxytag="libnet-headers.h::LIBNET_RIP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_RIP_H&nbsp;&nbsp;&nbsp;0x18
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+RIP header base: 24 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a53" doxytag="libnet-headers.h::LIBNET_RPC_CALL_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_RPC_CALL_H&nbsp;&nbsp;&nbsp;0x28
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+RPC header: 40 bytes (assuming 8 byte auth header) </td>
+ </tr>
+</table>
+<a class="anchor" name="a54" doxytag="libnet-headers.h::LIBNET_RPC_CALL_TCP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_RPC_CALL_TCP_H&nbsp;&nbsp;&nbsp;0x2c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+RPC header: 44 bytes (with record marking) </td>
+ </tr>
+</table>
+<a class="anchor" name="a56" doxytag="libnet-headers.h::LIBNET_STP_CONF_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_STP_CONF_H&nbsp;&nbsp;&nbsp;0x23
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+STP conf header: 35 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a57" doxytag="libnet-headers.h::LIBNET_STP_TCN_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_STP_TCN_H&nbsp;&nbsp;&nbsp;0x04
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+STP tcn header: 4 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a14" doxytag="libnet-headers.h::LIBNET_TCP_DNSV4_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_TCP_DNSV4_H&nbsp;&nbsp;&nbsp;0x0e
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+TCP DNS v4 header: 14 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a59" doxytag="libnet-headers.h::LIBNET_TCP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_TCP_H&nbsp;&nbsp;&nbsp;0x14
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+TCP header: 20 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a58" doxytag="libnet-headers.h::LIBNET_TOKEN_RING_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_TOKEN_RING_H&nbsp;&nbsp;&nbsp;0x16
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Token Ring header: 22 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a13" doxytag="libnet-headers.h::LIBNET_UDP_DNSV4_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_UDP_DNSV4_H&nbsp;&nbsp;&nbsp;0x0c
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+UDP DNS v4 header: 12 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a60" doxytag="libnet-headers.h::LIBNET_UDP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_UDP_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+UDP header: 8 bytes </td>
+ </tr>
+</table>
+<a class="anchor" name="a61" doxytag="libnet-headers.h::LIBNET_VRRP_H" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_VRRP_H&nbsp;&nbsp;&nbsp;0x08
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+VRRP header: 8 bytes </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-macros_8h-source.html b/libnet/doc/html/libnet-macros_8h-source.html
new file mode 100644
index 0000000..70c55d1
--- /dev/null
+++ b/libnet/doc/html/libnet-macros_8h-source.html
@@ -0,0 +1,161 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-macros.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-macros.h</h1><a href="libnet-macros_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet-macros.h,v 1.6 2004/03/01 20:26:12 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet-macros.h - Network routine library macro header file</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00011 <span class="comment"> * are met:</span>
+00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00017 <span class="comment"> *</span>
+00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00028 <span class="comment"> * SUCH DAMAGE.</span>
+00029 <span class="comment"> *</span>
+00030 <span class="comment"> */</span>
+00031
+00032 <span class="preprocessor">#ifndef __LIBNET_MACROS_H</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_MACROS_H</span>
+00034 <span class="preprocessor"></span>
+00039 <span class="comment">/* for systems without snprintf */</span>
+00040 <span class="preprocessor">#if defined(NO_SNPRINTF)</span>
+00041 <span class="preprocessor"></span><span class="preprocessor">#define snprintf(buf, len, args...) sprintf(buf, ##args)</span>
+00042 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00043 <span class="preprocessor"></span>
+00044
+<a name="l00049"></a><a class="code" href="libnet-macros_8h.html#a0">00049</a> <span class="preprocessor">#define LIBNET_DONT_RESOLVE 0</span>
+00050 <span class="preprocessor"></span>
+<a name="l00055"></a><a class="code" href="libnet-macros_8h.html#a1">00055</a> <span class="preprocessor">#define LIBNET_RESOLVE 1</span>
+00056 <span class="preprocessor"></span>
+<a name="l00060"></a><a class="code" href="libnet-macros_8h.html#a2">00060</a> <span class="preprocessor">#define LIBNET_ON 0</span>
+00061 <span class="preprocessor"></span>
+<a name="l00065"></a><a class="code" href="libnet-macros_8h.html#a3">00065</a> <span class="preprocessor">#define LIBNET_OFF 1</span>
+00066 <span class="preprocessor"></span>
+00070 <span class="preprocessor">#ifndef IN6ADDR_ERROR_INIT</span>
+<a name="l00071"></a><a class="code" href="libnet-macros_8h.html#a4">00071</a> <span class="preprocessor"></span><span class="preprocessor">#define IN6ADDR_ERROR_INIT { { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \</span>
+00072 <span class="preprocessor"> 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \</span>
+00073 <span class="preprocessor"> 0xff, 0xff } } }</span>
+00074 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00075 <span class="preprocessor"></span>
+<a name="l00079"></a><a class="code" href="libnet-macros_8h.html#a5">00079</a> <span class="preprocessor">#define LIBNET_PR2 0</span>
+00080 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PR8 1</span>
+00081 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PR16 2</span>
+00082 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PRu16 3</span>
+00083 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PR32 4</span>
+00084 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PRu32 5</span>
+00085 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PRAND_MAX 0xffffffff</span>
+00086 <span class="preprocessor"></span>
+<a name="l00090"></a><a class="code" href="libnet-macros_8h.html#a12">00090</a> <span class="preprocessor">#define LIBNET_MAX_PACKET 0xffff</span>
+00091 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_MAXPACKET</span>
+00092 <span class="preprocessor"></span><span class="preprocessor">#define IP_MAXPACKET 0xffff</span>
+00093 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00094 <span class="preprocessor"></span>
+00095
+00096 <span class="comment">/* ethernet addresses are 6 octets long */</span>
+00097 <span class="preprocessor">#ifndef ETHER_ADDR_LEN</span>
+00098 <span class="preprocessor"></span><span class="preprocessor">#define ETHER_ADDR_LEN 0x6</span>
+00099 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00100 <span class="preprocessor"></span>
+00101 <span class="comment">/* FDDI addresses are 6 octets long */</span>
+00102 <span class="preprocessor">#ifndef FDDI_ADDR_LEN</span>
+00103 <span class="preprocessor"></span><span class="preprocessor">#define FDDI_ADDR_LEN 0x6</span>
+00104 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00105 <span class="preprocessor"></span>
+00106 <span class="comment">/* token ring addresses are 6 octets long */</span>
+00107 <span class="preprocessor">#ifndef TOKEN_RING_ADDR_LEN</span>
+00108 <span class="preprocessor"></span><span class="preprocessor">#define TOKEN_RING_ADDR_LEN 0x6</span>
+00109 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00110 <span class="preprocessor"></span>
+00111 <span class="comment">/* LLC Organization Code is 3 bytes long */</span>
+00112 <span class="preprocessor">#define LIBNET_ORG_CODE_SIZE 0x3</span>
+00113 <span class="preprocessor"></span>
+<a name="l00117"></a><a class="code" href="libnet-macros_8h.html#a18">00117</a> <span class="preprocessor">#define LIBNET_ERRBUF_SIZE 0x100</span>
+00118 <span class="preprocessor"></span>
+<a name="l00122"></a><a class="code" href="libnet-macros_8h.html#a19">00122</a> <span class="preprocessor">#define LIBNET_MAXOPTION_SIZE 0x28</span>
+00123 <span class="preprocessor"></span>
+00124 <span class="comment">/* some BSD variants have this endianess problem */</span>
+00125 <span class="preprocessor">#if (LIBNET_BSD_BYTE_SWAP)</span>
+00126 <span class="preprocessor"></span><span class="preprocessor">#define FIX(n) ntohs(n)</span>
+00127 <span class="preprocessor"></span><span class="preprocessor">#define UNFIX(n) htons(n)</span>
+00128 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00129 <span class="preprocessor"></span><span class="preprocessor">#define FIX(n) (n)</span>
+00130 <span class="preprocessor"></span><span class="preprocessor">#define UNFIX(n) (n)</span>
+00131 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00132 <span class="preprocessor"></span>
+00133 <span class="comment">/* used internally for checksum stuff */</span>
+00134 <span class="preprocessor">#define LIBNET_CKSUM_CARRY(x) \</span>
+00135 <span class="preprocessor"> (x = (x &gt;&gt; 16) + (x &amp; 0xffff), (~(x + (x &gt;&gt; 16)) &amp; 0xffff))</span>
+00136 <span class="preprocessor"></span>
+00137 <span class="comment">/* used interally for OSPF stuff */</span>
+00138 <span class="preprocessor">#define LIBNET_OSPF_AUTHCPY(x, y) \</span>
+00139 <span class="preprocessor"> memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))</span>
+00140 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_OSPF_CKSUMBUF(x, y) \</span>
+00141 <span class="preprocessor"> memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y)) </span>
+00142 <span class="preprocessor"></span>
+00143 <span class="comment">/* used internally for NTP leap indicator, version, and mode */</span>
+00144 <span class="preprocessor">#define LIBNET_NTP_DO_LI_VN_MODE(li, vn, md) \</span>
+00145 <span class="preprocessor"> ((u_int8_t)((((li) &lt;&lt; 6) &amp; 0xc0) | (((vn) &lt;&lt; 3) &amp; 0x38) | ((md) &amp; 0x7)))</span>
+00146 <span class="preprocessor"></span>
+00147 <span class="comment">/* Not all systems have IFF_LOOPBACK */</span>
+00148 <span class="preprocessor">#ifdef IFF_LOOPBACK</span>
+00149 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_ISLOOPBACK(p) ((p)-&gt;ifr_flags &amp; IFF_LOOPBACK)</span>
+00150 <span class="preprocessor"></span><span class="preprocessor">#else</span>
+00151 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_ISLOOPBACK(p) (strcmp((p)-&gt;ifr_name, "lo0") == 0)</span>
+00152 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00153 <span class="preprocessor"></span>
+00154 <span class="comment">/* advanced mode check */</span>
+00155 <span class="preprocessor">#define LIBNET_ISADVMODE(x) (x &amp; 0x08)</span>
+00156 <span class="preprocessor"></span>
+00157 <span class="comment">/* context queue macros and constants */</span>
+00158 <span class="preprocessor">#define LIBNET_LABEL_SIZE 64</span>
+00159 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_LABEL_DEFAULT "cardshark"</span>
+00160 <span class="preprocessor"></span><span class="preprocessor">#define CQ_LOCK_UNLOCKED (u_int)0x00000000</span>
+00161 <span class="preprocessor"></span><span class="preprocessor">#define CQ_LOCK_READ (u_int)0x00000001</span>
+00162 <span class="preprocessor"></span><span class="preprocessor">#define CQ_LOCK_WRITE (u_int)0x00000002</span>
+00163 <span class="preprocessor"></span>
+<a name="l00169"></a><a class="code" href="libnet-macros_8h.html#a33">00169</a> <span class="preprocessor">#define for_each_context_in_cq(l) \</span>
+00170 <span class="preprocessor"> for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())</span>
+00171 <span class="preprocessor"></span>
+00172 <span class="comment">/* return 1 if write lock is set on cq */</span>
+00173 <span class="preprocessor">#define cq_is_wlocked() (l_cqd.cq_lock &amp; CQ_LOCK_WRITE)</span>
+00174 <span class="preprocessor"></span>
+00175 <span class="comment">/* return 1 if read lock is set on cq */</span>
+00176 <span class="preprocessor">#define cq_is_rlocked() (l_cqd.cq_lock &amp; CQ_LOCK_READ)</span>
+00177 <span class="preprocessor"></span>
+00178 <span class="comment">/* return 1 if any lock is set on cq */</span>
+00179 <span class="preprocessor">#define cq_is_locked() (l_cqd.cq_lock &amp; (CQ_LOCK_READ | CQ_LOCK_WRITE))</span>
+00180 <span class="preprocessor"></span>
+00181 <span class="comment">/* check if a context queue is locked */</span>
+00182 <span class="preprocessor">#define check_cq_lock(x) (l_cqd.cq_lock &amp; x)</span>
+00183 <span class="preprocessor"></span>
+00184 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_MACROS_H */</span>
+00185
+00186 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-macros_8h.html b/libnet/doc/html/libnet-macros_8h.html
new file mode 100644
index 0000000..4ef2a5b
--- /dev/null
+++ b/libnet/doc/html/libnet-macros_8h.html
@@ -0,0 +1,358 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-macros.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-macros.h File Reference</h1>libnet macros and symbloc constants
+<a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="libnet-macros_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a0">LIBNET_DONT_RESOLVE</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a1">LIBNET_RESOLVE</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a2">LIBNET_ON</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a3">LIBNET_OFF</a>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a4">IN6ADDR_ERROR_INIT</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a5">LIBNET_PR2</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a6" doxytag="libnet-macros.h::LIBNET_PR8" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PR8</b>&nbsp;&nbsp;&nbsp;1</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a7" doxytag="libnet-macros.h::LIBNET_PR16" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PR16</b>&nbsp;&nbsp;&nbsp;2</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a8" doxytag="libnet-macros.h::LIBNET_PRu16" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PRu16</b>&nbsp;&nbsp;&nbsp;3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a9" doxytag="libnet-macros.h::LIBNET_PR32" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PR32</b>&nbsp;&nbsp;&nbsp;4</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a10" doxytag="libnet-macros.h::LIBNET_PRu32" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PRu32</b>&nbsp;&nbsp;&nbsp;5</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a11" doxytag="libnet-macros.h::LIBNET_PRAND_MAX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_PRAND_MAX</b>&nbsp;&nbsp;&nbsp;0xffffffff</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a12">LIBNET_MAX_PACKET</a>&nbsp;&nbsp;&nbsp;0xffff</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a13" doxytag="libnet-macros.h::IP_MAXPACKET" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>IP_MAXPACKET</b>&nbsp;&nbsp;&nbsp;0xffff</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a14" doxytag="libnet-macros.h::ETHER_ADDR_LEN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>ETHER_ADDR_LEN</b>&nbsp;&nbsp;&nbsp;0x6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a15" doxytag="libnet-macros.h::FDDI_ADDR_LEN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>FDDI_ADDR_LEN</b>&nbsp;&nbsp;&nbsp;0x6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a16" doxytag="libnet-macros.h::TOKEN_RING_ADDR_LEN" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>TOKEN_RING_ADDR_LEN</b>&nbsp;&nbsp;&nbsp;0x6</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a17" doxytag="libnet-macros.h::LIBNET_ORG_CODE_SIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_ORG_CODE_SIZE</b>&nbsp;&nbsp;&nbsp;0x3</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a18">LIBNET_ERRBUF_SIZE</a>&nbsp;&nbsp;&nbsp;0x100</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a19">LIBNET_MAXOPTION_SIZE</a>&nbsp;&nbsp;&nbsp;0x28</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a20" doxytag="libnet-macros.h::FIX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>FIX</b>(n)&nbsp;&nbsp;&nbsp;(n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a21" doxytag="libnet-macros.h::UNFIX" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>UNFIX</b>(n)&nbsp;&nbsp;&nbsp;(n)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a22" doxytag="libnet-macros.h::LIBNET_CKSUM_CARRY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_CKSUM_CARRY</b>(x)&nbsp;&nbsp;&nbsp;(x = (x &gt;&gt; 16) + (x &amp; 0xffff), (~(x + (x &gt;&gt; 16)) &amp; 0xffff))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a23" doxytag="libnet-macros.h::LIBNET_OSPF_AUTHCPY" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_AUTHCPY</b>(x, y)&nbsp;&nbsp;&nbsp;memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a24" doxytag="libnet-macros.h::LIBNET_OSPF_CKSUMBUF" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_OSPF_CKSUMBUF</b>(x, y)&nbsp;&nbsp;&nbsp;memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a25" doxytag="libnet-macros.h::LIBNET_NTP_DO_LI_VN_MODE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_NTP_DO_LI_VN_MODE</b>(li, vn, md)&nbsp;&nbsp;&nbsp;((u_int8_t)((((li) &lt;&lt; 6) &amp; 0xc0) | (((vn) &lt;&lt; 3) &amp; 0x38) | ((md) &amp; 0x7)))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a26" doxytag="libnet-macros.h::LIBNET_ISLOOPBACK" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_ISLOOPBACK</b>(p)&nbsp;&nbsp;&nbsp;(strcmp((p)-&gt;ifr_name, "lo0") == 0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a27" doxytag="libnet-macros.h::LIBNET_ISADVMODE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_ISADVMODE</b>(x)&nbsp;&nbsp;&nbsp;(x &amp; 0x08)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a28" doxytag="libnet-macros.h::LIBNET_LABEL_SIZE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LABEL_SIZE</b>&nbsp;&nbsp;&nbsp;64</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a29" doxytag="libnet-macros.h::LIBNET_LABEL_DEFAULT" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>LIBNET_LABEL_DEFAULT</b>&nbsp;&nbsp;&nbsp;"cardshark"</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a30" doxytag="libnet-macros.h::CQ_LOCK_UNLOCKED" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>CQ_LOCK_UNLOCKED</b>&nbsp;&nbsp;&nbsp;(u_int)0x00000000</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a31" doxytag="libnet-macros.h::CQ_LOCK_READ" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>CQ_LOCK_READ</b>&nbsp;&nbsp;&nbsp;(u_int)0x00000001</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a32" doxytag="libnet-macros.h::CQ_LOCK_WRITE" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>CQ_LOCK_WRITE</b>&nbsp;&nbsp;&nbsp;(u_int)0x00000002</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>#define&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="libnet-macros_8h.html#a33">for_each_context_in_cq</a>(l)&nbsp;&nbsp;&nbsp;for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a34" doxytag="libnet-macros.h::cq_is_wlocked" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>cq_is_wlocked</b>()&nbsp;&nbsp;&nbsp;(l_cqd.cq_lock &amp; CQ_LOCK_WRITE)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a35" doxytag="libnet-macros.h::cq_is_rlocked" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>cq_is_rlocked</b>()&nbsp;&nbsp;&nbsp;(l_cqd.cq_lock &amp; CQ_LOCK_READ)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a36" doxytag="libnet-macros.h::cq_is_locked" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>cq_is_locked</b>()&nbsp;&nbsp;&nbsp;(l_cqd.cq_lock &amp; (CQ_LOCK_READ | CQ_LOCK_WRITE))</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="a37" doxytag="libnet-macros.h::check_cq_lock" ></a>
+#define&nbsp;</td><td class="memItemRight" valign=bottom><b>check_cq_lock</b>(x)&nbsp;&nbsp;&nbsp;(l_cqd.cq_lock &amp; x)</td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+libnet macros and symbloc constants
+<p>
+<hr><h2>Define Documentation</h2>
+<a class="anchor" name="a33" doxytag="libnet-macros.h::for_each_context_in_cq" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define for_each_context_in_cq</td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">l&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap>&nbsp;&nbsp;&nbsp;for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Provides an interface to iterate through the context queue of libnet contexts. Before calling this macro, be sure to set the queue using <a class="el" href="libnet-functions_8h.html#a108">libnet_cq_head()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="a4" doxytag="libnet-macros.h::IN6ADDR_ERROR_INIT" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define IN6ADDR_ERROR_INIT
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<b>Value:</b><div class="fragment"><pre>{ { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+ 0xff, 0xff } } }
+</pre></div>IPv6 error code </td>
+ </tr>
+</table>
+<a class="anchor" name="a0" doxytag="libnet-macros.h::LIBNET_DONT_RESOLVE" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_DONT_RESOLVE&nbsp;&nbsp;&nbsp;0
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used for libnet's name resolution functions, specifies that no DNS lookups should be performed and the IP address should be kept in numeric form. </td>
+ </tr>
+</table>
+<a class="anchor" name="a18" doxytag="libnet-macros.h::LIBNET_ERRBUF_SIZE" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ERRBUF_SIZE&nbsp;&nbsp;&nbsp;0x100
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The libnet error buffer is 256 bytes long. </td>
+ </tr>
+</table>
+<a class="anchor" name="a12" doxytag="libnet-macros.h::LIBNET_MAX_PACKET" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_MAX_PACKET&nbsp;&nbsp;&nbsp;0xffff
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+The biggest an IP packet can be -- 65,535 bytes. </td>
+ </tr>
+</table>
+<a class="anchor" name="a19" doxytag="libnet-macros.h::LIBNET_MAXOPTION_SIZE" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_MAXOPTION_SIZE&nbsp;&nbsp;&nbsp;0x28
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+IP and TCP options can be up to 40 bytes long. </td>
+ </tr>
+</table>
+<a class="anchor" name="a3" doxytag="libnet-macros.h::LIBNET_OFF" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_OFF&nbsp;&nbsp;&nbsp;1
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used several places, to specify "on" or "one" </td>
+ </tr>
+</table>
+<a class="anchor" name="a2" doxytag="libnet-macros.h::LIBNET_ON" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_ON&nbsp;&nbsp;&nbsp;0
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used several places, to specify "on" or "one" </td>
+ </tr>
+</table>
+<a class="anchor" name="a5" doxytag="libnet-macros.h::LIBNET_PR2" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_PR2&nbsp;&nbsp;&nbsp;0
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used for <a class="el" href="libnet-functions_8h.html#a12">libnet_get_prand()</a> to specify function disposition </td>
+ </tr>
+</table>
+<a class="anchor" name="a1" doxytag="libnet-macros.h::LIBNET_RESOLVE" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> #define LIBNET_RESOLVE&nbsp;&nbsp;&nbsp;1
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Used for libnet's name resolution functions, specifies that a DNS lookup can be performed if needed to resolve the IP address to a canonical form. </td>
+ </tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-structures_8h-source.html b/libnet/doc/html/libnet-structures_8h-source.html
new file mode 100644
index 0000000..438fe1f
--- /dev/null
+++ b/libnet/doc/html/libnet-structures_8h-source.html
@@ -0,0 +1,233 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-structures.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-structures.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet-structures.h,v 1.16 2004/02/16 23:13:38 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet-structures.h - Network routine library structures header file</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00011 <span class="comment"> * are met:</span>
+00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00017 <span class="comment"> *</span>
+00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00028 <span class="comment"> * SUCH DAMAGE.</span>
+00029 <span class="comment"> *</span>
+00030 <span class="comment"> */</span>
+00031
+00032 <span class="preprocessor">#ifndef __LIBNET_STRUCTURES_H</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_STRUCTURES_H</span>
+00034 <span class="preprocessor"></span>
+00035 <span class="preprocessor">#if ((__WIN32__) &amp;&amp; !(__CYGWIN__))</span>
+00036 <span class="preprocessor"></span><span class="preprocessor">#include "Packet32.h"</span>
+00037 <span class="preprocessor">#endif</span>
+00038 <span class="preprocessor"></span>
+00039 <span class="comment">/* port list chain structure */</span>
+00040 <span class="keyword">typedef</span> <span class="keyword">struct </span>libnet_port_list_chain libnet_plist_t;
+00041 <span class="keyword">struct </span>libnet_port_list_chain
+00042 {
+00043 u_int16_t node; <span class="comment">/* node number */</span>
+00044 u_int16_t bport; <span class="comment">/* beggining port */</span>
+00045 u_int16_t eport; <span class="comment">/* terminating port */</span>
+00046 u_int8_t id; <span class="comment">/* global array offset */</span>
+00047 libnet_plist_t *next; <span class="comment">/* next node in the list */</span>
+00048 };
+00049
+00050
+00051 <span class="comment">/* libnet statistics structure */</span>
+00052 <span class="keyword">struct </span>libnet_stats
+00053 {
+00054 <span class="preprocessor">#if (!defined(__WIN32__) || (__CYGWIN__))</span>
+00055 <span class="preprocessor"></span> u_int64_t packets_sent; <span class="comment">/* packets sent */</span>
+00056 u_int64_t packet_errors; <span class="comment">/* packets errors */</span>
+00057 u_int64_t bytes_written; <span class="comment">/* bytes written */</span>
+00058 <span class="preprocessor">#else</span>
+00059 <span class="preprocessor"></span> __int64 packets_sent; <span class="comment">/* packets sent */</span>
+00060 __int64 packet_errors; <span class="comment">/* packets errors */</span>
+00061 __int64 bytes_written; <span class="comment">/* bytes written */</span>
+00062 <span class="preprocessor">#endif</span>
+00063 <span class="preprocessor"></span>};
+00064
+00065
+00066 <span class="comment">/*</span>
+00067 <span class="comment"> * Libnet ptags are how we identify specific protocol blocks inside the</span>
+00068 <span class="comment"> * list.</span>
+00069 <span class="comment"> */</span>
+00070 <span class="keyword">typedef</span> int32_t libnet_ptag_t;
+00071 <span class="preprocessor">#define LIBNET_PTAG_INITIALIZER 0</span>
+00072 <span class="preprocessor"></span>
+00073
+00074 <span class="comment">/*</span>
+00075 <span class="comment"> * Libnet generic protocol block memory object. Sort of a poor man's mbuf.</span>
+00076 <span class="comment"> */</span>
+00077 <span class="keyword">struct </span>libnet_protocol_block
+00078 {
+00079 u_int8_t *buf; <span class="comment">/* protocol buffer */</span>
+00080 u_int32_t b_len; <span class="comment">/* length of buf */</span>
+00081 u_int16_t h_len; <span class="comment">/* header length (for checksumming) */</span>
+00082 u_int32_t copied; <span class="comment">/* bytes copied */</span>
+00083 u_int8_t type; <span class="comment">/* type of pblock */</span>
+00084 <span class="comment">/* this needs to be updated every time a new packet builder is added */</span>
+00085 <span class="preprocessor">#define LIBNET_PBLOCK_ARP_H 0x01 </span><span class="comment">/* ARP header */</span>
+00086 <span class="preprocessor">#define LIBNET_PBLOCK_DHCPV4_H 0x02 </span><span class="comment">/* DHCP v4 header */</span>
+00087 <span class="preprocessor">#define LIBNET_PBLOCK_DNSV4_H 0x03 </span><span class="comment">/* DNS v4 header */</span>
+00088 <span class="preprocessor">#define LIBNET_PBLOCK_ETH_H 0x04 </span><span class="comment">/* Ethernet header */</span>
+00089 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_H 0x05 </span><span class="comment">/* ICMP v4 base header */</span>
+00090 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_ECHO_H 0x06 </span><span class="comment">/* ICMP v4 echo header */</span>
+00091 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_MASK_H 0x07 </span><span class="comment">/* ICMP v4 mask header */</span>
+00092 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_UNREACH_H 0x08 </span><span class="comment">/* ICMP v4 unreach header */</span>
+00093 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_TIMXCEED_H 0x09 </span><span class="comment">/* ICMP v4 exceed header */</span>
+00094 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_REDIRECT_H 0x0a </span><span class="comment">/* ICMP v4 redirect header */</span>
+00095 <span class="preprocessor">#define LIBNET_PBLOCK_ICMPV4_TS_H 0x0b </span><span class="comment">/* ICMP v4 timestamp header */</span>
+00096 <span class="preprocessor">#define LIBNET_PBLOCK_IGMP_H 0x0c </span><span class="comment">/* IGMP header */</span>
+00097 <span class="preprocessor">#define LIBNET_PBLOCK_IPV4_H 0x0d </span><span class="comment">/* IP v4 header */</span>
+00098 <span class="preprocessor">#define LIBNET_PBLOCK_IPO_H 0x0e </span><span class="comment">/* IP v4 options */</span>
+00099 <span class="preprocessor">#define LIBNET_PBLOCK_IPDATA 0x0f </span><span class="comment">/* IP data */</span>
+00100 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_H 0x10 </span><span class="comment">/* OSPF base header */</span>
+00101 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_HELLO_H 0x11 </span><span class="comment">/* OSPF hello header */</span>
+00102 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_DBD_H 0x12 </span><span class="comment">/* OSPF dbd header */</span>
+00103 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_LSR_H 0x13 </span><span class="comment">/* OSPF lsr header */</span>
+00104 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_LSU_H 0x14 </span><span class="comment">/* OSPF lsu header */</span>
+00105 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_LSA_H 0x15 </span><span class="comment">/* OSPF lsa header */</span>
+00106 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_AUTH_H 0x16 </span><span class="comment">/* OSPF auth header */</span>
+00107 <span class="preprocessor">#define LIBNET_PBLOCK_OSPF_CKSUM 0x17 </span><span class="comment">/* OSPF checksum header */</span>
+00108 <span class="preprocessor">#define LIBNET_PBLOCK_LS_RTR_H 0x18 </span><span class="comment">/* linkstate rtr header */</span>
+00109 <span class="preprocessor">#define LIBNET_PBLOCK_LS_NET_H 0x19 </span><span class="comment">/* linkstate net header */</span>
+00110 <span class="preprocessor">#define LIBNET_PBLOCK_LS_SUM_H 0x1a </span><span class="comment">/* linkstate as sum header */</span>
+00111 <span class="preprocessor">#define LIBNET_PBLOCK_LS_AS_EXT_H 0x1b </span><span class="comment">/* linkstate as ext header */</span>
+00112 <span class="preprocessor">#define LIBNET_PBLOCK_NTP_H 0x1c </span><span class="comment">/* NTP header */</span>
+00113 <span class="preprocessor">#define LIBNET_PBLOCK_RIP_H 0x1d </span><span class="comment">/* RIP header */</span>
+00114 <span class="preprocessor">#define LIBNET_PBLOCK_TCP_H 0x1e </span><span class="comment">/* TCP header */</span>
+00115 <span class="preprocessor">#define LIBNET_PBLOCK_TCPO_H 0x1f </span><span class="comment">/* TCP options */</span>
+00116 <span class="preprocessor">#define LIBNET_PBLOCK_TCPDATA 0x20 </span><span class="comment">/* TCP data */</span>
+00117 <span class="preprocessor">#define LIBNET_PBLOCK_UDP_H 0x21 </span><span class="comment">/* UDP header */</span>
+00118 <span class="preprocessor">#define LIBNET_PBLOCK_VRRP_H 0x22 </span><span class="comment">/* VRRP header */</span>
+00119 <span class="preprocessor">#define LIBNET_PBLOCK_DATA_H 0x23 </span><span class="comment">/* generic data */</span>
+00120 <span class="preprocessor">#define LIBNET_PBLOCK_CDP_H 0x24 </span><span class="comment">/* CDP header */</span>
+00121 <span class="preprocessor">#define LIBNET_PBLOCK_IPSEC_ESP_HDR_H 0x25 </span><span class="comment">/* IPSEC ESP header */</span>
+00122 <span class="preprocessor">#define LIBNET_PBLOCK_IPSEC_ESP_FTR_H 0x26 </span><span class="comment">/* IPSEC ESP footer */</span>
+00123 <span class="preprocessor">#define LIBNET_PBLOCK_IPSEC_AH_H 0x27 </span><span class="comment">/* IPSEC AH header */</span>
+00124 <span class="preprocessor">#define LIBNET_PBLOCK_802_1Q_H 0x28 </span><span class="comment">/* 802.1q header */</span>
+00125 <span class="preprocessor">#define LIBNET_PBLOCK_802_2_H 0x29 </span><span class="comment">/* 802.2 header */</span>
+00126 <span class="preprocessor">#define LIBNET_PBLOCK_802_2SNAP_H 0x2a </span><span class="comment">/* 802.2 SNAP header */</span>
+00127 <span class="preprocessor">#define LIBNET_PBLOCK_802_3_H 0x2b </span><span class="comment">/* 802.3 header */</span>
+00128 <span class="preprocessor">#define LIBNET_PBLOCK_STP_CONF_H 0x2c </span><span class="comment">/* STP configuration header */</span>
+00129 <span class="preprocessor">#define LIBNET_PBLOCK_STP_TCN_H 0x2d </span><span class="comment">/* STP TCN header */</span>
+00130 <span class="preprocessor">#define LIBNET_PBLOCK_ISL_H 0x2e </span><span class="comment">/* ISL header */</span>
+00131 <span class="preprocessor">#define LIBNET_PBLOCK_IPV6_H 0x2f </span><span class="comment">/* IP v6 header */</span>
+00132 <span class="preprocessor">#define LIBNET_PBLOCK_802_1X_H 0x30 </span><span class="comment">/* 802.1x header */</span>
+00133 <span class="preprocessor">#define LIBNET_PBLOCK_RPC_CALL_H 0x31 </span><span class="comment">/* RPC Call header */</span>
+00134 <span class="preprocessor">#define LIBNET_PBLOCK_MPLS_H 0x32 </span><span class="comment">/* MPLS header */</span>
+00135 <span class="preprocessor">#define LIBNET_PBLOCK_FDDI_H 0x33 </span><span class="comment">/* FDDI header */</span>
+00136 <span class="preprocessor">#define LIBNET_PBLOCK_TOKEN_RING_H 0x34 </span><span class="comment">/* TOKEN RING header */</span>
+00137 <span class="preprocessor">#define LIBNET_PBLOCK_BGP4_HEADER_H 0x35 </span><span class="comment">/* BGP4 header */</span>
+00138 <span class="preprocessor">#define LIBNET_PBLOCK_BGP4_OPEN_H 0x36 </span><span class="comment">/* BGP4 open header */</span>
+00139 <span class="preprocessor">#define LIBNET_PBLOCK_BGP4_UPDATE_H 0x37 </span><span class="comment">/* BGP4 update header */</span>
+00140 <span class="preprocessor">#define LIBNET_PBLOCK_BGP4_NOTIFICATION_H 0x38 </span><span class="comment">/* BGP4 notification header */</span>
+00141 <span class="preprocessor">#define LIBNET_PBLOCK_GRE_H 0x39 </span><span class="comment">/* GRE header */</span>
+00142 <span class="preprocessor">#define LIBNET_PBLOCK_GRE_SRE_H 0x3a </span><span class="comment">/* GRE SRE header */</span>
+00143 <span class="preprocessor">#define LIBNET_PBLOCK_IPV6_FRAG_H 0x3b </span><span class="comment">/* IPv6 frag header */</span>
+00144 <span class="preprocessor">#define LIBNET_PBLOCK_IPV6_ROUTING_H 0x3c </span><span class="comment">/* IPv6 routing header */</span>
+00145 <span class="preprocessor">#define LIBNET_PBLOCK_IPV6_DESTOPTS_H 0x3d </span><span class="comment">/* IPv6 dest opts header */</span>
+00146 <span class="preprocessor">#define LIBNET_PBLOCK_IPV6_HBHOPTS_H 0x3e </span><span class="comment">/* IPv6 hop/hop opts header */</span>
+00147 <span class="preprocessor">#define LIBNET_PBLOCK_SEBEK_H 0x3f </span><span class="comment">/* Sebek header */</span>
+00148 u_int8_t flags; <span class="comment">/* control flags */</span>
+00149 <span class="preprocessor">#define LIBNET_PBLOCK_DO_CHECKSUM 0x01 </span><span class="comment">/* needs a checksum */</span>
+00150 libnet_ptag_t ptag; <span class="comment">/* protocol block tag */</span>
+00151 <span class="keyword">struct </span>libnet_protocol_block *next; <span class="comment">/* next pblock */</span>
+00152 <span class="keyword">struct </span>libnet_protocol_block *prev; <span class="comment">/* prev pblock */</span>
+00153 };
+00154 <span class="keyword">typedef</span> <span class="keyword">struct </span>libnet_protocol_block libnet_pblock_t;
+00155
+00156
+00157 <span class="comment">/*</span>
+00158 <span class="comment"> * Libnet context</span>
+00159 <span class="comment"> * Opaque structure. Nothing in here should ever been touched first hand by</span>
+00160 <span class="comment"> * the applications programmer.</span>
+00161 <span class="comment"> */</span>
+00162 <span class="keyword">struct </span>libnet_context
+00163 {
+00164 <span class="preprocessor">#if ((__WIN32__) &amp;&amp; !(__CYGWIN__)) </span>
+00165 <span class="preprocessor"></span> SOCKET fd;
+00166 LPADAPTER lpAdapter;
+00167 <span class="preprocessor">#else</span>
+00168 <span class="preprocessor"></span> <span class="keywordtype">int</span> fd; <span class="comment">/* file descriptor of packet device */</span>
+00169 <span class="preprocessor">#endif</span>
+00170 <span class="preprocessor"></span> <span class="keywordtype">int</span> injection_type; <span class="comment">/* raw (ipv4 or ipv6) or link */</span>
+00171 <span class="preprocessor">#define LIBNET_LINK 0x00 </span><span class="comment">/* link-layer interface */</span>
+00172 <span class="preprocessor">#define LIBNET_RAW4 0x01 </span><span class="comment">/* raw socket interface (ipv4) */</span>
+00173 <span class="preprocessor">#define LIBNET_RAW6 0x02 </span><span class="comment">/* raw socket interface (ipv6) */</span>
+00174 <span class="comment">/* the following should actually set a flag in the flags variable above */</span>
+00175 <span class="preprocessor">#define LIBNET_LINK_ADV 0x08 </span><span class="comment">/* advanced mode link-layer */</span>
+00176 <span class="preprocessor">#define LIBNET_RAW4_ADV 0x09 </span><span class="comment">/* advanced mode raw socket (ipv4) */</span>
+00177 <span class="preprocessor">#define LIBNET_RAW6_ADV 0x0a </span><span class="comment">/* advanced mode raw socket (ipv6) */</span>
+00178 <span class="preprocessor">#define LIBNET_ADV_MASK 0x08 </span><span class="comment">/* mask to determine adv mode */</span>
+00179
+00180 libnet_pblock_t *protocol_blocks; <span class="comment">/* protocol headers / data */</span>
+00181 libnet_pblock_t *pblock_end; <span class="comment">/* last node in list */</span>
+00182
+00183 <span class="keywordtype">int</span> link_type; <span class="comment">/* link-layer type */</span>
+00184 <span class="keywordtype">int</span> link_offset; <span class="comment">/* link-layer header size */</span>
+00185 <span class="keywordtype">int</span> aligner; <span class="comment">/* used to align packets */</span>
+00186 <span class="keywordtype">char</span> *device; <span class="comment">/* device name */</span>
+00187
+00188 <span class="keyword">struct </span>libnet_stats stats; <span class="comment">/* statistics */</span>
+00189 libnet_ptag_t ptag_state; <span class="comment">/* state holder for pblock tag */</span>
+00190 <span class="keywordtype">char</span> label[LIBNET_LABEL_SIZE]; <span class="comment">/* textual label for cq interface */</span>
+00191
+00192 <span class="keywordtype">char</span> err_buf[<a class="code" href="libnet-macros_8h.html#a18">LIBNET_ERRBUF_SIZE</a>]; <span class="comment">/* error buffer */</span>
+00193 u_int32_t total_size; <span class="comment">/* total size */</span>
+00194 };
+00195 <span class="keyword">typedef</span> <span class="keyword">struct </span>libnet_context libnet_t;
+00196
+00197 <span class="comment">/*</span>
+00198 <span class="comment"> * Libnet context queue structure</span>
+00199 <span class="comment"> * Opaque structure. Nothing in here should ever been touched first hand by</span>
+00200 <span class="comment"> * the applications programmer.</span>
+00201 <span class="comment"> */</span>
+00202 <span class="keyword">typedef</span> <span class="keyword">struct </span>_libnet_context_queue libnet_cq_t;
+00203 <span class="keyword">struct </span>_libnet_context_queue
+00204 {
+00205 libnet_t *context; <span class="comment">/* pointer to libnet context */</span>
+00206 libnet_cq_t *next; <span class="comment">/* next node in the list */</span>
+00207 libnet_cq_t *prev; <span class="comment">/* previous node in the list */</span>
+00208 };
+00209
+00210 <span class="keyword">struct </span>_libnet_context_queue_descriptor
+00211 {
+00212 u_int32_t node; <span class="comment">/* number of nodes in the list */</span>
+00213 u_int32_t cq_lock; <span class="comment">/* lock status */</span>
+00214 libnet_cq_t *current; <span class="comment">/* current context */</span>
+00215 };
+00216 <span class="keyword">typedef</span> <span class="keyword">struct </span>_libnet_context_queue_descriptor libnet_cqd_t;
+00217
+00218 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_STRUCTURES_H */</span>
+00219
+00220 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet-types_8h-source.html b/libnet/doc/html/libnet-types_8h-source.html
new file mode 100644
index 0000000..b7d24c1
--- /dev/null
+++ b/libnet/doc/html/libnet-types_8h-source.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet-types.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet-types.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet-types.h,v 1.3 2004/01/03 20:31:00 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet-types.h - Network routine library macro header file</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00011 <span class="comment"> * are met:</span>
+00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00017 <span class="comment"> *</span>
+00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00028 <span class="comment"> * SUCH DAMAGE.</span>
+00029 <span class="comment"> *</span>
+00030 <span class="comment"> */</span>
+00031
+00032 <span class="preprocessor">#ifndef __LIBNET_TYPES_H</span>
+00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_TYPES_H</span>
+00034 <span class="preprocessor"></span>
+00035 <span class="comment">/* Solaris has messed up POSIX nomenclature for these */</span>
+00036 <span class="preprocessor">#if (__sun__ &amp;&amp; __svr4__)</span>
+00037 <span class="preprocessor"></span><span class="keyword">typedef</span> uint8_t u_int8_t;
+00038 <span class="keyword">typedef</span> uint16_t u_int16_t;
+00039 <span class="keyword">typedef</span> uint32_t u_int32_t;
+00040 <span class="keyword">typedef</span> uint64_t u_int64_t;
+00041 <span class="preprocessor">#endif</span>
+00042 <span class="preprocessor"></span>
+00043 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_TYPES_H */</span>
+00044
+00045 <span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet_8h-source.html b/libnet/doc/html/libnet_8h-source.html
new file mode 100644
index 0000000..42a8723
--- /dev/null
+++ b/libnet/doc/html/libnet_8h-source.html
@@ -0,0 +1,119 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet.h</h1><a href="libnet_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/*</span>
+00002 <span class="comment"> * $Id: libnet.h,v 1.7 2004/01/03 20:31:00 mike Exp $</span>
+00003 <span class="comment"> *</span>
+00004 <span class="comment"> * libnet.h - Network routine library header file for Win32 VC++</span>
+00005 <span class="comment"> *</span>
+00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
+00007 <span class="comment"> * All rights reserved.</span>
+00008 <span class="comment"> *</span>
+00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
+00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
+00011 <span class="comment"> * are met:</span>
+00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
+00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
+00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
+00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
+00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
+00017 <span class="comment"> *</span>
+00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
+00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
+00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
+00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
+00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
+00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
+00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
+00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
+00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
+00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
+00028 <span class="comment"> * SUCH DAMAGE.</span>
+00029 <span class="comment"> *</span>
+00030 <span class="comment"> */</span>
+00031
+00032 <span class="preprocessor">#ifdef _WIN32</span>
+00033 <span class="preprocessor"></span>
+00034 <span class="preprocessor">#ifndef __LIBNET_H</span>
+00035 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_H</span>
+00036 <span class="preprocessor"></span>
+00037 <span class="preprocessor">#include &lt;winsock2.h&gt;</span>
+00038 <span class="preprocessor">#include &lt;windows.h&gt;</span>
+00039 <span class="preprocessor">#include &lt;time.h&gt;</span>
+00040 <span class="preprocessor">#include "in_systm.h"</span>
+00041 <span class="preprocessor">#include "pcap.h"</span>
+00042
+00043
+00044 <span class="preprocessor">#ifdef __cplusplus</span>
+00045 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+00046 <span class="preprocessor">#endif</span>
+00047 <span class="preprocessor"></span>
+00048 <span class="comment">/* __WIN32__ is NOT a predefined MACRO, use _WIN32</span>
+00049 <span class="comment"> * __CYGWIN__ is defined within the cygwin environment.</span>
+00050 <span class="comment"> */</span>
+00051 <span class="preprocessor">#ifndef __WIN32__</span>
+00052 <span class="preprocessor"></span><span class="preprocessor">#define __WIN32__ _WIN32</span>
+00053 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00054 <span class="preprocessor"></span>
+00055 <span class="preprocessor">#define LIBNET_LIL_ENDIAN 1</span>
+00056 <span class="preprocessor"></span><span class="preprocessor">#define HAVE_CONFIG_H 1</span>
+00057 <span class="preprocessor"></span>
+00058 <span class="comment">/* Some UNIX to Win32 conversions */</span>
+00059 <span class="preprocessor">#define STDOUT_FILENO stdout</span>
+00060 <span class="preprocessor"></span><span class="preprocessor">#define snprintf _snprintf </span>
+00061 <span class="preprocessor"></span><span class="preprocessor">#define write _write</span>
+00062 <span class="preprocessor"></span><span class="preprocessor">#define open _open</span>
+00063 <span class="preprocessor"></span><span class="preprocessor">#define random rand</span>
+00064 <span class="preprocessor"></span><span class="preprocessor">#define close closesocket</span>
+00065 <span class="preprocessor"></span><span class="preprocessor">#define __func__ __FUNCTION__</span>
+00066 <span class="preprocessor"></span>
+00067 <span class="comment">/* __FUNCTION__ available in VC ++ 7.0 (.NET) and greater */</span>
+00068 <span class="preprocessor">#if _MSC_VER &lt; 1300</span>
+00069 <span class="preprocessor"></span><span class="preprocessor">#define __FUNCTION__ __FILE__</span>
+00070 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+00071 <span class="preprocessor"></span>
+00072 <span class="preprocessor">#pragma comment (lib,"ws2_32") </span><span class="comment">/* Winsock 2 */</span>
+00073 <span class="preprocessor">#pragma comment (lib,"iphlpapi") </span><span class="comment">/* IP Helper */</span>
+00074 <span class="preprocessor">#pragma comment (lib,"wpcap") </span><span class="comment">/* Winpcap */</span>
+00075 <span class="preprocessor">#pragma comment (lib,"packet") </span>
+00076 <span class="preprocessor"></span>
+00077 <span class="comment">/* "@LIBNET_VERSION@" will not work in VC++, so version.h doesn't get populated */</span>
+00078 <span class="preprocessor">#define VERSION "1.1.1"</span>
+00079 <span class="preprocessor"></span>
+00080 <span class="comment">/* To use Win32 native versions */</span>
+00081 <span class="preprocessor">#define WPCAP 1</span>
+00082 <span class="preprocessor"></span><span class="preprocessor">#define _GNU_SOURCE</span>
+00083 <span class="preprocessor"></span><span class="preprocessor">#include &lt;stdio.h&gt;</span>
+00084 <span class="preprocessor">#include &lt;string.h&gt;</span>
+00085 <span class="preprocessor">#include &lt;fcntl.h&gt;</span>
+00086 <span class="preprocessor">#include &lt;signal.h&gt;</span>
+00087 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
+00088 <span class="preprocessor">#include &lt;sys/stat.h&gt;</span>
+00089 <span class="preprocessor">#include &lt;sys/types.h&gt;</span>
+00090 <span class="preprocessor">#include &lt;ctype.h&gt;</span>
+00091 <span class="preprocessor">#include &lt;errno.h&gt;</span>
+00092 <span class="preprocessor">#include &lt;stdarg.h&gt;</span>
+00093 <span class="preprocessor">#include "../libnet/libnet-macros.h"</span>
+00094 <span class="preprocessor">#include "../libnet/libnet-headers.h"</span>
+00095 <span class="preprocessor">#include "../libnet/libnet-structures.h"</span>
+00096 <span class="preprocessor">#include "../libnet/libnet-asn1.h"</span>
+00097 <span class="preprocessor">#include "../libnet/libnet-functions.h"</span>
+00098
+00099 <span class="preprocessor">#ifdef __cplusplus</span>
+00100 <span class="preprocessor"></span>}
+00101 <span class="preprocessor">#endif</span>
+00102 <span class="preprocessor"></span>
+00103 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_H */</span>
+00104
+00105 <span class="preprocessor">#endif</span>
+00106 <span class="preprocessor"></span><span class="comment">/* EOF */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/libnet_8h.html b/libnet/doc/html/libnet_8h.html
new file mode 100644
index 0000000..03334ad
--- /dev/null
+++ b/libnet/doc/html/libnet_8h.html
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet.h File Reference</h1>toplevel libnet header file
+<a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="libnet_8h-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+toplevel libnet header file
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/structlibnet__802__1q__hdr.html b/libnet/doc/html/structlibnet__802__1q__hdr.html
new file mode 100644
index 0000000..b57c044
--- /dev/null
+++ b/libnet/doc/html/structlibnet__802__1q__hdr.html
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet_802_1q_hdr struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet_802_1q_hdr Struct Reference</h1><code>#include &lt;<a class="el" href="libnet-headers_8h-source.html">libnet-headers.h</a>&gt;</code>
+<p>
+<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int8_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1q__hdr.html#o0">vlan_dhost</a> [ETHER_ADDR_LEN]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int8_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1q__hdr.html#o1">vlan_shost</a> [ETHER_ADDR_LEN]</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int16_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1q__hdr.html#o2">vlan_tpi</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int16_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1q__hdr.html#o3">vlan_priority_c_vid</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int16_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1q__hdr.html#o4">vlan_len</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+IEEE 802.1Q (Virtual Local Area Network) VLAN header, static header size: 18 bytes
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o0" doxytag="libnet_802_1q_hdr::vlan_dhost" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int8_t <a class="el" href="structlibnet__802__1q__hdr.html#o0">libnet_802_1q_hdr::vlan_dhost</a>[ETHER_ADDR_LEN]
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+destination ethernet address </td>
+ </tr>
+</table>
+<a class="anchor" name="o4" doxytag="libnet_802_1q_hdr::vlan_len" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int16_t <a class="el" href="structlibnet__802__1q__hdr.html#o4">libnet_802_1q_hdr::vlan_len</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+length or type (802.3 / Eth 2) </td>
+ </tr>
+</table>
+<a class="anchor" name="o3" doxytag="libnet_802_1q_hdr::vlan_priority_c_vid" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int16_t <a class="el" href="structlibnet__802__1q__hdr.html#o3">libnet_802_1q_hdr::vlan_priority_c_vid</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+priority | VLAN ID </td>
+ </tr>
+</table>
+<a class="anchor" name="o1" doxytag="libnet_802_1q_hdr::vlan_shost" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int8_t <a class="el" href="structlibnet__802__1q__hdr.html#o1">libnet_802_1q_hdr::vlan_shost</a>[ETHER_ADDR_LEN]
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+source ethernet address </td>
+ </tr>
+</table>
+<a class="anchor" name="o2" doxytag="libnet_802_1q_hdr::vlan_tpi" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int16_t <a class="el" href="structlibnet__802__1q__hdr.html#o2">libnet_802_1q_hdr::vlan_tpi</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+tag protocol ID </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="libnet-headers_8h-source.html">libnet-headers.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/html/structlibnet__802__1x__hdr.html b/libnet/doc/html/structlibnet__802__1x__hdr.html
new file mode 100644
index 0000000..bb5dca6
--- /dev/null
+++ b/libnet/doc/html/structlibnet__802__1x__hdr.html
@@ -0,0 +1,97 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>libnet: libnet_802_1x_hdr struct Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.4 -->
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
+<h1>libnet_802_1x_hdr Struct Reference</h1><code>#include &lt;<a class="el" href="libnet-headers_8h-source.html">libnet-headers.h</a>&gt;</code>
+<p>
+<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int8_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1x__hdr.html#o0">dot1x_version</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int8_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1x__hdr.html#o1">dot1x_type</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>u_int16_t&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="structlibnet__802__1x__hdr.html#o2">dot1x_length</a></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+IEEE 802.1X EAP (Extensible Authentication Protocol) header, static header size: 4 bytes
+<p>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="o2" doxytag="libnet_802_1x_hdr::dot1x_length" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int16_t <a class="el" href="structlibnet__802__1x__hdr.html#o2">libnet_802_1x_hdr::dot1x_length</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+total frame length </td>
+ </tr>
+</table>
+<a class="anchor" name="o1" doxytag="libnet_802_1x_hdr::dot1x_type" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int8_t <a class="el" href="structlibnet__802__1x__hdr.html#o1">libnet_802_1x_hdr::dot1x_type</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+frame type </td>
+ </tr>
+</table>
+<a class="anchor" name="o0" doxytag="libnet_802_1x_hdr::dot1x_version" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> u_int8_t <a class="el" href="structlibnet__802__1x__hdr.html#o0">libnet_802_1x_hdr::dot1x_version</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+protocol version </td>
+ </tr>
+</table>
+<hr>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="libnet-headers_8h-source.html">libnet-headers.h</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:38 2004 for libnet by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.4 </small></address>
+</body>
+</html>
diff --git a/libnet/doc/libnet.doxygen.conf b/libnet/doc/libnet.doxygen.conf
new file mode 100644
index 0000000..327aa25
--- /dev/null
+++ b/libnet/doc/libnet.doxygen.conf
@@ -0,0 +1,1102 @@
+# Doxyfile 1.3.2
+# $Id: libnet.doxygen.conf,v 1.2 2003/07/12 00:39:54 route Exp $
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# General configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = "libnet"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = "1.1.1"
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = "doc"
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
+# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
+# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese,
+# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = NO
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
+# members of a class in the documentation of that class as if those members were
+# ordinary class members. Constructors, destructors and assignment operators of
+# the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. It is allowed to use relative paths in the argument list.
+
+STRIP_FROM_PATH =
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explict @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# reimplements.
+
+INHERIT_DOCS = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 4
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+# only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text.
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT =
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
+# *.h++ *.idl *.odl *.cs
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
+# that are symbolic links (a Unix filesystem feature) are excluded from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS = */sample/*
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+
+INPUT_FILTER =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output dir.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimised for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assigments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = YES
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse the
+# parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
+# super classes. Setting the tag to NO turns the diagrams off. Note that this
+# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
+# recommended to install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# colloborations diagrams in a style similiar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found on the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes that
+# lay further from the root node will be omitted. Note that setting this option to
+# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
+# note that a graph may be further truncated if the graph's image dimensions are
+# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
+# If 0 is used for the depth value (the default), the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::addtions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
+
+# The CGI_NAME tag should be the name of the CGI script that
+# starts the search engine (doxysearch) with the correct parameters.
+# A script with this name will be generated by doxygen.
+
+CGI_NAME = search.cgi
+
+# The CGI_URL tag should be the absolute URL to the directory where the
+# cgi binaries are located. See the documentation of your http daemon for
+# details.
+
+CGI_URL =
+
+# The DOC_URL tag should be the absolute URL to the directory where the
+# documentation is located. If left blank the absolute path to the
+# documentation, with file:// prepended to it, will be used.
+
+DOC_URL =
+
+# The DOC_ABSPATH tag should be the absolute path to the directory where the
+# documentation is located. If left blank the directory on the local machine
+# will be used.
+
+DOC_ABSPATH =
+
+# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
+# is installed.
+
+BIN_ABSPATH = /usr/local/bin/
+
+# The EXT_DOC_PATHS tag can be used to specify one or more paths to
+# documentation generated for other projects. This allows doxysearch to search
+# the documentation for these projects as well.
+
+EXT_DOC_PATHS =
diff --git a/libnet/doc/man/CVS/Entries b/libnet/doc/man/CVS/Entries
new file mode 100644
index 0000000..1784810
--- /dev/null
+++ b/libnet/doc/man/CVS/Entries
@@ -0,0 +1 @@
+D
diff --git a/libnet/doc/man/CVS/Repository b/libnet/doc/man/CVS/Repository
new file mode 100644
index 0000000..2c47d63
--- /dev/null
+++ b/libnet/doc/man/CVS/Repository
@@ -0,0 +1 @@
+/usr/local/CVS/libnet/doc/man
diff --git a/libnet/doc/man/CVS/Root b/libnet/doc/man/CVS/Root
new file mode 100644
index 0000000..52fa133
--- /dev/null
+++ b/libnet/doc/man/CVS/Root
@@ -0,0 +1 @@
+mike@66.234.207.232:/usr/local/CVS
diff --git a/libnet/doc/man/man3/libnet-functions.h.3 b/libnet/doc/man/man3/libnet-functions.h.3
new file mode 100644
index 0000000..6ebbfad
--- /dev/null
+++ b/libnet/doc/man/man3/libnet-functions.h.3
@@ -0,0 +1,3136 @@
+.TH "libnet-functions.h" 3 "10 Mar 2004" "libnet" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+libnet-functions.h \- libnet exported function prototypes
+
+.SH SYNOPSIS
+.br
+.PP
+.SS "Functions"
+
+.in +1c
+.ti -1c
+.RI "libnet_t * \fBlibnet_init\fP (int injection_type, char *device, char *err_buf)"
+.br
+.ti -1c
+.RI "void \fBlibnet_destroy\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "void \fBlibnet_clear_packet\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "void \fBlibnet_stats\fP (libnet_t *l, struct libnet_stats *ls)"
+.br
+.ti -1c
+.RI "int \fBlibnet_getfd\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int8_t * \fBlibnet_getdevice\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "u_int8_t * \fBlibnet_getpbuf\fP (libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_getpbuf_size\fP (libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "char * \fBlibnet_geterror\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_getpacket_size\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_seed_prand\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_get_prand\fP (int mod)"
+.br
+.ti -1c
+.RI "int \fBlibnet_toggle_checksum\fP (libnet_t *l, libnet_ptag_t ptag, int mode)"
+.br
+.ti -1c
+.RI "char * \fBlibnet_addr2name4\fP (u_int32_t in, u_int8_t use_name)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_name2addr4\fP (libnet_t *l, char *host_name, u_int8_t use_name)"
+.br
+.ti -1c
+.RI "libnet_in6_addr \fBlibnet_name2addr6\fP (libnet_t *l, char *host_name, u_int8_t use_name)"
+.br
+.ti -1c
+.RI "void \fBlibnet_addr2name6_r\fP (struct libnet_in6_addr addr, u_int8_t use_name, char *host_name, int host_name_len)"
+.br
+.ti -1c
+.RI "int \fBlibnet_plist_chain_new\fP (libnet_t *l, libnet_plist_t **plist, char *token_list)"
+.br
+.ti -1c
+.RI "int \fBlibnet_plist_chain_next_pair\fP (libnet_plist_t *plist, u_int16_t *bport, u_int16_t *eport)"
+.br
+.ti -1c
+.RI "int \fBlibnet_plist_chain_dump\fP (libnet_plist_t *plist)"
+.br
+.ti -1c
+.RI "char * \fBlibnet_plist_chain_dump_string\fP (libnet_plist_t *plist)"
+.br
+.ti -1c
+.RI "int \fBlibnet_plist_chain_free\fP (libnet_plist_t *plist)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_802_1q\fP (u_int8_t *dst, u_int8_t *src, u_int16_t tpi, u_int8_t priority, u_int8_t cfi, u_int16_t vlan_id, u_int16_t len_proto, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_802_1x\fP (u_int8_t eap_ver, u_int8_t eap_type, u_int16_t length, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_802_2\fP (u_int8_t dsap, u_int8_t ssap, u_int8_t control, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_802_2snap\fP (u_int8_t dsap, u_int8_t ssap, u_int8_t control, u_int8_t *oui, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_802_3\fP (u_int8_t *dst, u_int8_t *src, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ethernet\fP (u_int8_t *dst, u_int8_t *src, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_ethernet\fP (u_int8_t *dst, u_int16_t type, libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_fddi\fP (u_int8_t fc, u_int8_t *dst, u_int8_t *src, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_fddi\fP (u_int8_t fc, u_int8_t *dst, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_arp\fP (u_int16_t hrd, u_int16_t pro, u_int8_t hln, u_int8_t pln, u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha, u_int8_t *tpa, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_arp\fP (u_int16_t op, u_int8_t *sha, u_int8_t *spa, u_int8_t *tha, u_int8_t *tpa, libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_tcp\fP (u_int16_t sp, u_int16_t dp, u_int32_t seq, u_int32_t ack, u_int8_t control, u_int16_t win, u_int16_t sum, u_int16_t urg, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_tcp_options\fP (u_int8_t *options, u_int32_t options_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_udp\fP (u_int16_t sp, u_int16_t dp, u_int16_t len, u_int16_t sum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_cdp\fP (u_int8_t version, u_int8_t ttl, u_int16_t sum, u_int16_t type, u_int16_t len, u_int8_t *value, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_icmpv4_echo\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_icmpv4_mask\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, u_int32_t mask, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_icmpv4_unreach\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_icmpv4_redirect\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t gateway, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_icmpv4_timeexceed\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_icmpv4_timestamp\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, n_time otime, n_time rtime, n_time ttime, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_igmp\fP (u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t ip, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv4\fP (u_int16_t len, u_int8_t tos, u_int16_t id, u_int16_t frag, u_int8_t ttl, u_int8_t prot, u_int16_t sum, u_int32_t src, u_int32_t dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv4_options\fP (u_int8_t *options, u_int32_t options_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_ipv4\fP (u_int16_t len, u_int8_t prot, u_int32_t dst, libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv6\fP (u_int8_t tc, u_int32_t fl, u_int16_t len, u_int8_t nh, u_int8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv6_frag\fP (u_int8_t nh, u_int8_t reserved, u_int16_t frag, u_int32_t id, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv6_routing\fP (u_int8_t nh, u_int8_t len, u_int8_t rtype, u_int8_t segments, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv6_destopts\fP (u_int8_t nh, u_int8_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipv6_hbhopts\fP (u_int8_t nh, u_int8_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_ipv6\fP (u_int16_t len, u_int8_t nh, struct libnet_in6_addr dst, libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_isl\fP (u_int8_t *dhost, u_int8_t type, u_int8_t user, u_int8_t *shost, u_int16_t len, u_int8_t *snap, u_int16_t vid, u_int16_t index, u_int16_t reserved, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipsec_esp_hdr\fP (u_int32_t spi, u_int32_t seq, u_int32_t iv, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipsec_esp_ftr\fP (u_int8_t len, u_int8_t nh, int8_t *auth, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ipsec_ah\fP (u_int8_t nh, u_int8_t len, u_int16_t res, u_int32_t spi, u_int32_t seq, u_int32_t auth, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_dnsv4\fP (u_int16_t h_len, u_int16_t id, u_int16_t flags, u_int16_t num_q, u_int16_t num_anws_rr, u_int16_t num_auth_rr, u_int16_t num_addi_rr, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_rip\fP (u_int8_t cmd, u_int8_t version, u_int16_t rd, u_int16_t af, u_int16_t rt, u_int32_t addr, u_int32_t mask, u_int32_t next_hop, u_int32_t metric, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_rpc_call\fP (u_int32_t rm, u_int32_t xid, u_int32_t prog_num, u_int32_t prog_vers, u_int32_t procedure, u_int32_t cflavor, u_int32_t clength, u_int8_t *cdata, u_int32_t vflavor, u_int32_t vlength, u_int8_t *vdata, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_stp_conf\fP (u_int16_t id, u_int8_t version, u_int8_t bpdu_type, u_int8_t flags, u_int8_t *root_id, u_int32_t root_pc, u_int8_t *bridge_id, u_int16_t port_id, u_int16_t message_age, u_int16_t max_age, u_int16_t hello_time, u_int16_t f_delay, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_stp_tcn\fP (u_int16_t id, u_int8_t version, u_int8_t bpdu_type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_token_ring\fP (u_int8_t ac, u_int8_t fc, u_int8_t *dst, u_int8_t *src, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_token_ring\fP (u_int8_t ac, u_int8_t fc, u_int8_t *dst, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t *org, u_int16_t type, libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_vrrp\fP (u_int8_t version, u_int8_t type, u_int8_t vrouter_id, u_int8_t priority, u_int8_t ip_count, u_int8_t auth_type, u_int8_t advert_int, u_int16_t sum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_mpls\fP (u_int32_t label, u_int8_t experimental, u_int8_t bos, u_int8_t ttl, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ntp\fP (u_int8_t leap_indicator, u_int8_t version, u_int8_t mode, u_int8_t stratum, u_int8_t poll, u_int8_t precision, u_int16_t delay_int, u_int16_t delay_frac, u_int16_t dispersion_int, u_int16_t dispersion_frac, u_int32_t reference_id, u_int32_t ref_ts_int, u_int32_t ref_ts_frac, u_int32_t orig_ts_int, u_int32_t orig_ts_frac, u_int32_t rec_ts_int, u_int32_t rec_ts_frac, u_int32_t xmt_ts_int, u_int32_t xmt_ts_frac, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2\fP (u_int16_t len, u_int8_t type, u_int32_t rtr_id, u_int32_t area_id, u_int16_t sum, u_int16_t autype, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_hello\fP (u_int32_t netmask, u_int16_t interval, u_int8_t opts, u_int8_t priority, u_int dead_int, u_int32_t des_rtr, u_int32_t bkup_rtr, u_int32_t neighbor, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_dbd\fP (u_int16_t dgram_len, u_int8_t opts, u_int8_t type, u_int seqnum, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsr\fP (u_int type, u_int lsid, u_int32_t advrtr, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsu\fP (u_int num, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsa\fP (u_int16_t age, u_int8_t opts, u_int8_t type, u_int lsid, u_int32_t advrtr, u_int seqnum, u_int16_t sum, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsa_rtr\fP (u_int16_t flags, u_int16_t num, u_int id, u_int data, u_int8_t type, u_int8_t tos, u_int16_t metric, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsa_net\fP (u_int32_t nmask, u_int rtrid, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsa_sum\fP (u_int32_t nmask, u_int metric, u_int tos, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_ospfv2_lsa_as\fP (u_int32_t nmask, u_int metric, u_int32_t fwdaddr, u_int tag, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_data\fP (u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_dhcpv4\fP (u_int8_t opcode, u_int8_t htype, u_int8_t hlen, u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags, u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr, u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_bootpv4\fP (u_int8_t opcode, u_int8_t htype, u_int8_t hlen, u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags, u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t *chaddr, u_int8_t *sname, u_int8_t *file, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_getgre_length\fP (u_int16_t fv)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_gre\fP (u_int16_t fv, u_int16_t type, u_int16_t sum, u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_egre\fP (u_int16_t fv, u_int16_t type, u_int16_t sum, u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_gre_sre\fP (u_int16_t af, u_int8_t offset, u_int8_t length, u_int8_t *routing, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_gre_last_sre\fP (libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_bgp4_header\fP (u_int8_t marker[LIBNET_BGP4_MARKER_SIZE], u_int16_t len, u_int8_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_bgp4_open\fP (u_int8_t version, u_int16_t src_as, u_int16_t hold_time, u_int32_t bgp_id, u_int8_t opt_len, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_bgp4_update\fP (u_int16_t unfeasible_rt_len, u_int8_t *withdrawn_rt, u_int16_t total_path_attr_len, u_int8_t *path_attributes, u_int16_t info_len, u_int8_t *reachability_info, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_bgp4_notification\fP (u_int8_t err_code, u_int8_t err_subcode, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_sebek\fP (u_int32_t magic, u_int16_t version, u_int16_t type, u_int32_t counter, u_int32_t time_sec, u_int32_t time_usec, u_int32_t pid, u_int32_t uid, u_int32_t fd, u_int8_t cmd[SEBEK_CMD_LENGTH], u_int32_t length, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_build_link\fP (u_int8_t *dst, u_int8_t *src, u_int8_t *oui, u_int16_t type, u_int8_t *payload, u_int32_t payload_s, libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_autobuild_link\fP (u_int8_t *dst, u_int8_t *oui, u_int16_t type, libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_write\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_get_ipaddr4\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_in6_addr \fBlibnet_get_ipaddr6\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_ether_addr * \fBlibnet_get_hwaddr\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "u_int8_t * \fBlibnet_hex_aton\fP (int8_t *s, int *len)"
+.br
+.ti -1c
+.RI "int \fBlibnet_adv_cull_packet\fP (libnet_t *l, u_int8_t **packet, u_int32_t *packet_s)"
+.br
+.ti -1c
+.RI "int \fBlibnet_adv_cull_header\fP (libnet_t *l, libnet_ptag_t ptag, u_int8_t **header, u_int32_t *header_s)"
+.br
+.ti -1c
+.RI "int \fBlibnet_adv_write_link\fP (libnet_t *l, u_int8_t *packet, u_int32_t packet_s)"
+.br
+.ti -1c
+.RI "void \fBlibnet_adv_free_packet\fP (libnet_t *l, u_int8_t *packet)"
+.br
+.ti -1c
+.RI "int \fBlibnet_cq_add\fP (libnet_t *l, char *label)"
+.br
+.ti -1c
+.RI "libnet_t * \fBlibnet_cq_remove\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_t * \fBlibnet_cq_remove_by_label\fP (char *label)"
+.br
+.ti -1c
+.RI "int8_t * \fBlibnet_cq_getlabel\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "libnet_t * \fBlibnet_cq_find_by_label\fP (char *label)"
+.br
+.ti -1c
+.RI "void \fBlibnet_cq_destroy\fP ()"
+.br
+.ti -1c
+.RI "libnet_t * \fBlibnet_cq_head\fP ()"
+.br
+.ti -1c
+.RI "int \fBlibnet_cq_last\fP ()"
+.br
+.ti -1c
+.RI "libnet_t * \fBlibnet_cq_next\fP ()"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_cq_size\fP ()"
+.br
+.ti -1c
+.RI "void \fBlibnet_diag_dump_context\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "void \fBlibnet_diag_dump_pblock\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "char * \fBlibnet_diag_dump_pblock_type\fP (u_int8_t type)"
+.br
+.ti -1c
+.RI "void \fBlibnet_diag_dump_hex\fP (u_int8_t *packet, u_int32_t len, int swap, FILE *stream)"
+.br
+.ti -1c
+.RI "int \fBlibnet_write_raw_ipv4\fP (libnet_t *l, u_int8_t *packet, u_int32_t size)"
+.br
+.ti -1c
+.RI "int \fBlibnet_write_raw_ipv6\fP (libnet_t *l, u_int8_t *packet, u_int32_t size)"
+.br
+.ti -1c
+.RI "int \fBlibnet_write_link\fP (libnet_t *l, u_int8_t *packet, u_int32_t size)"
+.br
+.ti -1c
+.RI "int \fBlibnet_open_raw4\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_close_raw4\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_open_raw6\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_close_raw6\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_select_device\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_open_link\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_close_link\fP (libnet_t *l)"
+.br
+.ti -1c
+.RI "int \fBlibnet_do_checksum\fP (libnet_t *l, u_int8_t *packet, int protocol, int len)"
+.br
+.ti -1c
+.RI "u_int32_t \fBlibnet_compute_crc\fP (u_int8_t *buf, u_int32_t len)"
+.br
+.ti -1c
+.RI "u_int16_t \fBlibnet_ip_check\fP (u_int16_t *addr, int len)"
+.br
+.ti -1c
+.RI "int \fBlibnet_in_cksum\fP (u_int16_t *addr, int len)"
+.br
+.ti -1c
+.RI "libnet_pblock_t * \fBlibnet_pblock_probe\fP (libnet_t *l, libnet_ptag_t ptag, u_int32_t n, u_int8_t type)"
+.br
+.ti -1c
+.RI "libnet_pblock_t * \fBlibnet_pblock_new\fP (libnet_t *l, u_int32_t size)"
+.br
+.ti -1c
+.RI "int \fBlibnet_pblock_swap\fP (libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2)"
+.br
+.ti -1c
+.RI "int \fBlibnet_pblock_insert_before\fP (libnet_t *l, libnet_ptag_t ptag1, libnet_ptag_t ptag2)"
+.br
+.ti -1c
+.RI "void \fBlibnet_pblock_delete\fP (libnet_t *l, libnet_pblock_t *p)"
+.br
+.ti -1c
+.RI "libnet_ptag_t \fBlibnet_pblock_update\fP (libnet_t *l, libnet_pblock_t *p, u_int32_t h, u_int8_t type)"
+.br
+.ti -1c
+.RI "libnet_pblock_t * \fBlibnet_pblock_find\fP (libnet_t *l, libnet_ptag_t ptag)"
+.br
+.ti -1c
+.RI "int \fBlibnet_pblock_append\fP (libnet_t *l, libnet_pblock_t *p, u_int8_t *buf, u_int32_t len)"
+.br
+.ti -1c
+.RI "void \fBlibnet_pblock_setflags\fP (libnet_pblock_t *p, u_int8_t flags)"
+.br
+.ti -1c
+.RI "int \fBlibnet_pblock_p2p\fP (u_int8_t type)"
+.br
+.ti -1c
+.RI "int \fBlibnet_pblock_coalesce\fP (libnet_t *l, u_int8_t **packet, u_int32_t *size)"
+.br
+.ti -1c
+.RI "int \fBlibnet_check_iface\fP (libnet_t *l)"
+.br
+.in -1c
+.SS "Variables"
+
+.in +1c
+.ti -1c
+.RI "const struct libnet_in6_addr \fBin6addr_error\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+libnet exported function prototypes
+
+
+.SH "Function Documentation"
+.PP
+.SS "char* libnet_addr2name4 (u_int32_t in, u_int8_t use_name)"
+.PP
+Takes a network byte ordered IPv4 address and returns a pointer to either a canonical DNS name (if it has one) or a string of dotted decimals. This may incur a DNS lookup if the hostname and mode is set to LIBNET_RESOLVE. If mode is set to LIBNET_DONT_RESOLVE, no DNS lookup will be performed and the function will return a pointer to a dotted decimal string. The function cannot fail -- if no canonical name exists, it will fall back on returning a dotted decimal string. This function is non-reentrant.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIin\fP network byte ordered IPv4 address
+.br
+\fIuse_name\fP LIBNET_RESOLVE or LIBNET_DONT_RESOLVE
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a pointer to presentation format string
+.RE
+.PP
+
+.SS "void libnet_addr2name6_r (struct libnet_in6_addr addr, u_int8_t use_name, char * host_name, int host_name_len)"
+.PP
+Should document this baby right here.
+.SS "int libnet_adv_cull_header (libnet_t * l, libnet_ptag_t ptag, u_int8_t ** header, u_int32_t * header_s)"
+.PP
+[Advanced Interface] Pulls the header from the specified ptag from the given libnet context. This function is part of the advanced interface and is only available when libnet is initialized in advanced mode. If the function fails \fBlibnet_geterror()\fP can tell you why.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP the ptag referencing the header to pull
+.br
+\fIheader\fP will contain the header
+.br
+\fIheader_s\fP will contain the header size
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "int libnet_adv_cull_packet (libnet_t * l, u_int8_t ** packet, u_int32_t * packet_s)"
+.PP
+[Advanced Interface] Yanks a prebuilt, wire-ready packet from the given libnet context. If libnet was configured to do so (which it is by default) the packet will have all checksums written in. This function is part of the advanced interface and is only available when libnet is initialized in advanced mode. It is important to note that the function performs an implicit malloc() and a corresponding call to \fBlibnet_adv_free_packet()\fP should be made to free the memory packet occupies. If the function fails \fBlibnet_geterror()\fP can tell you why.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIpacket\fP will contain the wire-ready packet
+.br
+\fIpacket_s\fP will contain the packet size
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "void libnet_adv_free_packet (libnet_t * l, u_int8_t * packet)"
+.PP
+[Advanced Interface] Frees the memory allocated when \fBlibnet_adv_cull_packet()\fP is called.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIpacket\fP a pointer to the packet to free
+.RE
+.PP
+
+.SS "int libnet_adv_write_link (libnet_t * l, u_int8_t * packet, u_int32_t packet_s)"
+.PP
+[Advanced Interface] Writes a packet the network at the link layer. This function is useful to write a packet that has been constructed by hand by the application programmer or, more commonly, to write a packet that has been returned by a call to \fBlibnet_adv_cull_packet()\fP. This function is part of the advanced interface and is only available when libnet is initialized in advanced mode. If the function fails \fBlibnet_geterror()\fP can tell you why.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIpacket\fP a pointer to the packet to inject
+.br
+\fIpacket_s\fP the size of the packet
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the number of bytes written, or -1 on failure
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_arp (u_int16_t op, u_int8_t * sha, u_int8_t * spa, u_int8_t * tha, u_int8_t * tpa, libnet_t * l)"
+.PP
+Autouilds an Address Resolution Protocol (ARP) header. Depending on the op value, the function builds one of several different types of RFC 826 or RFC 903 RARP packets.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIop\fP ARP operation type
+.br
+\fIsha\fP sender's hardware address
+.br
+\fIspa\fP sender's protocol address
+.br
+\fItha\fP target hardware address
+.br
+\fItpa\fP targer protocol address
+.br
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_ethernet (u_int8_t * dst, u_int16_t type, libnet_t * l)"
+.PP
+Autobuilds an Ethernet header. The RFC 894 Ethernet II header is almost identical to the IEEE 802.3 header, with the exception that the field immediately following the source address holds the layer 3 protocol (as opposed to frame's length). You should only use this function when libnet is initialized with the LIBNET_LINK interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdst\fP destination ethernet address
+.br
+\fItype\fP upper layer protocol type
+.br
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_fddi (u_int8_t fc, u_int8_t * dst, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t * org, u_int16_t type, libnet_t * l)"
+.PP
+Autobuilds a Fiber Distributed Data Interface (FDDI) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfc\fP class format and priority dst destination fddi address
+.br
+\fIdsap\fP destination service access point
+.br
+\fIssap\fP source service access point
+.br
+\fIcf\fP cf
+.br
+\fIorg\fP IEEE organizational code
+.br
+\fItype\fP upper layer protocol
+.br
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_ipv4 (u_int16_t len, u_int8_t prot, u_int32_t dst, libnet_t * l)"
+.PP
+Autobuilds a version 4 Internet Protocol (IP) header. The function is useful * to build an IP header quickly when you do not need a granular level of control. The function takes the same len, prot, and dst arguments as \fBlibnet_build_ipv4()\fP. The function does not accept a ptag argument, but it does return a ptag. In other words, you can use it to build a new IP header but not to modify an existing one.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlen\fP total length of the IP packet including all subsequent data
+.br
+\fIprot\fP upper layer protocol
+.br
+\fIdst\fP destination IPv4 address (little endian)
+.br
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_ipv6 (u_int16_t len, u_int8_t nh, struct libnet_in6_addr dst, libnet_t * l)"
+.PP
+This function is not yet implement and is a NONOP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlen\fP length
+.br
+\fInh\fP next header
+.br
+\fIdst\fP destination IPv6 address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_link (u_int8_t * dst, u_int8_t * oui, u_int16_t type, libnet_t * l)"
+.PP
+Automatically builds a link layer header for an initialized l. The function determines the proper link layer header format from how l was initialized. The function current supports Ethernet and Token Ring link layers.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdst\fP the destination MAC address
+.br
+\fIoui\fP Organizationally Unique Identifier (unused for Ethernet)
+.br
+\fItype\fP the upper layer protocol type
+.br
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_autobuild_token_ring (u_int8_t ac, u_int8_t fc, u_int8_t * dst, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t * org, u_int16_t type, libnet_t * l)"
+.PP
+Auto-builds a token ring header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIac\fP access control
+.br
+\fIfc\fP frame control
+.br
+\fIdst\fP destination address
+.br
+\fIdsap\fP destination service access point
+.br
+\fIssap\fP source service access point
+.br
+\fIcf\fP control field
+.br
+\fIoui\fP Organizationally Unique Identifier
+.br
+\fItype\fP upper layer protocol type
+.br
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_802_1q (u_int8_t * dst, u_int8_t * src, u_int16_t tpi, u_int8_t priority, u_int8_t cfi, u_int16_t vlan_id, u_int16_t len_proto, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.1q VLAN tagging header. Depending on the value of len_proto, the function wraps the 802.1q header inside either an IEEE 802.3 header or an RFC 894 Ethernet II (DIX) header (both resulting in an 18-byte frame). If len is 1500 or less, most receiving protocol stacks parse the frame as an IEEE 802.3 encapsulated frame. If len is one of the Ethernet type values, most protocol stacks parse the frame as an RFC 894 Ethernet II encapsulated frame. Note the length value is calculated without the 802.1q header of 18 bytes.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdst\fP pointer to a six byte source ethernet address
+.br
+\fIsrc\fP pointer to a six byte destination ethernet address
+.br
+\fItpi\fP tag protocol identifier
+.br
+\fIpriority\fP priority
+.br
+\fIcfi\fP canonical format indicator
+.br
+\fIvlan_id\fP vlan identifier
+.br
+\fIlen_proto\fP length (802.3) protocol (Ethernet II)
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_802_1x (u_int8_t eap_ver, u_int8_t eap_type, u_int16_t length, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.1x extended authentication protocol header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIeap_ver\fP the EAP version
+.br
+\fIeap_type\fP the EAP type
+.br
+\fIlength\fP frame length
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_802_2 (u_int8_t dsap, u_int8_t ssap, u_int8_t control, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.2 LLC header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdsap\fP destination service access point
+.br
+\fIssap\fP source service access point
+.br
+\fIcontrol\fP control field
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_802_2snap (u_int8_t dsap, u_int8_t ssap, u_int8_t control, u_int8_t * oui, u_int16_t type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.2 LLC SNAP header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdsap\fP destination service access point
+.br
+\fIssap\fP source service access point
+.br
+\fIcontrol\fP control field
+.br
+\fIoui\fP Organizationally Unique Identifier
+.br
+\fItype\fP upper layer protocol
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_802_3 (u_int8_t * dst, u_int8_t * src, u_int16_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.3 header. The 802.3 header is almost identical to the RFC 894 Ethernet II header, the exception being that the field immediately following the source address holds the frame's length (as opposed to the layer 3 protocol). You should only use this function when libnet is initialized with the LIBNET_LINK interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdst\fP destination ethernet address
+.br
+\fIsrc\fP source ethernet address
+.br
+\fIlen\fP frame length sans header
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_arp (u_int16_t hrd, u_int16_t pro, u_int8_t hln, u_int8_t pln, u_int16_t op, u_int8_t * sha, u_int8_t * spa, u_int8_t * tha, u_int8_t * tpa, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an Address Resolution Protocol (ARP) header. Depending on the op value, the function builds one of several different types of RFC 826 or RFC 903 RARP packets.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIhrd\fP hardware address format
+.br
+\fIpro\fP protocol address format
+.br
+\fIhln\fP hardware address length
+.br
+\fIpln\fP protocol address length
+.br
+\fIop\fP ARP operation type
+.br
+\fIsha\fP sender's hardware address
+.br
+\fIspa\fP sender's protocol address
+.br
+\fItha\fP target hardware address
+.br
+\fItpa\fP targer protocol address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_bgp4_header (u_int8_t marker[LIBNET_BGP4_MARKER_SIZE], u_int16_t len, u_int8_t type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) header. The primary function of a BGP speaking system is to exchange network reachability information with other BGP systems. This network reachability information includes information on the list of Autonomous Systems (ASs) that reachability information traverses. This information is sufficient to construct a graph of AS connectivity from which routing loops may be pruned and some policy decisions at the AS level may be enforced. This function builds the base BGP header which is used as a preamble before any other BGP header. For example, a BGP KEEPALIVE message may be built with only this function, while an error notification requires a subsequent call to libnet_build_bgp4_notification.
+.PP
+\fBParameters:\fP
+.RS 4
+\fImarker\fP a value the receiver can predict (if the message type is not BGP OPEN, or no authentication is used, these 16 bytes are normally set as all ones)
+.br
+\fIlen\fP total length of the BGP message, including the header
+.br
+\fItype\fP type code of the message (OPEN, UPDATE, NOTIFICATION or KEEPALIVE)
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_bgp4_notification (u_int8_t err_code, u_int8_t err_subcode, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) notification header. A NOTIFICATION message is sent when an error condition is detected. Specific error information may be passed through the payload interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIerr_code\fP type of notification
+.br
+\fIerr_subcode\fP more specific information about the reported error.
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_bgp4_open (u_int8_t version, u_int16_t src_as, u_int16_t hold_time, u_int32_t bgp_id, u_int8_t opt_len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) OPEN header. This is the first message sent by each side of a BGP connection. The optional parameters options should be constructed using the payload interface (see RFC 1771 for the options structures).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIversion\fP protocol version (should be set to 4)
+.br
+\fIsrc_as\fP Autonomous System of the sender
+.br
+\fIhold_time\fP used to compute the maximum allowed time between the receipt of KEEPALIVE, and/or UPDATE messages by the sender
+.br
+\fIbgp_id\fP BGP identifier of the sender
+.br
+\fIopt_len\fP total length of the optional parameters field in bytes
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_bgp4_update (u_int16_t unfeasible_rt_len, u_int8_t * withdrawn_rt, u_int16_t total_path_attr_len, u_int8_t * path_attributes, u_int16_t info_len, u_int8_t * reachability_info, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 1771 Border Gateway Protocol 4 (BGP-4) update header. Update messages are used to transfer routing information between BGP peers.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIunfeasible_rt_len\fP indicates the length of the (next) 'withdrawn routes' field in bytes
+.br
+\fIwithdrawn_rt\fP list of IP addresses prefixes for the routes that are being withdrawn; each IP address prefix is built as a 2-tuple <length (1 byte), prefix (variable)>
+.br
+\fItotal_path_attr_len\fP indicates the length of the (next) 'path attributes' field in bytes
+.br
+\fIpath_attributes\fP each attribute is a 3-tuple <type (2 bytes), length, value>
+.br
+\fIinfo_len\fP indicates the length of the (next) 'network layer reachability information' field in bytes (needed for internal memory size calculation)
+.br
+\fIreachability_info\fP 2-tuples <length (1 byte), prefix (variable)>.
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_bootpv4 (u_int8_t opcode, u_int8_t htype, u_int8_t hlen, u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags, u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t * chaddr, u_int8_t * sname, u_int8_t * file, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_cdp (u_int8_t version, u_int8_t ttl, u_int16_t sum, u_int16_t type, u_int16_t len, u_int8_t * value, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a Cisco Discovery Protocol (CDP) header. Cisco Systems designed CDP to aid in the network management of adjacent Cisco devices. The CDP protocol specifies data by using a type/length/value (TLV) setup. The first TLV can specified by using the functions type, length, and value arguments. To specify additional TLVs, the programmer could either use the payload interface or \fBlibnet_build_data()\fP to construct them.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIversion\fP CDP version
+.br
+\fIttl\fP time to live (time information should be cached by recipient)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fItype\fP type of data contained in value
+.br
+\fIlen\fP length of value arugment
+.br
+\fIvalue\fP the CDP information string
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_data (u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a generic libnet protocol header. This is useful for including an optional payload to a packet that might need to change repeatedly inside of a loop.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_dhcpv4 (u_int8_t opcode, u_int8_t htype, u_int8_t hlen, u_int8_t hopcount, u_int32_t xid, u_int16_t secs, u_int16_t flags, u_int32_t cip, u_int32_t yip, u_int32_t sip, u_int32_t gip, u_int8_t * chaddr, u_int8_t * sname, u_int8_t * file, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_dnsv4 (u_int16_t h_len, u_int16_t id, u_int16_t flags, u_int16_t num_q, u_int16_t num_anws_rr, u_int16_t num_auth_rr, u_int16_t num_addi_rr, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 1035 version 4 DNS header. Additional DNS payload information should be specified using the payload interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIid\fP DNS packet id
+.br
+\fIflags\fP control flags
+.br
+\fInum_q\fP number of questions
+.br
+\fInum_anws_rr\fP number of answer resource records
+.br
+\fInum_auth_rr\fP number of authority resource records
+.br
+\fInum_addi_rr\fP number of additional resource records
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_egre (u_int16_t fv, u_int16_t type, u_int16_t sum, u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Generic Routing Encapsulation (GRE - RFC 1701) is used to encapsulate any protocol. Hence, the IP part of the packet is usually referred as 'delivery header'. It is then followed by the GRE header and finally the encapsulated packet (IP or whatever). As GRE is very modular, the first GRE header describes the structure of the header, using bits and flag to specify which fields will be present in the header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfv\fP the 16 0 to 7: which fields are included in the header (checksum, seq. number, key, ...), bits 8 to 12: flag, bits 13 to 15: version.
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fItype\fP which protocol is encapsulated (PPP, IP, ...)
+.br
+\fIsum\fP checksum (0 for libnet to autofill).
+.br
+\fIoffset\fP byte offset from the start of the routing field to the first byte of the SRE
+.br
+\fIkey\fP inserted by the encapsulator to authenticate the source
+.br
+\fIseq\fP sequence number used by the receiver to sort the packets
+.br
+\fIlen\fP size of the GRE packet
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ethernet (u_int8_t * dst, u_int8_t * src, u_int16_t type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an Ethernet header. The RFC 894 Ethernet II header is almost identical to the IEEE 802.3 header, with the exception that the field immediately following the source address holds the layer 3 protocol (as opposed to frame's length). You should only use this function when libnet is initialized with the LIBNET_LINK interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdst\fP destination ethernet address
+.br
+\fIsrc\fP source ethernet address
+.br
+\fItype\fP upper layer protocol type
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_fddi (u_int8_t fc, u_int8_t * dst, u_int8_t * src, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t * org, u_int16_t type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a Fiber Distributed Data Interface (FDDI) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfc\fP class format and priority dst destination fddi address src source fddi address
+.br
+\fIdsap\fP destination service access point
+.br
+\fIssap\fP source service access point
+.br
+\fIcf\fP cf
+.br
+\fIorg\fP 3 byte IEEE organizational code
+.br
+\fItype\fP upper layer protocol
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_gre (u_int16_t fv, u_int16_t type, u_int16_t sum, u_int16_t offset, u_int32_t key, u_int32_t seq, u_int16_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Generic Routing Encapsulation (GRE - RFC 1701) is used to encapsulate any protocol. Hence, the IP part of the packet is usually referred as 'delivery header'. It is then followed by the GRE header and finally the encapsulated packet (IP or whatever). As GRE is very modular, the first GRE header describes the structure of the header, using bits and flag to specify which fields will be present in the header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIfv\fP the 16 0 to 7: which fields are included in the header (checksum, seq. number, key, ...), bits 8 to 12: flag, bits 13 to 15: version.
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fItype\fP which protocol is encapsulated (PPP, IP, ...)
+.br
+\fIsum\fP checksum (0 for libnet to autofill).
+.br
+\fIoffset\fP byte offset from the start of the routing field to the first byte of the SRE
+.br
+\fIkey\fP inserted by the encapsulator to authenticate the source
+.br
+\fIseq\fP sequence number used by the receiver to sort the packets
+.br
+\fIlen\fP size of the GRE packet
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_gre_last_sre (libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_gre_sre (u_int16_t af, u_int8_t offset, u_int8_t length, u_int8_t * routing, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_icmpv4_echo (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) echo request/reply header
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of ICMP packet (should be ICMP_ECHOREPLY or ICMP_ECHO)
+.br
+\fIcode\fP code of ICMP packet (should be 0)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIid\fP identification number
+.br
+\fIseq\fP packet sequence number
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_icmpv4_mask (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, u_int32_t mask, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) IP netmask request/reply header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of ICMP packet (should be ICMP_MASKREQ or ICMP_MASKREPLY)
+.br
+\fIcode\fP code of ICMP packet (should be 0)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIid\fP identification number
+.br
+\fIseq\fP packet sequence number
+.br
+\fImask\fP subnet mask
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_icmpv4_redirect (u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t gateway, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IP version 4 RFC 792 Internet Message Control Protocol (ICMP) redirect header. The additional arguments enable the application programmer to easily specify the original IP header values (the IP header of the packet that supposedly caused the ICMP redirect message in the first place).
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of ICMP packet (should be ICMP_REDIRECT)
+.br
+\fIcode\fP code of ICMP packet (should be one of the four redirect codes)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIorig_id\fP original IP header identification
+.br
+\fIorig_frag\fP original IP header fragmentation information
+.br
+\fIorig_ttl\fP orginal IP header time to live
+.br
+\fIorig_prot\fP original IP header protocol
+.br
+\fIorig_check\fP original IP header checksum
+.br
+\fIorig_src\fP original IP header source address
+.br
+\fIorig_dst\fP original IP header destination address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_icmpv4_timeexceed (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) time exceeded header. The additional arguments enable the application programmer to easily specify the original IPv4 header values (the IP header of the packet that supposedly caused the ICMP time exceeded message in the first place).
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of ICMP packet (should be ICMP_TIMXCEED)
+.br
+\fIcode\fP code of ICMP packet (ICMP_TIMXCEED_INTRANS / ICMP_TIMXCEED_REASS)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIorig_id\fP original IP header identification
+.br
+\fIorig_frag\fP original IP header fragmentation information
+.br
+\fIorig_ttl\fP orginal IP header time to live
+.br
+\fIorig_prot\fP original IP header protocol
+.br
+\fIorig_check\fP original IP header checksum
+.br
+\fIorig_src\fP original IP header source address
+.br
+\fIorig_dst\fP original IP header destination address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_icmpv4_timestamp (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t id, u_int16_t seq, n_time otime, n_time rtime, n_time ttime, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) timestamp request/reply header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of ICMP packet (should be ICMP_TSTAMP or ICMP_TSTAMPREPLY)
+.br
+\fIcode\fP code of ICMP packet (should be 0)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIid\fP identification number
+.br
+\fIseq\fP sequence number
+.br
+\fIotime\fP originate timestamp
+.br
+\fIrtime\fP receive timestamp
+.br
+\fIttime\fP transmit timestamp
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_icmpv4_unreach (u_int8_t type, u_int8_t code, u_int16_t sum, u_int16_t orig_len, u_int8_t orig_tos, u_int16_t orig_id, u_int16_t orig_frag, u_int8_t orig_ttl, u_int8_t orig_prot, u_int16_t orig_check, u_int32_t orig_src, u_int32_t orig_dst, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IP version 4 RFC 792 Internet Control Message Protocol (ICMP) unreachable header. The additional arguments enable the application programmer to easily specify the original IPv4 header values (the IP header of the packet that supposedly caused the ICMP unreachable message in the first place).
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP type of ICMP packet (should be ICMP_UNREACH)
+.br
+\fIcode\fP code of ICMP packet (should be one of the 16 unreachable codes)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIorig_id\fP original IP header identification
+.br
+\fIorig_frag\fP original IP header fragmentation information
+.br
+\fIorig_ttl\fP orginal IP header time to live
+.br
+\fIorig_prot\fP original IP header protocol
+.br
+\fIorig_check\fP original IP header checksum
+.br
+\fIorig_src\fP original IP header source address
+.br
+\fIorig_dst\fP original IP header destination address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_igmp (u_int8_t type, u_int8_t code, u_int16_t sum, u_int32_t ip, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 1112 Internet Group Memebership Protocol (IGMP) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP packet type
+.br
+\fIcode\fP packet code (should be 0)
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIip\fP IPv4 address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipsec_ah (u_int8_t nh, u_int8_t len, u_int16_t res, u_int32_t spi, u_int32_t seq, u_int32_t auth, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an Internet Protocol Security Authentication header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fInh\fP next header
+.br
+\fIlen\fP payload length
+.br
+\fIres\fP reserved
+.br
+\fIspi\fP security parameter index
+.br
+\fIseq\fP sequence number
+.br
+\fIauth\fP authentication data
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipsec_esp_ftr (u_int8_t len, u_int8_t nh, int8_t * auth, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an Internet Protocol Security Encapsulating Security Payload footer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlen\fP padding length
+.br
+\fInh\fP next header
+.br
+\fIauth\fP authentication data
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipsec_esp_hdr (u_int32_t spi, u_int32_t seq, u_int32_t iv, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an Internet Protocol Security Encapsulating Security Payload header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIspi\fP security parameter index
+.br
+\fIseq\fP ESP sequence number
+.br
+\fIiv\fP initialization vector
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv4 (u_int16_t len, u_int8_t tos, u_int16_t id, u_int16_t frag, u_int8_t ttl, u_int8_t prot, u_int16_t sum, u_int32_t src, u_int32_t dst, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a version 4 RFC 791 Internet Protocol (IP) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlen\fP total length of the IP packet including all subsequent data
+.br
+\fItos\fP type of service bits
+.br
+\fIid\fP IP identification number
+.br
+\fIfrag\fP fragmentation bits and offset
+.br
+\fIttl\fP time to live in the network
+.br
+\fIprot\fP upper layer protocol
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIsrc\fP source IPv4 address (little endian)
+.br
+\fIdst\fP destination IPv4 address (little endian)
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv4_options (u_int8_t * options, u_int32_t options_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an version 4 Internet Protocol (IP) options header. The function expects options to be a valid IP options string of size options_s, no larger than 40 bytes (the maximum size of an options string). The function checks to make sure that the preceding header is an IPv4 header and that the options string would not result in a packet larger than 65,535 bytes (IPMAXPACKET). The function counts up the number of 32-bit words in the options string and adjusts the IP header length value as necessary.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoptions\fP byte string of IP options
+.br
+\fIoptions_s\fP length of options string
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv6 (u_int8_t tc, u_int32_t fl, u_int16_t len, u_int8_t nh, u_int8_t hl, struct libnet_in6_addr src, struct libnet_in6_addr dst, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a version 6 RFC 2460 Internet Protocol (IP) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItc\fP traffic class
+.br
+\fIfl\fP flow label
+.br
+\fIlen\fP total length of the IP packet
+.br
+\fInh\fP next header
+.br
+\fIhl\fP hop limit
+.br
+\fIsrc\fP source IPv6 address
+.br
+\fIdst\fP destination IPv6 address
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv6_destopts (u_int8_t nh, u_int8_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a version 6 RFC 2460 Internet Protocol (IP) destination options header. This function is special in that it uses the payload interface to include the options data. The application programmer will build an IPv6 options byte string and pass it to the function using the payload interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fInh\fP next header
+.br
+\fIlen\fP length of the header in 8-byte octets not including the first 8 octets
+.br
+\fIpayload\fP options payload
+.br
+\fIpayload_s\fP payload length
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv6_frag (u_int8_t nh, u_int8_t reserved, u_int16_t frag, u_int32_t id, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a version 6 RFC 2460 Internet Protocol (IP) fragmentation header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fInh\fP next header
+.br
+\fIreserved\fP unused value... OR IS IT!
+.br
+\fIfrag\fP fragmentation bits (ala ipv4)
+.br
+\fIid\fP packet identification
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv6_hbhopts (u_int8_t nh, u_int8_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a version 6 RFC 2460 Internet Protocol (IP) hop by hop options header. This function is special in that it uses the payload interface to include the options data. The application programmer will build an IPv6 hop by hop options byte string and pass it to the function using the payload interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fInh\fP next header
+.br
+\fIlen\fP length of the header in 8-byte octets not including the first 8 octets
+.br
+\fIpayload\fP options payload
+.br
+\fIpayload_s\fP payload length
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ipv6_routing (u_int8_t nh, u_int8_t len, u_int8_t rtype, u_int8_t segments, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a version 6 RFC 2460 Internet Protocol (IP) routing header. This function is special in that it uses the payload interface to include the 'type-specific data'; that is the routing information. Most often this will be a number of 128-bit IPv6 addresses. The application programmer will build a byte string of IPv6 address and pass them to the function using the payload interface.
+.PP
+\fBParameters:\fP
+.RS 4
+\fInh\fP next header
+.br
+\fIlen\fP length of the header in 8-byte octets not including the first 8 octets routing header type
+.br
+\fIsegments\fP number of routing segments that follow
+.br
+\fIpayload\fP optional payload of routing information
+.br
+\fIpayload_s\fP payload length
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_isl (u_int8_t * dhost, u_int8_t type, u_int8_t user, u_int8_t * shost, u_int16_t len, u_int8_t * snap, u_int16_t vid, u_int16_t index, u_int16_t reserved, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a Cisco Inter-Switch Link (ISL) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdhost\fP destination address (should be 01:00:0c:00:00)
+.br
+\fItype\fP type of frame
+.br
+\fIuser\fP user defined data
+.br
+\fIshost\fP source mac address
+.br
+\fIlen\fP total length of the encapuslated packet less 18 bytes
+.br
+\fIsnap\fP SNAP information (0xaaaa03 + vendor code)
+.br
+\fIvid\fP 15 bit VLAN ID, 1 bit BPDU or CDP indicator
+.br
+\fIindex\fP port index
+.br
+\fIreserved\fP used for FDDI and token ring
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_link (u_int8_t * dst, u_int8_t * src, u_int8_t * oui, u_int16_t type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a link layer header for an initialized l. The function determines the proper link layer header format from how l was initialized. The function current supports Ethernet and Token Ring link layers.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIdst\fP the destination MAC address
+.br
+\fIsrc\fP the source MAC address
+.br
+\fIoui\fP Organizationally Unique Identifier (unused for Ethernet)
+.br
+\fItype\fP the upper layer protocol type
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_mpls (u_int32_t label, u_int8_t experimental, u_int8_t bos, u_int8_t ttl, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 3032 Multi-Protocol Label Switching (MPLS) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlabel\fP 20-bit label value
+.br
+\fIexperimental\fP 3-bit reserved field
+.br
+\fIbos\fP 1-bit bottom of stack identifier
+.br
+\fIttl\fP time to live
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ntp (u_int8_t leap_indicator, u_int8_t version, u_int8_t mode, u_int8_t stratum, u_int8_t poll, u_int8_t precision, u_int16_t delay_int, u_int16_t delay_frac, u_int16_t dispersion_int, u_int16_t dispersion_frac, u_int32_t reference_id, u_int32_t ref_ts_int, u_int32_t ref_ts_frac, u_int32_t orig_ts_int, u_int32_t orig_ts_frac, u_int32_t rec_ts_int, u_int32_t rec_ts_frac, u_int32_t xmt_ts_int, u_int32_t xmt_ts_frac, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 958 Network Time Protocol (NTP) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIleap_indicator\fP the leap indicator
+.br
+\fIversion\fP NTP protocol version
+.br
+\fImode\fP NTP mode
+.br
+\fIstratum\fP stratum
+.br
+\fIpoll\fP polling interval
+.br
+\fIprecision\fP precision
+.br
+\fIdelay_interval\fP delay interval
+.br
+\fIdelay_frac\fP delay fraction
+.br
+\fIdispersion_int\fP dispersion interval
+.br
+\fIdispersion_frac\fP dispersion fraction
+.br
+\fIreference_id\fP reference id
+.br
+\fIref_ts_int\fP reference timestamp integer
+.br
+\fIref_ts_frac\fP reference timestamp fraction
+.br
+\fIorig_ts_int\fP original timestamp integer
+.br
+\fIorig_ts_frac\fP original timestamp fraction
+.br
+\fIrec_ts_int\fP receiver timestamp integer
+.br
+\fIrec_ts_frac\fP reciever timestamp fraction
+.br
+\fIxmt_ts_int\fP transmit timestamp integer
+.br
+\fIxmt_ts_frac\fP transmit timestamp integer
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2 (u_int16_t len, u_int8_t type, u_int32_t rtr_id, u_int32_t area_id, u_int16_t sum, u_int16_t autype, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_dbd (u_int16_t dgram_len, u_int8_t opts, u_int8_t type, u_int seqnum, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_hello (u_int32_t netmask, u_int16_t interval, u_int8_t opts, u_int8_t priority, u_int dead_int, u_int32_t des_rtr, u_int32_t bkup_rtr, u_int32_t neighbor, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsa (u_int16_t age, u_int8_t opts, u_int8_t type, u_int lsid, u_int32_t advrtr, u_int seqnum, u_int16_t sum, u_int16_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsa_as (u_int32_t nmask, u_int metric, u_int32_t fwdaddr, u_int tag, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsa_net (u_int32_t nmask, u_int rtrid, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsa_rtr (u_int16_t flags, u_int16_t num, u_int id, u_int data, u_int8_t type, u_int8_t tos, u_int16_t metric, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsa_sum (u_int32_t nmask, u_int metric, u_int tos, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsr (u_int type, u_int lsid, u_int32_t advrtr, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_ospfv2_lsu (u_int num, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_rip (u_int8_t cmd, u_int8_t version, u_int16_t rd, u_int16_t af, u_int16_t rt, u_int32_t addr, u_int32_t mask, u_int32_t next_hop, u_int32_t metric, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a Routing Information Protocol header (RFCs 1058 and 2453).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIcmd\fP command
+.br
+\fIversion\fP protocol version
+.br
+\fIrd\fP version one: 0, version two: routing domain
+.br
+\fIaf\fP address family
+.br
+\fIrt\fP version one: 0, version two: route tag
+.br
+\fIaddr\fP IPv4 address
+.br
+\fImask\fP version one: 0, version two: subnet mask
+.br
+\fInext_hop\fP version one: 0, version two: next hop address
+.br
+\fImetric\fP routing metric
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_rpc_call (u_int32_t rm, u_int32_t xid, u_int32_t prog_num, u_int32_t prog_vers, u_int32_t procedure, u_int32_t cflavor, u_int32_t clength, u_int8_t * cdata, u_int32_t vflavor, u_int32_t vlength, u_int8_t * vdata, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an Remote Procedure Call (Version 2) Call message header as specified in RFC 1831. This builder provides the option for specifying the record marking which is required when used with streaming protocols (TCP).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIrm\fP record marking indicating the position in a stream, 0 otherwise
+.br
+\fIxid\fP transaction identifier used to link calls and replies
+.br
+\fIprog_num\fP remote program specification typically between 0 - 1fffffff
+.br
+\fIprog_vers\fP remote program version specification
+.br
+\fIprocedure\fP procedure to be performed by remote program
+.br
+\fIcflavor\fP authentication credential type
+.br
+\fIclength\fP credential length (should be 0)
+.br
+\fIcdata\fP opaque credential data (currently unused)
+.br
+\fIvflavor\fP authentication verifier type
+.br
+\fIvlength\fP verifier length (should be 0)
+.br
+\fIvdata\fP opaque verifier data (currently unused)
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_sebek (u_int32_t magic, u_int16_t version, u_int16_t type, u_int32_t counter, u_int32_t time_sec, u_int32_t time_usec, u_int32_t pid, u_int32_t uid, u_int32_t fd, u_int8_t cmd[SEBEK_CMD_LENGTH], u_int32_t length, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a Sebek header. The Sebek protocol was designed by the Honeynet Project as a transport mechanism for post-intrusion forensic data. More information may be found here: http://www.honeynet.org/papers/sebek.pdf.
+.PP
+\fBParameters:\fP
+.RS 4
+\fImagic\fP identify packets that should be hidden
+.br
+\fIversion\fP protocol version, currently 1
+.br
+\fItype\fP type of record (read data is type 0, write data is type 1)
+.br
+\fIcounter\fP PDU counter used to identify when packet are lost
+.br
+\fItime_sec\fP seconds since EPOCH according to the honeypot
+.br
+\fItime_usec\fP residual microseconds
+.br
+\fIpid\fP PID
+.br
+\fIuid\fP UID
+.br
+\fIfd\fP FD
+.br
+\fIcmd[SEBEK_CMD_LENGTH]\fP 12 first characters of the command
+.br
+\fIlength\fP length in bytes of the PDU's body
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_stp_conf (u_int16_t id, u_int8_t version, u_int8_t bpdu_type, u_int8_t flags, u_int8_t * root_id, u_int32_t root_pc, u_int8_t * bridge_id, u_int16_t port_id, u_int16_t message_age, u_int16_t max_age, u_int16_t hello_time, u_int16_t f_delay, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.1d Spanning Tree Protocol (STP) configuration header. STP frames are usually encapsulated inside of an 802.2 + 802.3 frame combination.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIid\fP protocol id
+.br
+\fIversion\fP protocol version
+.br
+\fIbpdu_type\fP bridge protocol data unit type
+.br
+\fIflags\fP flags
+.br
+\fIroot_id\fP root id
+.br
+\fIroot_pc\fP root path cost
+.br
+\fIbridge_id\fP bridge id
+.br
+\fIport_id\fP port id
+.br
+\fImessage_age\fP message age
+.br
+\fImax_age\fP max age
+.br
+\fIhello_time\fP hello time
+.br
+\fIf_delay\fP forward delay
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_stp_tcn (u_int16_t id, u_int8_t version, u_int8_t bpdu_type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an IEEE 802.1d Spanning Tree Protocol (STP) topology change notification header. STP frames are usually encapsulated inside of an 802.2 + 802.3 frame combination.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIid\fP protocol id
+.br
+\fIversion\fP protocol version
+.br
+\fIbpdu_type\fP bridge protocol data unit type
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_tcp (u_int16_t sp, u_int16_t dp, u_int32_t seq, u_int32_t ack, u_int8_t control, u_int16_t win, u_int16_t sum, u_int16_t urg, u_int16_t len, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 793 Transmission Control Protocol (TCP) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP source port
+.br
+\fIdp\fP destination port
+.br
+\fIseq\fP sequence number
+.br
+\fIack\fP acknowledgement number
+.br
+\fIcontrol\fP control flags
+.br
+\fIwin\fP window size
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIurg\fP urgent pointer len total length of the TCP packet (for checksum calculation)
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_tcp_options (u_int8_t * options, u_int32_t options_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 793 Transmission Control Protocol (TCP) options header. The function expects options to be a valid TCP options string of size options_s, which is no larger than 40 bytes (the maximum size of an options string). The function checks to ensure that the packet consists of a TCP header preceded by an IPv4 header, and that the addition of the options string would not result in a packet larger than 65,535 bytes (IPMAXPACKET). The function counts up the number of 32-bit words in the options string and adjusts the TCP header length value as necessary.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIoptions\fP byte string of TCP options
+.br
+\fIoptions_s\fP length of options string
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_token_ring (u_int8_t ac, u_int8_t fc, u_int8_t * dst, u_int8_t * src, u_int8_t dsap, u_int8_t ssap, u_int8_t cf, u_int8_t * org, u_int16_t type, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds a token ring header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIac\fP access control
+.br
+\fIfc\fP frame control
+.br
+\fIdst\fP destination address
+.br
+\fIsrc\fP source address
+.br
+\fIdsap\fP destination service access point
+.br
+\fIssap\fP source service access point
+.br
+\fIcf\fP control field
+.br
+\fIoui\fP Organizationally Unique Identifier
+.br
+\fItype\fP upper layer protocol type
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_udp (u_int16_t sp, u_int16_t dp, u_int16_t len, u_int16_t sum, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 768 User Datagram Protocol (UDP) header.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIsp\fP source port
+.br
+\fIdp\fP destination port
+.br
+\fIlen\fP total length of the UDP packet
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "libnet_ptag_t libnet_build_vrrp (u_int8_t version, u_int8_t type, u_int8_t vrouter_id, u_int8_t priority, u_int8_t ip_count, u_int8_t auth_type, u_int8_t advert_int, u_int16_t sum, u_int8_t * payload, u_int32_t payload_s, libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Builds an RFC 2338 Virtual Router Redundacy Protool (VRRP) header. Use the payload interface to specify address and autthentication information. To build a 'legal' packet, the destination IPv4 address should be the multicast * address 224.0.0.18, the IP TTL should be set to 255, and the IP protocol should be set to 112.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIversion\fP VRRP version (should be 2)
+.br
+\fItype\fP VRRP packet type (should be 1 -- ADVERTISEMENT)
+.br
+\fIvrouter_id\fP virtual router identification
+.br
+\fIpriority\fP priority (higher numbers indicate higher priority)
+.br
+\fIip_count\fP number of IPv4 addresses contained in this advertisement
+.br
+\fIauth_type\fP type of authentication (0, 1, 2 -- see RFC)
+.br
+\fIadvert_int\fP interval between advertisements
+.br
+\fIsum\fP checksum (0 for libnet to autofill)
+.br
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "void libnet_clear_packet (libnet_t * l)"
+.PP
+Clears the current packet referenced and frees all pblocks. Should be called when the programmer want to send a completely new packet of a different type using the same context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+
+.SS "int libnet_cq_add (libnet_t * l, char * label)"
+.PP
+[Context Queue] Adds a new context to the libnet context queue. If no queue exists, this function will create the queue and add the specified libnet context as the first entry on the list. The functions checks to ensure niether l nor label are NULL, and that label doesn't refer to an existing context already in the queue. Additionally, l should refer to a libnet context previously initialized with a call to \fBlibnet_init()\fP. If the context queue in write locked, this function will fail.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIlabel\fP a canonical name given to recognize the new context, no longer than LIBNET_LABEL_SIZE
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "void libnet_cq_destroy ()"
+.PP
+[Context Queue] Destroys the entire context queue, calling \fBlibnet_destroy()\fP on each member context.
+.SS "libnet_t* libnet_cq_find_by_label (char * label)"
+.PP
+[Context Queue] Locates a libnet context from the queue, indexed by a canonical label.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlabel\fP canonical label of the libnet context to retrieve
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the expected libnet context, NULL on failure
+.RE
+.PP
+
+.SS "int8_t* libnet_cq_getlabel (libnet_t * l)"
+.PP
+[Context Queue] Returns the canonical label associated with the context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+pointer to the libnet context's label
+.RE
+.PP
+
+.SS "libnet_t* libnet_cq_head ()"
+.PP
+[Context Queue] Intiailizes the interator interface and set a write lock on the entire queue. This function is intended to be called just prior to interating through the entire list of contexts (with the probable intent of inject a series of packets in rapid succession). This function is often used as per the following:
+.PP
+for (l = \fBlibnet_cq_head()\fP; \fBlibnet_cq_last()\fP; l = \fBlibnet_cq_next()\fP) { ... }
+.PP
+Much of the time, the application programmer will use the iterator as it is written above; as such, libnet provides a macro to do exactly that, \fBfor_each_context_in_cq(l)\fP. Warning: do not call the iterator more than once in a single loop.
+.PP
+\fBReturns:\fP
+.RS 4
+the head of the context queue
+.RE
+.PP
+
+.SS "int libnet_cq_last ()"
+.PP
+[Context Queue] Check whether the iterator is at the last context in the queue.
+.PP
+\fBReturns:\fP
+.RS 4
+1 if at the end of the context queue, 0 otherwise
+.RE
+.PP
+
+.SS "libnet_t* libnet_cq_next ()"
+.PP
+[Context Queue] Get next context from the context queue. the next context from the context queue
+.SS "libnet_t* libnet_cq_remove (libnet_t * l)"
+.PP
+[Context Queue] Removes a specified context from the libnet context queue by specifying the libnet context pointer. Note the function will remove the specified context from the context queue and cleanup internal memory from the queue, it is up to the application programmer to free the returned libnet context with a call to \fBlibnet_destroy()\fP. Also, as it is not necessary to keep the libnet context pointer when initially adding it to the context queue, most application programmers will prefer to refer to entries on the context queue by canonical name and would use \fBlibnet_cq_remove_by_label()\fP. If the context queue is write locked, this function will fail.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the pointer to the removed libnet context, NULL on failure
+.RE
+.PP
+
+.SS "libnet_t* libnet_cq_remove_by_label (char * label)"
+.PP
+[Context Queue] Removes a specified context from the libnet context queue by specifying the canonical name. Note the function will remove the specified context from the context queue and cleanup internal memory from the queue, it is up to the application programmer to free the returned libnet context with a call to \fBlibnet_destroy()\fP. If the context queue is write locked, this function will fail.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIlabel\fP canonical name of the context to remove
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the pointer to the removed libnet context, NULL on failure
+.RE
+.PP
+
+.SS "u_int32_t libnet_cq_size ()"
+.PP
+[Context Queue] Function returns the number of libnet contexts that are in the queue.
+.PP
+\fBReturns:\fP
+.RS 4
+the number of libnet contexts currently in the queue
+.RE
+.PP
+
+.SS "void libnet_destroy (libnet_t * l)"
+.PP
+Shuts down the libnet session referenced by l. It closes the network interface and frees all internal memory structures associated with l.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+
+.SS "void libnet_diag_dump_context (libnet_t * l)"
+.PP
+[Diagnostic] Prints the contents of the given context.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+
+.SS "void libnet_diag_dump_hex (u_int8_t * packet, u_int32_t len, int swap, FILE * stream)"
+.PP
+[Diagnostic] Function prints the contents of the supplied buffer to the supplied stream pointer. Will swap endianness based disposition of mode variable. Useful to be used in conjunction with the advanced interface and a culled packet.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpacket\fP the packet to print
+.br
+\fIlen\fP length of the packet in bytes
+.br
+\fIswap\fP 1 to swap byte order, 0 to not
+.br
+\fIstream\fP a stream pointer to print to
+.RE
+.PP
+
+.SS "void libnet_diag_dump_pblock (libnet_t * l)"
+.PP
+[Diagnostic] Prints the contents of every pblock.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+
+.SS "char* libnet_diag_dump_pblock_type (u_int8_t type)"
+.PP
+[Diagnostic] Returns the canonical name of the pblock type.
+.PP
+\fBParameters:\fP
+.RS 4
+\fItype\fP pblock type
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a string representing the pblock type type or 'unknown' for an unknown value
+.RE
+.PP
+
+.SS "struct libnet_ether_addr* libnet_get_hwaddr (libnet_t * l)"
+.PP
+Returns the MAC address for the device libnet was initialized with. If libnet was initialized without a device the function will attempt to find one. If the function fails and returns NULL a call to \fBlibnet_geterror()\fP will tell you why.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a pointer to the MAC address or NULL
+.RE
+.PP
+
+.SS "u_int32_t libnet_get_ipaddr4 (libnet_t * l)"
+.PP
+Returns the IP address for the device libnet was initialized with. If libnet was initialized without a device (in raw socket mode) the function will attempt to find one. If the function fails and returns -1 a call to libnet_geterrror() will tell you why.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a big endian IP address suitable for use in a libnet_build function or -1
+.RE
+.PP
+
+.SS "struct libnet_in6_addr libnet_get_ipaddr6 (libnet_t * l)"
+.PP
+This function is not yet implemented under IPv6.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+well, nothing yet
+.RE
+.PP
+
+.SS "u_int32_t libnet_get_prand (int mod)"
+.PP
+Generates an unsigned psuedo-random value within the range specified by mod. LIBNET_PR2 0 - 1 LIBNET_PR8 0 - 255 LIBNET_PR16 0 - 32767 LIBNET_PRu16 0 - 65535 LIBNET_PR32 0 - 2147483647 LIBNET_PRu32 0 - 4294967295
+.PP
+\fBParameters:\fP
+.RS 4
+\fImod\fP one the of LIBNET_PR* constants
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "int8_t* libnet_getdevice (libnet_t * l)"
+.PP
+Returns the canonical name of the device used for packet injection.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the canonical name of the device used for packet injection. Note it can be NULL without being an error.
+.RE
+.PP
+
+.SS "char* libnet_geterror (libnet_t * l)"
+.PP
+Returns the last error set inside of the referenced libnet context. This function should be called anytime a function fails or an error condition is detected inside of libnet.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+an error string or NULL if no error has occured
+.RE
+.PP
+
+.SS "int libnet_getfd (libnet_t * l)"
+.PP
+Returns the FILENO of the file descriptor used for packet injection.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the file number of the file descriptor used for packet injection
+.RE
+.PP
+
+.SS "u_int32_t libnet_getgre_length (u_int16_t fv)\fC [inline]\fP"
+.PP
+\fBParameters:\fP
+.RS 4
+\fIpayload\fP optional payload or NULL
+.br
+\fIpayload_s\fP payload length or 0
+.br
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP protocol tag to modify an existing header, 0 to build a new one
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+protocol tag value on success, -1 on error
+.RE
+.PP
+
+.SS "u_int32_t libnet_getpacket_size (libnet_t * l)"
+.PP
+Returns the sum of the size of all of the pblocks inside of l (this should be the resuling packet size).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the size of the packet in l
+.RE
+.PP
+
+.SS "u_int8_t* libnet_getpbuf (libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Returns the pblock buffer contents for the specified ptag; a subsequent call to \fBlibnet_getpbuf_size()\fP should be made to determine the size of the buffer.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP the ptag reference number
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a pointer to the pblock buffer or NULL on error
+.RE
+.PP
+
+.SS "u_int32_t libnet_getpbuf_size (libnet_t * l, libnet_ptag_t ptag)"
+.PP
+Returns the pblock buffer size for the specified ptag; a previous call to \fBlibnet_getpbuf()\fP should be made to pull the actual buffer contents.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP the ptag reference number
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the size of the pblock buffer
+.RE
+.PP
+
+.SS "u_int8_t* libnet_hex_aton (int8_t * s, int * len)"
+.PP
+Takes a colon separated hexidecimal address (from the command line) and returns a bytestring suitable for use in a libnet_build function. Note this function performs an implicit malloc and the return value should be freed after its use.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIs\fP the string to be parsed
+.br
+\fIlen\fP the resulting size of the returned byte string
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a byte string or NULL on failure
+.RE
+.PP
+
+.SS "libnet_t* libnet_init (int injection_type, char * device, char * err_buf)"
+.PP
+Creates the libnet environment. It initializes the library and returns a libnet context. If the injection_type is LIBNET_LINK or LIBNET_LINK_ADV, the function initializes the injection primitives for the link-layer interface enabling the application programmer to build packets starting at the data-link layer (which also provides more granular control over the IP layer). If libnet uses the link-layer and the device argument is non-NULL, the function attempts to use the specified network device for packet injection. This is either a canonical string that references the device (such as 'eth0' for a 100MB Ethernet card on Linux or 'fxp0' for a 100MB Ethernet card on OpenBSD) or the dots and decimals representation of the device's IP address (192.168.0.1). If device is NULL, libnet attempts to find a suitable device to use. If the injection_type is LIBNET_RAW4 or LIBNET_RAW4_ADV, the function initializes the injection primitives for the IPv4 raw socket interface. The final argument, err_buf, should be a buffer of size LIBNET_ERRBUF_SIZE and holds an error message if the function fails. This function requires root privileges to execute successfully. Upon success, the function returns a valid libnet context for use in later function calls; upon failure, the function returns NULL.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIinjection_type\fP packet injection type (LIBNET_LINK, LIBNET_LINK_ADV, LIBNET_RAW4, LIBNET_RAW4_ADV, LIBNET_RAW6, LIBNET_RAW6_ADV)
+.br
+\fIdevice\fP the interface to use (NULL and libnet will choose one)
+.br
+\fIerr_buf\fP will contain an error message on failure
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+libnet context ready for use or NULL on error.
+.RE
+.PP
+
+.SS "u_int32_t libnet_name2addr4 (libnet_t * l, char * host_name, u_int8_t use_name)"
+.PP
+Takes a dotted decimal string or a canonical DNS name and returns a network byte ordered IPv4 address. This may incur a DNS lookup if mode is set to LIBNET_RESOLVE and host_name refers to a canonical DNS name. If mode is set to LIBNET_DONT_RESOLVE no DNS lookup will occur. The function can fail if DNS lookup fails or if mode is set to LIBNET_DONT_RESOLVE and host_name refers to a canonical DNS name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIhost_name\fP pointer to a string containing a presentation format host name
+.br
+\fIuse_name\fP LIBNET_RESOLVE or LIBNET_DONT_RESOLVE
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+network byte ordered IPv4 address or -1 (2^32 - 1) on error
+.RE
+.PP
+
+.SS "struct libnet_in6_addr libnet_name2addr6 (libnet_t * l, char * host_name, u_int8_t use_name)"
+.PP
+Takes a dotted decimal string or a canonical DNS name and returns a network byte ordered IPv6 address. This may incur a DNS lookup if mode is set to LIBNET_RESOLVE and host_name refers to a canonical DNS name. If mode is set to LIBNET_DONT_RESOLVE no DNS lookup will occur. The function can fail if DNS lookup fails or if mode is set to LIBNET_DONT_RESOLVE and host_name refers to a canonical DNS name.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIhost_name\fP pointer to a string containing a presentation format host name
+.br
+\fIuse_name\fP LIBNET_RESOLVE or LIBNET_DONT_RESOLVE
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+network byte ordered IPv6 address structure
+.RE
+.PP
+
+.SS "int libnet_plist_chain_dump (libnet_plist_t * plist)"
+.PP
+Runs through the port list and prints the contents of the port list chain list to stdout.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIplist\fP previously created portlist
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "char* libnet_plist_chain_dump_string (libnet_plist_t * plist)"
+.PP
+Runs through the port list and prints the contents of the port list chain list to string. This function uses strdup and is not re-entrant. It also has a memory leak and should not really be used.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIplist\fP previously created portlist
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+a printable string containing the port list contents on success NULL on error
+.RE
+.PP
+
+.SS "int libnet_plist_chain_free (libnet_plist_t * plist)"
+.PP
+Frees all memory associated with port list chain.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIplist\fP previously created portlist
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "int libnet_plist_chain_new (libnet_t * l, libnet_plist_t ** plist, char * token_list)"
+.PP
+Creates a new port list. Port list chains are useful for TCP and UDP-based applications that need to send packets to a range of ports (contiguous or otherwise). The port list chain, which token_list points to, should contain a series of int8_tacters from the following list: '0123456789,-' of the general format 'x - y, z', where 'xyz' are port numbers between 0 and 65,535. plist points to the front of the port list chain list for use in further libnet_plist_chain() functions. Upon success, the function returns 1. Upon failure, the function returns -1 and \fBlibnet_geterror()\fP can tell you why.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIplist\fP if successful, will refer to the portlist, if not, NULL
+.br
+\fItoken_list\fP string containing the port list primitive
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "int libnet_plist_chain_next_pair (libnet_plist_t * plist, u_int16_t * bport, u_int16_t * eport)"
+.PP
+Returns the next port list chain pair from the port list chain plist. bport and eport contain the starting port number and ending port number, respectively. Upon success, the function returns 1 and fills in the port variables; however, if the list is empty, the function returns 0 and sets both port variables to 0. Upon failure, the function returns -1.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIplist\fP previously created portlist
+.br
+\fIbport\fP will contain the beginning port number or 0
+.br
+\fIeport\fP will contain the ending port number or 0
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, 0 if empty, -1 on failure
+.RE
+.PP
+
+.SS "int libnet_seed_prand (libnet_t * l)"
+.PP
+Seeds the psuedo-random number generator.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "void libnet_stats (libnet_t * l, struct libnet_stats * ls)"
+.PP
+Fills in a libnet_stats structure with packet injection statistics (packets written, bytes written, packet sending errors).
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIls\fP pointer to a libnet statistics structure
+.RE
+.PP
+
+.SS "int libnet_toggle_checksum (libnet_t * l, libnet_ptag_t ptag, int mode)"
+.PP
+If a given protocol header is built with the checksum field set to '0', by default libnet will calculate the header checksum prior to injection. If the header is set to any other value, by default libnet will not calculate the header checksum. To over-ride this behavior, use \fBlibnet_toggle_checksum()\fP. Switches auto-checksumming on or off for the specified ptag. If mode is set to LIBNET_ON, libnet will mark the specificed ptag to calculate a checksum for the ptag prior to injection. This assumes that the ptag refers to a protocol that has a checksum field. If mode is set to LIBNET_OFF, libnet will clear the checksum flag and no checksum will be computed prior to injection. This assumes that the programmer will assign a value (zero or otherwise) to the checksum field. Often times this is useful if a precomputed checksum or some other predefined value is going to be used. Note that when libnet is initialized with LIBNET_RAW4, the IPv4 header checksum will always be computed by the kernel prior to injection, regardless of what the programmer sets.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.br
+\fIptag\fP the ptag reference number
+.br
+\fImode\fP LIBNET_ON or LIBNET_OFF
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+1 on success, -1 on failure
+.RE
+.PP
+
+.SS "int libnet_write (libnet_t * l)"
+.PP
+Writes a prebuilt packet to the network. The function assumes that l was previously initialized (via a call to \fBlibnet_init()\fP) and that a previously constructed packet has been built inside this context (via one or more calls to the libnet_build* family of functions) and is ready to go. Depending on how libnet was initialized, the function will write the packet to the wire either via the raw or link layer interface. The function will also bump up the internal libnet stat counters which are retrievable via \fBlibnet_stats()\fP.
+.PP
+\fBParameters:\fP
+.RS 4
+\fIl\fP pointer to a libnet context
+.RE
+.PP
+\fBReturns:\fP
+.RS 4
+the number of bytes written, -1 on error
+.RE
+.PP
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for libnet from the source code.
diff --git a/libnet/doc/man/man3/libnet-headers.h.3 b/libnet/doc/man/man3/libnet-headers.h.3
new file mode 100644
index 0000000..a3cd32f
--- /dev/null
+++ b/libnet/doc/man/man3/libnet-headers.h.3
@@ -0,0 +1,1872 @@
+.TH "libnet-headers.h" 3 "10 Mar 2004" "libnet" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+libnet-headers.h \- libnet header information
+
+.SH SYNOPSIS
+.br
+.PP
+.SS "Data Structures"
+
+.in +1c
+.ti -1c
+.RI "struct \fBlibnet_802_1q_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_802_1x_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_802_2_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_802_2snap_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_802_3_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ah_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_arp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_as_lsa_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_auth_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_bgp4_header_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_bgp4_notification_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_bgp4_open_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_cdp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_cdp_value_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_dbd_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_dhcpv4_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_dnsv4_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_esp_ftr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_esp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ether_addr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ethernet_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_fddi_addr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_fddi_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_gre_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_gre_sre_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_icmpv4_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_icmpv6_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_igmp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_in6_addr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ipv4_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ipv6_destopts_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ipv6_frag_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ipv6_hbhopts_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ipv6_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ipv6_routing_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_isl_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_lsa_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_lsr_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_lsu_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_mpls_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_net_lsa_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ntp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ntp_hdr_l_fp\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ntp_hdr_s_fp\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ospf_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_ospf_hello_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_rip_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_rpc_call\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_rpc_call_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_rpc_call_tcp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_rpc_opaque_auth\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_rtr_lsa_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_sebek_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_stp_conf_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_stp_tcn_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_sum_lsa_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_tcp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_token_ring_addr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_token_ring_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_udp_hdr\fP"
+.br
+.ti -1c
+.RI "struct \fBlibnet_vrrp_hdr\fP"
+.br
+.in -1c
+.SS "Defines"
+
+.in +1c
+.ti -1c
+.RI "#define \fBLIBNET_802_1Q_H\fP 0x12"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1X_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_2_H\fP 0x03"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_2SNAP_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_3_H\fP 0x0e"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ARP_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ARP_ETH_IP_H\fP 0x1c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_HEADER_H\fP 0x13"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_OPEN_H\fP 0x0a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UPDATE_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_NOTIFICATION_H\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCPV4_H\fP 0xf0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_UDP_DNSV4_H\fP 0x0c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_TCP_DNSV4_H\fP 0x0e"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ETH_H\fP 0x0e"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_FDDI_H\fP 0x15"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_ECHO_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_MASK_H\fP 0x0c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_UNREACH_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_TIMXCEED_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_REDIRECT_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV4_TS_H\fP 0x14"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ICMPV6_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IGMP_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV4_H\fP 0x14"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_H\fP 0x28"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_FRAG_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_ROUTING_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_DESTOPTS_H\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_HBHOPTS_H\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPSEC_ESP_HDR_H\fP 0x0c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPSEC_ESP_FTR_H\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPSEC_AH_H\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ISL_H\fP 0x1a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_GRE_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_GRE_SRE_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_MPLS_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_H\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_HELLO_H\fP 0x18"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_DBD_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LSR_H\fP 0x0c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LSU_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LSA_H\fP 0x14"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_AUTH_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_CKSUM\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LS_RTR_H\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LS_NET_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LS_SUM_H\fP 0x0c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LS_AS_EXT_H\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_H\fP 0x30"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RIP_H\fP 0x18"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RPC_CALL_H\fP 0x28"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RPC_CALL_TCP_H\fP 0x2c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_SEBEK_H\fP 0x30"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_STP_CONF_H\fP 0x23"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_STP_TCN_H\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_TOKEN_RING_H\fP 0x16"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_TCP_H\fP 0x14"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_UDP_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_H\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1Q_PRIMASK\fP 0x0007"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1Q_CFIMASK\fP 0x0001"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1Q_VIDMASK\fP 0x0fff"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1X_PACKET\fP 0x00"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1X_START\fP 0x01"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1X_LOGOFF\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1X_KEY\fP 0x03"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_802_1X_ENCASFAL\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_SAP_STP\fP 0x42"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_SAP_SNAP\fP 0xaa"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_NETROM\fP 0"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_ETHER\fP 1"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_EETHER\fP 2"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_AX25\fP 3"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_PRONET\fP 4"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_CHAOS\fP 5"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_IEEE802\fP 6"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_ARCNET\fP 7"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_APPLETLK\fP 8"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_LANSTAR\fP 9"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_DLCI\fP 15"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_ATM\fP 19"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_METRICOM\fP 23"
+.br
+.ti -1c
+.RI "#define \fBARPHRD_IPSEC\fP 31"
+.br
+.ti -1c
+.RI "#define \fBARPOP_REQUEST\fP 1"
+.br
+.ti -1c
+.RI "#define \fBARPOP_REPLY\fP 2"
+.br
+.ti -1c
+.RI "#define \fBARPOP_REVREQUEST\fP 3"
+.br
+.ti -1c
+.RI "#define \fBARPOP_REVREPLY\fP 4"
+.br
+.ti -1c
+.RI "#define \fBARPOP_INVREQUEST\fP 8"
+.br
+.ti -1c
+.RI "#define \fBARPOP_INVREPLY\fP 9"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_MARKER_SIZE\fP 16"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_OPEN\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UPDATE\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_NOTIFICATION\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_KEEPALIVE\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_MESSAGE_HEADER_ERROR\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_OPEN_MESSAGE_ERROR\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UPDATE_MESSAGE_ERROR\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_HOLD_TIMER_EXPIRED\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_FINITE_STATE__ERROR\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_CEASE\fP 6"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_CONNECTION_NOT_SYNCHRONIZED\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_BAD_MESSAGE_LENGTH\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_BAD_MESSAGE_TYPE\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UNSUPPORTED_VERSION_NUMBER\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_BAD_PEER_AS\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_BAD_BGP_IDENTIFIER\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UNSUPPORTED_OPTIONAL_PARAMETER\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_AUTHENTICATION_FAILURE\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UNACCEPTABLE_HOLD_TIME\fP 6"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_MALFORMED_ATTRIBUTE_LIST\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_MISSING_WELL_KNOWN_ATTRIBUTE\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_ATTRIBUTE_FLAGS_ERROR\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_ATTRIBUTE_LENGTH_ERROR\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_INVALID_ORIGIN_ATTRIBUTE\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_AS_ROUTING_LOOP\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_INVALID_NEXT_HOP_ATTRIBUTE\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_OPTIONAL_ATTRIBUTE_ERROR\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_INVALID_NETWORK_FIELD\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BGP4_MALFORMED_AS_PATH\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PROTO_CDP\fP 200"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_DEVID\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_ADDRESS\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_PORTID\fP 0x3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAPABIL\fP 0x4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_VERSION\fP 0x5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_PLATFORM\fP 0x6"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_IPPREFIX\fP 0x7"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_L3R\fP 0x01"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_L2B\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_L2SRB\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_L2S\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_SR\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_NOI\fP 0x20"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CDP_CAP_L1F\fP 0x40"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_REQUEST\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_REPLY\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBDHCP_MAGIC\fP 0x63825363"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_BOOTP_MIN_LEN\fP 0x12c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_PAD\fP 0x00"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_SUBNETMASK\fP 0x01"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_TIMEOFFSET\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_ROUTER\fP 0x03"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_TIMESERVER\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NAMESERVER\fP 0x05"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_DNS\fP 0x06"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_LOGSERV\fP 0x07"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_COOKIESERV\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_LPRSERV\fP 0x09"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_IMPSERV\fP 0x0a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_RESSERV\fP 0x0b"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_HOSTNAME\fP 0x0c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_BOOTFILESIZE\fP 0x0d"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_DUMPFILE\fP 0x0e"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_DOMAINNAME\fP 0x0f"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_SWAPSERV\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_ROOTPATH\fP 0x11"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_EXTENPATH\fP 0x12"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_IPFORWARD\fP 0x13"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_SRCROUTE\fP 0x14"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_POLICYFILTER\fP 0x15"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MAXASMSIZE\fP 0x16"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_IPTTL\fP 0x17"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MTUTIMEOUT\fP 0x18"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MTUTABLE\fP 0x19"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MTUSIZE\fP 0x1a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_LOCALSUBNETS\fP 0x1b"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_BROADCASTADDR\fP 0x1c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_DOMASKDISCOV\fP 0x1d"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MASKSUPPLY\fP 0x1e"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_DOROUTEDISC\fP 0x1f"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_ROUTERSOLICIT\fP 0x20"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_STATICROUTE\fP 0x21"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_TRAILERENCAP\fP 0x22"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_ARPTIMEOUT\fP 0x23"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_ETHERENCAP\fP 0x24"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_TCPTTL\fP 0x25"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_TCPKEEPALIVE\fP 0x26"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_TCPALIVEGARBAGE\fP 0x27"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NISDOMAIN\fP 0x28"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NISSERVERS\fP 0x29"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NISTIMESERV\fP 0x2a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_VENDSPECIFIC\fP 0x2b"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NBNS\fP 0x2c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NBDD\fP 0x2d"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NBTCPIP\fP 0x2e"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NBTCPSCOPE\fP 0x2f"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_XFONT\fP 0x30"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_XDISPLAYMGR\fP 0x31"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_DISCOVERADDR\fP 0x32"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_LEASETIME\fP 0x33"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_OPTIONOVERLOAD\fP 0x34"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MESSAGETYPE\fP 0x35"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_SERVIDENT\fP 0x36"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_PARAMREQUEST\fP 0x37"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MESSAGE\fP 0x38"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MAXMSGSIZE\fP 0x39"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_RENEWTIME\fP 0x3a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_REBINDTIME\fP 0x3b"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_CLASSSID\fP 0x3c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_CLIENTID\fP 0x3d"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NISPLUSDOMAIN\fP 0x40"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NISPLUSSERVERS\fP 0x41"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MOBILEIPAGENT\fP 0x44"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_SMTPSERVER\fP 0x45"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_POP3SERVER\fP 0x46"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_NNTPSERVER\fP 0x47"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_WWWSERVER\fP 0x48"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_FINGERSERVER\fP 0x49"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_IRCSERVER\fP 0x4a"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_STSERVER\fP 0x4b"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_STDASERVER\fP 0x4c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_END\fP 0xff"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGDISCOVER\fP 0x01"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGOFFER\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGREQUEST\fP 0x03"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGDECLINE\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGACK\fP 0x05"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGNACK\fP 0x06"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGRELEASE\fP 0x07"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DHCP_MSGINFORM\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DNS_H\fP LIBNET_UDP_DNSV4_H"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_PUP\fP 0x0200"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_IP\fP 0x0800"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_ARP\fP 0x0806"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_REVARP\fP 0x8035"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_VLAN\fP 0x8100"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_EAP\fP 0x888e"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_MPLS\fP 0x8847"
+.br
+.ti -1c
+.RI "#define \fBETHERTYPE_LOOPBACK\fP 0x9000"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_FDDI_LLC_FRAME\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_FDDI_48BIT_ADDR\fP 0x40"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_FDDI_FC_REQD\fP LIBNET_FDDI_LLC_FRAME | LIBNET_FDDI_48BIT_ADDR"
+.br
+.ti -1c
+.RI "#define \fBFDDI_TYPE_IP\fP 0x0800"
+.br
+.ti -1c
+.RI "#define \fBFDDI_TYPE_ARP\fP 0x0806"
+.br
+.ti -1c
+.RI "#define \fBFDDI_TYPE_REVARP\fP 0x8035"
+.br
+.ti -1c
+.RI "#define \fBGRE_CSUM\fP 0x8000"
+.br
+.ti -1c
+.RI "#define \fBGRE_ROUTING\fP 0x4000"
+.br
+.ti -1c
+.RI "#define \fBGRE_KEY\fP 0x2000"
+.br
+.ti -1c
+.RI "#define \fBGRE_SEQ\fP 0x1000"
+.br
+.ti -1c
+.RI "#define \fBGRE_STRICT\fP 0x0800"
+.br
+.ti -1c
+.RI "#define \fBGRE_REC\fP 0x0700"
+.br
+.ti -1c
+.RI "#define \fBGRE_ACK\fP 0x0080"
+.br
+.ti -1c
+.RI "#define \fBGRE_FLAGS_MASK\fP 0x00F8"
+.br
+.ti -1c
+.RI "#define \fBGRE_VERSION_MASK\fP 0x0007"
+.br
+.ti -1c
+.RI "#define \fBGRE_VERSION_0\fP 0x0000"
+.br
+.ti -1c
+.RI "#define \fBGRE_VERSION_1\fP 0x0001"
+.br
+.ti -1c
+.RI "#define \fBGRE_SNA\fP 0x0004"
+.br
+.ti -1c
+.RI "#define \fBGRE_OSI_NETWORK_LAYER\fP 0x00FE"
+.br
+.ti -1c
+.RI "#define \fBGRE_PUP\fP 0x0200"
+.br
+.ti -1c
+.RI "#define \fBGRE_XNS\fP 0x0600"
+.br
+.ti -1c
+.RI "#define \fBGRE_IP\fP 0x0800"
+.br
+.ti -1c
+.RI "#define \fBGRE_CHAOS\fP 0x0804"
+.br
+.ti -1c
+.RI "#define \fBGRE_RFC_826_ARP\fP 0x0806"
+.br
+.ti -1c
+.RI "#define \fBGRE_FRAME_RELAY_ARP\fP 0x0808"
+.br
+.ti -1c
+.RI "#define \fBGRE_VINES\fP 0x0BAD"
+.br
+.ti -1c
+.RI "#define \fBGRE_VINES_ECHO\fP 0x0BAE"
+.br
+.ti -1c
+.RI "#define \fBGRE_VINES_LOOPBACK\fP 0x0BAF"
+.br
+.ti -1c
+.RI "#define \fBGRE_DECNET\fP 0x6003"
+.br
+.ti -1c
+.RI "#define \fBGRE_TRANSPARENT_ETHERNET_BRIDGING\fP 0x6558"
+.br
+.ti -1c
+.RI "#define \fBGRE_RAW_FRAME_RELAY\fP 0x6559"
+.br
+.ti -1c
+.RI "#define \fBGRE_APOLLO_DOMAIN\fP 0x8019"
+.br
+.ti -1c
+.RI "#define \fBGRE_ETHERTALK\fP 0x809B"
+.br
+.ti -1c
+.RI "#define \fBGRE_NOVELL_IPX\fP 0x8137"
+.br
+.ti -1c
+.RI "#define \fBGRE_RFC_1144_TCP_IP_COMPRESSION\fP 0x876B"
+.br
+.ti -1c
+.RI "#define \fBGRE_IP_AUTONOMOUS_SYSTEMS\fP 0x876C"
+.br
+.ti -1c
+.RI "#define \fBGRE_SECURE_DATA\fP 0x876D"
+.br
+.ti -1c
+.RI "#define \fBGRE_PPP\fP 0x880b"
+.br
+.ti -1c
+.RI "#define \fBgre_sum\fP _data._gre.sum"
+.br
+.ti -1c
+.RI "#define \fBgre_offset\fP _data._gre.offset"
+.br
+.ti -1c
+.RI "#define \fBgre_key\fP _data._gre.key"
+.br
+.ti -1c
+.RI "#define \fBgre_seq\fP _data._gre.seq"
+.br
+.ti -1c
+.RI "#define \fBegre_payload_s\fP _data._egre.payload_s"
+.br
+.ti -1c
+.RI "#define \fBegre_callID\fP _data._egre.callID"
+.br
+.ti -1c
+.RI "#define \fBegre_seq\fP _data._egre.seq"
+.br
+.ti -1c
+.RI "#define \fBegre_ack\fP _data._egre.ack"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_GRE\fP 47"
+.br
+.ti -1c
+.RI "#define \fBIPTOS_LOWDELAY\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBIPTOS_THROUGHPUT\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBIPTOS_RELIABILITY\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBIPTOS_LOWCOST\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBIP_RF\fP 0x8000"
+.br
+.ti -1c
+.RI "#define \fBIP_DF\fP 0x4000"
+.br
+.ti -1c
+.RI "#define \fBIP_MF\fP 0x2000"
+.br
+.ti -1c
+.RI "#define \fBIP_OFFMASK\fP 0x1fff"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_EOL\fP 0"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_NOP\fP 1"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_RR\fP 7"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_TS\fP 68"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_SECURITY\fP 130"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_LSRR\fP 131"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_SATID\fP 136"
+.br
+.ti -1c
+.RI "#define \fBIPOPT_SSRR\fP 137"
+.br
+.ti -1c
+.RI "#define \fBlibnet_s6_addr\fP __u6_addr.__u6_addr8"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_NH_FRAGMENT\fP 44"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_NH_ROUTING\fP 43"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_NH_DESTOPTS\fP 60"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_IPV6_NH_HBH\fP 0"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_ICMP6\fP 0x3a"
+.br
+.ti -1c
+.RI "#define \fBICMP6_ECHO\fP 128"
+.br
+.ti -1c
+.RI "#define \fBICMP6_ECHOREPLY\fP 129"
+.br
+.ti -1c
+.RI "#define \fBICMP6_UNREACH\fP 1"
+.br
+.ti -1c
+.RI "#define \fBICMP6_PKTTOOBIG\fP 2"
+.br
+.ti -1c
+.RI "#define \fBICMP6_TIMXCEED\fP 3"
+.br
+.ti -1c
+.RI "#define \fBICMP6_PARAMPROB\fP 4"
+.br
+.ti -1c
+.RI "#define \fBICMP_ECHOREPLY\fP 0"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH\fP 3"
+.br
+.ti -1c
+.RI "#define \fBICMP_SOURCEQUENCH\fP 4"
+.br
+.ti -1c
+.RI "#define \fBICMP_REDIRECT\fP 5"
+.br
+.ti -1c
+.RI "#define \fBICMP_ECHO\fP 8"
+.br
+.ti -1c
+.RI "#define \fBICMP_ROUTERADVERT\fP 9"
+.br
+.ti -1c
+.RI "#define \fBICMP_ROUTERSOLICIT\fP 10"
+.br
+.ti -1c
+.RI "#define \fBICMP_TIMXCEED\fP 11"
+.br
+.ti -1c
+.RI "#define \fBICMP_PARAMPROB\fP 12"
+.br
+.ti -1c
+.RI "#define \fBICMP_TSTAMP\fP 13"
+.br
+.ti -1c
+.RI "#define \fBICMP_TSTAMPREPLY\fP 14"
+.br
+.ti -1c
+.RI "#define \fBICMP_IREQ\fP 15"
+.br
+.ti -1c
+.RI "#define \fBICMP_IREQREPLY\fP 16"
+.br
+.ti -1c
+.RI "#define \fBICMP_MASKREQ\fP 17"
+.br
+.ti -1c
+.RI "#define \fBICMP_MASKREPLY\fP 18"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_NET\fP 0"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_HOST\fP 1"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_PROTOCOL\fP 2"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_PORT\fP 3"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_NEEDFRAG\fP 4"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_SRCFAIL\fP 5"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_NET_UNKNOWN\fP 6"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_HOST_UNKNOWN\fP 7"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_ISOLATED\fP 8"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_NET_PROHIB\fP 9"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_HOST_PROHIB\fP 10"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_TOSNET\fP 11"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_TOSHOST\fP 12"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_FILTER_PROHIB\fP 13"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_HOST_PRECEDENCE\fP 14"
+.br
+.ti -1c
+.RI "#define \fBICMP_UNREACH_PRECEDENCE_CUTOFF\fP 15"
+.br
+.ti -1c
+.RI "#define \fBICMP_REDIRECT_NET\fP 0"
+.br
+.ti -1c
+.RI "#define \fBICMP_REDIRECT_HOST\fP 1"
+.br
+.ti -1c
+.RI "#define \fBICMP_REDIRECT_TOSNET\fP 2"
+.br
+.ti -1c
+.RI "#define \fBICMP_REDIRECT_TOSHOST\fP 3"
+.br
+.ti -1c
+.RI "#define \fBICMP_TIMXCEED_INTRANS\fP 0"
+.br
+.ti -1c
+.RI "#define \fBICMP_TIMXCEED_REASS\fP 1"
+.br
+.ti -1c
+.RI "#define \fBICMP_PARAMPROB_OPTABSENT\fP 1"
+.br
+.ti -1c
+.RI "#define \fBicmp_id\fP hun.echo.id"
+.br
+.ti -1c
+.RI "#define \fBicmp_seq\fP hun.echo.seq"
+.br
+.ti -1c
+.RI "#define \fBicmp_mask\fP dun.mask"
+.br
+.ti -1c
+.RI "#define \fBicmp_data\fP dun.data"
+.br
+.ti -1c
+.RI "#define \fBicmp_otime\fP dun.ts.its_otime"
+.br
+.ti -1c
+.RI "#define \fBicmp_rtime\fP dun.ts.its_rtime"
+.br
+.ti -1c
+.RI "#define \fBicmp_ttime\fP dun.ts.its_ttime"
+.br
+.ti -1c
+.RI "#define \fBIGMP_MEMBERSHIP_QUERY\fP 0x11"
+.br
+.ti -1c
+.RI "#define \fBIGMP_V1_MEMBERSHIP_REPORT\fP 0x12"
+.br
+.ti -1c
+.RI "#define \fBIGMP_V2_MEMBERSHIP_REPORT\fP 0x16"
+.br
+.ti -1c
+.RI "#define \fBIGMP_LEAVE_GROUP\fP 0x17"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_ESP\fP 50"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_AH\fP 51"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PROTO_ISL\fP 201"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_OSPF\fP 89"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_OSPF_LSA\fP 890"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_MODX\fP 4102"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OPT_EBIT\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OPT_MCBIT\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OPT_NPBIT\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OPT_EABIT\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OPT_DCBIT\fP 0x20"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_MPLS_BOS_ON\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_MPLS_BOS_OFF\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_LI_NW\fP 0x0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_LI_AS\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_LI_DS\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_LI_AC\fP 0x3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_VN_2\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_VN_3\fP 0x3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_VN_4\fP 0x4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_R\fP 0x0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_A\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_P\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_C\fP 0x3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_S\fP 0x4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_B\fP 0x5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_RC\fP 0x6"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_MODE_RP\fP 0x7"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_STRATUM_UNAVAIL\fP 0x0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_STRATUM_PRIMARY\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_LOCAL\fP 0x4c4f434c"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_PPS\fP 0x50505300"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_ACTS\fP 0x41435453"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_USNO\fP 0x55534e4f"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_PTB\fP 0x50544200"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_TDF\fP 0x54444600"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_DCF\fP 0x44434600"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_MSF\fP 0x4d534600"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_WWV\fP 0x57575600"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_WWVB\fP 0x57575642"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_WWVH\fP 0x57575648"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_CHU\fP 0x43485500"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_LORC\fP 0x4c4f5243"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_OMEG\fP 0x4f4d4547"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_GPS\fP 0x47505300"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_REF_GOES\fP 0x474f4553"
+.br
+.ti -1c
+.RI "#define \fBOSPFVERSION\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_UMD\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_HELLO\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_DBD\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LSR\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LSU\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_LSA\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_AUTH_NULL\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_AUTH_SIMPLE\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_AUTH_MD5\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DBD_IBI\fP 0x01"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DBD_MBIT\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_DBD_MSBIT\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LS_TYPE_RTR\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LS_TYPE_NET\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LS_TYPE_IP\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LS_TYPE_ASBR\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LS_TYPE_ASEXT\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RTR_FLAGS_W\fP 0x0100"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RTR_FLAGS_E\fP 0x0200"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RTR_FLAGS_B\fP 0x0400"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LINK_ID_NBR_ID\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LINK_ID_IP_DES\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LINK_ID_SUB\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RTR_TYPE_PTP\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RTR_TYPE_TRANS\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RTR_TYPE_STUB\fP 3"
+.br
+.ti -1c
+.RI "#define \fBRTR_TYPE_VRTL\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_AS_E_BIT_ON\fP 0x80000000"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_REQUEST\fP 1"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_RESPONSE\fP 2"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_TRACEON\fP 3"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_TRACEOFF\fP 4"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_POLL\fP 5"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_POLLENTRY\fP 6"
+.br
+.ti -1c
+.RI "#define \fBRIPCMD_MAX\fP 7"
+.br
+.ti -1c
+.RI "#define \fBRIPVER_0\fP 0"
+.br
+.ti -1c
+.RI "#define \fBRIPVER_1\fP 1"
+.br
+.ti -1c
+.RI "#define \fBRIPVER_2\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RPC_CALL\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RPC_REPLY\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RPC_VERS\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RPC_LAST_FRAG\fP 0x80000000"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROGRAM\fP 100000"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_NULL\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_SET\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_UNSET\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_GETADDR\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_DUMP\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_CALLIT\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_BCAST\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_GETTIME\fP 6"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_UADDR2TADDR\fP 7"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_TADDR2UADDR\fP 8"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_GETVERSADDR\fP 9"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_INDIRECT\fP 10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_GETADDRLIST\fP 11"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PMAP_PROC_GETSTAT\fP 12"
+.br
+.ti -1c
+.RI "#define \fBTH_FIN\fP 0x01"
+.br
+.ti -1c
+.RI "#define \fBTH_SYN\fP 0x02"
+.br
+.ti -1c
+.RI "#define \fBTH_RST\fP 0x04"
+.br
+.ti -1c
+.RI "#define \fBTH_PUSH\fP 0x08"
+.br
+.ti -1c
+.RI "#define \fBTH_ACK\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBTH_URG\fP 0x20"
+.br
+.ti -1c
+.RI "#define \fBTH_ECE\fP 0x40"
+.br
+.ti -1c
+.RI "#define \fBTH_CWR\fP 0x80"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_TOKEN_RING_FRAME\fP 0x10"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_TOKEN_RING_LLC_FRAME\fP 0x40"
+.br
+.ti -1c
+.RI "#define \fBTOKEN_RING_TYPE_IP\fP 0x0800"
+.br
+.ti -1c
+.RI "#define \fBTOKEN_RING_TYPE_ARP\fP 0x0806"
+.br
+.ti -1c
+.RI "#define \fBTOKEN_RING_TYPE_REVARP\fP 0x8035"
+.br
+.ti -1c
+.RI "#define \fBSEBEK_PROTO_VERSION\fP 1"
+.br
+.ti -1c
+.RI "#define \fBSEBEK_TYPE_READ\fP 0"
+.br
+.ti -1c
+.RI "#define \fBSEBEK_TYPE_WRITE\fP 1"
+.br
+.ti -1c
+.RI "#define \fBSEBEK_CMD_LENGTH\fP 12"
+.br
+.ti -1c
+.RI "#define \fBIPPROTO_VRRP\fP 112"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_VERSION_01\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_VERSION_02\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_TYPE_ADVERT\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_AUTH_NONE\fP 0x1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_AUTH_PASSWD\fP 0x2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_VRRP_AUTH_IPAH\fP 0x3"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+libnet header information
+
+
+.SH "Define Documentation"
+.PP
+.SS "#define LIBNET_802_1Q_CFIMASK 0x0001"
+.PP
+CFI mask
+.SS "#define LIBNET_802_1Q_H 0x12"
+.PP
+802.1Q header: 18 bytes
+.SS "#define LIBNET_802_1Q_PRIMASK 0x0007"
+.PP
+priority mask
+.SS "#define LIBNET_802_1Q_VIDMASK 0x0fff"
+.PP
+vid mask
+.SS "#define LIBNET_802_1X_ENCASFAL 0x04"
+.PP
+802.1x encasfal
+.SS "#define LIBNET_802_1X_H 0x04"
+.PP
+802.1X header: 4 bytes
+.SS "#define LIBNET_802_1X_KEY 0x03"
+.PP
+802.1x key
+.SS "#define LIBNET_802_1X_LOGOFF 0x02"
+.PP
+802.1x logoff
+.SS "#define LIBNET_802_1X_PACKET 0x00"
+.PP
+802.1x packet
+.SS "#define LIBNET_802_1X_START 0x01"
+.PP
+802.1x start
+.SS "#define LIBNET_802_2_H 0x03"
+.PP
+802.2 LLC header: 3 bytes
+.SS "#define LIBNET_802_2SNAP_H 0x08"
+.PP
+802.2 LLC/SNAP header:8 bytes
+.SS "#define LIBNET_802_3_H 0x0e"
+.PP
+802.3 header: 14 bytes
+.SS "#define LIBNET_ARP_ETH_IP_H 0x1c"
+.PP
+ARP w/ ETH and IP: 28 bytes
+.SS "#define LIBNET_ARP_H 0x08"
+.PP
+ARP header w/o addrs: 8 bytes
+.SS "#define LIBNET_BGP4_HEADER_H 0x13"
+.PP
+BGP header: 19 bytes
+.SS "#define LIBNET_BGP4_NOTIFICATION_H 0x02"
+.PP
+BGP notif. header: 2 bytes
+.SS "#define LIBNET_BGP4_OPEN_H 0x0a"
+.PP
+BGP open header: 10 bytes
+.SS "#define LIBNET_BGP4_UPDATE_H 0x04"
+.PP
+BGP open header: 4 bytes
+.SS "#define LIBNET_CDP_H 0x08"
+.PP
+CDP header base: 8 bytes
+.SS "#define LIBNET_DHCPV4_H 0xf0"
+.PP
+DHCP v4 header: 240 bytes
+.SS "#define LIBNET_ETH_H 0x0e"
+.PP
+Ethernet header: 14 bytes
+.SS "#define LIBNET_FDDI_H 0x15"
+.PP
+FDDI header: 21 bytes
+.SS "#define LIBNET_GRE_H 0x04"
+.PP
+GRE header: 4 bytes
+.SS "#define LIBNET_GRE_SRE_H 0x04"
+.PP
+GRE SRE header: 4 bytes
+.SS "#define LIBNET_ICMPV4_ECHO_H 0x08"
+.PP
+ICMP_ECHO header: 8 bytes
+.SS "#define LIBNET_ICMPV4_H 0x04"
+.PP
+ICMP header base: 4 bytes
+.SS "#define LIBNET_ICMPV4_MASK_H 0x0c"
+.PP
+ICMP_MASK header: 12 bytes
+.SS "#define LIBNET_ICMPV4_REDIRECT_H 0x08"
+.PP
+ICMP_REDIRECT header: 8 bytes
+.SS "#define LIBNET_ICMPV4_TIMXCEED_H 0x08"
+.PP
+ICMP_TIMXCEED header: 8 bytes
+.SS "#define LIBNET_ICMPV4_TS_H 0x14"
+.PP
+ICMP_TIMESTAMP headr:20 bytes
+.SS "#define LIBNET_ICMPV4_UNREACH_H 0x08"
+.PP
+ICMP_UNREACH header: 8 bytes
+.SS "#define LIBNET_ICMPV6_H 0x08"
+.PP
+ICMP6 header base: 8 bytes
+.SS "#define LIBNET_IGMP_H 0x08"
+.PP
+IGMP header: 8 bytes
+.SS "#define LIBNET_IPSEC_AH_H 0x10"
+.PP
+IPSEC AH header: 16 bytes
+.SS "#define LIBNET_IPSEC_ESP_FTR_H 0x02"
+.PP
+IPSEC ESP footer: 2 bytes
+.SS "#define LIBNET_IPSEC_ESP_HDR_H 0x0c"
+.PP
+IPSEC ESP header: 12 bytes
+.SS "#define LIBNET_IPV4_H 0x14"
+.PP
+IPv4 header: 20 bytes
+.SS "#define LIBNET_IPV6_DESTOPTS_H 0x02"
+.PP
+IPv6 dest opts base: 2 bytes
+.SS "#define LIBNET_IPV6_FRAG_H 0x08"
+.PP
+IPv6 frag header: 8 bytes
+.SS "#define LIBNET_IPV6_H 0x28"
+.PP
+IPv6 header: 40 bytes
+.SS "#define LIBNET_IPV6_HBHOPTS_H 0x02"
+.PP
+IPv6 hop/hop opt base:2 bytes
+.SS "#define LIBNET_IPV6_ROUTING_H 0x04"
+.PP
+IPv6 frag header base:4 bytes
+.SS "#define LIBNET_ISL_H 0x1a"
+.PP
+ISL header: 26 bytes
+.SS "#define LIBNET_MPLS_H 0x04"
+.PP
+MPLS header: 4 bytes
+.SS "#define LIBNET_NTP_H 0x30"
+.PP
+NTP header: 48 bytes
+.SS "#define LIBNET_OSPF_AUTH_H 0x08"
+.PP
+OSPF AUTH header: 8 bytes
+.SS "#define LIBNET_OSPF_CKSUM 0x10"
+.PP
+OSPF CKSUM header: 16 bytes
+.SS "#define LIBNET_OSPF_DBD_H 0x08"
+.PP
+OSPF DBD header: 8 bytes
+.SS "#define LIBNET_OSPF_H 0x10"
+.PP
+OSPF header: 16 bytes
+.SS "#define LIBNET_OSPF_HELLO_H 0x18"
+.PP
+OSPF hello header: 24 bytes
+.SS "#define LIBNET_OSPF_LS_AS_EXT_H 0x10"
+.PP
+OSPF LS AS header: 16 bytes
+.SS "#define LIBNET_OSPF_LS_NET_H 0x08"
+.PP
+OSPF LS NET header: 8 bytes
+.SS "#define LIBNET_OSPF_LS_RTR_H 0x10"
+.PP
+OSPF LS RTR header: 16 bytes
+.SS "#define LIBNET_OSPF_LS_SUM_H 0x0c"
+.PP
+OSPF LS SUM header: 12 bytes
+.SS "#define LIBNET_OSPF_LSA_H 0x14"
+.PP
+OSPF LSA header: 20 bytes
+.SS "#define LIBNET_OSPF_LSR_H 0x0c"
+.PP
+OSPF LSR header: 12 bytes
+.SS "#define LIBNET_OSPF_LSU_H 0x04"
+.PP
+OSPF LSU header: 4 bytes
+.SS "#define LIBNET_RIP_H 0x18"
+.PP
+RIP header base: 24 bytes
+.SS "#define LIBNET_RPC_CALL_H 0x28"
+.PP
+RPC header: 40 bytes (assuming 8 byte auth header)
+.SS "#define LIBNET_RPC_CALL_TCP_H 0x2c"
+.PP
+RPC header: 44 bytes (with record marking)
+.SS "#define LIBNET_STP_CONF_H 0x23"
+.PP
+STP conf header: 35 bytes
+.SS "#define LIBNET_STP_TCN_H 0x04"
+.PP
+STP tcn header: 4 bytes
+.SS "#define LIBNET_TCP_DNSV4_H 0x0e"
+.PP
+TCP DNS v4 header: 14 bytes
+.SS "#define LIBNET_TCP_H 0x14"
+.PP
+TCP header: 20 bytes
+.SS "#define LIBNET_TOKEN_RING_H 0x16"
+.PP
+Token Ring header: 22 bytes
+.SS "#define LIBNET_UDP_DNSV4_H 0x0c"
+.PP
+UDP DNS v4 header: 12 bytes
+.SS "#define LIBNET_UDP_H 0x08"
+.PP
+UDP header: 8 bytes
+.SS "#define LIBNET_VRRP_H 0x08"
+.PP
+VRRP header: 8 bytes
+.SH "Author"
+.PP
+Generated automatically by Doxygen for libnet from the source code.
diff --git a/libnet/doc/man/man3/libnet-macros.h.3 b/libnet/doc/man/man3/libnet-macros.h.3
new file mode 100644
index 0000000..ac99aa2
--- /dev/null
+++ b/libnet/doc/man/man3/libnet-macros.h.3
@@ -0,0 +1,172 @@
+.TH "libnet-macros.h" 3 "10 Mar 2004" "libnet" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+libnet-macros.h \- libnet macros and symbloc constants
+
+.SH SYNOPSIS
+.br
+.PP
+.SS "Defines"
+
+.in +1c
+.ti -1c
+.RI "#define \fBLIBNET_DONT_RESOLVE\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_RESOLVE\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ON\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OFF\fP 1"
+.br
+.ti -1c
+.RI "#define \fBIN6ADDR_ERROR_INIT\fP"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PR2\fP 0"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PR8\fP 1"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PR16\fP 2"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PRu16\fP 3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PR32\fP 4"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PRu32\fP 5"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_PRAND_MAX\fP 0xffffffff"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_MAX_PACKET\fP 0xffff"
+.br
+.ti -1c
+.RI "#define \fBIP_MAXPACKET\fP 0xffff"
+.br
+.ti -1c
+.RI "#define \fBETHER_ADDR_LEN\fP 0x6"
+.br
+.ti -1c
+.RI "#define \fBFDDI_ADDR_LEN\fP 0x6"
+.br
+.ti -1c
+.RI "#define \fBTOKEN_RING_ADDR_LEN\fP 0x6"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ORG_CODE_SIZE\fP 0x3"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ERRBUF_SIZE\fP 0x100"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_MAXOPTION_SIZE\fP 0x28"
+.br
+.ti -1c
+.RI "#define \fBFIX\fP(n) (n)"
+.br
+.ti -1c
+.RI "#define \fBUNFIX\fP(n) (n)"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_CKSUM_CARRY\fP(x) (x = (x >> 16) + (x & 0xffff), (~(x + (x >> 16)) & 0xffff))"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_AUTHCPY\fP(x, y) memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_OSPF_CKSUMBUF\fP(x, y) memcpy((u_int8_t *)x, (u_int8_t *)y, sizeof(y))"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_NTP_DO_LI_VN_MODE\fP(li, vn, md) ((u_int8_t)((((li) << 6) & 0xc0) | (((vn) << 3) & 0x38) | ((md) & 0x7)))"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ISLOOPBACK\fP(p) (strcmp((p)->ifr_name, 'lo0') == 0)"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_ISADVMODE\fP(x) (x & 0x08)"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LABEL_SIZE\fP 64"
+.br
+.ti -1c
+.RI "#define \fBLIBNET_LABEL_DEFAULT\fP 'cardshark'"
+.br
+.ti -1c
+.RI "#define \fBCQ_LOCK_UNLOCKED\fP (u_int)0x00000000"
+.br
+.ti -1c
+.RI "#define \fBCQ_LOCK_READ\fP (u_int)0x00000001"
+.br
+.ti -1c
+.RI "#define \fBCQ_LOCK_WRITE\fP (u_int)0x00000002"
+.br
+.ti -1c
+.RI "#define \fBfor_each_context_in_cq\fP(l) for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())"
+.br
+.ti -1c
+.RI "#define \fBcq_is_wlocked\fP() (l_cqd.cq_lock & CQ_LOCK_WRITE)"
+.br
+.ti -1c
+.RI "#define \fBcq_is_rlocked\fP() (l_cqd.cq_lock & CQ_LOCK_READ)"
+.br
+.ti -1c
+.RI "#define \fBcq_is_locked\fP() (l_cqd.cq_lock & (CQ_LOCK_READ | CQ_LOCK_WRITE))"
+.br
+.ti -1c
+.RI "#define \fBcheck_cq_lock\fP(x) (l_cqd.cq_lock & x)"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+libnet macros and symbloc constants
+
+
+.SH "Define Documentation"
+.PP
+.SS "#define for_each_context_in_cq(l) for (l = libnet_cq_head(); libnet_cq_last(); l = libnet_cq_next())"
+.PP
+Provides an interface to iterate through the context queue of libnet contexts. Before calling this macro, be sure to set the queue using \fBlibnet_cq_head()\fP.
+.SS "#define IN6ADDR_ERROR_INIT"
+.PP
+\fBValue:\fP.nf
+{ { { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \
+ 0xff, 0xff } } }
+.fi
+IPv6 error code
+.SS "#define LIBNET_DONT_RESOLVE 0"
+.PP
+Used for libnet's name resolution functions, specifies that no DNS lookups should be performed and the IP address should be kept in numeric form.
+.SS "#define LIBNET_ERRBUF_SIZE 0x100"
+.PP
+The libnet error buffer is 256 bytes long.
+.SS "#define LIBNET_MAX_PACKET 0xffff"
+.PP
+The biggest an IP packet can be -- 65,535 bytes.
+.SS "#define LIBNET_MAXOPTION_SIZE 0x28"
+.PP
+IP and TCP options can be up to 40 bytes long.
+.SS "#define LIBNET_OFF 1"
+.PP
+Used several places, to specify 'on' or 'one'
+.SS "#define LIBNET_ON 0"
+.PP
+Used several places, to specify 'on' or 'one'
+.SS "#define LIBNET_PR2 0"
+.PP
+Used for \fBlibnet_get_prand()\fP to specify function disposition
+.SS "#define LIBNET_RESOLVE 1"
+.PP
+Used for libnet's name resolution functions, specifies that a DNS lookup can be performed if needed to resolve the IP address to a canonical form.
+.SH "Author"
+.PP
+Generated automatically by Doxygen for libnet from the source code.
diff --git a/libnet/doc/man/man3/libnet.h.3 b/libnet/doc/man/man3/libnet.h.3
new file mode 100644
index 0000000..5b55107
--- /dev/null
+++ b/libnet/doc/man/man3/libnet.h.3
@@ -0,0 +1,17 @@
+.TH "libnet.h" 3 "10 Mar 2004" "libnet" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+libnet.h \- toplevel libnet header file
+
+.SH SYNOPSIS
+.br
+.PP
+.SH "Detailed Description"
+.PP
+toplevel libnet header file
+
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for libnet from the source code.
diff --git a/libnet/doc/man/man3/libnet_802_1q_hdr.3 b/libnet/doc/man/man3/libnet_802_1q_hdr.3
new file mode 100644
index 0000000..93a8ae3
--- /dev/null
+++ b/libnet/doc/man/man3/libnet_802_1q_hdr.3
@@ -0,0 +1,53 @@
+.TH "libnet_802_1q_hdr" 3 "10 Mar 2004" "libnet" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+libnet_802_1q_hdr \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <libnet-headers.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "u_int8_t \fBvlan_dhost\fP [ETHER_ADDR_LEN]"
+.br
+.ti -1c
+.RI "u_int8_t \fBvlan_shost\fP [ETHER_ADDR_LEN]"
+.br
+.ti -1c
+.RI "u_int16_t \fBvlan_tpi\fP"
+.br
+.ti -1c
+.RI "u_int16_t \fBvlan_priority_c_vid\fP"
+.br
+.ti -1c
+.RI "u_int16_t \fBvlan_len\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+IEEE 802.1Q (Virtual Local Area Network) VLAN header, static header size: 18 bytes
+.SH "Field Documentation"
+.PP
+.SS "u_int8_t \fBlibnet_802_1q_hdr::vlan_dhost\fP[ETHER_ADDR_LEN]"
+.PP
+destination ethernet address
+.SS "u_int16_t \fBlibnet_802_1q_hdr::vlan_len\fP"
+.PP
+length or type (802.3 / Eth 2)
+.SS "u_int16_t \fBlibnet_802_1q_hdr::vlan_priority_c_vid\fP"
+.PP
+priority | VLAN ID
+.SS "u_int8_t \fBlibnet_802_1q_hdr::vlan_shost\fP[ETHER_ADDR_LEN]"
+.PP
+source ethernet address
+.SS "u_int16_t \fBlibnet_802_1q_hdr::vlan_tpi\fP"
+.PP
+tag protocol ID
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for libnet from the source code.
diff --git a/libnet/doc/man/man3/libnet_802_1x_hdr.3 b/libnet/doc/man/man3/libnet_802_1x_hdr.3
new file mode 100644
index 0000000..c4289cc
--- /dev/null
+++ b/libnet/doc/man/man3/libnet_802_1x_hdr.3
@@ -0,0 +1,41 @@
+.TH "libnet_802_1x_hdr" 3 "10 Mar 2004" "libnet" \" -*- nroff -*-
+.ad l
+.nh
+.SH NAME
+libnet_802_1x_hdr \-
+.SH SYNOPSIS
+.br
+.PP
+\fC#include <libnet-headers.h>\fP
+.PP
+.SS "Data Fields"
+
+.in +1c
+.ti -1c
+.RI "u_int8_t \fBdot1x_version\fP"
+.br
+.ti -1c
+.RI "u_int8_t \fBdot1x_type\fP"
+.br
+.ti -1c
+.RI "u_int16_t \fBdot1x_length\fP"
+.br
+.in -1c
+.SH "Detailed Description"
+.PP
+IEEE 802.1X EAP (Extensible Authentication Protocol) header, static header size: 4 bytes
+.SH "Field Documentation"
+.PP
+.SS "u_int16_t \fBlibnet_802_1x_hdr::dot1x_length\fP"
+.PP
+total frame length
+.SS "u_int8_t \fBlibnet_802_1x_hdr::dot1x_type\fP"
+.PP
+frame type
+.SS "u_int8_t \fBlibnet_802_1x_hdr::dot1x_version\fP"
+.PP
+protocol version
+
+.SH "Author"
+.PP
+Generated automatically by Doxygen for libnet from the source code.