dnet-ffi 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|