libnet4r 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. data/CHANGELOG +15 -0
  2. data/LICENSE +28 -0
  3. data/README +187 -0
  4. data/Rakefile +110 -0
  5. data/ext/extconf.rb +60 -0
  6. data/ext/libnet.c +705 -0
  7. data/ext/libnet_arp.c +152 -0
  8. data/ext/libnet_ethernet.c +115 -0
  9. data/ext/libnet_ipv4.c +140 -0
  10. data/ext/libnet_ipv6.c +138 -0
  11. data/ext/libnet_udp.c +112 -0
  12. data/ext/libnet_vlan.c +131 -0
  13. data/lib/libnet4r/header.rb +609 -0
  14. data/lib/libnet4r/helpers.rb +19 -0
  15. data/lib/libnet4r/libnet.rb +39 -0
  16. data/libnet/CVS/Entries +24 -0
  17. data/libnet/CVS/Repository +1 -0
  18. data/libnet/CVS/Root +1 -0
  19. data/libnet/Makefile.am +15 -0
  20. data/libnet/Makefile.am.common +10 -0
  21. data/libnet/Makefile.in +443 -0
  22. data/libnet/README +21 -0
  23. data/libnet/VERSION +1 -0
  24. data/libnet/acconfig.h +36 -0
  25. data/libnet/acinclude.m4 +463 -0
  26. data/libnet/aclocal.m4 +1337 -0
  27. data/libnet/autom4te.cache/CVS/Entries +1 -0
  28. data/libnet/autom4te.cache/CVS/Repository +1 -0
  29. data/libnet/autom4te.cache/CVS/Root +1 -0
  30. data/libnet/autom4te.cache/output.0 +6225 -0
  31. data/libnet/autom4te.cache/requests +111 -0
  32. data/libnet/autom4te.cache/traces.0 +272 -0
  33. data/libnet/config.guess +1314 -0
  34. data/libnet/config.sub +1410 -0
  35. data/libnet/configure +6225 -0
  36. data/libnet/configure.in +235 -0
  37. data/libnet/doc/BUGS +19 -0
  38. data/libnet/doc/CHANGELOG +527 -0
  39. data/libnet/doc/CONTRIB +53 -0
  40. data/libnet/doc/COPYING +31 -0
  41. data/libnet/doc/CVS/Entries +12 -0
  42. data/libnet/doc/CVS/Repository +1 -0
  43. data/libnet/doc/CVS/Root +1 -0
  44. data/libnet/doc/DESIGN_NOTES +134 -0
  45. data/libnet/doc/MIGRATION +172 -0
  46. data/libnet/doc/PACKET_BUILDING +161 -0
  47. data/libnet/doc/PORTED +45 -0
  48. data/libnet/doc/RAWSOCKET_NON_SEQUITUR +41 -0
  49. data/libnet/doc/TODO +96 -0
  50. data/libnet/doc/html/acconfig_8h-source.html +49 -0
  51. data/libnet/doc/html/annotated.html +17 -0
  52. data/libnet/doc/html/bpf_8h-source.html +277 -0
  53. data/libnet/doc/html/config_8h-source.html +125 -0
  54. data/libnet/doc/html/doxygen.css +169 -0
  55. data/libnet/doc/html/doxygen.png +0 -0
  56. data/libnet/doc/html/files.html +29 -0
  57. data/libnet/doc/html/functions.html +26 -0
  58. data/libnet/doc/html/functions_vars.html +26 -0
  59. data/libnet/doc/html/getopt_8h-source.html +97 -0
  60. data/libnet/doc/html/globals.html +219 -0
  61. data/libnet/doc/html/globals_defs.html +104 -0
  62. data/libnet/doc/html/globals_func.html +136 -0
  63. data/libnet/doc/html/gnuc_8h-source.html +56 -0
  64. data/libnet/doc/html/graph_legend.dot +22 -0
  65. data/libnet/doc/html/graph_legend.html +75 -0
  66. data/libnet/doc/html/ifaddrlist_8h-source.html +65 -0
  67. data/libnet/doc/html/in__systm_8h-source.html +90 -0
  68. data/libnet/doc/html/index.html +17 -0
  69. data/libnet/doc/html/libnet-asn1_8h-source.html +268 -0
  70. data/libnet/doc/html/libnet-functions_8h-source.html +742 -0
  71. data/libnet/doc/html/libnet-functions_8h.html +8844 -0
  72. data/libnet/doc/html/libnet-headers_8h-source.html +1655 -0
  73. data/libnet/doc/html/libnet-headers_8h.html +3053 -0
  74. data/libnet/doc/html/libnet-macros_8h-source.html +161 -0
  75. data/libnet/doc/html/libnet-macros_8h.html +358 -0
  76. data/libnet/doc/html/libnet-structures_8h-source.html +233 -0
  77. data/libnet/doc/html/libnet-types_8h-source.html +58 -0
  78. data/libnet/doc/html/libnet_8h-source.html +119 -0
  79. data/libnet/doc/html/libnet_8h.html +24 -0
  80. data/libnet/doc/html/structlibnet__802__1q__hdr.html +145 -0
  81. data/libnet/doc/html/structlibnet__802__1x__hdr.html +97 -0
  82. data/libnet/doc/libnet.doxygen.conf +1102 -0
  83. data/libnet/doc/man/CVS/Entries +1 -0
  84. data/libnet/doc/man/CVS/Repository +1 -0
  85. data/libnet/doc/man/CVS/Root +1 -0
  86. data/libnet/doc/man/man3/libnet-functions.h.3 +3136 -0
  87. data/libnet/doc/man/man3/libnet-headers.h.3 +1872 -0
  88. data/libnet/doc/man/man3/libnet-macros.h.3 +172 -0
  89. data/libnet/doc/man/man3/libnet.h.3 +17 -0
  90. data/libnet/doc/man/man3/libnet_802_1q_hdr.3 +53 -0
  91. data/libnet/doc/man/man3/libnet_802_1x_hdr.3 +41 -0
  92. data/libnet/include/CVS/Entries +10 -0
  93. data/libnet/include/CVS/Repository +1 -0
  94. data/libnet/include/CVS/Root +1 -0
  95. data/libnet/include/Makefile.am +7 -0
  96. data/libnet/include/Makefile.in +395 -0
  97. data/libnet/include/bpf.h +264 -0
  98. data/libnet/include/config.h.in +118 -0
  99. data/libnet/include/gnuc.h +43 -0
  100. data/libnet/include/ifaddrlist.h +52 -0
  101. data/libnet/include/libnet/CVS/Entries +9 -0
  102. data/libnet/include/libnet/CVS/Repository +1 -0
  103. data/libnet/include/libnet/CVS/Root +1 -0
  104. data/libnet/include/libnet/Makefile.am +12 -0
  105. data/libnet/include/libnet/Makefile.in +294 -0
  106. data/libnet/include/libnet/libnet-asn1.h +255 -0
  107. data/libnet/include/libnet/libnet-functions.h +2157 -0
  108. data/libnet/include/libnet/libnet-headers.h +1662 -0
  109. data/libnet/include/libnet/libnet-macros.h +186 -0
  110. data/libnet/include/libnet/libnet-structures.h +222 -0
  111. data/libnet/include/libnet/libnet-types.h +45 -0
  112. data/libnet/include/libnet.h.in +132 -0
  113. data/libnet/include/stamp-h.in +1 -0
  114. data/libnet/include/win32/CVS/Entries +5 -0
  115. data/libnet/include/win32/CVS/Repository +1 -0
  116. data/libnet/include/win32/CVS/Root +1 -0
  117. data/libnet/include/win32/config.h +112 -0
  118. data/libnet/include/win32/getopt.h +84 -0
  119. data/libnet/include/win32/in_systm.h +77 -0
  120. data/libnet/include/win32/libnet.h +106 -0
  121. data/libnet/install-sh +250 -0
  122. data/libnet/libnet-config.in +62 -0
  123. data/libnet/libnet.doxygen.conf +1102 -0
  124. data/libnet/man/CVS/Entries +1 -0
  125. data/libnet/man/CVS/Repository +1 -0
  126. data/libnet/man/CVS/Root +1 -0
  127. data/libnet/missing +283 -0
  128. data/libnet/mkinstalldirs +40 -0
  129. data/libnet/sample/CVS/Entries +47 -0
  130. data/libnet/sample/CVS/Repository +1 -0
  131. data/libnet/sample/CVS/Root +1 -0
  132. data/libnet/sample/Makefile.am +63 -0
  133. data/libnet/sample/Makefile.in +729 -0
  134. data/libnet/sample/arp-new.c +144 -0
  135. data/libnet/sample/arp.c +151 -0
  136. data/libnet/sample/bgp4_hdr.c +225 -0
  137. data/libnet/sample/bgp4_notification.c +242 -0
  138. data/libnet/sample/bgp4_open.c +266 -0
  139. data/libnet/sample/bgp4_update.c +337 -0
  140. data/libnet/sample/cdp.c +187 -0
  141. data/libnet/sample/dhcp_discover.c +257 -0
  142. data/libnet/sample/dns.c +260 -0
  143. data/libnet/sample/dot1x.c +113 -0
  144. data/libnet/sample/fddi_tcp1.c +213 -0
  145. data/libnet/sample/fddi_tcp2.c +209 -0
  146. data/libnet/sample/get_addr.c +112 -0
  147. data/libnet/sample/gre.c +410 -0
  148. data/libnet/sample/icmp6_echoreq.c +184 -0
  149. data/libnet/sample/icmp_echo_cq.c +201 -0
  150. data/libnet/sample/icmp_redirect.c +200 -0
  151. data/libnet/sample/icmp_timeexceed.c +190 -0
  152. data/libnet/sample/icmp_timestamp.c +157 -0
  153. data/libnet/sample/icmp_unreach.c +204 -0
  154. data/libnet/sample/ieee.c +177 -0
  155. data/libnet/sample/ip_link.c +201 -0
  156. data/libnet/sample/ip_raw.c +180 -0
  157. data/libnet/sample/isl.c +167 -0
  158. data/libnet/sample/libnet_test.h +60 -0
  159. data/libnet/sample/mpls.c +251 -0
  160. data/libnet/sample/ntp.c +193 -0
  161. data/libnet/sample/ospf_hello.c +179 -0
  162. data/libnet/sample/ospf_lsa.c +190 -0
  163. data/libnet/sample/ping_of_death.c +171 -0
  164. data/libnet/sample/rpc_tcp.c +214 -0
  165. data/libnet/sample/rpc_udp.c +213 -0
  166. data/libnet/sample/sebek.c +299 -0
  167. data/libnet/sample/smurf.c +194 -0
  168. data/libnet/sample/stp.c +227 -0
  169. data/libnet/sample/synflood.c +200 -0
  170. data/libnet/sample/synflood6.c +209 -0
  171. data/libnet/sample/synflood6_frag.c +234 -0
  172. data/libnet/sample/tcp1.c +227 -0
  173. data/libnet/sample/tcp2.c +192 -0
  174. data/libnet/sample/tftp.c +207 -0
  175. data/libnet/sample/tring_tcp1.c +214 -0
  176. data/libnet/sample/tring_tcp2.c +210 -0
  177. data/libnet/sample/udp1.c +223 -0
  178. data/libnet/sample/udp2.c +232 -0
  179. data/libnet/sample/win32/CVS/Entries +9 -0
  180. data/libnet/sample/win32/CVS/Repository +1 -0
  181. data/libnet/sample/win32/CVS/Root +1 -0
  182. data/libnet/sample/win32/arp/CVS/Entries +2 -0
  183. data/libnet/sample/win32/arp/CVS/Repository +1 -0
  184. data/libnet/sample/win32/arp/CVS/Root +1 -0
  185. data/libnet/sample/win32/arp/arp.vcproj +136 -0
  186. data/libnet/sample/win32/cdp/CVS/Entries +2 -0
  187. data/libnet/sample/win32/cdp/CVS/Repository +1 -0
  188. data/libnet/sample/win32/cdp/CVS/Root +1 -0
  189. data/libnet/sample/win32/cdp/cdp.vcproj +136 -0
  190. data/libnet/sample/win32/dhcp_discover/CVS/Entries +2 -0
  191. data/libnet/sample/win32/dhcp_discover/CVS/Repository +1 -0
  192. data/libnet/sample/win32/dhcp_discover/CVS/Root +1 -0
  193. data/libnet/sample/win32/dhcp_discover/dhcp_discover.vcproj +139 -0
  194. data/libnet/sample/win32/dns/CVS/Entries +2 -0
  195. data/libnet/sample/win32/dns/CVS/Repository +1 -0
  196. data/libnet/sample/win32/dns/CVS/Root +1 -0
  197. data/libnet/sample/win32/dns/dns.vcproj +139 -0
  198. data/libnet/sample/win32/get_addr/CVS/Entries +2 -0
  199. data/libnet/sample/win32/get_addr/CVS/Repository +1 -0
  200. data/libnet/sample/win32/get_addr/CVS/Root +1 -0
  201. data/libnet/sample/win32/get_addr/get_addr.vcproj +139 -0
  202. data/libnet/sample/win32/getopt.c +121 -0
  203. data/libnet/sample/win32/icmp_echo_cq/CVS/Entries +2 -0
  204. data/libnet/sample/win32/icmp_echo_cq/CVS/Repository +1 -0
  205. data/libnet/sample/win32/icmp_echo_cq/CVS/Root +1 -0
  206. data/libnet/sample/win32/icmp_echo_cq/icmp_echo_cq.vcproj +139 -0
  207. data/libnet/sample/win32/tcp1/CVS/Entries +2 -0
  208. data/libnet/sample/win32/tcp1/CVS/Repository +1 -0
  209. data/libnet/sample/win32/tcp1/CVS/Root +1 -0
  210. data/libnet/sample/win32/tcp1/tcp1.vcproj +142 -0
  211. data/libnet/sample/win32/udp1/CVS/Entries +3 -0
  212. data/libnet/sample/win32/udp1/CVS/Repository +1 -0
  213. data/libnet/sample/win32/udp1/CVS/Root +1 -0
  214. data/libnet/sample/win32/udp1/dns.vcproj +125 -0
  215. data/libnet/sample/win32/udp1/udp1.vcproj +139 -0
  216. data/libnet/src/CVS/Entries +60 -0
  217. data/libnet/src/CVS/Repository +1 -0
  218. data/libnet/src/CVS/Root +1 -0
  219. data/libnet/src/Makefile.am +71 -0
  220. data/libnet/src/Makefile.in +428 -0
  221. data/libnet/src/libnet_advanced.c +136 -0
  222. data/libnet/src/libnet_asn1.c +436 -0
  223. data/libnet/src/libnet_build_802.1q.c +115 -0
  224. data/libnet/src/libnet_build_802.1x.c +103 -0
  225. data/libnet/src/libnet_build_802.2.c +167 -0
  226. data/libnet/src/libnet_build_802.3.c +101 -0
  227. data/libnet/src/libnet_build_arp.c +169 -0
  228. data/libnet/src/libnet_build_bgp.c +350 -0
  229. data/libnet/src/libnet_build_cdp.c +191 -0
  230. data/libnet/src/libnet_build_data.c +90 -0
  231. data/libnet/src/libnet_build_dhcp.c +156 -0
  232. data/libnet/src/libnet_build_dns.c +129 -0
  233. data/libnet/src/libnet_build_ethernet.c +173 -0
  234. data/libnet/src/libnet_build_fddi.c +191 -0
  235. data/libnet/src/libnet_build_gre.c +427 -0
  236. data/libnet/src/libnet_build_icmp.c +437 -0
  237. data/libnet/src/libnet_build_igmp.c +112 -0
  238. data/libnet/src/libnet_build_ip.c +892 -0
  239. data/libnet/src/libnet_build_ipsec.c +232 -0
  240. data/libnet/src/libnet_build_isl.c +113 -0
  241. data/libnet/src/libnet_build_link.c +90 -0
  242. data/libnet/src/libnet_build_mpls.c +112 -0
  243. data/libnet/src/libnet_build_ntp.c +121 -0
  244. data/libnet/src/libnet_build_ospf.c +699 -0
  245. data/libnet/src/libnet_build_rip.c +108 -0
  246. data/libnet/src/libnet_build_rpc.c +138 -0
  247. data/libnet/src/libnet_build_sebek.c +108 -0
  248. data/libnet/src/libnet_build_snmp.c +52 -0
  249. data/libnet/src/libnet_build_stp.c +222 -0
  250. data/libnet/src/libnet_build_tcp.c +365 -0
  251. data/libnet/src/libnet_build_token_ring.c +193 -0
  252. data/libnet/src/libnet_build_udp.c +111 -0
  253. data/libnet/src/libnet_build_vrrp.c +117 -0
  254. data/libnet/src/libnet_checksum.c +376 -0
  255. data/libnet/src/libnet_cq.c +395 -0
  256. data/libnet/src/libnet_crc.c +113 -0
  257. data/libnet/src/libnet_dll.c +47 -0
  258. data/libnet/src/libnet_error.c +55 -0
  259. data/libnet/src/libnet_if_addr.c +415 -0
  260. data/libnet/src/libnet_init.c +234 -0
  261. data/libnet/src/libnet_internal.c +310 -0
  262. data/libnet/src/libnet_link_bpf.c +348 -0
  263. data/libnet/src/libnet_link_dlpi.c +785 -0
  264. data/libnet/src/libnet_link_linux.c +310 -0
  265. data/libnet/src/libnet_link_nit.c +125 -0
  266. data/libnet/src/libnet_link_none.c +66 -0
  267. data/libnet/src/libnet_link_pf.c +179 -0
  268. data/libnet/src/libnet_link_snit.c +149 -0
  269. data/libnet/src/libnet_link_snoop.c +166 -0
  270. data/libnet/src/libnet_link_win32.c +346 -0
  271. data/libnet/src/libnet_pblock.c +511 -0
  272. data/libnet/src/libnet_port_list.c +295 -0
  273. data/libnet/src/libnet_prand.c +106 -0
  274. data/libnet/src/libnet_raw.c +257 -0
  275. data/libnet/src/libnet_resolve.c +414 -0
  276. data/libnet/src/libnet_version.c +54 -0
  277. data/libnet/src/libnet_write.c +502 -0
  278. data/libnet/version.h.in +6 -0
  279. data/libnet/win32/CVS/Entries +15 -0
  280. data/libnet/win32/CVS/Repository +1 -0
  281. data/libnet/win32/CVS/Root +1 -0
  282. data/libnet/win32/Libnet-1.1.1-2002.sln +77 -0
  283. data/libnet/win32/Libnet-1.1.1-2003.ncb +0 -0
  284. data/libnet/win32/Libnet-1.1.1-2003.sln +84 -0
  285. data/libnet/win32/Libnet-1.1.1-2003.suo +0 -0
  286. data/libnet/win32/Libnet-1.1.1.vcproj +311 -0
  287. data/libnet/win32/Libnet-latest.ncb +0 -0
  288. data/libnet/win32/Libnet-latest.opt +0 -0
  289. data/libnet/win32/Libnet-latest.sln +77 -0
  290. data/libnet/win32/Libnet-latest.suo +0 -0
  291. data/libnet/win32/Libnet-latest.vcproj +311 -0
  292. data/libnet/win32/Libnet.dsp +337 -0
  293. data/libnet/win32/Libnet.dsw +32 -0
  294. data/libnet/win32/README.txt +57 -0
  295. data/libnet/win32/libnet_dll.def +164 -0
  296. data/test/tc_arp.rb +169 -0
  297. data/test/tc_class.rb +219 -0
  298. data/test/tc_ethernet.rb +97 -0
  299. data/test/tc_header.rb +163 -0
  300. data/test/tc_init.rb +25 -0
  301. data/test/tc_ipv4.rb +219 -0
  302. data/test/tc_ipv6.rb +235 -0
  303. data/test/tc_udp.rb +229 -0
  304. data/test/tc_vlan.rb +118 -0
  305. data/test/ts_all.rb +15 -0
  306. metadata +401 -0
