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.
- data/.document +5 -0
- data/.gitignore +7 -0
- data/LICENSE +20 -0
- data/README.rdoc +37 -0
- data/Rakefile +64 -0
- data/VERSION +1 -0
- data/dnet-ffi.gemspec +99 -0
- data/lib/dnet.rb +35 -0
- data/lib/dnet/addr.rb +204 -0
- data/lib/dnet/arp.rb +168 -0
- data/lib/dnet/blob.rb +246 -0
- data/lib/dnet/bsd.rb +123 -0
- data/lib/dnet/constants.rb +555 -0
- data/lib/dnet/eth.rb +143 -0
- data/lib/dnet/fw.rb +106 -0
- data/lib/dnet/helpers.rb +164 -0
- data/lib/dnet/icmp.rb +304 -0
- data/lib/dnet/intf.rb +194 -0
- data/lib/dnet/ip.rb +315 -0
- data/lib/dnet/ip6.rb +59 -0
- data/lib/dnet/rand.rb +33 -0
- data/lib/dnet/route.rb +103 -0
- data/lib/dnet/tcp.rb +103 -0
- data/lib/dnet/tun.rb +24 -0
- data/lib/dnet/typedefs.rb +12 -0
- data/lib/dnet/udp.rb +31 -0
- data/lib/dnet/util.rb +70 -0
- data/samples/eth_send_raw.rb +29 -0
- data/samples/ifconfig-alike.rb +44 -0
- data/samples/udp_send_raw.rb +74 -0
- data/spec/addr_spec.rb +15 -0
- data/spec/arp_spec.rb +95 -0
- data/spec/blob_spec.rb +15 -0
- data/spec/bsd_spec.rb +60 -0
- data/spec/dnet-ffi_spec.rb +31 -0
- data/spec/eth_spec.rb +47 -0
- data/spec/fw_spec.rb +15 -0
- data/spec/intf_spec.rb +98 -0
- data/spec/ip6_spec.rb +15 -0
- data/spec/ip_spec.rb +15 -0
- data/spec/rand_spec.rb +15 -0
- data/spec/route_spec.rb +94 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/tun_spec.rb +15 -0
- metadata +121 -0
@@ -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
|