dnet-ffi 0.1.3

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