@@ -0,0 +1,1655 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
+ <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3
+ <title>libnet: libnet-headers.h Source File</title>
4
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
5
+ </head><body>
6
+ <!-- Generated by Doxygen 1.3.4 -->
7
+ <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>
8
+ <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>
9
+ 00002 <span class="comment"> * $Id: libnet-headers.h,v 1.13 2004/03/01 20:26:12 mike Exp $</span>
10
+ 00003 <span class="comment"> *</span>
11
+ 00004 <span class="comment"> * libnet-headers.h - Network routine library headers header file</span>
12
+ 00005 <span class="comment"> *</span>
13
+ 00006 <span class="comment"> * Copyright (c) 1998 - 2004 Mike D. Schiffman &lt;mike@infonexus.com&gt;</span>
14
+ 00007 <span class="comment"> * All rights reserved.</span>
15
+ 00008 <span class="comment"> *</span>
16
+ 00009 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
17
+ 00010 <span class="comment"> * modification, are permitted provided that the following conditions</span>
18
+ 00011 <span class="comment"> * are met:</span>
19
+ 00012 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
20
+ 00013 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
21
+ 00014 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
22
+ 00015 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
23
+ 00016 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
24
+ 00017 <span class="comment"> *</span>
25
+ 00018 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND</span>
26
+ 00019 <span class="comment"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
27
+ 00020 <span class="comment"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
28
+ 00021 <span class="comment"> * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE</span>
29
+ 00022 <span class="comment"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
30
+ 00023 <span class="comment"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
31
+ 00024 <span class="comment"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
32
+ 00025 <span class="comment"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
33
+ 00026 <span class="comment"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
34
+ 00027 <span class="comment"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
35
+ 00028 <span class="comment"> * SUCH DAMAGE.</span>
36
+ 00029 <span class="comment"> *</span>
37
+ 00030 <span class="comment"> */</span>
38
+ 00031
39
+ 00032 <span class="preprocessor">#ifndef __LIBNET_HEADERS_H</span>
40
+ 00033 <span class="preprocessor"></span><span class="preprocessor">#define __LIBNET_HEADERS_H</span>
41
+ 00034 <span class="preprocessor"></span>
42
+ <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>
43
+ <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>
44
+ <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>
45
+ <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>
46
+ <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>
47
+ <a name="l00047"></a><a class="code" href="libnet-headers_8h.html#a5">00047</a> <span class="preprocessor">#define LIBNET_ARP_H 0x08 </span>
48
+ <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>
49
+ <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>
50
+ <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>
51
+ <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>
52
+ <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>
53
+ <a name="l00053"></a><a class="code" href="libnet-headers_8h.html#a11">00053</a> <span class="preprocessor">#define LIBNET_CDP_H 0x08 </span>
54
+ <a name="l00054"></a><a class="code" href="libnet-headers_8h.html#a12">00054</a> <span class="preprocessor">#define LIBNET_DHCPV4_H 0xf0 </span>
55
+ <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>
56
+ <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>
57
+ <a name="l00057"></a><a class="code" href="libnet-headers_8h.html#a15">00057</a> <span class="preprocessor">#define LIBNET_ETH_H 0x0e </span>
58
+ <a name="l00058"></a><a class="code" href="libnet-headers_8h.html#a16">00058</a> <span class="preprocessor">#define LIBNET_FDDI_H 0x15 </span>
59
+ <a name="l00059"></a><a class="code" href="libnet-headers_8h.html#a17">00059</a> <span class="preprocessor">#define LIBNET_ICMPV4_H 0x04 </span>
60
+ <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>
61
+ <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>
62
+ <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>
63
+ <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>
64
+ <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>
65
+ <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>
66
+ <a name="l00066"></a><a class="code" href="libnet-headers_8h.html#a24">00066</a> <span class="preprocessor">#define LIBNET_ICMPV6_H 0x08 </span>
67
+ <a name="l00067"></a><a class="code" href="libnet-headers_8h.html#a25">00067</a> <span class="preprocessor">#define LIBNET_IGMP_H 0x08 </span>
68
+ <a name="l00068"></a><a class="code" href="libnet-headers_8h.html#a26">00068</a> <span class="preprocessor">#define LIBNET_IPV4_H 0x14 </span>
69
+ <a name="l00069"></a><a class="code" href="libnet-headers_8h.html#a27">00069</a> <span class="preprocessor">#define LIBNET_IPV6_H 0x28 </span>
70
+ <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>
71
+ <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>
72
+ <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>
73
+ <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>
74
+ <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>
75
+ <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>
76
+ <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>
77
+ <a name="l00077"></a><a class="code" href="libnet-headers_8h.html#a35">00077</a> <span class="preprocessor">#define LIBNET_ISL_H 0x1a </span>
78
+ <a name="l00078"></a><a class="code" href="libnet-headers_8h.html#a36">00078</a> <span class="preprocessor">#define LIBNET_GRE_H 0x04 </span>
79
+ <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>
80
+ <a name="l00080"></a><a class="code" href="libnet-headers_8h.html#a38">00080</a> <span class="preprocessor">#define LIBNET_MPLS_H 0x04 </span>
81
+ <a name="l00081"></a><a class="code" href="libnet-headers_8h.html#a39">00081</a> <span class="preprocessor">#define LIBNET_OSPF_H 0x10 </span>
82
+ <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>
83
+ <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>
84
+ <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>
85
+ <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>
86
+ <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>
87
+ <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>
88
+ <a name="l00088"></a><a class="code" href="libnet-headers_8h.html#a46">00088</a> <span class="preprocessor">#define LIBNET_OSPF_CKSUM 0x10 </span>
89
+ <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>
90
+ <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>
91
+ <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>
92
+ <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>
93
+ <a name="l00093"></a><a class="code" href="libnet-headers_8h.html#a51">00093</a> <span class="preprocessor">#define LIBNET_NTP_H 0x30 </span>
94
+ <a name="l00094"></a><a class="code" href="libnet-headers_8h.html#a52">00094</a> <span class="preprocessor">#define LIBNET_RIP_H 0x18 </span>
95
+ <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>
96
+ <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>
97
+ 00101 <span class="preprocessor">#define LIBNET_SEBEK_H 0x30 </span><span class="comment">/* sebek header: 48 bytes */</span>
98
+ <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>
99
+ <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>
100
+ <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>
101
+ <a name="l00105"></a><a class="code" href="libnet-headers_8h.html#a59">00105</a> <span class="preprocessor">#define LIBNET_TCP_H 0x14 </span>
102
+ <a name="l00106"></a><a class="code" href="libnet-headers_8h.html#a60">00106</a> <span class="preprocessor">#define LIBNET_UDP_H 0x08 </span>
103
+ <a name="l00107"></a><a class="code" href="libnet-headers_8h.html#a61">00107</a> <span class="preprocessor">#define LIBNET_VRRP_H 0x08 </span>
104
+ <a name="l00113"></a><a class="code" href="structlibnet__802__1q__hdr.html">00113</a> <span class="preprocessor">struct libnet_802_1q_hdr</span>
105
+ 00114 <span class="preprocessor"></span>{
106
+ <a name="l00115"></a><a class="code" href="structlibnet__802__1q__hdr.html#o0">00115</a> u_int8_t vlan_dhost[ETHER_ADDR_LEN];
107
+ <a name="l00116"></a><a class="code" href="structlibnet__802__1q__hdr.html#o1">00116</a> u_int8_t vlan_shost[ETHER_ADDR_LEN];
108
+ <a name="l00117"></a><a class="code" href="structlibnet__802__1q__hdr.html#o2">00117</a> u_int16_t vlan_tpi;
109
+ <a name="l00118"></a><a class="code" href="structlibnet__802__1q__hdr.html#o3">00118</a> u_int16_t vlan_priority_c_vid;
110
+ <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>
111
+ <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>
112
+ <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>
113
+ <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>
114
+ 00123 <span class="preprocessor">}; </span>
115
+ 00124 <span class="preprocessor"></span>
116
+ <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>
117
+ 00130 {
118
+ <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>;
119
+ <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>;
120
+ <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>
121
+ <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>
122
+ <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>
123
+ <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>
124
+ <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>
125
+ <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>
126
+ 00139 <span class="preprocessor">}; </span>
127
+ 00140 <span class="preprocessor"></span>
128
+ 00141 <span class="comment">/*</span>
129
+ 00142 <span class="comment"> * IEEE 802.2 LLC header</span>
130
+ 00143 <span class="comment"> * Link Layer Control</span>
131
+ 00144 <span class="comment"> * static header size: 3 bytes</span>
132
+ 00145 <span class="comment"> */</span>
133
+ 00146 <span class="keyword">struct </span>libnet_802_2_hdr
134
+ 00147 {
135
+ 00148 u_int8_t llc_dsap; <span class="comment">/* destination service access point */</span>
136
+ 00149 u_int8_t llc_ssap; <span class="comment">/* source service access point */</span>
137
+ 00150 <span class="preprocessor">#define LIBNET_SAP_STP 0x42</span>
138
+ 00151 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_SAP_SNAP 0xaa</span>
139
+ 00152 <span class="preprocessor"></span> u_int8_t llc_control; <span class="comment">/* control field */</span>
140
+ 00153 };
141
+ 00154
142
+ 00155
143
+ 00156 <span class="comment">/*</span>
144
+ 00157 <span class="comment"> * IEEE 802.2 LLC/SNAP header</span>
145
+ 00158 <span class="comment"> * SubNetwork Attachment Point</span>
146
+ 00159 <span class="comment"> * static header size: 8 bytes</span>
147
+ 00160 <span class="comment"> */</span>
148
+ 00161 <span class="keyword">struct </span>libnet_802_2snap_hdr
149
+ 00162 {
150
+ 00163 u_int8_t snap_dsap; <span class="comment">/* destination service access point */</span>
151
+ 00164 u_int8_t snap_ssap; <span class="comment">/* destination service access point */</span>
152
+ 00165 u_int8_t snap_control; <span class="comment">/* control field */</span>
153
+ 00166 u_int8_t snap_oui[3]; <span class="comment">/* OUI */</span>
154
+ 00167 u_int16_t snap_type; <span class="comment">/* type */</span>
155
+ 00168 };
156
+ 00169
157
+ 00170
158
+ 00171 <span class="comment">/*</span>
159
+ 00172 <span class="comment"> * 802.3 header</span>
160
+ 00173 <span class="comment"> * IEEE Ethernet</span>
161
+ 00174 <span class="comment"> * Static header size: 14 bytes</span>
162
+ 00175 <span class="comment"> */</span>
163
+ 00176 <span class="keyword">struct </span>libnet_802_3_hdr
164
+ 00177 {
165
+ 00178 u_int8_t _802_3_dhost[ETHER_ADDR_LEN];<span class="comment">/* destination ethernet address */</span>
166
+ 00179 u_int8_t _802_3_shost[ETHER_ADDR_LEN];<span class="comment">/* source ethernet address */</span>
167
+ 00180 u_int16_t _802_3_len; <span class="comment">/* packet type ID */</span>
168
+ 00181 };
169
+ 00182
170
+ 00183
171
+ 00184 <span class="comment">/* </span>
172
+ 00185 <span class="comment"> * ARP header</span>
173
+ 00186 <span class="comment"> * Address Resolution Protocol</span>
174
+ 00187 <span class="comment"> * Base header size: 8 bytes</span>
175
+ 00188 <span class="comment"> */</span>
176
+ 00189 <span class="keyword">struct </span>libnet_arp_hdr
177
+ 00190 {
178
+ 00191 u_int16_t ar_hrd; <span class="comment">/* format of hardware address */</span>
179
+ 00192 <span class="preprocessor">#define ARPHRD_NETROM 0 </span><span class="comment">/* from KA9Q: NET/ROM pseudo */</span>
180
+ 00193 <span class="preprocessor">#define ARPHRD_ETHER 1 </span><span class="comment">/* Ethernet 10Mbps */</span>
181
+ 00194 <span class="preprocessor">#define ARPHRD_EETHER 2 </span><span class="comment">/* Experimental Ethernet */</span>
182
+ 00195 <span class="preprocessor">#define ARPHRD_AX25 3 </span><span class="comment">/* AX.25 Level 2 */</span>
183
+ 00196 <span class="preprocessor">#define ARPHRD_PRONET 4 </span><span class="comment">/* PROnet token ring */</span>
184
+ 00197 <span class="preprocessor">#define ARPHRD_CHAOS 5 </span><span class="comment">/* Chaosnet */</span>
185
+ 00198 <span class="preprocessor">#define ARPHRD_IEEE802 6 </span><span class="comment">/* IEEE 802.2 Ethernet/TR/TB */</span>
186
+ 00199 <span class="preprocessor">#define ARPHRD_ARCNET 7 </span><span class="comment">/* ARCnet */</span>
187
+ 00200 <span class="preprocessor">#define ARPHRD_APPLETLK 8 </span><span class="comment">/* APPLEtalk */</span>
188
+ 00201 <span class="preprocessor">#define ARPHRD_LANSTAR 9 </span><span class="comment">/* Lanstar */</span>
189
+ 00202 <span class="preprocessor">#define ARPHRD_DLCI 15 </span><span class="comment">/* Frame Relay DLCI */</span>
190
+ 00203 <span class="preprocessor">#define ARPHRD_ATM 19 </span><span class="comment">/* ATM */</span>
191
+ 00204 <span class="preprocessor">#define ARPHRD_METRICOM 23 </span><span class="comment">/* Metricom STRIP (new IANA id) */</span>
192
+ 00205 <span class="preprocessor">#define ARPHRD_IPSEC 31 </span><span class="comment">/* IPsec tunnel */</span>
193
+ 00206 u_int16_t ar_pro; <span class="comment">/* format of protocol address */</span>
194
+ 00207 u_int8_t ar_hln; <span class="comment">/* length of hardware address */</span>
195
+ 00208 u_int8_t ar_pln; <span class="comment">/* length of protocol addres */</span>
196
+ 00209 u_int16_t ar_op; <span class="comment">/* operation type */</span>
197
+ 00210 <span class="preprocessor">#define ARPOP_REQUEST 1 </span><span class="comment">/* req to resolve address */</span>
198
+ 00211 <span class="preprocessor">#define ARPOP_REPLY 2 </span><span class="comment">/* resp to previous request */</span>
199
+ 00212 <span class="preprocessor">#define ARPOP_REVREQUEST 3 </span><span class="comment">/* req protocol address given hardware */</span>
200
+ 00213 <span class="preprocessor">#define ARPOP_REVREPLY 4 </span><span class="comment">/* resp giving protocol address */</span>
201
+ 00214 <span class="preprocessor">#define ARPOP_INVREQUEST 8 </span><span class="comment">/* req to identify peer */</span>
202
+ 00215 <span class="preprocessor">#define ARPOP_INVREPLY 9 </span><span class="comment">/* resp identifying peer */</span>
203
+ 00216 <span class="comment">/* address information allocated dynamically */</span>
204
+ 00217 };
205
+ 00218
206
+ 00219 <span class="comment">/*</span>
207
+ 00220 <span class="comment"> * BGP4 header</span>
208
+ 00221 <span class="comment"> * Border Gateway Protocol 4</span>
209
+ 00222 <span class="comment"> * Base header size : 19 bytes</span>
210
+ 00223 <span class="comment"> */</span>
211
+ 00224 <span class="keyword">struct </span>libnet_bgp4_header_hdr
212
+ 00225 {
213
+ 00226 <span class="preprocessor">#define LIBNET_BGP4_MARKER_SIZE 16</span>
214
+ 00227 <span class="preprocessor"></span> u_int8_t marker[LIBNET_BGP4_MARKER_SIZE];
215
+ 00228 u_int16_t len;
216
+ 00229 u_int8_t type;
217
+ 00230 <span class="preprocessor">#define LIBNET_BGP4_OPEN 1</span>
218
+ 00231 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UPDATE 2</span>
219
+ 00232 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_NOTIFICATION 3</span>
220
+ 00233 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_KEEPALIVE 4</span>
221
+ 00234 <span class="preprocessor"></span>};
222
+ 00235
223
+ 00236 <span class="comment">/*</span>
224
+ 00237 <span class="comment"> * BGP4 open header</span>
225
+ 00238 <span class="comment"> * Border Gateway Protocol 4</span>
226
+ 00239 <span class="comment"> * Base header size : 10 bytes</span>
227
+ 00240 <span class="comment"> */</span>
228
+ 00241 <span class="keyword">struct </span>libnet_bgp4_open_hdr
229
+ 00242 {
230
+ 00243 u_int8_t version;
231
+ 00244 u_int16_t src_as;
232
+ 00245 u_int16_t hold_time;
233
+ 00246 u_int32_t bgp_id;
234
+ 00247 u_int8_t opt_len;
235
+ 00248 };
236
+ 00249
237
+ 00250 <span class="comment">/*</span>
238
+ 00251 <span class="comment"> * BGP4 notification message</span>
239
+ 00252 <span class="comment"> *</span>
240
+ 00253 <span class="comment"> * Border Gateway Protocol 4</span>
241
+ 00254 <span class="comment"> * Base header size : 2 bytes</span>
242
+ 00255 <span class="comment"> *</span>
243
+ 00256 <span class="comment"> * Use payload if you need data</span>
244
+ 00257 <span class="comment"> */</span>
245
+ 00258 <span class="keyword">struct </span>libnet_bgp4_notification_hdr
246
+ 00259 {
247
+ 00260 <span class="preprocessor">#define LIBNET_BGP4_MESSAGE_HEADER_ERROR 1</span>
248
+ 00261 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_OPEN_MESSAGE_ERROR 2</span>
249
+ 00262 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UPDATE_MESSAGE_ERROR 3</span>
250
+ 00263 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_HOLD_TIMER_EXPIRED 4</span>
251
+ 00264 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_FINITE_STATE__ERROR 5</span>
252
+ 00265 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_CEASE 6</span>
253
+ 00266 <span class="preprocessor"></span> u_int8_t err_code;
254
+ 00267
255
+ 00268 <span class="comment">/* Message Header Error subcodes */</span>
256
+ 00269 <span class="preprocessor">#define LIBNET_BGP4_CONNECTION_NOT_SYNCHRONIZED 1</span>
257
+ 00270 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_MESSAGE_LENGTH 2</span>
258
+ 00271 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_MESSAGE_TYPE 3</span>
259
+ 00272 <span class="preprocessor"></span><span class="comment">/* OPEN Message Error subcodes */</span>
260
+ 00273 <span class="preprocessor">#define LIBNET_BGP4_UNSUPPORTED_VERSION_NUMBER 1</span>
261
+ 00274 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_PEER_AS 2</span>
262
+ 00275 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_BAD_BGP_IDENTIFIER 3</span>
263
+ 00276 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNSUPPORTED_OPTIONAL_PARAMETER 4</span>
264
+ 00277 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_AUTHENTICATION_FAILURE 5</span>
265
+ 00278 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNACCEPTABLE_HOLD_TIME 6</span>
266
+ 00279 <span class="preprocessor"></span><span class="comment">/* UPDATE Message Error subcodes */</span>
267
+ 00280 <span class="preprocessor">#define LIBNET_BGP4_MALFORMED_ATTRIBUTE_LIST</span>
268
+ 00281 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_UNRECOGNIZED_WELL_KNOWN_ATTRIBUTE</span>
269
+ 00282 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_MISSING_WELL_KNOWN_ATTRIBUTE</span>
270
+ 00283 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_ATTRIBUTE_FLAGS_ERROR</span>
271
+ 00284 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_ATTRIBUTE_LENGTH_ERROR</span>
272
+ 00285 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_ORIGIN_ATTRIBUTE</span>
273
+ 00286 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_AS_ROUTING_LOOP</span>
274
+ 00287 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_NEXT_HOP_ATTRIBUTE</span>
275
+ 00288 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_OPTIONAL_ATTRIBUTE_ERROR</span>
276
+ 00289 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_INVALID_NETWORK_FIELD</span>
277
+ 00290 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BGP4_MALFORMED_AS_PATH</span>
278
+ 00291 <span class="preprocessor"></span> u_int8_t err_subcode;
279
+ 00292 };
280
+ 00293
281
+ 00294
282
+ 00295
283
+ 00296 <span class="comment">/*</span>
284
+ 00297 <span class="comment"> * CDP header</span>
285
+ 00298 <span class="comment"> * Cisco Discovery Protocol</span>
286
+ 00299 <span class="comment"> * Base header size: 8 bytes</span>
287
+ 00300 <span class="comment"> */</span>
288
+ 00301
289
+ 00302 <span class="comment">/*</span>
290
+ 00303 <span class="comment"> * For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.</span>
291
+ 00304 <span class="comment"> * Let's hope this one stays that way for a while!</span>
292
+ 00305 <span class="comment"> */</span>
293
+ 00306 <span class="preprocessor">#define LIBNET_PROTO_CDP 200</span>
294
+ 00307 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_cdp_hdr
295
+ 00308 {
296
+ 00309 u_int8_t cdp_version; <span class="comment">/* version (should always be 0x01) */</span>
297
+ 00310 u_int8_t cdp_ttl; <span class="comment">/* time reciever should hold info in this packet */</span>
298
+ 00311 u_int16_t cdp_sum; <span class="comment">/* checksum */</span>
299
+ 00312 u_int16_t cdp_type; <span class="comment">/* type */</span>
300
+ 00313 <span class="preprocessor">#define LIBNET_CDP_DEVID 0x1 </span><span class="comment">/* device id */</span>
301
+ 00314 <span class="preprocessor">#define LIBNET_CDP_ADDRESS 0x2 </span><span class="comment">/* address */</span>
302
+ 00315 <span class="preprocessor">#define LIBNET_CDP_PORTID 0x3 </span><span class="comment">/* port id */</span>
303
+ 00316 <span class="preprocessor">#define LIBNET_CDP_CAPABIL 0x4 </span><span class="comment">/* capabilities */</span>
304
+ 00317 <span class="preprocessor">#define LIBNET_CDP_VERSION 0x5 </span><span class="comment">/* version */</span>
305
+ 00318 <span class="preprocessor">#define LIBNET_CDP_PLATFORM 0x6 </span><span class="comment">/* platform */</span>
306
+ 00319 <span class="preprocessor">#define LIBNET_CDP_IPPREFIX 0x7 </span><span class="comment">/* ip prefix */</span>
307
+ 00320 u_int16_t cdp_len; <span class="comment">/* type + length + value */</span>
308
+ 00321 <span class="comment">/* value information done dynamically */</span>
309
+ 00322
310
+ 00323 <span class="comment">/* CDP capabilities */</span>
311
+ 00324 <span class="preprocessor">#define LIBNET_CDP_CAP_L3R 0x01</span><span class="comment">/* performs level 3 routing */</span>
312
+ 00325 <span class="preprocessor">#define LIBNET_CDP_CAP_L2B 0x02</span><span class="comment">/* performs level 2 transparent bridging */</span>
313
+ 00326 <span class="preprocessor">#define LIBNET_CDP_CAP_L2SRB 0x04</span><span class="comment">/* performs level 2 sourceroute bridging */</span>
314
+ 00327 <span class="preprocessor">#define LIBNET_CDP_CAP_L2S 0x08</span><span class="comment">/* performs level 2 switching */</span>
315
+ 00328 <span class="preprocessor">#define LIBNET_CDP_CAP_SR 0x10</span><span class="comment">/* sends and recieves packets on a network */</span>
316
+ 00329 <span class="preprocessor">#define LIBNET_CDP_CAP_NOI 0x20</span><span class="comment">/* does not forward IGMP on non-router ports */</span>
317
+ 00330 <span class="preprocessor">#define LIBNET_CDP_CAP_L1F 0x40</span><span class="comment">/* provides level 1 functionality */</span>
318
+ 00331 };
319
+ 00332
320
+ 00333
321
+ 00334 <span class="comment">/*</span>
322
+ 00335 <span class="comment"> * Used as an overlay for type/len/values</span>
323
+ 00336 <span class="comment"> */</span>
324
+ 00337 <span class="keyword">struct </span>libnet_cdp_value_hdr
325
+ 00338 {
326
+ 00339 u_int16_t cdp_type;
327
+ 00340 u_int16_t cdp_len;
328
+ 00341 };
329
+ 00342
330
+ 00343
331
+ 00344 <span class="comment">/*</span>
332
+ 00345 <span class="comment"> * DHCP header</span>
333
+ 00346 <span class="comment"> * Dynamic Host Configuration Protocol</span>
334
+ 00347 <span class="comment"> * Static header size: f0 bytes</span>
335
+ 00348 <span class="comment"> */</span>
336
+ 00349 <span class="keyword">struct </span>libnet_dhcpv4_hdr
337
+ 00350 {
338
+ 00351 u_int8_t dhcp_opcode; <span class="comment">/* opcode */</span>
339
+ 00352 <span class="preprocessor">#define LIBNET_DHCP_REQUEST 0x1</span>
340
+ 00353 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_REPLY 0x2</span>
341
+ 00354 <span class="preprocessor"></span> u_int8_t dhcp_htype; <span class="comment">/* hardware address type */</span>
342
+ 00355 u_int8_t dhcp_hlen; <span class="comment">/* hardware address length */</span>
343
+ 00356 u_int8_t dhcp_hopcount; <span class="comment">/* used by proxy servers */</span>
344
+ 00357 u_int32_t dhcp_xid; <span class="comment">/* transaction ID */</span>
345
+ 00358 u_int16_t dhcp_secs; <span class="comment">/* number of seconds since trying to bootstrap */</span>
346
+ 00359 u_int16_t dhcp_flags; <span class="comment">/* flags for DHCP, unused for BOOTP */</span>
347
+ 00360 u_int32_t dhcp_cip; <span class="comment">/* client's IP */</span>
348
+ 00361 u_int32_t dhcp_yip; <span class="comment">/* your IP */</span>
349
+ 00362 u_int32_t dhcp_sip; <span class="comment">/* server's IP */</span>
350
+ 00363 u_int32_t dhcp_gip; <span class="comment">/* gateway IP */</span>
351
+ 00364 u_int8_t dhcp_chaddr[16]; <span class="comment">/* client hardware address */</span>
352
+ 00365 u_int8_t dhcp_sname[64]; <span class="comment">/* server host name */</span>
353
+ 00366 u_int8_t dhcp_file[128]; <span class="comment">/* boot file name */</span>
354
+ 00367 u_int32_t dhcp_magic; <span class="comment">/* BOOTP magic header */</span>
355
+ 00368 <span class="preprocessor">#define DHCP_MAGIC 0x63825363</span>
356
+ 00369 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_BOOTP_MIN_LEN 0x12c</span>
357
+ 00370 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_PAD 0x00</span>
358
+ 00371 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SUBNETMASK 0x01</span>
359
+ 00372 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TIMEOFFSET 0x02</span>
360
+ 00373 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROUTER 0x03</span>
361
+ 00374 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TIMESERVER 0x04</span>
362
+ 00375 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NAMESERVER 0x05</span>
363
+ 00376 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DNS 0x06</span>
364
+ 00377 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LOGSERV 0x07</span>
365
+ 00378 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_COOKIESERV 0x08</span>
366
+ 00379 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LPRSERV 0x09</span>
367
+ 00380 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IMPSERV 0x0a</span>
368
+ 00381 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_RESSERV 0x0b</span>
369
+ 00382 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_HOSTNAME 0x0c</span>
370
+ 00383 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_BOOTFILESIZE 0x0d</span>
371
+ 00384 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DUMPFILE 0x0e</span>
372
+ 00385 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOMAINNAME 0x0f</span>
373
+ 00386 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SWAPSERV 0x10</span>
374
+ 00387 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROOTPATH 0x11</span>
375
+ 00388 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_EXTENPATH 0x12</span>
376
+ 00389 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IPFORWARD 0x13</span>
377
+ 00390 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SRCROUTE 0x14</span>
378
+ 00391 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_POLICYFILTER 0x15</span>
379
+ 00392 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MAXASMSIZE 0x16</span>
380
+ 00393 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IPTTL 0x17</span>
381
+ 00394 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUTIMEOUT 0x18</span>
382
+ 00395 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUTABLE 0x19</span>
383
+ 00396 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MTUSIZE 0x1a</span>
384
+ 00397 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LOCALSUBNETS 0x1b</span>
385
+ 00398 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_BROADCASTADDR 0x1c</span>
386
+ 00399 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOMASKDISCOV 0x1d</span>
387
+ 00400 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MASKSUPPLY 0x1e</span>
388
+ 00401 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DOROUTEDISC 0x1f</span>
389
+ 00402 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ROUTERSOLICIT 0x20</span>
390
+ 00403 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STATICROUTE 0x21</span>
391
+ 00404 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TRAILERENCAP 0x22</span>
392
+ 00405 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ARPTIMEOUT 0x23</span>
393
+ 00406 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_ETHERENCAP 0x24</span>
394
+ 00407 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPTTL 0x25</span>
395
+ 00408 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPKEEPALIVE 0x26</span>
396
+ 00409 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_TCPALIVEGARBAGE 0x27</span>
397
+ 00410 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISDOMAIN 0x28</span>
398
+ 00411 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISSERVERS 0x29</span>
399
+ 00412 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISTIMESERV 0x2a</span>
400
+ 00413 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_VENDSPECIFIC 0x2b</span>
401
+ 00414 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBNS 0x2c</span>
402
+ 00415 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBDD 0x2d</span>
403
+ 00416 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBTCPIP 0x2e</span>
404
+ 00417 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NBTCPSCOPE 0x2f</span>
405
+ 00418 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_XFONT 0x30</span>
406
+ 00419 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_XDISPLAYMGR 0x31</span>
407
+ 00420 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_DISCOVERADDR 0x32</span>
408
+ 00421 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_LEASETIME 0x33</span>
409
+ 00422 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_OPTIONOVERLOAD 0x34</span>
410
+ 00423 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MESSAGETYPE 0x35</span>
411
+ 00424 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SERVIDENT 0x36</span>
412
+ 00425 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_PARAMREQUEST 0x37</span>
413
+ 00426 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MESSAGE 0x38</span>
414
+ 00427 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MAXMSGSIZE 0x39</span>
415
+ 00428 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_RENEWTIME 0x3a</span>
416
+ 00429 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_REBINDTIME 0x3b</span>
417
+ 00430 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_CLASSSID 0x3c</span>
418
+ 00431 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_CLIENTID 0x3d</span>
419
+ 00432 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISPLUSDOMAIN 0x40</span>
420
+ 00433 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NISPLUSSERVERS 0x41</span>
421
+ 00434 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MOBILEIPAGENT 0x44</span>
422
+ 00435 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_SMTPSERVER 0x45</span>
423
+ 00436 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_POP3SERVER 0x46</span>
424
+ 00437 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_NNTPSERVER 0x47</span>
425
+ 00438 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_WWWSERVER 0x48</span>
426
+ 00439 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_FINGERSERVER 0x49</span>
427
+ 00440 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_IRCSERVER 0x4a</span>
428
+ 00441 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STSERVER 0x4b</span>
429
+ 00442 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_STDASERVER 0x4c</span>
430
+ 00443 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_END 0xff</span>
431
+ 00444 <span class="preprocessor"></span>
432
+ 00445 <span class="preprocessor">#define LIBNET_DHCP_MSGDISCOVER 0x01</span>
433
+ 00446 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGOFFER 0x02</span>
434
+ 00447 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGREQUEST 0x03</span>
435
+ 00448 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGDECLINE 0x04</span>
436
+ 00449 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGACK 0x05</span>
437
+ 00450 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGNACK 0x06</span>
438
+ 00451 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGRELEASE 0x07</span>
439
+ 00452 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_DHCP_MSGINFORM 0x08</span>
440
+ 00453 <span class="preprocessor"></span>};
441
+ 00454
442
+ 00455
443
+ 00456 <span class="comment">/*</span>
444
+ 00457 <span class="comment"> * Base DNSv4 header</span>
445
+ 00458 <span class="comment"> * Domain Name System</span>
446
+ 00459 <span class="comment"> * Base header size: 12/14 bytes</span>
447
+ 00460 <span class="comment"> */</span>
448
+ 00461 <span class="comment">/* this little guy got left out in the cold */</span>
449
+ 00462 <span class="preprocessor">#define LIBNET_DNS_H LIBNET_UDP_DNSV4_H</span>
450
+ 00463 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_dnsv4_hdr
451
+ 00464 {
452
+ 00465 u_int16_t h_len; <span class="comment">/* length of the packet - only used with TCP */</span>
453
+ 00466 u_int16_t id; <span class="comment">/* DNS packet ID */</span>
454
+ 00467 u_int16_t flags; <span class="comment">/* DNS flags */</span>
455
+ 00468 u_int16_t num_q; <span class="comment">/* Number of questions */</span>
456
+ 00469 u_int16_t num_answ_rr; <span class="comment">/* Number of answer resource records */</span>
457
+ 00470 u_int16_t num_auth_rr; <span class="comment">/* Number of authority resource records */</span>
458
+ 00471 u_int16_t num_addi_rr; <span class="comment">/* Number of additional resource records */</span>
459
+ 00472 };
460
+ 00473
461
+ 00474
462
+ 00475 <span class="comment">/*</span>
463
+ 00476 <span class="comment"> * Ethernet II header</span>
464
+ 00477 <span class="comment"> * Static header size: 14 bytes</span>
465
+ 00478 <span class="comment"> */</span>
466
+ 00479 <span class="keyword">struct </span>libnet_ethernet_hdr
467
+ 00480 {
468
+ 00481 u_int8_t ether_dhost[ETHER_ADDR_LEN];<span class="comment">/* destination ethernet address */</span>
469
+ 00482 u_int8_t ether_shost[ETHER_ADDR_LEN];<span class="comment">/* source ethernet address */</span>
470
+ 00483 u_int16_t ether_type; <span class="comment">/* protocol */</span>
471
+ 00484 };
472
+ 00485
473
+ 00486 <span class="preprocessor">#ifndef ETHERTYPE_PUP</span>
474
+ 00487 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_PUP 0x0200 </span><span class="comment">/* PUP protocol */</span>
475
+ 00488 <span class="preprocessor">#endif</span>
476
+ 00489 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_IP</span>
477
+ 00490 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_IP 0x0800 </span><span class="comment">/* IP protocol */</span>
478
+ 00491 <span class="preprocessor">#endif</span>
479
+ 00492 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_ARP</span>
480
+ 00493 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_ARP 0x0806 </span><span class="comment">/* addr. resolution protocol */</span>
481
+ 00494 <span class="preprocessor">#endif</span>
482
+ 00495 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_REVARP</span>
483
+ 00496 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_REVARP 0x8035 </span><span class="comment">/* reverse addr. resolution protocol */</span>
484
+ 00497 <span class="preprocessor">#endif</span>
485
+ 00498 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_VLAN</span>
486
+ 00499 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_VLAN 0x8100 </span><span class="comment">/* IEEE 802.1Q VLAN tagging */</span>
487
+ 00500 <span class="preprocessor">#endif</span>
488
+ 00501 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_EAP</span>
489
+ 00502 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_EAP 0x888e </span><span class="comment">/* IEEE 802.1X EAP authentication */</span>
490
+ 00503 <span class="preprocessor">#endif</span>
491
+ 00504 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_MPLS</span>
492
+ 00505 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_MPLS 0x8847 </span><span class="comment">/* MPLS */</span>
493
+ 00506 <span class="preprocessor">#endif</span>
494
+ 00507 <span class="preprocessor"></span><span class="preprocessor">#ifndef ETHERTYPE_LOOPBACK</span>
495
+ 00508 <span class="preprocessor"></span><span class="preprocessor">#define ETHERTYPE_LOOPBACK 0x9000 </span><span class="comment">/* used to test interfaces */</span>
496
+ 00509 <span class="preprocessor">#endif</span>
497
+ 00510 <span class="preprocessor"></span>
498
+ 00511 <span class="keyword">struct </span>libnet_ether_addr
499
+ 00512 {
500
+ 00513 u_int8_t ether_addr_octet[6]; <span class="comment">/* Ethernet address */</span>
501
+ 00514 };
502
+ 00515
503
+ 00516 <span class="comment">/*</span>
504
+ 00517 <span class="comment"> * Fiber Distributed Data Interface header</span>
505
+ 00518 <span class="comment"> *</span>
506
+ 00519 <span class="comment"> * Static header size: 21 bytes (LLC and 48-bit address addr only)</span>
507
+ 00520 <span class="comment"> *</span>
508
+ 00521 <span class="comment"> * Note: Organization field is 3 bytes which throws off the</span>
509
+ 00522 <span class="comment"> * alignment of type. Therefore fddi_type (19 bytes in) </span>
510
+ 00523 <span class="comment"> * is specified as two u_int8_ts.</span>
511
+ 00524 <span class="comment"> */</span>
512
+ 00525 <span class="keyword">struct </span>libnet_fddi_hdr
513
+ 00526 {
514
+ 00527 u_int8_t fddi_frame_control; <span class="comment">/* Class/Format/Priority */</span>
515
+ 00528 <span class="preprocessor">#define LIBNET_FDDI_LLC_FRAME 0x10</span>
516
+ 00529 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_FDDI_48BIT_ADDR 0x40</span>
517
+ 00530 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_FDDI_FC_REQD LIBNET_FDDI_LLC_FRAME | LIBNET_FDDI_48BIT_ADDR </span>
518
+ 00531 <span class="preprocessor"></span> u_int8_t fddi_dhost[FDDI_ADDR_LEN]; <span class="comment">/* destination fddi address */</span>
519
+ 00532 u_int8_t fddi_shost[FDDI_ADDR_LEN]; <span class="comment">/* source fddi address */</span>
520
+ 00533 u_int8_t fddi_llc_dsap; <span class="comment">/* DSAP */</span>
521
+ 00534 u_int8_t fddi_llc_ssap; <span class="comment">/* SSAP */</span>
522
+ 00535 u_int8_t fddi_llc_control_field; <span class="comment">/* Class/Format/Priority */</span>
523
+ 00536 u_int8_t fddi_llc_org_code[LIBNET_ORG_CODE_SIZE]; <span class="comment">/* Organization Code 3-bytes */</span>
524
+ 00537 u_int8_t fddi_type; <span class="comment">/* Protocol Type */</span>
525
+ 00538 u_int8_t fddi_type1; <span class="comment">/* see note above. */</span>
526
+ 00539 <span class="preprocessor">#define FDDI_TYPE_IP 0x0800 </span><span class="comment">/* IP protocol */</span>
527
+ 00540 <span class="preprocessor">#define FDDI_TYPE_ARP 0x0806 </span><span class="comment">/* addr. resolution protocol */</span>
528
+ 00541 <span class="preprocessor">#define FDDI_TYPE_REVARP 0x8035 </span><span class="comment">/* reverse addr. resolution protocol */</span>
529
+ 00542 };
530
+ 00543
531
+ 00544
532
+ 00545 <span class="keyword">struct </span>libnet_fddi_addr
533
+ 00546 {
534
+ 00547 u_int8_t fddi_addr_octet[6]; <span class="comment">/* FDDI address */</span>
535
+ 00548 };
536
+ 00549
537
+ 00550
538
+ 00551 <span class="comment">/*</span>
539
+ 00552 <span class="comment"> * GRE header - RFC 1701 &amp; 2637</span>
540
+ 00553 <span class="comment"> * Generic Routing Encapsulation (GRE) </span>
541
+ 00554 <span class="comment"> * Base header size: 4 bytes</span>
542
+ 00555 <span class="comment"> */</span>
543
+ 00556 <span class="keyword">struct </span>libnet_gre_hdr
544
+ 00557 {
545
+ 00558 u_int16_t flags_ver;
546
+ 00559 <span class="preprocessor">#define GRE_CSUM 0x8000</span>
547
+ 00560 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ROUTING 0x4000</span>
548
+ 00561 <span class="preprocessor"></span><span class="preprocessor">#define GRE_KEY 0x2000</span>
549
+ 00562 <span class="preprocessor"></span><span class="preprocessor">#define GRE_SEQ 0x1000</span>
550
+ 00563 <span class="preprocessor"></span><span class="preprocessor">#define GRE_STRICT 0x0800</span>
551
+ 00564 <span class="preprocessor"></span><span class="preprocessor">#define GRE_REC 0x0700</span>
552
+ 00565 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ACK 0x0080</span>
553
+ 00566 <span class="preprocessor"></span>
554
+ 00567 <span class="preprocessor">#define GRE_FLAGS_MASK 0x00F8</span>
555
+ 00568 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VERSION_MASK 0x0007</span>
556
+ 00569 <span class="preprocessor"></span>
557
+ 00570 <span class="preprocessor">#define GRE_VERSION_0 0x0000</span>
558
+ 00571 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VERSION_1 0x0001</span>
559
+ 00572 <span class="preprocessor"></span>
560
+ 00573 u_int16_t type;
561
+ 00574 <span class="preprocessor">#define GRE_SNA 0x0004</span>
562
+ 00575 <span class="preprocessor"></span><span class="preprocessor">#define GRE_OSI_NETWORK_LAYER 0x00FE</span>
563
+ 00576 <span class="preprocessor"></span><span class="preprocessor">#define GRE_PUP 0x0200</span>
564
+ 00577 <span class="preprocessor"></span><span class="preprocessor">#define GRE_XNS 0x0600</span>
565
+ 00578 <span class="preprocessor"></span><span class="preprocessor">#define GRE_IP 0x0800</span>
566
+ 00579 <span class="preprocessor"></span><span class="preprocessor">#define GRE_CHAOS 0x0804</span>
567
+ 00580 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RFC_826_ARP 0x0806</span>
568
+ 00581 <span class="preprocessor"></span><span class="preprocessor">#define GRE_FRAME_RELAY_ARP 0x0808</span>
569
+ 00582 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES 0x0BAD</span>
570
+ 00583 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES_ECHO 0x0BAE</span>
571
+ 00584 <span class="preprocessor"></span><span class="preprocessor">#define GRE_VINES_LOOPBACK 0x0BAF</span>
572
+ 00585 <span class="preprocessor"></span><span class="preprocessor">#define GRE_DECNET 0x6003</span>
573
+ 00586 <span class="preprocessor"></span><span class="preprocessor">#define GRE_TRANSPARENT_ETHERNET_BRIDGING 0x6558</span>
574
+ 00587 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RAW_FRAME_RELAY 0x6559</span>
575
+ 00588 <span class="preprocessor"></span><span class="preprocessor">#define GRE_APOLLO_DOMAIN 0x8019</span>
576
+ 00589 <span class="preprocessor"></span><span class="preprocessor">#define GRE_ETHERTALK 0x809B</span>
577
+ 00590 <span class="preprocessor"></span><span class="preprocessor">#define GRE_NOVELL_IPX 0x8137</span>
578
+ 00591 <span class="preprocessor"></span><span class="preprocessor">#define GRE_RFC_1144_TCP_IP_COMPRESSION 0x876B</span>
579
+ 00592 <span class="preprocessor"></span><span class="preprocessor">#define GRE_IP_AUTONOMOUS_SYSTEMS 0x876C</span>
580
+ 00593 <span class="preprocessor"></span><span class="preprocessor">#define GRE_SECURE_DATA 0x876D</span>
581
+ 00594 <span class="preprocessor"></span><span class="preprocessor">#define GRE_PPP 0x880b </span><span class="comment">/* taken from RFC 2637 */</span>
582
+ 00595
583
+ 00596 <span class="keyword">union </span>{
584
+ 00597 <span class="keyword">struct </span>{
585
+ 00598 u_int16_t sum; <span class="comment">/* optional */</span>
586
+ 00599 u_int16_t offset; <span class="comment">/* optional */</span>
587
+ 00600 u_int32_t key; <span class="comment">/* optional */</span>
588
+ 00601 u_int32_t seq; <span class="comment">/* optional */</span>
589
+ 00602 } _gre;
590
+ 00603
591
+ 00604 <span class="keyword">struct </span>{
592
+ 00605 u_int16_t payload_s; <span class="comment">/* optional */</span>
593
+ 00606 u_int16_t callID; <span class="comment">/* optional */</span>
594
+ 00607 u_int32_t seq; <span class="comment">/* optional */</span>
595
+ 00608 u_int32_t ack; <span class="comment">/* optional */</span>
596
+ 00609 } _egre;
597
+ 00610 }_data;
598
+ 00611
599
+ 00612 <span class="preprocessor">#define gre_sum _data._gre.sum</span>
600
+ 00613 <span class="preprocessor"></span><span class="preprocessor">#define gre_offset _data._gre.offset</span>
601
+ 00614 <span class="preprocessor"></span><span class="preprocessor">#define gre_key _data._gre.key</span>
602
+ 00615 <span class="preprocessor"></span><span class="preprocessor">#define gre_seq _data._gre.seq</span>
603
+ 00616 <span class="preprocessor"></span>
604
+ 00617 <span class="preprocessor">#define egre_payload_s _data._egre.payload_s</span>
605
+ 00618 <span class="preprocessor"></span><span class="preprocessor">#define egre_callID _data._egre.callID</span>
606
+ 00619 <span class="preprocessor"></span><span class="preprocessor">#define egre_seq _data._egre.seq</span>
607
+ 00620 <span class="preprocessor"></span><span class="preprocessor">#define egre_ack _data._egre.ack</span>
608
+ 00621 <span class="preprocessor"></span>};
609
+ 00622
610
+ 00623
611
+ 00624 <span class="preprocessor">#ifndef IPPROTO_GRE</span>
612
+ 00625 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_GRE 47</span>
613
+ 00626 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
614
+ 00627 <span class="preprocessor"></span>
615
+ 00628 <span class="comment">/*</span>
616
+ 00629 <span class="comment"> * Source Route Entries (SRE)</span>
617
+ 00630 <span class="comment"> * This is used for GRE as the Routing field is a list of SREs - RFC 1701</span>
618
+ 00631 <span class="comment"> * Base header size: 4 bytes</span>
619
+ 00632 <span class="comment"> */</span>
620
+ 00633 <span class="keyword">struct </span>libnet_gre_sre_hdr
621
+ 00634 {
622
+ 00635 u_int16_t af; <span class="comment">/* address familly */</span>
623
+ 00636 u_int8_t sre_offset;
624
+ 00637 u_int8_t sre_length;
625
+ 00638 u_int8_t *routing;
626
+ 00639 };
627
+ 00640
628
+ 00641
629
+ 00642 <span class="comment">/*</span>
630
+ 00643 <span class="comment"> * IPv4 header</span>
631
+ 00644 <span class="comment"> * Internet Protocol, version 4</span>
632
+ 00645 <span class="comment"> * Static header size: 20 bytes</span>
633
+ 00646 <span class="comment"> */</span>
634
+ 00647 <span class="keyword">struct </span>libnet_ipv4_hdr
635
+ 00648 {
636
+ 00649 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
637
+ 00650 <span class="preprocessor"></span> u_int8_t ip_hl:4, <span class="comment">/* header length */</span>
638
+ 00651 ip_v:4; <span class="comment">/* version */</span>
639
+ 00652 <span class="preprocessor">#endif</span>
640
+ 00653 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
641
+ 00654 <span class="preprocessor"></span> u_int8_t ip_v:4, <span class="comment">/* version */</span>
642
+ 00655 ip_hl:4; <span class="comment">/* header length */</span>
643
+ 00656 <span class="preprocessor">#endif</span>
644
+ 00657 <span class="preprocessor"></span> u_int8_t ip_tos; <span class="comment">/* type of service */</span>
645
+ 00658 <span class="preprocessor">#ifndef IPTOS_LOWDELAY</span>
646
+ 00659 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWDELAY 0x10</span>
647
+ 00660 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
648
+ 00661 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_THROUGHPUT</span>
649
+ 00662 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_THROUGHPUT 0x08</span>
650
+ 00663 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
651
+ 00664 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_RELIABILITY</span>
652
+ 00665 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_RELIABILITY 0x04</span>
653
+ 00666 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
654
+ 00667 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPTOS_LOWCOST</span>
655
+ 00668 <span class="preprocessor"></span><span class="preprocessor">#define IPTOS_LOWCOST 0x02</span>
656
+ 00669 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
657
+ 00670 <span class="preprocessor"></span> u_int16_t ip_len; <span class="comment">/* total length */</span>
658
+ 00671 u_int16_t ip_id; <span class="comment">/* identification */</span>
659
+ 00672 u_int16_t ip_off;
660
+ 00673 <span class="preprocessor">#ifndef IP_RF</span>
661
+ 00674 <span class="preprocessor"></span><span class="preprocessor">#define IP_RF 0x8000 </span><span class="comment">/* reserved fragment flag */</span>
662
+ 00675 <span class="preprocessor">#endif</span>
663
+ 00676 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_DF</span>
664
+ 00677 <span class="preprocessor"></span><span class="preprocessor">#define IP_DF 0x4000 </span><span class="comment">/* dont fragment flag */</span>
665
+ 00678 <span class="preprocessor">#endif</span>
666
+ 00679 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_MF</span>
667
+ 00680 <span class="preprocessor"></span><span class="preprocessor">#define IP_MF 0x2000 </span><span class="comment">/* more fragments flag */</span>
668
+ 00681 <span class="preprocessor">#endif </span>
669
+ 00682 <span class="preprocessor"></span><span class="preprocessor">#ifndef IP_OFFMASK</span>
670
+ 00683 <span class="preprocessor"></span><span class="preprocessor">#define IP_OFFMASK 0x1fff </span><span class="comment">/* mask for fragmenting bits */</span>
671
+ 00684 <span class="preprocessor">#endif</span>
672
+ 00685 <span class="preprocessor"></span> u_int8_t ip_ttl; <span class="comment">/* time to live */</span>
673
+ 00686 u_int8_t ip_p; <span class="comment">/* protocol */</span>
674
+ 00687 u_int16_t ip_sum; <span class="comment">/* checksum */</span>
675
+ 00688 <span class="keyword">struct </span>in_addr ip_src, ip_dst; <span class="comment">/* source and dest address */</span>
676
+ 00689 };
677
+ 00690
678
+ 00691 <span class="comment">/*</span>
679
+ 00692 <span class="comment"> * IP options</span>
680
+ 00693 <span class="comment"> */</span>
681
+ 00694 <span class="preprocessor">#ifndef IPOPT_EOL</span>
682
+ 00695 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_EOL 0 </span><span class="comment">/* end of option list */</span>
683
+ 00696 <span class="preprocessor">#endif</span>
684
+ 00697 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_NOP</span>
685
+ 00698 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_NOP 1 </span><span class="comment">/* no operation */</span>
686
+ 00699 <span class="preprocessor">#endif </span>
687
+ 00700 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_RR</span>
688
+ 00701 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_RR 7 </span><span class="comment">/* record packet route */</span>
689
+ 00702 <span class="preprocessor">#endif</span>
690
+ 00703 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_TS</span>
691
+ 00704 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_TS 68 </span><span class="comment">/* timestamp */</span>
692
+ 00705 <span class="preprocessor">#endif</span>
693
+ 00706 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SECURITY</span>
694
+ 00707 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SECURITY 130 </span><span class="comment">/* provide s,c,h,tcc */</span>
695
+ 00708 <span class="preprocessor">#endif</span>
696
+ 00709 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_LSRR</span>
697
+ 00710 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_LSRR 131 </span><span class="comment">/* loose source route */</span>
698
+ 00711 <span class="preprocessor">#endif</span>
699
+ 00712 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SATID</span>
700
+ 00713 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SATID 136 </span><span class="comment">/* satnet id */</span>
701
+ 00714 <span class="preprocessor">#endif</span>
702
+ 00715 <span class="preprocessor"></span><span class="preprocessor">#ifndef IPOPT_SSRR</span>
703
+ 00716 <span class="preprocessor"></span><span class="preprocessor">#define IPOPT_SSRR 137 </span><span class="comment">/* strict source route */</span>
704
+ 00717 <span class="preprocessor">#endif</span>
705
+ 00718 <span class="preprocessor"></span>
706
+ 00719 <span class="keyword">struct </span>libnet_in6_addr
707
+ 00720 {
708
+ 00721 <span class="keyword">union</span>
709
+ 00722 <span class="keyword"> </span>{
710
+ 00723 u_int8_t __u6_addr8[16];
711
+ 00724 u_int16_t __u6_addr16[8];
712
+ 00725 u_int32_t __u6_addr32[4];
713
+ 00726 } __u6_addr; <span class="comment">/* 128-bit IP6 address */</span>
714
+ 00727 };
715
+ 00728 <span class="preprocessor">#define libnet_s6_addr __u6_addr.__u6_addr8</span>
716
+ 00729 <span class="preprocessor"></span>
717
+ 00730 <span class="comment">/*</span>
718
+ 00731 <span class="comment"> * IPv6 header</span>
719
+ 00732 <span class="comment"> * Internet Protocol, version 6</span>
720
+ 00733 <span class="comment"> * Static header size: 40 bytes</span>
721
+ 00734 <span class="comment"> */</span>
722
+ 00735 <span class="keyword">struct </span>libnet_ipv6_hdr
723
+ 00736 {
724
+ 00737 u_int8_t ip_flags[4]; <span class="comment">/* version, traffic class, flow label */</span>
725
+ 00738 u_int16_t ip_len; <span class="comment">/* total length */</span>
726
+ 00739 u_int8_t ip_nh; <span class="comment">/* next header */</span>
727
+ 00740 u_int8_t ip_hl; <span class="comment">/* hop limit */</span>
728
+ 00741 <span class="keyword">struct </span>libnet_in6_addr ip_src, ip_dst; <span class="comment">/* source and dest address */</span>
729
+ 00742
730
+ 00743 };
731
+ 00744
732
+ 00745 <span class="comment">/*</span>
733
+ 00746 <span class="comment"> * IPv6 frag header</span>
734
+ 00747 <span class="comment"> * Internet Protocol, version 6</span>
735
+ 00748 <span class="comment"> * Static header size: 8 bytes</span>
736
+ 00749 <span class="comment"> */</span>
737
+ 00750 <span class="preprocessor">#define LIBNET_IPV6_NH_FRAGMENT 44</span>
738
+ 00751 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_frag_hdr
739
+ 00752 {
740
+ 00753 u_int8_t ip_nh; <span class="comment">/* next header */</span>
741
+ 00754 u_int8_t ip_reserved; <span class="comment">/* reserved */</span>
742
+ 00755 u_int16_t ip_frag; <span class="comment">/* fragmentation stuff */</span>
743
+ 00756 u_int32_t ip_id; <span class="comment">/* id */</span>
744
+ 00757 };
745
+ 00758
746
+ 00759 <span class="comment">/*</span>
747
+ 00760 <span class="comment"> * IPv6 routing header</span>
748
+ 00761 <span class="comment"> * Internet Protocol, version 6</span>
749
+ 00762 <span class="comment"> * Base header size: 4 bytes</span>
750
+ 00763 <span class="comment"> */</span>
751
+ 00764 <span class="preprocessor">#define LIBNET_IPV6_NH_ROUTING 43</span>
752
+ 00765 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_routing_hdr
753
+ 00766 {
754
+ 00767 u_int8_t ip_nh; <span class="comment">/* next header */</span>
755
+ 00768 u_int8_t ip_len; <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
756
+ 00769 u_int8_t ip_rtype; <span class="comment">/* routing type */</span>
757
+ 00770 u_int8_t ip_segments; <span class="comment">/* segments left */</span>
758
+ 00771 <span class="comment">/* routing information allocated dynamically */</span>
759
+ 00772 };
760
+ 00773
761
+ 00774 <span class="comment">/*</span>
762
+ 00775 <span class="comment"> * IPv6 destination options header</span>
763
+ 00776 <span class="comment"> * Internet Protocol, version 6</span>
764
+ 00777 <span class="comment"> * Base header size: 2 bytes</span>
765
+ 00778 <span class="comment"> */</span>
766
+ 00779 <span class="preprocessor">#define LIBNET_IPV6_NH_DESTOPTS 60</span>
767
+ 00780 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_destopts_hdr
768
+ 00781 {
769
+ 00782 u_int8_t ip_nh; <span class="comment">/* next header */</span>
770
+ 00783 u_int8_t ip_len; <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
771
+ 00784 <span class="comment">/* destination options information allocated dynamically */</span>
772
+ 00785 };
773
+ 00786
774
+ 00787 <span class="comment">/*</span>
775
+ 00788 <span class="comment"> * IPv6 hop by hop options header</span>
776
+ 00789 <span class="comment"> * Internet Protocol, version 6</span>
777
+ 00790 <span class="comment"> * Base header size: 2 bytes</span>
778
+ 00791 <span class="comment"> */</span>
779
+ 00792 <span class="preprocessor">#define LIBNET_IPV6_NH_HBH 0</span>
780
+ 00793 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ipv6_hbhopts_hdr
781
+ 00794 {
782
+ 00795 u_int8_t ip_nh; <span class="comment">/* next header */</span>
783
+ 00796 u_int8_t ip_len; <span class="comment">/* length of header in 8 octet units (sans 1st) */</span>
784
+ 00797 <span class="comment">/* destination options information allocated dynamically */</span>
785
+ 00798 };
786
+ 00799
787
+ 00800 <span class="comment">/*</span>
788
+ 00801 <span class="comment"> * ICMP6 header</span>
789
+ 00802 <span class="comment"> * Internet Control Message Protocol v6</span>
790
+ 00803 <span class="comment"> * Base header size: 8 bytes</span>
791
+ 00804 <span class="comment"> */</span>
792
+ 00805 <span class="preprocessor">#ifndef IPPROTO_ICMP6</span>
793
+ 00806 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_ICMP6 0x3a</span>
794
+ 00807 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
795
+ 00808 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_icmpv6_hdr
796
+ 00809 {
797
+ 00810 u_int8_t icmp_type; <span class="comment">/* ICMP type */</span>
798
+ 00811 <span class="preprocessor">#ifndef ICMP6_ECHO</span>
799
+ 00812 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_ECHO 128</span>
800
+ 00813 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
801
+ 00814 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_ECHOREPLY</span>
802
+ 00815 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_ECHOREPLY 129</span>
803
+ 00816 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
804
+ 00817 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_UNREACH</span>
805
+ 00818 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_UNREACH 1</span>
806
+ 00819 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
807
+ 00820 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_PKTTOOBIG</span>
808
+ 00821 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_PKTTOOBIG 2</span>
809
+ 00822 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
810
+ 00823 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_TIMXCEED</span>
811
+ 00824 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_TIMXCEED 3</span>
812
+ 00825 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
813
+ 00826 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP6_PARAMPROB</span>
814
+ 00827 <span class="preprocessor"></span><span class="preprocessor">#define ICMP6_PARAMPROB 4</span>
815
+ 00828 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
816
+ 00829 <span class="preprocessor"></span> u_int8_t icmp_code; <span class="comment">/* ICMP code */</span>
817
+ 00830 u_int16_t icmp_sum; <span class="comment">/* ICMP Checksum */</span>
818
+ 00831 u_int16_t id; <span class="comment">/* ICMP id */</span>
819
+ 00832 u_int16_t seq; <span class="comment">/* ICMP sequence number */</span>
820
+ 00833 };
821
+ 00834
822
+ 00835
823
+ 00836
824
+ 00837 <span class="comment">/*</span>
825
+ 00838 <span class="comment"> * ICMP header</span>
826
+ 00839 <span class="comment"> * Internet Control Message Protocol</span>
827
+ 00840 <span class="comment"> * Base header size: 4 bytes</span>
828
+ 00841 <span class="comment"> */</span>
829
+ 00842 <span class="keyword">struct </span>libnet_icmpv4_hdr
830
+ 00843 {
831
+ 00844 u_int8_t icmp_type; <span class="comment">/* ICMP type */</span>
832
+ 00845 <span class="preprocessor">#ifndef ICMP_ECHOREPLY</span>
833
+ 00846 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ECHOREPLY 0</span>
834
+ 00847 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
835
+ 00848 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH</span>
836
+ 00849 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH 3</span>
837
+ 00850 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
838
+ 00851 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_SOURCEQUENCH</span>
839
+ 00852 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_SOURCEQUENCH 4</span>
840
+ 00853 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
841
+ 00854 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT</span>
842
+ 00855 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT 5</span>
843
+ 00856 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
844
+ 00857 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_ECHO</span>
845
+ 00858 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ECHO 8</span>
846
+ 00859 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
847
+ 00860 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_ROUTERADVERT</span>
848
+ 00861 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ROUTERADVERT 9</span>
849
+ 00862 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
850
+ 00863 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_ROUTERSOLICIT</span>
851
+ 00864 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_ROUTERSOLICIT 10</span>
852
+ 00865 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
853
+ 00866 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TIMXCEED</span>
854
+ 00867 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TIMXCEED 11</span>
855
+ 00868 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
856
+ 00869 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_PARAMPROB</span>
857
+ 00870 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_PARAMPROB 12</span>
858
+ 00871 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
859
+ 00872 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TSTAMP</span>
860
+ 00873 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TSTAMP 13</span>
861
+ 00874 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
862
+ 00875 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TSTAMPREPLY</span>
863
+ 00876 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TSTAMPREPLY 14</span>
864
+ 00877 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
865
+ 00878 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_IREQ</span>
866
+ 00879 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_IREQ 15</span>
867
+ 00880 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
868
+ 00881 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_IREQREPLY</span>
869
+ 00882 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_IREQREPLY 16</span>
870
+ 00883 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
871
+ 00884 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_MASKREQ</span>
872
+ 00885 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_MASKREQ 17</span>
873
+ 00886 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
874
+ 00887 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_MASKREPLY</span>
875
+ 00888 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_MASKREPLY 18</span>
876
+ 00889 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
877
+ 00890 <span class="preprocessor"></span> u_int8_t icmp_code; <span class="comment">/* ICMP code */</span>
878
+ 00891 <span class="preprocessor">#ifndef ICMP_UNREACH_NET</span>
879
+ 00892 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NET 0</span>
880
+ 00893 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
881
+ 00894 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST</span>
882
+ 00895 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST 1</span>
883
+ 00896 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
884
+ 00897 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_PROTOCOL</span>
885
+ 00898 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_PROTOCOL 2</span>
886
+ 00899 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
887
+ 00900 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_PORT</span>
888
+ 00901 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_PORT 3</span>
889
+ 00902 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
890
+ 00903 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_NEEDFRAG</span>
891
+ 00904 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NEEDFRAG 4</span>
892
+ 00905 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
893
+ 00906 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_SRCFAIL</span>
894
+ 00907 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_SRCFAIL 5</span>
895
+ 00908 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
896
+ 00909 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_NET_UNKNOWN</span>
897
+ 00910 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NET_UNKNOWN 6</span>
898
+ 00911 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
899
+ 00912 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST_UNKNOWN</span>
900
+ 00913 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST_UNKNOWN 7</span>
901
+ 00914 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
902
+ 00915 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_ISOLATED</span>
903
+ 00916 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_ISOLATED 8</span>
904
+ 00917 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
905
+ 00918 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_NET_PROHIB</span>
906
+ 00919 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_NET_PROHIB 9</span>
907
+ 00920 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
908
+ 00921 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST_PROHIB</span>
909
+ 00922 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST_PROHIB 10</span>
910
+ 00923 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
911
+ 00924 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_TOSNET</span>
912
+ 00925 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_TOSNET 11</span>
913
+ 00926 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
914
+ 00927 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_TOSHOST</span>
915
+ 00928 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_TOSHOST 12</span>
916
+ 00929 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
917
+ 00930 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_FILTER_PROHIB</span>
918
+ 00931 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_FILTER_PROHIB 13</span>
919
+ 00932 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
920
+ 00933 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_HOST_PRECEDENCE</span>
921
+ 00934 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_HOST_PRECEDENCE 14</span>
922
+ 00935 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
923
+ 00936 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_UNREACH_PRECEDENCE_CUTOFF</span>
924
+ 00937 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15</span>
925
+ 00938 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
926
+ 00939 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_NET</span>
927
+ 00940 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_NET 0</span>
928
+ 00941 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
929
+ 00942 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_HOST</span>
930
+ 00943 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_HOST 1</span>
931
+ 00944 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
932
+ 00945 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_TOSNET</span>
933
+ 00946 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_TOSNET 2</span>
934
+ 00947 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
935
+ 00948 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_REDIRECT_TOSHOST</span>
936
+ 00949 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_REDIRECT_TOSHOST 3</span>
937
+ 00950 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
938
+ 00951 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TIMXCEED_INTRANS</span>
939
+ 00952 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TIMXCEED_INTRANS 0</span>
940
+ 00953 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
941
+ 00954 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_TIMXCEED_REASS</span>
942
+ 00955 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_TIMXCEED_REASS 1</span>
943
+ 00956 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
944
+ 00957 <span class="preprocessor"></span><span class="preprocessor">#ifndef ICMP_PARAMPROB_OPTABSENT</span>
945
+ 00958 <span class="preprocessor"></span><span class="preprocessor">#define ICMP_PARAMPROB_OPTABSENT 1</span>
946
+ 00959 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
947
+ 00960 <span class="preprocessor"></span>
948
+ 00961 u_int16_t icmp_sum; <span class="comment">/* ICMP Checksum */</span>
949
+ 00962
950
+ 00963 <span class="keyword">union</span>
951
+ 00964 <span class="keyword"> </span>{
952
+ 00965 <span class="keyword">struct</span>
953
+ 00966 <span class="keyword"> </span>{
954
+ 00967 u_int16_t id; <span class="comment">/* ICMP id */</span>
955
+ 00968 u_int16_t seq;<span class="comment">/* ICMP sequence number */</span>
956
+ 00969 } echo;
957
+ 00970
958
+ 00971 <span class="preprocessor">#undef icmp_id</span>
959
+ 00972 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_seq</span>
960
+ 00973 <span class="preprocessor"></span><span class="preprocessor">#define icmp_id hun.echo.id</span>
961
+ 00974 <span class="preprocessor"></span><span class="preprocessor">#define icmp_seq hun.echo.seq</span>
962
+ 00975 <span class="preprocessor"></span>
963
+ 00976 u_int32_t gateway; <span class="comment">/* gateway host */</span>
964
+ 00977 <span class="keyword">struct</span>
965
+ 00978 <span class="keyword"> </span>{
966
+ 00979 u_int16_t pad;<span class="comment">/* padding */</span>
967
+ 00980 u_int16_t mtu;<span class="comment">/* MTU size */</span>
968
+ 00981 } frag;
969
+ 00982 } hun;
970
+ 00983 <span class="keyword">union</span>
971
+ 00984 <span class="keyword"> </span>{
972
+ 00985 <span class="keyword">struct</span>
973
+ 00986 <span class="keyword"> </span>{
974
+ 00987 n_time its_otime;
975
+ 00988 n_time its_rtime;
976
+ 00989 n_time its_ttime;
977
+ 00990 } ts;
978
+ 00991 <span class="keyword">struct</span>
979
+ 00992 <span class="keyword"> </span>{
980
+ 00993 <span class="keyword">struct </span>libnet_ipv4_hdr idi_ip;
981
+ 00994 <span class="comment">/* options and then 64 bits of data */</span>
982
+ 00995 } ip;
983
+ 00996 u_int32_t mask;
984
+ 00997 int8_t data[1];
985
+ 00998
986
+ 00999 <span class="preprocessor">#undef icmp_mask</span>
987
+ 01000 <span class="preprocessor"></span><span class="preprocessor">#define icmp_mask dun.mask</span>
988
+ 01001 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_data</span>
989
+ 01002 <span class="preprocessor"></span><span class="preprocessor">#define icmp_data dun.data</span>
990
+ 01003 <span class="preprocessor"></span>
991
+ 01004 <span class="preprocessor">#undef icmp_otime</span>
992
+ 01005 <span class="preprocessor"></span><span class="preprocessor">#define icmp_otime dun.ts.its_otime</span>
993
+ 01006 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_rtime</span>
994
+ 01007 <span class="preprocessor"></span><span class="preprocessor">#define icmp_rtime dun.ts.its_rtime</span>
995
+ 01008 <span class="preprocessor"></span><span class="preprocessor">#undef icmp_ttime</span>
996
+ 01009 <span class="preprocessor"></span><span class="preprocessor">#define icmp_ttime dun.ts.its_ttime</span>
997
+ 01010 <span class="preprocessor"></span> }dun;
998
+ 01011 };
999
+ 01012
1000
+ 01013
1001
+ 01014 <span class="comment">/*</span>
1002
+ 01015 <span class="comment"> * IGMP header</span>
1003
+ 01016 <span class="comment"> * Internet Group Message Protocol</span>
1004
+ 01017 <span class="comment"> * Static header size: 8 bytes</span>
1005
+ 01018 <span class="comment"> */</span>
1006
+ 01019 <span class="keyword">struct </span>libnet_igmp_hdr
1007
+ 01020 {
1008
+ 01021 u_int8_t igmp_type; <span class="comment">/* IGMP type */</span>
1009
+ 01022 <span class="preprocessor">#ifndef IGMP_MEMBERSHIP_QUERY</span>
1010
+ 01023 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_MEMBERSHIP_QUERY 0x11 </span><span class="comment">/* membership query */</span>
1011
+ 01024 <span class="preprocessor">#endif</span>
1012
+ 01025 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_V1_MEMBERSHIP_REPORT</span>
1013
+ 01026 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_V1_MEMBERSHIP_REPORT 0x12 </span><span class="comment">/* Ver. 1 membership report */</span>
1014
+ 01027 <span class="preprocessor">#endif</span>
1015
+ 01028 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_V2_MEMBERSHIP_REPORT</span>
1016
+ 01029 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_V2_MEMBERSHIP_REPORT 0x16 </span><span class="comment">/* Ver. 2 membership report */</span>
1017
+ 01030 <span class="preprocessor">#endif</span>
1018
+ 01031 <span class="preprocessor"></span><span class="preprocessor">#ifndef IGMP_LEAVE_GROUP</span>
1019
+ 01032 <span class="preprocessor"></span><span class="preprocessor">#define IGMP_LEAVE_GROUP 0x17 </span><span class="comment">/* Leave-group message */</span>
1020
+ 01033 <span class="preprocessor">#endif</span>
1021
+ 01034 <span class="preprocessor"></span> u_int8_t igmp_code; <span class="comment">/* IGMP code */</span>
1022
+ 01035 u_int16_t igmp_sum; <span class="comment">/* IGMP checksum */</span>
1023
+ 01036 <span class="keyword">struct </span>in_addr igmp_group;<span class="comment">/* IGMP host IP */</span>
1024
+ 01037 };
1025
+ 01038
1026
+ 01039
1027
+ 01040 <span class="comment">/*</span>
1028
+ 01041 <span class="comment"> * IPSEC header</span>
1029
+ 01042 <span class="comment"> * Internet Protocol Security Protocol</span>
1030
+ 01043 <span class="comment"> * Encapsulating Security Payload Header Static header size: 12 bytes</span>
1031
+ 01044 <span class="comment"> * Encapsulating Security Payload Footer Base header size: 2 bytes</span>
1032
+ 01045 <span class="comment"> * Authentication Header Static Size: 16 bytes</span>
1033
+ 01046 <span class="comment"> */</span>
1034
+ 01047 <span class="preprocessor">#ifndef IPPROTO_ESP</span>
1035
+ 01048 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_ESP 50 </span><span class="comment">/* not everyone's got this */</span>
1036
+ 01049 <span class="preprocessor">#endif</span>
1037
+ 01050 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_esp_hdr
1038
+ 01051 {
1039
+ 01052 u_int32_t esp_spi; <span class="comment">/* security parameter index */</span>
1040
+ 01053 u_int32_t esp_seq; <span class="comment">/* ESP sequence number */</span>
1041
+ 01054 u_int32_t esp_iv; <span class="comment">/* initialization vector */</span>
1042
+ 01055 };
1043
+ 01056
1044
+ 01057 <span class="keyword">struct </span>libnet_esp_ftr
1045
+ 01058 {
1046
+ 01059 u_int8_t esp_pad_len; <span class="comment">/* padding length */</span>
1047
+ 01060 u_int8_t esp_nh; <span class="comment">/* next header pointer */</span>
1048
+ 01061 int8_t *esp_auth; <span class="comment">/* authentication data */</span>
1049
+ 01062 };
1050
+ 01063
1051
+ 01064 <span class="preprocessor">#ifndef IPPROTO_AH</span>
1052
+ 01065 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_AH 51 </span><span class="comment">/* not everyone's got this */</span>
1053
+ 01066 <span class="preprocessor">#endif</span>
1054
+ 01067 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_ah_hdr
1055
+ 01068 {
1056
+ 01069 u_int8_t ah_nh; <span class="comment">/* next header */</span>
1057
+ 01070 u_int8_t ah_len; <span class="comment">/* payload length */</span>
1058
+ 01071 u_int16_t ah_res; <span class="comment">/* reserved */</span>
1059
+ 01072 u_int32_t ah_spi; <span class="comment">/* security parameter index */</span>
1060
+ 01073 u_int32_t ah_seq; <span class="comment">/* AH sequence number */</span>
1061
+ 01074 u_int32_t ah_auth; <span class="comment">/* authentication data */</span>
1062
+ 01075 };
1063
+ 01076
1064
+ 01077
1065
+ 01078 <span class="comment">/*</span>
1066
+ 01079 <span class="comment"> * ISL header</span>
1067
+ 01080 <span class="comment"> * Cisco Inter-Switch Link</span>
1068
+ 01081 <span class="comment"> * Static header size: 26 bytes</span>
1069
+ 01082 <span class="comment"> */</span>
1070
+ 01083 <span class="comment">/*</span>
1071
+ 01084 <span class="comment"> * For checksum stuff -- IANA says 135-254 is "unassigned" as of 12.2001.</span>
1072
+ 01085 <span class="comment"> * Let's hope this one stays that way for a while!</span>
1073
+ 01086 <span class="comment"> */</span>
1074
+ 01087 <span class="preprocessor">#define LIBNET_PROTO_ISL 201</span>
1075
+ 01088 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_isl_hdr
1076
+ 01089 {
1077
+ 01090 u_int8_t isl_dhost[5]; <span class="comment">/* destination address "01:00:0c:00:00" */</span>
1078
+ 01091 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
1079
+ 01092 <span class="preprocessor"></span> u_int8_t isl_type:4, <span class="comment">/* type of frame */</span>
1080
+ 01093 isl_user:4; <span class="comment">/* user defined bits */</span>
1081
+ 01094 <span class="preprocessor">#endif</span>
1082
+ 01095 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
1083
+ 01096 <span class="preprocessor"></span> u_int8_t isl_user:4, <span class="comment">/* user defined bits */</span>
1084
+ 01097 isl_type:4; <span class="comment">/* type of frame */</span>
1085
+ 01098 <span class="preprocessor">#endif</span>
1086
+ 01099 <span class="preprocessor"></span> u_int8_t isl_shost[6]; <span class="comment">/* source address */</span>
1087
+ 01100 u_int16_t isl_len; <span class="comment">/* total length of packet - 18 bytes */</span>
1088
+ 01101 u_int8_t isl_snap[6]; <span class="comment">/* 0xaaaa03 + vendor code */</span>
1089
+ 01102 u_int16_t isl_vid; <span class="comment">/* 15 bit VLAN ID, 1 bit BPDU / CDP indicator */</span>
1090
+ 01103 u_int16_t isl_index; <span class="comment">/* port index */</span>
1091
+ 01104 u_int16_t isl_reserved; <span class="comment">/* used for FDDI and token ring */</span>
1092
+ 01105 <span class="comment">/* ethernet frame and 4 byte isl crc */</span>
1093
+ 01106 };
1094
+ 01107
1095
+ 01108 <span class="preprocessor">#ifndef IPPROTO_OSPF</span>
1096
+ 01109 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_OSPF 89 </span><span class="comment">/* not everyone's got this */</span>
1097
+ 01110 <span class="preprocessor">#endif</span>
1098
+ 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>
1099
+ 01112 <span class="preprocessor">#define LIBNET_MODX 4102 </span><span class="comment">/* used in LSA checksum */</span>
1100
+ 01113
1101
+ 01114 <span class="comment">/*</span>
1102
+ 01115 <span class="comment"> * Options used in multiple OSPF packets</span>
1103
+ 01116 <span class="comment"> * More info can be found in section A.2 of RFC 2328.</span>
1104
+ 01117 <span class="comment"> */</span>
1105
+ 01118 <span class="preprocessor">#define LIBNET_OPT_EBIT 0x02 </span><span class="comment">/* describes the way AS-external-LSAs are flooded */</span>
1106
+ 01119 <span class="preprocessor">#define LIBNET_OPT_MCBIT 0x04 </span><span class="comment">/* whether or not IP multicast dgrams are fwdd */</span>
1107
+ 01120 <span class="preprocessor">#define LIBNET_OPT_NPBIT 0x08 </span><span class="comment">/* describes handling of type-7 LSAs */</span>
1108
+ 01121 <span class="preprocessor">#define LIBNET_OPT_EABIT 0x10 </span><span class="comment">/* rtr's willingness to send/recv EA-LSAs */</span>
1109
+ 01122 <span class="preprocessor">#define LIBNET_OPT_DCBIT 0x20 </span><span class="comment">/* describes handling of demand circuits */</span>
1110
+ 01123
1111
+ 01124
1112
+ 01125 <span class="comment">/*</span>
1113
+ 01126 <span class="comment"> * MPLS header</span>
1114
+ 01127 <span class="comment"> * Multi-Protocol Label Switching</span>
1115
+ 01128 <span class="comment"> * Static header size: 4 bytes</span>
1116
+ 01129 <span class="comment"> */</span>
1117
+ 01130 <span class="keyword">struct </span>libnet_mpls_hdr
1118
+ 01131 {
1119
+ 01132 u_int32_t mpls_les; <span class="comment">/* 20 bits label, 3 bits exp, 1 bit bos, ttl */</span>
1120
+ 01133 <span class="preprocessor">#define LIBNET_MPLS_BOS_ON 1</span>
1121
+ 01134 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_MPLS_BOS_OFF 0</span>
1122
+ 01135 <span class="preprocessor"></span>};
1123
+ 01136
1124
+ 01137 <span class="comment">/*</span>
1125
+ 01138 <span class="comment"> * NTP header</span>
1126
+ 01139 <span class="comment"> * Network Time Protocol</span>
1127
+ 01140 <span class="comment"> * Static header size: 48 bytes</span>
1128
+ 01141 <span class="comment"> */</span>
1129
+ 01142 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp <span class="comment">/* int32_t floating point (64-bit) */</span>
1130
+ 01143 {
1131
+ 01144 u_int32_t integer; <span class="comment">/* integer */</span>
1132
+ 01145 u_int32_t fraction; <span class="comment">/* fraction */</span>
1133
+ 01146 };
1134
+ 01147
1135
+ 01148 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp <span class="comment">/* int16_t floating point (32-bit) */</span>
1136
+ 01149 {
1137
+ 01150 u_int16_t integer; <span class="comment">/* integer */</span>
1138
+ 01151 u_int16_t fraction; <span class="comment">/* fraction */</span>
1139
+ 01152 };
1140
+ 01153
1141
+ 01154
1142
+ 01155 <span class="keyword">struct </span>libnet_ntp_hdr
1143
+ 01156 {
1144
+ 01157 u_int8_t ntp_li_vn_mode; <span class="comment">/* leap indicator, version, mode */</span>
1145
+ 01158 <span class="preprocessor">#define LIBNET_NTP_LI_NW 0x0 </span><span class="comment">/* no warning */</span>
1146
+ 01159 <span class="preprocessor">#define LIBNET_NTP_LI_AS 0x1 </span><span class="comment">/* last minute has 61 seconds */</span>
1147
+ 01160 <span class="preprocessor">#define LIBNET_NTP_LI_DS 0x2 </span><span class="comment">/* last minute has 59 seconds */</span>
1148
+ 01161 <span class="preprocessor">#define LIBNET_NTP_LI_AC 0x3 </span><span class="comment">/* alarm condition */</span>
1149
+ 01162
1150
+ 01163 <span class="preprocessor">#define LIBNET_NTP_VN_2 0x2 </span><span class="comment">/* version 2 */</span>
1151
+ 01164 <span class="preprocessor">#define LIBNET_NTP_VN_3 0x3 </span><span class="comment">/* version 3 */</span>
1152
+ 01165 <span class="preprocessor">#define LIBNET_NTP_VN_4 0x4 </span><span class="comment">/* version 4 */</span>
1153
+ 01166
1154
+ 01167 <span class="preprocessor">#define LIBNET_NTP_MODE_R 0x0 </span><span class="comment">/* reserved */</span>
1155
+ 01168 <span class="preprocessor">#define LIBNET_NTP_MODE_A 0x1 </span><span class="comment">/* symmetric active */</span>
1156
+ 01169 <span class="preprocessor">#define LIBNET_NTP_MODE_P 0x2 </span><span class="comment">/* symmetric passive */</span>
1157
+ 01170 <span class="preprocessor">#define LIBNET_NTP_MODE_C 0x3 </span><span class="comment">/* client */</span>
1158
+ 01171 <span class="preprocessor">#define LIBNET_NTP_MODE_S 0x4 </span><span class="comment">/* server */</span>
1159
+ 01172 <span class="preprocessor">#define LIBNET_NTP_MODE_B 0x5 </span><span class="comment">/* broadcast */</span>
1160
+ 01173 <span class="preprocessor">#define LIBNET_NTP_MODE_RC 0x6 </span><span class="comment">/* reserved for NTP control message */</span>
1161
+ 01174 <span class="preprocessor">#define LIBNET_NTP_MODE_RP 0x7 </span><span class="comment">/* reserved for private use */</span>
1162
+ 01175 u_int8_t ntp_stratum; <span class="comment">/* stratum */</span>
1163
+ 01176 <span class="preprocessor">#define LIBNET_NTP_STRATUM_UNAVAIL 0x0 </span><span class="comment">/* unspecified or unavailable */</span>
1164
+ 01177 <span class="preprocessor">#define LIBNET_NTP_STRATUM_PRIMARY 0x1 </span><span class="comment">/* primary reference (radio clock) */</span>
1165
+ 01178 <span class="comment">/* 2 - 15 is secondary */</span>
1166
+ 01179 <span class="comment">/* 16 - 255 is reserved */</span>
1167
+ 01180 u_int8_t ntp_poll; <span class="comment">/* poll interval (should be 4 - 12) */</span>
1168
+ 01181 u_int8_t ntp_precision; <span class="comment">/* local clock precision */</span>
1169
+ 01182 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp ntp_delay; <span class="comment">/* roundtrip delay */</span>
1170
+ 01183 <span class="keyword">struct </span>libnet_ntp_hdr_s_fp ntp_dispersion; <span class="comment">/* nominal error */</span>
1171
+ 01184 u_int32_t ntp_reference_id; <span class="comment">/* reference source id */</span>
1172
+ 01185 <span class="preprocessor">#define LIBNET_NTP_REF_LOCAL 0x4c4f434c </span><span class="comment">/* uncalibrated local clock */</span>
1173
+ 01186 <span class="preprocessor">#define LIBNET_NTP_REF_PPS 0x50505300 </span><span class="comment">/* atomic / pulse-per-second clock */</span>
1174
+ 01187 <span class="preprocessor">#define LIBNET_NTP_REF_ACTS 0x41435453 </span><span class="comment">/* NIST dialup modem */</span>
1175
+ 01188 <span class="preprocessor">#define LIBNET_NTP_REF_USNO 0x55534e4f </span><span class="comment">/* USNO modem service */</span>
1176
+ 01189 <span class="preprocessor">#define LIBNET_NTP_REF_PTB 0x50544200 </span><span class="comment">/* PTB (German) modem service */</span>
1177
+ 01190 <span class="preprocessor">#define LIBNET_NTP_REF_TDF 0x54444600 </span><span class="comment">/* Allouis (French) radio */</span>
1178
+ 01191 <span class="preprocessor">#define LIBNET_NTP_REF_DCF 0x44434600 </span><span class="comment">/* Mainflingen (German) radio */</span>
1179
+ 01192 <span class="preprocessor">#define LIBNET_NTP_REF_MSF 0x4d534600 </span><span class="comment">/* Rugby (UK) radio */</span>
1180
+ 01193 <span class="preprocessor">#define LIBNET_NTP_REF_WWV 0x57575600 </span><span class="comment">/* Ft Collins (US) radio */</span>
1181
+ 01194 <span class="preprocessor">#define LIBNET_NTP_REF_WWVB 0x57575642 </span><span class="comment">/* Boulder (US) radio */</span>
1182
+ 01195 <span class="preprocessor">#define LIBNET_NTP_REF_WWVH 0x57575648 </span><span class="comment">/* Kaui Hawaii (US) radio */</span>
1183
+ 01196 <span class="preprocessor">#define LIBNET_NTP_REF_CHU 0x43485500 </span><span class="comment">/* Ottaha (Canada) radio */</span>
1184
+ 01197 <span class="preprocessor">#define LIBNET_NTP_REF_LORC 0x4c4f5243 </span><span class="comment">/* LORAN-C radionavigation */</span>
1185
+ 01198 <span class="preprocessor">#define LIBNET_NTP_REF_OMEG 0x4f4d4547 </span><span class="comment">/* OMEGA radionavigation */</span>
1186
+ 01199 <span class="preprocessor">#define LIBNET_NTP_REF_GPS 0x47505300 </span><span class="comment">/* global positioning system */</span>
1187
+ 01200 <span class="preprocessor">#define LIBNET_NTP_REF_GOES 0x474f4553 </span><span class="comment">/* geostationary orbit env satellite */</span>
1188
+ 01201 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_ref_ts; <span class="comment">/* reference timestamp */</span>
1189
+ 01202 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_orig_ts; <span class="comment">/* originate timestamp */</span>
1190
+ 01203 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_rec_ts; <span class="comment">/* receive timestamp */</span>
1191
+ 01204 <span class="keyword">struct </span>libnet_ntp_hdr_l_fp ntp_xmt_ts; <span class="comment">/* transmit timestamp */</span>
1192
+ 01205 };
1193
+ 01206
1194
+ 01207
1195
+ 01208 <span class="comment">/*</span>
1196
+ 01209 <span class="comment"> * OSPFv2 header</span>
1197
+ 01210 <span class="comment"> * Open Shortest Path First</span>
1198
+ 01211 <span class="comment"> * Static header size: 16 bytes</span>
1199
+ 01212 <span class="comment"> */</span>
1200
+ 01213 <span class="keyword">struct </span>libnet_ospf_hdr
1201
+ 01214 {
1202
+ 01215 u_int8_t ospf_v; <span class="comment">/* version */</span>
1203
+ 01216 <span class="preprocessor">#define OSPFVERSION 2</span>
1204
+ 01217 <span class="preprocessor"></span> u_int8_t ospf_type; <span class="comment">/* type */</span>
1205
+ 01218 <span class="preprocessor">#define LIBNET_OSPF_UMD 0 </span><span class="comment">/* UMd monitoring packet */</span>
1206
+ 01219 <span class="preprocessor">#define LIBNET_OSPF_HELLO 1 </span><span class="comment">/* HELLO packet */</span>
1207
+ 01220 <span class="preprocessor">#define LIBNET_OSPF_DBD 2 </span><span class="comment">/* dataBase description packet */</span>
1208
+ 01221 <span class="preprocessor">#define LIBNET_OSPF_LSR 3 </span><span class="comment">/* link state request packet */</span>
1209
+ 01222 <span class="preprocessor">#define LIBNET_OSPF_LSU 4 </span><span class="comment">/* link state Update Packet */</span>
1210
+ 01223 <span class="preprocessor">#define LIBNET_OSPF_LSA 5 </span><span class="comment">/* link state acknowledgement packet */</span>
1211
+ 01224 u_int16_t ospf_len; <span class="comment">/* length */</span>
1212
+ 01225 <span class="keyword">struct </span>in_addr ospf_rtr_id; <span class="comment">/* source router ID */</span>
1213
+ 01226 <span class="keyword">struct </span>in_addr ospf_area_id;<span class="comment">/* roam ID */</span>
1214
+ 01227 u_int16_t ospf_sum; <span class="comment">/* checksum */</span>
1215
+ 01228 u_int16_t ospf_auth_type; <span class="comment">/* authentication type */</span>
1216
+ 01229 <span class="preprocessor">#define LIBNET_OSPF_AUTH_NULL 0 </span><span class="comment">/* null password */</span>
1217
+ 01230 <span class="preprocessor">#define LIBNET_OSPF_AUTH_SIMPLE 1 </span><span class="comment">/* simple, plaintext, 8 int8_t password */</span>
1218
+ 01231 <span class="preprocessor">#define LIBNET_OSPF_AUTH_MD5 2 </span><span class="comment">/* MD5 */</span>
1219
+ 01232 };
1220
+ 01233
1221
+ 01234
1222
+ 01235 <span class="comment">/*</span>
1223
+ 01236 <span class="comment"> * OSPF authentication header</span>
1224
+ 01237 <span class="comment"> * Open Shortest Path First</span>
1225
+ 01238 <span class="comment"> * Static header size: 8 bytes</span>
1226
+ 01239 <span class="comment"> */</span>
1227
+ 01240 <span class="keyword">struct </span>libnet_auth_hdr
1228
+ 01241 {
1229
+ 01242 u_int16_t ospf_auth_null; <span class="comment">/* NULL */</span>
1230
+ 01243 u_int8_t ospf_auth_keyid; <span class="comment">/* authentication key ID */</span>
1231
+ 01244 u_int8_t ospf_auth_len; <span class="comment">/* auth data length */</span>
1232
+ 01245 u_int ospf_auth_seq; <span class="comment">/* cryptographic sequence number */</span>
1233
+ 01246 };
1234
+ 01247
1235
+ 01248
1236
+ 01249 <span class="comment">/*</span>
1237
+ 01250 <span class="comment"> * OSPF hello header</span>
1238
+ 01251 <span class="comment"> * Open Shortest Path First</span>
1239
+ 01252 <span class="comment"> * Static header size: 28 bytes</span>
1240
+ 01253 <span class="comment"> */</span>
1241
+ 01254 <span class="keyword">struct </span>libnet_ospf_hello_hdr
1242
+ 01255 {
1243
+ 01256 <span class="keyword">struct </span>in_addr hello_nmask; <span class="comment">/* netmask associated with the interface */</span>
1244
+ 01257 u_int16_t hello_intrvl; <span class="comment">/* num of seconds between routers last packet */</span>
1245
+ 01258 u_int8_t hello_opts; <span class="comment">/* Options for HELLO packets (look above) */</span>
1246
+ 01259 u_int8_t hello_rtr_pri; <span class="comment">/* router's priority (if 0, can't be backup) */</span>
1247
+ 01260 u_int hello_dead_intvl; <span class="comment">/* # of secs a router is silent till deemed down */</span>
1248
+ 01261 <span class="keyword">struct </span>in_addr hello_des_rtr; <span class="comment">/* Designated router on the network */</span>
1249
+ 01262 <span class="keyword">struct </span>in_addr hello_bkup_rtr; <span class="comment">/* Backup router */</span>
1250
+ 01263 <span class="keyword">struct </span>in_addr hello_nbr; <span class="comment">/* neighbor router, memcpy more as needed */</span>
1251
+ 01264 };
1252
+ 01265
1253
+ 01266
1254
+ 01267 <span class="comment">/*</span>
1255
+ 01268 <span class="comment"> * Database Description header.</span>
1256
+ 01269 <span class="comment"> */</span>
1257
+ 01270 <span class="keyword">struct </span>libnet_dbd_hdr
1258
+ 01271 {
1259
+ 01272 u_int16_t dbd_mtu_len; <span class="comment">/* max length of IP dgram that this 'if' can use */</span>
1260
+ 01273 u_int8_t dbd_opts; <span class="comment">/* DBD packet options (from above) */</span>
1261
+ 01274 u_int8_t dbd_type; <span class="comment">/* type of exchange occurring */</span>
1262
+ 01275 <span class="preprocessor">#define LIBNET_DBD_IBI 0x01 </span><span class="comment">/* init */</span>
1263
+ 01276 <span class="preprocessor">#define LIBNET_DBD_MBIT 0x02 </span><span class="comment">/* more DBD packets are to come */</span>
1264
+ 01277 <span class="preprocessor">#define LIBNET_DBD_MSBIT 0x04 </span><span class="comment">/* If 1, sender is the master in the exchange */</span>
1265
+ 01278 u_int dbd_seq; <span class="comment">/* DBD sequence number */</span>
1266
+ 01279 };
1267
+ 01280
1268
+ 01281
1269
+ 01282 <span class="comment">/*</span>
1270
+ 01283 <span class="comment"> * used for the LS type field in all LS* headers</span>
1271
+ 01284 <span class="comment"> */</span>
1272
+ 01285 <span class="preprocessor">#define LIBNET_LS_TYPE_RTR 1 </span><span class="comment">/* router-LSA */</span>
1273
+ 01286 <span class="preprocessor">#define LIBNET_LS_TYPE_NET 2 </span><span class="comment">/* network-LSA */</span>
1274
+ 01287 <span class="preprocessor">#define LIBNET_LS_TYPE_IP 3 </span><span class="comment">/* summary-LSA (IP Network) */</span>
1275
+ 01288 <span class="preprocessor">#define LIBNET_LS_TYPE_ASBR 4 </span><span class="comment">/* summary-LSA (ASBR) */</span>
1276
+ 01289 <span class="preprocessor">#define LIBNET_LS_TYPE_ASEXT 5 </span><span class="comment">/* AS-external-LSA */</span>
1277
+ 01290
1278
+ 01291
1279
+ 01292 <span class="comment">/*</span>
1280
+ 01293 <span class="comment"> * Link State Request header</span>
1281
+ 01294 <span class="comment"> */</span>
1282
+ 01295 <span class="keyword">struct </span>libnet_lsr_hdr
1283
+ 01296 {
1284
+ 01297 u_int lsr_type; <span class="comment">/* type of LS being requested */</span>
1285
+ 01298 u_int lsr_lsid; <span class="comment">/* link state ID */</span>
1286
+ 01299 <span class="keyword">struct </span>in_addr lsr_adrtr; <span class="comment">/* advertising router (memcpy more as needed) */</span>
1287
+ 01300 };
1288
+ 01301
1289
+ 01302
1290
+ 01303 <span class="comment">/*</span>
1291
+ 01304 <span class="comment"> * Link State Update header</span>
1292
+ 01305 <span class="comment"> */</span>
1293
+ 01306 <span class="keyword">struct </span>libnet_lsu_hdr
1294
+ 01307 {
1295
+ 01308 u_int lsu_num; <span class="comment">/* number of LSAs that will be broadcasted */</span>
1296
+ 01309 };
1297
+ 01310
1298
+ 01311
1299
+ 01312 <span class="comment">/*</span>
1300
+ 01313 <span class="comment"> * Link State Acknowledgement header.</span>
1301
+ 01314 <span class="comment"> */</span>
1302
+ 01315 <span class="keyword">struct </span>libnet_lsa_hdr
1303
+ 01316 {
1304
+ 01317 u_int16_t lsa_age; <span class="comment">/* time in seconds since the LSA was originated */</span>
1305
+ 01318 u_int8_t lsa_opts; <span class="comment">/* look above for OPTS_* */</span>
1306
+ 01319 u_int8_t lsa_type; <span class="comment">/* look below for LS_TYPE_* */</span>
1307
+ 01320 u_int lsa_id; <span class="comment">/* link State ID */</span>
1308
+ 01321 <span class="keyword">struct </span>in_addr lsa_adv; <span class="comment">/* router ID of Advertising router */</span>
1309
+ 01322 u_int lsa_seq; <span class="comment">/* LSA sequence number to detect old/bad ones */</span>
1310
+ 01323 u_int16_t lsa_sum; <span class="comment">/* "Fletcher Checksum" of all fields minus age */</span>
1311
+ 01324 u_int16_t lsa_len; <span class="comment">/* length in bytes including the 20 byte header */</span>
1312
+ 01325 };
1313
+ 01326
1314
+ 01327
1315
+ 01328 <span class="comment">/*</span>
1316
+ 01329 <span class="comment"> * Router LSA data format</span>
1317
+ 01330 <span class="comment"> *</span>
1318
+ 01331 <span class="comment"> * Other stuff for TOS can be added for backward compatability, for this</span>
1319
+ 01332 <span class="comment"> * version, only OSPFv2 is being FULLY supported.</span>
1320
+ 01333 <span class="comment"> */</span>
1321
+ 01334 <span class="keyword">struct </span>libnet_rtr_lsa_hdr
1322
+ 01335 {
1323
+ 01336 u_int16_t rtr_flags; <span class="comment">/* set to help describe packet */</span>
1324
+ 01337 <span class="preprocessor">#define LIBNET_RTR_FLAGS_W 0x0100 </span><span class="comment">/* W bit */</span>
1325
+ 01338 <span class="preprocessor">#define LIBNET_RTR_FLAGS_E 0x0200 </span><span class="comment">/* E bit */</span>
1326
+ 01339 <span class="preprocessor">#define LIBNET_RTR_FLAGS_B 0x0400 </span><span class="comment">/* B bit */</span>
1327
+ 01340 u_int16_t rtr_num; <span class="comment">/* number of links within that packet */</span>
1328
+ 01341 u_int rtr_link_id; <span class="comment">/* describes link_data (look below) */</span>
1329
+ 01342 <span class="preprocessor">#define LIBNET_LINK_ID_NBR_ID 1 </span><span class="comment">/* Neighbors router ID, also can be 4 */</span>
1330
+ 01343 <span class="preprocessor">#define LIBNET_LINK_ID_IP_DES 2 </span><span class="comment">/* IP address of designated router */</span>
1331
+ 01344 <span class="preprocessor">#define LIBNET_LINK_ID_SUB 3 </span><span class="comment">/* IP subnet number */</span>
1332
+ 01345 u_int rtr_link_data; <span class="comment">/* Depending on link_id, info is here */</span>
1333
+ 01346 u_int8_t rtr_type; <span class="comment">/* Description of router link */</span>
1334
+ 01347 <span class="preprocessor">#define LIBNET_RTR_TYPE_PTP 1 </span><span class="comment">/* Point-To-Point */</span>
1335
+ 01348 <span class="preprocessor">#define LIBNET_RTR_TYPE_TRANS 2 </span><span class="comment">/* Connection to a "transit network" */</span>
1336
+ 01349 <span class="preprocessor">#define LIBNET_RTR_TYPE_STUB 3 </span><span class="comment">/* Connectin to a "stub network" */</span>
1337
+ 01350 <span class="preprocessor">#define RTR_TYPE_VRTL 4 </span><span class="comment">/* connects to a "virtual link" */</span>
1338
+ 01351 u_int8_t rtr_tos_num; <span class="comment">/* number of different TOS metrics for this link */</span>
1339
+ 01352 u_int16_t rtr_metric; <span class="comment">/* the "cost" of using this link */</span>
1340
+ 01353 };
1341
+ 01354
1342
+ 01355
1343
+ 01356 <span class="comment">/*</span>
1344
+ 01357 <span class="comment"> * Network LSA data format.</span>
1345
+ 01358 <span class="comment"> */</span>
1346
+ 01359 <span class="keyword">struct </span>libnet_net_lsa_hdr
1347
+ 01360 {
1348
+ 01361 <span class="keyword">struct </span>in_addr net_nmask; <span class="comment">/* Netmask for that network */</span>
1349
+ 01362 u_int net_rtr_id; <span class="comment">/* ID of router attached to that network */</span>
1350
+ 01363 };
1351
+ 01364
1352
+ 01365
1353
+ 01366 <span class="comment">/*</span>
1354
+ 01367 <span class="comment"> * Summary LSA data format.</span>
1355
+ 01368 <span class="comment"> */</span>
1356
+ 01369 <span class="keyword">struct </span>libnet_sum_lsa_hdr
1357
+ 01370 {
1358
+ 01371 <span class="keyword">struct </span>in_addr sum_nmask; <span class="comment">/* Netmask of destination IP address */</span>
1359
+ 01372 u_int sum_metric; <span class="comment">/* Same as in rtr_lsa (&amp;0xfff to use last 24bit */</span>
1360
+ 01373 u_int sum_tos_metric; <span class="comment">/* first 8bits are TOS, 24bits are TOS Metric */</span>
1361
+ 01374 };
1362
+ 01375
1363
+ 01376
1364
+ 01377 <span class="comment">/*</span>
1365
+ 01378 <span class="comment"> * AS External LSA data format.</span>
1366
+ 01379 <span class="comment"> * &amp; 0xfff logic operator for as_metric to get last 24bits.</span>
1367
+ 01380 <span class="comment"> */</span>
1368
+ 01381 <span class="keyword">struct </span>libnet_as_lsa_hdr
1369
+ 01382 {
1370
+ 01383 <span class="keyword">struct </span>in_addr as_nmask; <span class="comment">/* Netmask for advertised destination */</span>
1371
+ 01384 u_int as_metric; <span class="comment">/* May have to set E bit in first 8bits */</span>
1372
+ 01385 <span class="preprocessor">#define LIBNET_AS_E_BIT_ON 0x80000000 </span><span class="comment">/* as_metric */</span>
1373
+ 01386 <span class="keyword">struct </span>in_addr as_fwd_addr; <span class="comment">/* Forwarding address */</span>
1374
+ 01387 u_int as_rte_tag; <span class="comment">/* External route tag */</span>
1375
+ 01388 };
1376
+ 01389
1377
+ 01390
1378
+ 01391 <span class="comment">/*</span>
1379
+ 01392 <span class="comment"> * Base RIP header</span>
1380
+ 01393 <span class="comment"> * Routing Information Protocol</span>
1381
+ 01394 <span class="comment"> * Base header size: 24 bytes</span>
1382
+ 01395 <span class="comment"> */</span>
1383
+ 01396 <span class="keyword">struct </span>libnet_rip_hdr
1384
+ 01397 {
1385
+ 01398 u_int8_t rip_cmd; <span class="comment">/* RIP command */</span>
1386
+ 01399 <span class="preprocessor">#define RIPCMD_REQUEST 1 </span><span class="comment">/* want info */</span>
1387
+ 01400 <span class="preprocessor">#define RIPCMD_RESPONSE 2 </span><span class="comment">/* responding to request */</span>
1388
+ 01401 <span class="preprocessor">#define RIPCMD_TRACEON 3 </span><span class="comment">/* turn tracing on */</span>
1389
+ 01402 <span class="preprocessor">#define RIPCMD_TRACEOFF 4 </span><span class="comment">/* turn it off */</span>
1390
+ 01403 <span class="preprocessor">#define RIPCMD_POLL 5 </span><span class="comment">/* like request, but anyone answers */</span>
1391
+ 01404 <span class="preprocessor">#define RIPCMD_POLLENTRY 6 </span><span class="comment">/* like poll, but for entire entry */</span>
1392
+ 01405 <span class="preprocessor">#define RIPCMD_MAX 7 </span><span class="comment">/* ? command */</span>
1393
+ 01406 u_int8_t rip_ver; <span class="comment">/* RIP version */</span>
1394
+ 01407 <span class="preprocessor">#define RIPVER_0 0</span>
1395
+ 01408 <span class="preprocessor"></span><span class="preprocessor">#define RIPVER_1 1</span>
1396
+ 01409 <span class="preprocessor"></span><span class="preprocessor">#define RIPVER_2 2</span>
1397
+ 01410 <span class="preprocessor"></span> u_int16_t rip_rd; <span class="comment">/* Zero (v1) or Routing Domain (v2) */</span>
1398
+ 01411 u_int16_t rip_af; <span class="comment">/* Address family */</span>
1399
+ 01412 u_int16_t rip_rt; <span class="comment">/* Zero (v1) or Route Tag (v2) */</span>
1400
+ 01413 u_int32_t rip_addr; <span class="comment">/* IP address */</span>
1401
+ 01414 u_int32_t rip_mask; <span class="comment">/* Zero (v1) or Subnet Mask (v2) */</span>
1402
+ 01415 u_int32_t rip_next_hop; <span class="comment">/* Zero (v1) or Next hop IP address (v2) */</span>
1403
+ 01416 u_int32_t rip_metric; <span class="comment">/* Metric */</span>
1404
+ 01417 };
1405
+ 01418
1406
+ 01419 <span class="comment">/*</span>
1407
+ 01420 <span class="comment"> * RPC headers</span>
1408
+ 01421 <span class="comment"> * Remote Procedure Call</span>
1409
+ 01422 <span class="comment"> */</span>
1410
+ 01423 <span class="preprocessor">#define LIBNET_RPC_CALL 0</span>
1411
+ 01424 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_REPLY 1</span>
1412
+ 01425 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_VERS 2</span>
1413
+ 01426 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_RPC_LAST_FRAG 0x80000000</span>
1414
+ 01427 <span class="preprocessor"></span>
1415
+ 01428 <span class="comment">/*</span>
1416
+ 01429 <span class="comment"> * Portmap defines</span>
1417
+ 01430 <span class="comment"> */</span>
1418
+ 01431 <span class="preprocessor">#define LIBNET_PMAP_PROGRAM 100000</span>
1419
+ 01432 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_NULL 0</span>
1420
+ 01433 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_SET 1</span>
1421
+ 01434 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_UNSET 2</span>
1422
+ 01435 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETADDR 3</span>
1423
+ 01436 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_DUMP 4</span>
1424
+ 01437 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_CALLIT 5</span>
1425
+ 01438 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_BCAST 5 </span><span class="comment">/* Not a typo */</span>
1426
+ 01439 <span class="preprocessor">#define LIBNET_PMAP_PROC_GETTIME 6</span>
1427
+ 01440 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_UADDR2TADDR 7</span>
1428
+ 01441 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_TADDR2UADDR 8</span>
1429
+ 01442 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETVERSADDR 9</span>
1430
+ 01443 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_INDIRECT 10</span>
1431
+ 01444 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETADDRLIST 11</span>
1432
+ 01445 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_PMAP_PROC_GETSTAT 12</span>
1433
+ 01446 <span class="preprocessor"></span>
1434
+ 01447 <span class="comment">/* There will be more to add... */</span>
1435
+ 01448
1436
+ 01449 <span class="keyword">struct </span>libnet_rpc_opaque_auth
1437
+ 01450 {
1438
+ 01451 u_int32_t rpc_auth_flavor;
1439
+ 01452 u_int32_t rpc_auth_length;
1440
+ 01453 <span class="comment">// u_int8_t *rpc_auth_data;</span>
1441
+ 01454 };
1442
+ 01455
1443
+ 01456 <span class="keyword">struct </span>libnet_rpc_call
1444
+ 01457 {
1445
+ 01458 u_int32_t rpc_rpcvers; <span class="comment">/* RPC version - must be 2 */</span>
1446
+ 01459 u_int32_t rpc_prognum; <span class="comment">/* Program Number */</span>
1447
+ 01460 u_int32_t rpc_vers; <span class="comment">/* Program Version */</span>
1448
+ 01461 u_int32_t rpc_procedure; <span class="comment">/* RPC procedure */</span>
1449
+ 01462 <span class="keyword">struct </span>libnet_rpc_opaque_auth rpc_credentials;
1450
+ 01463 <span class="keyword">struct </span>libnet_rpc_opaque_auth rpc_verifier;
1451
+ 01464 };
1452
+ 01465
1453
+ 01466 <span class="keyword">struct </span>libnet_rpc_call_hdr
1454
+ 01467 {
1455
+ 01468 u_int32_t rpc_xid; <span class="comment">/* xid (transaction identifier) */</span>
1456
+ 01469 u_int32_t rpc_type;
1457
+ 01470 <span class="keyword">struct </span>libnet_rpc_call rpc_call;
1458
+ 01471 };
1459
+ 01472
1460
+ 01473 <span class="keyword">struct </span>libnet_rpc_call_tcp_hdr
1461
+ 01474 {
1462
+ 01475 u_int32_t rpc_record_marking; <span class="comment">/* used with byte stream protocols */</span>
1463
+ 01476 <span class="keyword">struct </span>libnet_rpc_call_hdr rpc_common;
1464
+ 01477 };
1465
+ 01478
1466
+ 01479 <span class="comment">/*</span>
1467
+ 01480 <span class="comment"> * STP configuration header</span>
1468
+ 01481 <span class="comment"> * Spanning Tree Protocol</span>
1469
+ 01482 <span class="comment"> * Static header size: 35 bytes</span>
1470
+ 01483 <span class="comment"> */</span>
1471
+ 01484 <span class="keyword">struct </span>libnet_stp_conf_hdr
1472
+ 01485 {
1473
+ 01486 u_int16_t stp_id; <span class="comment">/* protocol id */</span>
1474
+ 01487 u_int8_t stp_version; <span class="comment">/* protocol version */</span>
1475
+ 01488 u_int8_t stp_bpdu_type; <span class="comment">/* bridge protocol data unit type */</span>
1476
+ 01489 u_int8_t stp_flags; <span class="comment">/* control flags */</span>
1477
+ 01490 u_int8_t stp_rootid[8]; <span class="comment">/* root id */</span>
1478
+ 01491 u_int32_t stp_rootpc; <span class="comment">/* root path cost */</span>
1479
+ 01492 u_int8_t stp_bridgeid[8]; <span class="comment">/* bridge id */</span>
1480
+ 01493 u_int16_t stp_portid; <span class="comment">/* port id */</span>
1481
+ 01494 u_int16_t stp_mage; <span class="comment">/* message age */</span>
1482
+ 01495 u_int16_t stp_maxage; <span class="comment">/* max age */</span>
1483
+ 01496 u_int16_t stp_hellot; <span class="comment">/* hello time */</span>
1484
+ 01497 u_int16_t stp_fdelay; <span class="comment">/* forward delay */</span>
1485
+ 01498 };
1486
+ 01499
1487
+ 01500
1488
+ 01501 <span class="comment">/*</span>
1489
+ 01502 <span class="comment"> * STP topology change notification header</span>
1490
+ 01503 <span class="comment"> * Spanning Tree Protocol</span>
1491
+ 01504 <span class="comment"> * Static header size: 4 bytes</span>
1492
+ 01505 <span class="comment"> */</span>
1493
+ 01506 <span class="keyword">struct </span>libnet_stp_tcn_hdr
1494
+ 01507 {
1495
+ 01508 u_int16_t stp_id; <span class="comment">/* protocol id */</span>
1496
+ 01509 u_int8_t stp_version; <span class="comment">/* protocol version */</span>
1497
+ 01510 u_int8_t stp_bpdu_type; <span class="comment">/* bridge protocol data unit type */</span>
1498
+ 01511 };
1499
+ 01512
1500
+ 01513
1501
+ 01514 <span class="comment">/*</span>
1502
+ 01515 <span class="comment"> * TCP header</span>
1503
+ 01516 <span class="comment"> * Transmission Control Protocol</span>
1504
+ 01517 <span class="comment"> * Static header size: 20 bytes</span>
1505
+ 01518 <span class="comment"> */</span>
1506
+ 01519 <span class="keyword">struct </span>libnet_tcp_hdr
1507
+ 01520 {
1508
+ 01521 u_int16_t th_sport; <span class="comment">/* source port */</span>
1509
+ 01522 u_int16_t th_dport; <span class="comment">/* destination port */</span>
1510
+ 01523 u_int32_t th_seq; <span class="comment">/* sequence number */</span>
1511
+ 01524 u_int32_t th_ack; <span class="comment">/* acknowledgement number */</span>
1512
+ 01525 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
1513
+ 01526 <span class="preprocessor"></span> u_int8_t th_x2:4, <span class="comment">/* (unused) */</span>
1514
+ 01527 th_off:4; <span class="comment">/* data offset */</span>
1515
+ 01528 <span class="preprocessor">#endif</span>
1516
+ 01529 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
1517
+ 01530 <span class="preprocessor"></span> u_int8_t th_off:4, <span class="comment">/* data offset */</span>
1518
+ 01531 th_x2:4; <span class="comment">/* (unused) */</span>
1519
+ 01532 <span class="preprocessor">#endif</span>
1520
+ 01533 <span class="preprocessor"></span> u_int8_t th_flags; <span class="comment">/* control flags */</span>
1521
+ 01534 <span class="preprocessor">#ifndef TH_FIN</span>
1522
+ 01535 <span class="preprocessor"></span><span class="preprocessor">#define TH_FIN 0x01 </span><span class="comment">/* finished send data */</span>
1523
+ 01536 <span class="preprocessor">#endif</span>
1524
+ 01537 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_SYN</span>
1525
+ 01538 <span class="preprocessor"></span><span class="preprocessor">#define TH_SYN 0x02 </span><span class="comment">/* synchronize sequence numbers */</span>
1526
+ 01539 <span class="preprocessor">#endif</span>
1527
+ 01540 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_RST</span>
1528
+ 01541 <span class="preprocessor"></span><span class="preprocessor">#define TH_RST 0x04 </span><span class="comment">/* reset the connection */</span>
1529
+ 01542 <span class="preprocessor">#endif</span>
1530
+ 01543 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_PUSH</span>
1531
+ 01544 <span class="preprocessor"></span><span class="preprocessor">#define TH_PUSH 0x08 </span><span class="comment">/* push data to the app layer */</span>
1532
+ 01545 <span class="preprocessor">#endif</span>
1533
+ 01546 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_ACK</span>
1534
+ 01547 <span class="preprocessor"></span><span class="preprocessor">#define TH_ACK 0x10 </span><span class="comment">/* acknowledge */</span>
1535
+ 01548 <span class="preprocessor">#endif</span>
1536
+ 01549 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_URG</span>
1537
+ 01550 <span class="preprocessor"></span><span class="preprocessor">#define TH_URG 0x20 </span><span class="comment">/* urgent! */</span>
1538
+ 01551 <span class="preprocessor">#endif</span>
1539
+ 01552 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_ECE</span>
1540
+ 01553 <span class="preprocessor"></span><span class="preprocessor">#define TH_ECE 0x40</span>
1541
+ 01554 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
1542
+ 01555 <span class="preprocessor"></span><span class="preprocessor">#ifndef TH_CWR </span>
1543
+ 01556 <span class="preprocessor"></span><span class="preprocessor">#define TH_CWR 0x80</span>
1544
+ 01557 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
1545
+ 01558 <span class="preprocessor"></span> u_int16_t th_win; <span class="comment">/* window */</span>
1546
+ 01559 u_int16_t th_sum; <span class="comment">/* checksum */</span>
1547
+ 01560 u_int16_t th_urp; <span class="comment">/* urgent pointer */</span>
1548
+ 01561 };
1549
+ 01562
1550
+ 01563 <span class="comment">/*</span>
1551
+ 01564 <span class="comment"> * Token Ring Header</span>
1552
+ 01565 <span class="comment"> */</span>
1553
+ 01566 <span class="keyword">struct </span>libnet_token_ring_hdr
1554
+ 01567 {
1555
+ 01568 u_int8_t token_ring_access_control;
1556
+ 01569 <span class="preprocessor">#define LIBNET_TOKEN_RING_FRAME 0x10</span>
1557
+ 01570 <span class="preprocessor"></span> u_int8_t token_ring_frame_control;
1558
+ 01571 <span class="preprocessor">#define LIBNET_TOKEN_RING_LLC_FRAME 0x40</span>
1559
+ 01572 <span class="preprocessor"></span> u_int8_t token_ring_dhost[TOKEN_RING_ADDR_LEN];
1560
+ 01573 u_int8_t token_ring_shost[TOKEN_RING_ADDR_LEN];
1561
+ 01574 u_int8_t token_ring_llc_dsap;
1562
+ 01575 u_int8_t token_ring_llc_ssap;
1563
+ 01576 u_int8_t token_ring_llc_control_field;
1564
+ 01577 u_int8_t token_ring_llc_org_code[LIBNET_ORG_CODE_SIZE];
1565
+ 01578 u_int16_t token_ring_type;
1566
+ 01579 <span class="preprocessor">#define TOKEN_RING_TYPE_IP 0x0800 </span><span class="comment">/* IP protocol */</span>
1567
+ 01580 <span class="preprocessor">#define TOKEN_RING_TYPE_ARP 0x0806 </span><span class="comment">/* addr. resolution protocol */</span>
1568
+ 01581 <span class="preprocessor">#define TOKEN_RING_TYPE_REVARP 0x8035 </span><span class="comment">/* reverse addr. resolution protocol */</span>
1569
+ 01582 };
1570
+ 01583
1571
+ 01584 <span class="keyword">struct </span>libnet_token_ring_addr
1572
+ 01585 {
1573
+ 01586 u_int8_t token_ring_addr_octet[6]; <span class="comment">/* Token Ring address */</span>
1574
+ 01587 };
1575
+ 01588
1576
+ 01589 <span class="comment">/*</span>
1577
+ 01590 <span class="comment"> * UDP header</span>
1578
+ 01591 <span class="comment"> * User Data Protocol</span>
1579
+ 01592 <span class="comment"> * Static header size: 8 bytes</span>
1580
+ 01593 <span class="comment"> */</span>
1581
+ 01594 <span class="keyword">struct </span>libnet_udp_hdr
1582
+ 01595 {
1583
+ 01596 u_int16_t uh_sport; <span class="comment">/* soure port */</span>
1584
+ 01597 u_int16_t uh_dport; <span class="comment">/* destination port */</span>
1585
+ 01598 u_int16_t uh_ulen; <span class="comment">/* length */</span>
1586
+ 01599 u_int16_t uh_sum; <span class="comment">/* checksum */</span>
1587
+ 01600 };
1588
+ 01601
1589
+ 01602 <span class="comment">/*</span>
1590
+ 01603 <span class="comment"> * Sebek header</span>
1591
+ 01604 <span class="comment"> * Static header size: 48 bytes</span>
1592
+ 01605 <span class="comment"> */</span>
1593
+ 01606 <span class="keyword">struct </span>libnet_sebek_hdr
1594
+ 01607 {
1595
+ 01608 u_int32_t magic; <span class="comment">/* identify packets that should be hidden */</span>
1596
+ 01609 u_int16_t version; <span class="comment">/* protocol version, currently 1 */</span>
1597
+ 01610 <span class="preprocessor">#define SEBEK_PROTO_VERSION 1</span>
1598
+ 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>
1599
+ 01612 <span class="preprocessor">#define SEBEK_TYPE_READ 0 </span><span class="comment">/* Currently, only read is supported */</span>
1600
+ 01613 <span class="preprocessor">#define SEBEK_TYPE_WRITE 1</span>
1601
+ 01614 <span class="preprocessor"></span> u_int32_t counter; <span class="comment">/* PDU counter used to identify when packet are lost */</span>
1602
+ 01615 u_int32_t time_sec; <span class="comment">/* seconds since EPOCH according to the honeypot */</span>
1603
+ 01616 u_int32_t time_usec; <span class="comment">/* residual microseconds */</span>
1604
+ 01617 u_int32_t pid; <span class="comment">/* PID */</span>
1605
+ 01618 u_int32_t uid; <span class="comment">/* UID */</span>
1606
+ 01619 u_int32_t fd; <span class="comment">/* FD */</span>
1607
+ 01620 <span class="preprocessor">#define SEBEK_CMD_LENGTH 12</span>
1608
+ 01621 <span class="preprocessor"></span> u_int8_t cmd[SEBEK_CMD_LENGTH]; <span class="comment">/* 12 first characters of the command */</span>
1609
+ 01622 u_int32_t length; <span class="comment">/* length in bytes of the PDU's body */</span>
1610
+ 01623 };
1611
+ 01624
1612
+ 01625
1613
+ 01626 <span class="comment">/*</span>
1614
+ 01627 <span class="comment"> * VRRP header</span>
1615
+ 01628 <span class="comment"> * Virtual Router Redundancy Protocol</span>
1616
+ 01629 <span class="comment"> * Static header size: 8 bytes</span>
1617
+ 01630 <span class="comment"> */</span>
1618
+ 01631 <span class="preprocessor">#ifndef IPPROTO_VRRP</span>
1619
+ 01632 <span class="preprocessor"></span><span class="preprocessor">#define IPPROTO_VRRP 112 </span><span class="comment">/* not everyone's got this */</span>
1620
+ 01633 <span class="preprocessor">#endif</span>
1621
+ 01634 <span class="preprocessor"></span><span class="keyword">struct </span>libnet_vrrp_hdr
1622
+ 01635 {
1623
+ 01636 <span class="preprocessor">#if (LIBNET_LIL_ENDIAN)</span>
1624
+ 01637 <span class="preprocessor"></span> u_int8_t vrrp_v:4, <span class="comment">/* protocol version */</span>
1625
+ 01638 vrrp_t:4; <span class="comment">/* packet type */</span>
1626
+ 01639 <span class="preprocessor">#endif</span>
1627
+ 01640 <span class="preprocessor"></span><span class="preprocessor">#if (LIBNET_BIG_ENDIAN)</span>
1628
+ 01641 <span class="preprocessor"></span> u_int8_t vrrp_t:4, <span class="comment">/* packet type */</span>
1629
+ 01642 vrrp_v:4; <span class="comment">/* protocol version */</span>
1630
+ 01643 <span class="preprocessor">#endif</span>
1631
+ 01644 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_VERSION_01 0x1</span>
1632
+ 01645 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_VERSION_02 0x2</span>
1633
+ 01646 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_TYPE_ADVERT 0x1</span>
1634
+ 01647 <span class="preprocessor"></span> u_int8_t vrrp_vrouter_id; <span class="comment">/* virtual router id */</span>
1635
+ 01648 u_int8_t vrrp_priority; <span class="comment">/* priority */</span>
1636
+ 01649 u_int8_t vrrp_ip_count; <span class="comment">/* number of IP addresses */</span>
1637
+ 01650 u_int8_t vrrp_auth_type; <span class="comment">/* authorization type */</span>
1638
+ 01651 <span class="preprocessor">#define LIBNET_VRRP_AUTH_NONE 0x1</span>
1639
+ 01652 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_AUTH_PASSWD 0x2</span>
1640
+ 01653 <span class="preprocessor"></span><span class="preprocessor">#define LIBNET_VRRP_AUTH_IPAH 0x3</span>
1641
+ 01654 <span class="preprocessor"></span> u_int8_t vrrp_advert_int; <span class="comment">/* advertisement interval */</span>
1642
+ 01655 u_int16_t vrrp_sum; <span class="comment">/* checksum */</span>
1643
+ 01656 <span class="comment">/* additional addresses */</span>
1644
+ 01657 <span class="comment">/* authentication info */</span>
1645
+ 01658 };
1646
+ 01659
1647
+ 01660 <span class="preprocessor">#endif </span><span class="comment">/* __LIBNET_HEADERS_H */</span>
1648
+ 01661
1649
+ 01662 <span class="comment">/* EOF */</span>
1650
+ </pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Mar 10 13:23:37 2004 for libnet by
1651
+ <a href="http://www.doxygen.org/index.html">
1652
+ <img src="doxygen.png" alt="doxygen" align="middle" border=0 >
1653
+ </a>1.3.4 </small></address>
1654
+ </body>
1655
+ </html>