PageRenderTime 62ms CodeModel.GetById 29ms RepoModel.GetById 1ms app.codeStats 0ms

/lib/ffi/packets/constants.rb

https://github.com/emonti/ffi-packets
Ruby | 500 lines | 402 code | 76 blank | 22 comment | 0 complexity | 83b0ab699920d0a535b87b84c3f0860b MD5 | raw file
  1. module FFI::Packets
  2. module Constants
  3. ARP_HDR_LEN = 8 # base ARP header length
  4. ARP_ETHIP_LEN = 20 # base ARP message length
  5. ARP_HRD_ETH = 0x0001 # ethernet hardware
  6. ARP_HRD_IEEE802 = 0x0006 # IEEE 802 hardware
  7. ARP_PRO_IP = 0x0800 # IP protocol
  8. ARP_OP_REQUEST = 1 # request to resolve ha given pa
  9. ARP_OP_REPLY = 2 # response giving hardware address
  10. ARP_OP_REVREQUEST = 3 # request to resolve pa given ha
  11. ARP_OP_REVREPLY = 4 # response giving protocol address
  12. ETH_ADDR_LEN = 6
  13. ETH_ADDR_BITS = 48
  14. ETH_TYPE_LEN = 2
  15. ETH_CRC_LEN = 4
  16. ETH_HDR_LEN = 14
  17. ETH_LEN_MIN = 64 # minimum frame length with CRC
  18. ETH_LEN_MAX = 1518 # maximum frame length with CRC
  19. ETH_TYPE_PUP = 0x0200 # PUP protocol
  20. ETH_TYPE_IP = 0x0800 # IP protocol
  21. ETH_TYPE_ARP = 0x0806 # address resolution protocol
  22. ETH_TYPE_REVARP = 0x8035 # reverse addr resolution protocol
  23. ETH_TYPE_8021Q = 0x8100 # IEEE 802.1Q VLAN tagging
  24. ETH_TYPE_IPV6 = 0x86DD # IPv6 protocol
  25. ETH_TYPE_MPLS = 0x8847 # MPLS
  26. ETH_TYPE_MPLS_MCAST = 0x8848 # MPLS Multicast
  27. ETH_TYPE_PPPOEDISC = 0x8863 # PPP Over Ethernet Discovery Stage
  28. ETH_TYPE_PPPOE = 0x8864 # PPP Over Ethernet Session Stage
  29. ETH_TYPE_LOOPBACK = 0x9000 # used to test interfaces
  30. ETH_ADDR_BROADCAST = "\xff\xff\xff\xff\xff\xff"
  31. # ETH_IS_MULTICAST(ea) (*(ea) & 0x01) # is address mcast/bcast? XXX implement
  32. ICMP_HDR_LEN = 4 # base ICMP header length
  33. ICMP_LEN_MIN = 8 # minimum ICMP message size, with header
  34. # ICMP Types (ICMP::Hdr->icmp_type)
  35. # http://www.iana.org/assignments/icmp-parameters
  36. ICMP_TYPE_ECHOREPLY = 0 # echo reply
  37. ICMP_TYPE_UNREACH = 3 # dest unreachable, codes:
  38. ICMP_TYPE_SRCQUENCH = 4 # packet lost, slow down
  39. ICMP_TYPE_REDIRECT = 5 # shorter route, codes:
  40. ICMP_TYPE_ALTHOSTADDR = 6 # alternate host address
  41. ICMP_TYPE_ECHO = 8 # echo service
  42. ICMP_TYPE_RTRADVERT = 9 # router advertise, codes:
  43. ICMP_TYPE_RTRSOLICIT = 10 # router solicitation
  44. ICMP_TYPE_TIMEXCEED = 11 # time exceeded, code:
  45. ICMP_TYPE_PARAMPROB = 12 # ip header bad
  46. ICMP_TYPE_TSTAMP = 13 # timestamp request
  47. ICMP_TYPE_TSTAMPREPLY = 14 # timestamp reply
  48. ICMP_TYPE_INFO = 15 # information request
  49. ICMP_TYPE_INFOREPLY = 16 # information reply
  50. ICMP_TYPE_MASK = 17 # address mask request
  51. ICMP_TYPE_MASKREPLY = 18 # address mask reply
  52. ICMP_TYPE_TRACEROUTE = 30 # traceroute
  53. ICMP_TYPE_DATACONVERR = 31 # data conversion error
  54. ICMP_TYPE_MOBILE_REDIRECT = 32 # mobile host redirect
  55. ICMP_TYPE_IPV6_WHEREAREYOU = 33 # IPv6 where-are-you
  56. ICMP_TYPE_IPV6_IAMHERE = 34 # IPv6 i-am-here
  57. ICMP_TYPE_MOBILE_REG = 35 # mobile registration req
  58. ICMP_TYPE_MOBILE_REGREPLY = 36 # mobile registration reply
  59. ICMP_TYPE_DNS = 37 # domain name request
  60. ICMP_TYPE_DNSREPLY = 38 # domain name reply
  61. ICMP_TYPE_SKIP = 39 # SKIP
  62. ICMP_TYPE_PHOTURIS = 40 # Photuris
  63. # ICMP Sub-codes (ICMP::Hdr->icmp_code)
  64. # http://www.iana.org/assignments/icmp-parameters
  65. ICMP_UNREACH_NET = 0 # bad net
  66. ICMP_UNREACH_HOST = 1 # bad host
  67. ICMP_UNREACH_PROTO = 2 # bad protocol
  68. ICMP_UNREACH_PORT = 3 # bad port
  69. ICMP_UNREACH_NEEDFRAG = 4 # IP_DF caused drop
  70. ICMP_UNREACH_SRCFAIL = 5 # src route failed
  71. ICMP_UNREACH_NET_UNKNOWN = 6 # unknown net
  72. ICMP_UNREACH_HOST_UNKNOWN = 7 # unknown host
  73. ICMP_UNREACH_ISOLATED = 8 # src host isolated
  74. ICMP_UNREACH_NET_PROHIB = 9 # for crypto devs
  75. ICMP_UNREACH_HOST_PROHIB = 10 # ditto
  76. ICMP_UNREACH_TOSNET = 11 # bad tos for net
  77. ICMP_UNREACH_TOSHOST = 12 # bad tos for host
  78. ICMP_UNREACH_FILTER_PROHIB = 13 # prohibited access
  79. ICMP_UNREACH_HOST_PRECEDENCE = 14 # precedence error
  80. ICMP_UNREACH_PRECEDENCE_CUTOFF = 15 # precedence cutoff
  81. ICMP_REDIRECT_NET = 0 # for network
  82. ICMP_REDIRECT_HOST = 1 # for host
  83. ICMP_REDIRECT_TOSNET = 2 # for tos and net
  84. ICMP_REDIRECT_TOSHOST = 3 # for tos and host
  85. ICMP_RTRADVERT_NORMAL = 0 # normal
  86. ICMP_RTRADVERT_NOROUTE_COMMON = 16 # selective routing
  87. ICMP_TIMEXCEED_INTRANS = 0 # ttl==0 in transit
  88. ICMP_TIMEXCEED_REASS = 1 # ttl==0 in reass
  89. ICMP_PARAMPROB_ERRATPTR = 0 # req. opt. absent
  90. ICMP_PARAMPROB_OPTABSENT = 1 # req. opt. absent
  91. ICMP_PARAMPROB_LENGTH = 2 # bad length
  92. ICMP_PHOTURIS_UNKNOWN_INDEX = 0 # unknown sec index
  93. ICMP_PHOTURIS_AUTH_FAILED = 1 # auth failed
  94. ICMP_PHOTURIS_DECOMPRESS_FAILED = 2 # decompress failed
  95. ICMP_PHOTURIS_DECRYPT_FAILED = 3 # decrypt failed
  96. ICMP_PHOTURIS_NEED_AUTHN = 4 # no authentication
  97. ICMP_PHOTURIS_NEED_AUTHZ = 5 # no authorization
  98. ICMP_RTR_PREF_NODEFAULT = 0x80000000 # do not use as default gw
  99. IP_ADDR_LEN = 4 # IP address length
  100. IP_ADDR_BITS = 32 # IP address bits
  101. IP_HDR_LEN = 20 # base IP header length
  102. IP_OPT_LEN = 2 # base IP option length
  103. IP_OPT_LEN_MAX = 40
  104. IP_HDR_LEN_MAX = (IP_HDR_LEN + IP_OPT_LEN_MAX)
  105. IP_LEN_MAX = 65535
  106. IP_LEN_MIN = IP_HDR_LEN
  107. IP_TOS_DEFAULT = 0x00 # default
  108. IP_TOS_LOWDELAY = 0x10 # low delay
  109. IP_TOS_THROUGHPUT = 0x08 # high throughput
  110. IP_TOS_RELIABILITY = 0x04 # high reliability
  111. IP_TOS_LOWCOST = 0x02 # low monetary cost - XXX
  112. IP_TOS_ECT = 0x02 # ECN-capable transport
  113. IP_TOS_CE = 0x01 # congestion experienced
  114. IP_TOS__PREC_ROUTINE = 0x00
  115. IP_TOS__PREC_PRIORITY = 0x20
  116. IP_TOS__PREC_IMMEDIATE = 0x40
  117. IP_TOS__PREC_FLASH = 0x60
  118. IP_TOS__PREC_FLASHOVERRIDE = 0x80
  119. IP_TOS__PREC_CRITIC_ECP = 0xa0
  120. IP_TOS__PREC_INTERNETCONTROL = 0xc0
  121. IP_TOS__PREC_NETCONTROL = 0xe0
  122. IP_RF = 0x8000 # reserved
  123. IP_DF = 0x4000 # don't fragment
  124. IP_MF = 0x2000 # more fragments (not last frag)
  125. IP_OFFMASK = 0x1fff # mask for fragment offset
  126. IP_TTL_DEFAULT = 64 # default ttl, RFC 1122, RFC 1340
  127. IP_TTL_MAX = 255 # maximum ttl
  128. # Protocols (proto) - http://www.iana.org/assignments/protocol-numbers
  129. IP_PROTO_IP = 0 # dummy for IP
  130. IP_PROTO_ICMP = 1 # ICMP
  131. IP_PROTO_IGMP = 2 # IGMP
  132. IP_PROTO_GGP = 3 # gateway-gateway protocol
  133. IP_PROTO_IPIP = 4 # IP in IP
  134. IP_PROTO_ST = 5 # ST datagram mode
  135. IP_PROTO_TCP = 6 # TCP
  136. IP_PROTO_CBT = 7 # CBT
  137. IP_PROTO_EGP = 8 # exterior gateway protocol
  138. IP_PROTO_IGP = 9 # interior gateway protocol
  139. IP_PROTO_BBNRCC = 10 # BBN RCC monitoring
  140. IP_PROTO_NVP = 11 # Network Voice Protocol
  141. IP_PROTO_PUP = 12 # PARC universal packet
  142. IP_PROTO_ARGUS = 13 # ARGUS
  143. IP_PROTO_EMCON = 14 # EMCON
  144. IP_PROTO_XNET = 15 # Cross Net Debugger
  145. IP_PROTO_CHAOS = 16 # Chaos
  146. IP_PROTO_UDP = 17 # UDP
  147. IP_PROTO_MUX = 18 # multiplexing
  148. IP_PROTO_DCNMEAS = 19 # DCN measurement
  149. IP_PROTO_HMP = 20 # Host Monitoring Protocol
  150. IP_PROTO_PRM = 21 # Packet Radio Measurement
  151. IP_PROTO_IDP = 22 # Xerox NS IDP
  152. IP_PROTO_TRUNK1 = 23 # Trunk-1
  153. IP_PROTO_TRUNK2 = 24 # Trunk-2
  154. IP_PROTO_LEAF1 = 25 # Leaf-1
  155. IP_PROTO_LEAF2 = 26 # Leaf-2
  156. IP_PROTO_RDP = 27 # "Reliable Datagram" proto
  157. IP_PROTO_IRTP = 28 # Inet Reliable Transaction
  158. IP_PROTO_TP = 29 # ISO TP class 4
  159. IP_PROTO_NETBLT = 30 # Bulk Data Transfer
  160. IP_PROTO_MFPNSP = 31 # MFE Network Services
  161. IP_PROTO_MERITINP = 32 # Merit Internodal Protocol
  162. IP_PROTO_SEP = 33 # Sequential Exchange proto
  163. IP_PROTO_THIRDPC = 34 # Third Party Connect proto
  164. IP_PROTO_IDPR = 35 # Interdomain Policy Route
  165. IP_PROTO_XTP = 36 # Xpress Transfer Protocol
  166. IP_PROTO_DDP = 37 # Datagram Delivery Proto
  167. IP_PROTO_CMTP = 38 # IDPR Ctrl Message Trans
  168. IP_PROTO_TPPP = 39 # TP++ Transport Protocol
  169. IP_PROTO_IL = 40 # IL Transport Protocol
  170. IP_PROTO_IPV6 = 41 # IPv6
  171. IP_PROTO_SDRP = 42 # Source Demand Routing
  172. IP_PROTO_ROUTING = 43 # IPv6 routing header
  173. IP_PROTO_FRAGMENT = 44 # IPv6 fragmentation header
  174. IP_PROTO_RSVP = 46 # Reservation protocol
  175. IP_PROTO_GRE = 47 # General Routing Encap
  176. IP_PROTO_MHRP = 48 # Mobile Host Routing
  177. IP_PROTO_ENA = 49 # ENA
  178. IP_PROTO_ESP = 50 # Encap Security Payload
  179. IP_PROTO_AH = 51 # Authentication Header
  180. IP_PROTO_INLSP = 52 # Integated Net Layer Sec
  181. IP_PROTO_SWIPE = 53 # SWIPE
  182. IP_PROTO_NARP = 54 # NBMA Address Resolution
  183. IP_PROTO_MOBILE = 55 # Mobile IP, RFC 2004
  184. IP_PROTO_TLSP = 56 # Transport Layer Security
  185. IP_PROTO_SKIP = 57 # SKIP
  186. IP_PROTO_ICMPV6 = 58 # ICMP for IPv6
  187. IP_PROTO_NONE = 59 # IPv6 no next header
  188. IP_PROTO_DSTOPTS = 60 # IPv6 destination options
  189. IP_PROTO_ANYHOST = 61 # any host internal proto
  190. IP_PROTO_CFTP = 62 # CFTP
  191. IP_PROTO_ANYNET = 63 # any local network
  192. IP_PROTO_EXPAK = 64 # SATNET and Backroom EXPAK
  193. IP_PROTO_KRYPTOLAN = 65 # Kryptolan
  194. IP_PROTO_RVD = 66 # MIT Remote Virtual Disk
  195. IP_PROTO_IPPC = 67 # Inet Pluribus Packet Core
  196. IP_PROTO_DISTFS = 68 # any distributed fs
  197. IP_PROTO_SATMON = 69 # SATNET Monitoring
  198. IP_PROTO_VISA = 70 # VISA Protocol
  199. IP_PROTO_IPCV = 71 # Inet Packet Core Utility
  200. IP_PROTO_CPNX = 72 # Comp Proto Net Executive
  201. IP_PROTO_CPHB = 73 # Comp Protocol Heart Beat
  202. IP_PROTO_WSN = 74 # Wang Span Network
  203. IP_PROTO_PVP = 75 # Packet Video Protocol
  204. IP_PROTO_BRSATMON = 76 # Backroom SATNET Monitor
  205. IP_PROTO_SUNND = 77 # SUN ND Protocol
  206. IP_PROTO_WBMON = 78 # WIDEBAND Monitoring
  207. IP_PROTO_WBEXPAK = 79 # WIDEBAND EXPAK
  208. IP_PROTO_EON = 80 # ISO CNLP
  209. IP_PROTO_VMTP = 81 # Versatile Msg Transport
  210. IP_PROTO_SVMTP = 82 # Secure VMTP
  211. IP_PROTO_VINES = 83 # VINES
  212. IP_PROTO_TTP = 84 # TTP
  213. IP_PROTO_NSFIGP = 85 # NSFNET-IGP
  214. IP_PROTO_DGP = 86 # Dissimilar Gateway Proto
  215. IP_PROTO_TCF = 87 # TCF
  216. IP_PROTO_EIGRP = 88 # EIGRP
  217. IP_PROTO_OSPF = 89 # Open Shortest Path First
  218. IP_PROTO_SPRITERPC = 90 # Sprite RPC Protocol
  219. IP_PROTO_LARP = 91 # Locus Address Resolution
  220. IP_PROTO_MTP = 92 # Multicast Transport Proto
  221. IP_PROTO_AX25 = 93 # AX.25 Frames
  222. IP_PROTO_IPIPENCAP = 94 # yet-another IP encap
  223. IP_PROTO_MICP = 95 # Mobile Internet Ctrl
  224. IP_PROTO_SCCSP = 96 # Semaphore Comm Sec Proto
  225. IP_PROTO_ETHERIP = 97 # Ethernet in IPv4
  226. IP_PROTO_ENCAP = 98 # encapsulation header
  227. IP_PROTO_ANYENC = 99 # private encryption scheme
  228. IP_PROTO_GMTP = 100 # GMTP
  229. IP_PROTO_IFMP = 101 # Ipsilon Flow Mgmt Proto
  230. IP_PROTO_PNNI = 102 # PNNI over IP
  231. IP_PROTO_PIM = 103 # Protocol Indep Multicast
  232. IP_PROTO_ARIS = 104 # ARIS
  233. IP_PROTO_SCPS = 105 # SCPS
  234. IP_PROTO_QNX = 106 # QNX
  235. IP_PROTO_AN = 107 # Active Networks
  236. IP_PROTO_IPCOMP = 108 # IP Payload Compression
  237. IP_PROTO_SNP = 109 # Sitara Networks Protocol
  238. IP_PROTO_COMPAQPEER = 110 # Compaq Peer Protocol
  239. IP_PROTO_IPXIP = 111 # IPX in IP
  240. IP_PROTO_VRRP = 112 # Virtual Router Redundancy
  241. IP_PROTO_PGM = 113 # PGM Reliable Transport
  242. IP_PROTO_ANY0HOP = 114 # 0-hop protocol
  243. IP_PROTO_L2TP = 115 # Layer 2 Tunneling Proto
  244. IP_PROTO_DDX = 116 # D-II Data Exchange (DDX)
  245. IP_PROTO_IATP = 117 # Interactive Agent Xfer
  246. IP_PROTO_STP = 118 # Schedule Transfer Proto
  247. IP_PROTO_SRP = 119 # SpectraLink Radio Proto
  248. IP_PROTO_UTI = 120 # UTI
  249. IP_PROTO_SMP = 121 # Simple Message Protocol
  250. IP_PROTO_SM = 122 # SM
  251. IP_PROTO_PTP = 123 # Performance Transparency
  252. IP_PROTO_ISIS = 124 # ISIS over IPv4
  253. IP_PROTO_FIRE = 125 # FIRE
  254. IP_PROTO_CRTP = 126 # Combat Radio Transport
  255. IP_PROTO_CRUDP = 127 # Combat Radio UDP
  256. IP_PROTO_SSCOPMCE = 128 # SSCOPMCE
  257. IP_PROTO_IPLT = 129 # IPLT
  258. IP_PROTO_SPS = 130 # Secure Packet Shield
  259. IP_PROTO_PIPE = 131 # Private IP Encap in IP
  260. IP_PROTO_SCTP = 132 # Stream Ctrl Transmission
  261. IP_PROTO_FC = 133 # Fibre Channel
  262. IP_PROTO_RSVPIGN = 134 # RSVP-E2E-IGNORE
  263. IP_PROTO_RAW = 255 # Raw IP packets
  264. IP_PROTO__RESERVED = IP_PROTO_RAW # Reserved
  265. IP_PROTO__HOPOPTS = IP_PROTO_IP # IPv6 hop-by-hop options
  266. IP_PROTO_3PC = IP_PROTO_THIRDPC # Third Party Connect proto
  267. # Opt bits
  268. IP_OPT_CONTROL = 0x00 # control
  269. IP_OPT_DEBMEAS = 0x40 # debugging & measurement
  270. IP_OPT_COPY = 0x80 # copy into all fragments
  271. IP_OPT_RESERVED1 = 0x20
  272. IP_OPT_RESERVED2 = 0x60
  273. # Option types (otype) - http://www.iana.org/assignments/ip-parameters
  274. #
  275. # values renamed IP_OPT_* to IP_OTYPE_*
  276. IP_OTYPE_EOL = 0 # terminates option list
  277. IP_OTYPE_NOP = 1 # no operation
  278. IP_OTYPE_SEC = (2|IP_OPT_COPY) # DoD basic security
  279. IP_OTYPE_LSRR = (3|IP_OPT_COPY) # loose source route
  280. IP_OTYPE_TS = (4|IP_OPT_DEBMEAS) # timestamp
  281. IP_OTYPE_ESEC = (5|IP_OPT_COPY) # DoD extended security
  282. IP_OTYPE_CIPSO = (6|IP_OPT_COPY) # commercial security
  283. IP_OTYPE_RR = 7 # record route
  284. IP_OTYPE_SATID = (8|IP_OPT_COPY) # stream ID (obsolete)
  285. IP_OTYPE_SSRR = (9|IP_OPT_COPY) # strict source route
  286. IP_OTYPE_ZSU = 10 # experimental measurement
  287. IP_OTYPE_MTUP = 11 # MTU probe
  288. IP_OTYPE_MTUR = 12 # MTU reply
  289. IP_OTYPE_FINN = (13|IP_OPT_COPY|IP_OPT_DEBMEAS) # exp flow control
  290. IP_OTYPE_VISA = (14|IP_OPT_COPY) # exp access control
  291. IP_OTYPE_ENCODE = 15 # ???
  292. IP_OTYPE_IMITD = (16|IP_OPT_COPY) # IMI traffic descriptor
  293. IP_OTYPE_EIP = (17|IP_OPT_COPY) # extended IP, RFC 1385
  294. IP_OTYPE_TR = (18|IP_OPT_DEBMEAS) # traceroute
  295. IP_OTYPE_ADDEXT = (19|IP_OPT_COPY) # IPv7 ext addr, RFC 1475
  296. IP_OTYPE_RTRALT = (20|IP_OPT_COPY) # router alert, RFC 2113
  297. IP_OTYPE_SDB = (21|IP_OPT_COPY) # directed bcast, RFC 1770
  298. IP_OTYPE_NSAPA = (22|IP_OPT_COPY) # NSAP addresses
  299. IP_OTYPE_DPS = (23|IP_OPT_COPY) # dynamic packet state
  300. IP_OTYPE_UMP = (24|IP_OPT_COPY) # upstream multicast
  301. IP_OTYPE_MAX = 25
  302. # Security option data - RFC 791, 3.1
  303. IP_OPT_SEC_UNCLASS = 0x0000 # unclassified
  304. IP_OPT_SEC_CONFID = 0xf135 # confidential
  305. IP_OPT_SEC_EFTO = 0x789a # EFTO
  306. IP_OPT_SEC_MMMM = 0xbc4d # MMMM
  307. IP_OPT_SEC_PROG = 0x5e26 # PROG
  308. IP_OPT_SEC_RESTR = 0xaf13 # restricted
  309. IP_OPT_SEC_SECRET = 0xd788 # secret
  310. IP_OPT_SEC_TOPSECRET = 0x6bc5 # top secret
  311. # Timestamp option data - RFC 791, 3.1
  312. IP_OPT_TS_TSONLY = 0 # timestamps only
  313. IP_OPT_TS_TSADDR = 1 # IP address / timestamp pairs
  314. IP_OPT_TS_PRESPEC = 3 # IP address / zero timestamp pairs
  315. IP6_ADDR_LEN = 16
  316. IP6_ADDR_BITS = 128
  317. IP6_HDR_LEN = 40 # IPv6 header length
  318. IP6_LEN_MIN = IP6_HDR_LEN
  319. IP6_LEN_MAX = 65535 # non-jumbo payload
  320. IP6_MTU_MIN = 1280 # minimum MTU (1024 + 256)
  321. IP6_VERSION = 0x60
  322. IP6_VERSION_MASK = 0xf0 # ip6_vfc version
  323. # Hop limit (ip6_hlim)
  324. IP6_HLIM_DEFAULT = 64
  325. IP6_HLIM_MAX = 255
  326. # Fragmentation offset, reserved, and flags (offlg)
  327. IP6_OFF_MASK = 0xfff8 # mask out offset from offlg
  328. IP6_RESERVED_MASK = 0x0006 # reserved bits in offlg
  329. IP6_MORE_FRAG = 0x0001 # more-fragments flag
  330. # XXX implement? IP6_OPT_TYPE(o)
  331. #define IP6_OPT_TYPE(o) ((o) & 0xC0) /* high 2 bits of opt_type */
  332. IP6_OPT_PAD1 = 0x00 # 00 0 00000
  333. IP6_OPT_PADN = 0x01 # 00 0 00001
  334. IP6_OPT_JUMBO = 0xC2 # 11 0 00010 = 194
  335. IP6_OPT_JUMBO_LEN = 6
  336. IP6_OPT_RTALERT = 0x05 # 00 0 00101
  337. IP6_OPT_RTALERT_LEN = 4
  338. IP6_OPT_RTALERT_MLD = 0 # Datagram contains an MLD message
  339. IP6_OPT_RTALERT_RSVP = 1 # Datagram contains an RSVP message
  340. IP6_OPT_RTALERT_ACTNET = 2 # contains an Active Networks msg
  341. IP6_OPT_LEN_MIN = 2
  342. IP6_OPT_TYPE_SKIP = 0x00 # continue processing on failure
  343. IP6_OPT_TYPE_DISCARD = 0x40 # discard packet on failure
  344. IP6_OPT_TYPE_FORCEICMP = 0x80 # discard and send ICMP on failure
  345. IP6_OPT_TYPE_ICMP = 0xC0 # ...only if non-multicast dst
  346. IP6_OPT_MUTABLE = 0x20 # option data may change en route
  347. TCP_HDR_LEN = 20 # base TCP header length
  348. TCP_OPT_LEN = 2 # base TCP option length
  349. TCP_OPT_LEN_MAX = 40
  350. TCP_HDR_LEN_MAX = (TCP_HDR_LEN + TCP_OPT_LEN_MAX)
  351. TCP_PORT_MAX = 65535 # maximum port
  352. TCP_WIN_MAX = 65535 # maximum (unscaled) window
  353. TH_FIN = 0x01 # terminates data
  354. TH_SYN = 0x02 # synchronize sequence numbers
  355. TH_RST = 0x04 # reset connection
  356. TH_PUSH = 0x08 # push
  357. TH_ACK = 0x10 # acknowledgment number set
  358. TH_URG = 0x20 # urgent pointer set
  359. TH_ECE = 0x40 # ECN echo, RFC 3168
  360. TH_CWR = 0x80 # congestion window reduced
  361. # TCP FSM states
  362. TCP_STATE_CLOSED = 0 # closed
  363. TCP_STATE_LISTEN = 1 # listening from connection
  364. TCP_STATE_SYN_SENT = 2 # active, have sent SYN
  365. TCP_STATE_SYN_RECEIVED = 3 # have sent and received SYN
  366. TCP_STATE_ESTABLISHED = 4 # established
  367. TCP_STATE_CLOSE_WAIT = 5 # rcvd FIN, waiting for close
  368. TCP_STATE_FIN_WAIT_1 = 6 # have closed, sent FIN
  369. TCP_STATE_CLOSING = 7 # closed xchd FIN, await FIN-ACK
  370. TCP_STATE_LAST_ACK = 8 # had FIN and close, await FIN-ACK
  371. TCP_STATE_FIN_WAIT_2 = 9 # have closed, FIN is acked
  372. TCP_STATE_TIME_WAIT = 10 # in 2*MSL quiet wait after close
  373. TCP_STATE_MAX = 11
  374. # Options (opt_type) - http://www.iana.org/assignments/tcp-parameters
  375. #
  376. # renamed TCP_OPT_* to TCP_OTYPE_*
  377. TCP_OTYPE_EOL = 0 # end of option list
  378. TCP_OTYPE_NOP = 1 # no operation
  379. TCP_OTYPE_MSS = 2 # maximum segment size
  380. TCP_OTYPE_WSCALE = 3 # window scale factor, RFC 1072
  381. TCP_OTYPE_SACKOK = 4 # SACK permitted, RFC 2018
  382. TCP_OTYPE_SACK = 5 # SACK, RFC 2018
  383. TCP_OTYPE_ECHO = 6 # echo (obsolete), RFC 1072
  384. TCP_OTYPE_ECHOREPLY = 7 # echo reply (obsolete), RFC 1072
  385. TCP_OTYPE_TIMESTAMP = 8 # timestamp, RFC 1323
  386. TCP_OTYPE_POCONN = 9 # partial order conn, RFC 1693
  387. TCP_OTYPE_POSVC = 10 # partial order service, RFC 1693
  388. TCP_OTYPE_CC = 11 # connection count, RFC 1644
  389. TCP_OTYPE_CCNEW = 12 # CC.NEW, RFC 1644
  390. TCP_OTYPE_CCECHO = 13 # CC.ECHO, RFC 1644
  391. TCP_OTYPE_ALTSUM = 14 # alt checksum request, RFC 1146
  392. TCP_OTYPE_ALTSUMDATA = 15 # alt checksum data, RFC 1146
  393. TCP_OTYPE_SKEETER = 16 # Skeeter
  394. TCP_OTYPE_BUBBA = 17 # Bubba
  395. TCP_OTYPE_TRAILSUM = 18 # trailer checksum
  396. TCP_OTYPE_MD5 = 19 # MD5 signature, RFC 2385
  397. TCP_OTYPE_SCPS = 20 # SCPS capabilities
  398. TCP_OTYPE_SNACK = 21 # selective negative acks
  399. TCP_OTYPE_REC = 22 # record boundaries
  400. TCP_OTYPE_CORRUPT = 23 # corruption experienced
  401. TCP_OTYPE_SNAP = 24 # SNAP
  402. TCP_OTYPE_TCPCOMP = 26 # TCP compression filter
  403. TCP_OTYPE_MAX = 27
  404. UDP_HDR_LEN = 8
  405. UDP_PORT_MAX = 65535
  406. ARC_HDRLEN = 3
  407. ARC_HDRNEWLEN = 6
  408. ARC_HDRNEWLEN_EXC = 10
  409. ARC_LINUX_HDRLEN = 5
  410. ARC_LINUX_HDRNEWLEN = 0
  411. # /* RFC 1051 */
  412. ARCTYPE_IP_OLD = 240 # IP protocol
  413. ARCTYPE_ARP_OLD = 241 # address resolution protocol
  414. # /* RFC 1201 */
  415. ARCTYPE_IP = 212 # IP protocol
  416. ARCTYPE_ARP = 213 # address resolution protocol
  417. ARCTYPE_REVARP = 214 # reverse addr resolution protocol
  418. ARCTYPE_ATALK = 221 # Appletalk
  419. ARCTYPE_BANIAN = 247 # Banyan Vines
  420. ARCTYPE_IPX = 250 # Novell IPX
  421. ARCTYPE_INET6 = 0xc4 # IPng
  422. ARCTYPE_DIAGNOSE = 0x80 # as per ANSI/ATA 878.1
  423. end
  424. end