dnet-ffi 0.1.3

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.
@@ -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