pio 0.9.0 → 0.10.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +36 -0
- data/examples/packet_out_new.rb +18 -0
- data/examples/packet_out_read.rb +6 -0
- data/features/packet_out_read.feature +5 -0
- data/lib/pio.rb +1 -0
- data/lib/pio/echo.rb +5 -6
- data/lib/pio/echo/message.rb +39 -13
- data/lib/pio/echo/reply.rb +1 -6
- data/lib/pio/echo/request.rb +3 -5
- data/lib/pio/enqueue.rb +62 -0
- data/lib/pio/features.rb +5 -15
- data/lib/pio/features/reply.rb +28 -48
- data/lib/pio/features/request.rb +11 -8
- data/lib/pio/hello.rb +24 -2
- data/lib/pio/monkey_patch/integer.rb +6 -0
- data/lib/pio/monkey_patch/integer/ranges.rb +22 -0
- data/lib/pio/open_flow.rb +1 -0
- data/lib/pio/open_flow/flags.rb +40 -26
- data/lib/pio/open_flow/message.rb +28 -0
- data/lib/pio/open_flow/parser.rb +22 -0
- data/lib/pio/open_flow/phy_port.rb +34 -50
- data/lib/pio/open_flow/port_number.rb +39 -0
- data/lib/pio/open_flow/type.rb +1 -0
- data/lib/pio/packet_in.rb +42 -9
- data/lib/pio/packet_out.rb +102 -0
- data/lib/pio/send_out_port.rb +74 -0
- data/lib/pio/set_eth_addr.rb +52 -0
- data/lib/pio/set_ip_addr.rb +49 -0
- data/lib/pio/set_ip_tos.rb +42 -0
- data/lib/pio/set_transport_port.rb +58 -0
- data/lib/pio/set_vlan.rb +37 -0
- data/lib/pio/set_vlan_priority.rb +18 -0
- data/lib/pio/set_vlan_vid.rb +30 -0
- data/lib/pio/strip_vlan_header.rb +19 -0
- data/lib/pio/type/ip_address.rb +11 -2
- data/lib/pio/type/ipv4_header.rb +1 -0
- data/lib/pio/type/mac_address.rb +2 -0
- data/lib/pio/version.rb +1 -1
- data/pio.gemspec +4 -4
- data/spec/pio/echo/reply_spec.rb +1 -4
- data/spec/pio/echo/request_spec.rb +5 -8
- data/spec/pio/enqueue_spec.rb +67 -0
- data/spec/pio/features/request_spec.rb +4 -4
- data/spec/pio/features_spec.rb +1 -2
- data/spec/pio/hello_spec.rb +1 -4
- data/spec/pio/packet_out_spec.rb +290 -0
- data/spec/pio/send_out_port_spec.rb +121 -0
- data/spec/pio/set_eth_dst_addr_spec.rb +28 -0
- data/spec/pio/set_eth_src_addr_spec.rb +28 -0
- data/spec/pio/set_ip_dst_addr_spec.rb +25 -0
- data/spec/pio/set_ip_src_addr_spec.rb +25 -0
- data/spec/pio/set_ip_tos_spec.rb +30 -0
- data/spec/pio/set_transport_dst_port_spec.rb +42 -0
- data/spec/pio/set_transport_src_port_spec.rb +42 -0
- data/spec/pio/set_vlan_priority_spec.rb +42 -0
- data/spec/pio/set_vlan_vid_spec.rb +42 -0
- data/spec/pio/strip_vlan_header_spec.rb +20 -0
- metadata +55 -13
- data/lib/pio/echo/format.rb +0 -22
- data/lib/pio/hello/format.rb +0 -18
- data/lib/pio/packet_in/format.rb +0 -55
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yasuhito Takamiya
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bindata
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.7.
|
47
|
+
version: 1.7.11
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.7.
|
54
|
+
version: 1.7.11
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.10.
|
75
|
+
version: 2.10.5
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.10.
|
82
|
+
version: 2.10.5
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: guard-bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -226,14 +226,14 @@ dependencies:
|
|
226
226
|
requirements:
|
227
227
|
- - ~>
|
228
228
|
- !ruby/object:Gem::Version
|
229
|
-
version: 0.4.
|
229
|
+
version: 0.4.4
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
234
|
- - ~>
|
235
235
|
- !ruby/object:Gem::Version
|
236
|
-
version: 0.4.
|
236
|
+
version: 0.4.4
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: coveralls
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,14 +254,14 @@ dependencies:
|
|
254
254
|
requirements:
|
255
255
|
- - ~>
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version: 1.3.
|
257
|
+
version: 1.3.18
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
262
|
- - ~>
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version: 1.3.
|
264
|
+
version: 1.3.18
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: flay
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -378,6 +378,8 @@ files:
|
|
378
378
|
- examples/lldp_read.rb
|
379
379
|
- examples/packet_in_new.rb
|
380
380
|
- examples/packet_in_read.rb
|
381
|
+
- examples/packet_out_new.rb
|
382
|
+
- examples/packet_out_read.rb
|
381
383
|
- features/arp_read.feature
|
382
384
|
- features/dhcp_read.feature
|
383
385
|
- features/echo_read.feature
|
@@ -425,6 +427,7 @@ files:
|
|
425
427
|
- features/packet_data/vendor.raw
|
426
428
|
- features/packet_data/vendor_stats_request.raw
|
427
429
|
- features/packet_in_read.feature
|
430
|
+
- features/packet_out_read.feature
|
428
431
|
- features/step_definitions/packet_data_steps.rb
|
429
432
|
- features/step_definitions/pending_steps.rb
|
430
433
|
- features/support/env.rb
|
@@ -454,15 +457,14 @@ files:
|
|
454
457
|
- lib/pio/dhcp/parameter_list.rb
|
455
458
|
- lib/pio/dhcp/request.rb
|
456
459
|
- lib/pio/echo.rb
|
457
|
-
- lib/pio/echo/format.rb
|
458
460
|
- lib/pio/echo/message.rb
|
459
461
|
- lib/pio/echo/reply.rb
|
460
462
|
- lib/pio/echo/request.rb
|
463
|
+
- lib/pio/enqueue.rb
|
461
464
|
- lib/pio/features.rb
|
462
465
|
- lib/pio/features/reply.rb
|
463
466
|
- lib/pio/features/request.rb
|
464
467
|
- lib/pio/hello.rb
|
465
|
-
- lib/pio/hello/format.rb
|
466
468
|
- lib/pio/icmp.rb
|
467
469
|
- lib/pio/icmp/format.rb
|
468
470
|
- lib/pio/icmp/message.rb
|
@@ -486,17 +488,30 @@ files:
|
|
486
488
|
- lib/pio/lldp/ttl_tlv.rb
|
487
489
|
- lib/pio/mac.rb
|
488
490
|
- lib/pio/message_type_selector.rb
|
491
|
+
- lib/pio/monkey_patch/integer.rb
|
492
|
+
- lib/pio/monkey_patch/integer/ranges.rb
|
489
493
|
- lib/pio/open_flow.rb
|
490
494
|
- lib/pio/open_flow/flags.rb
|
491
495
|
- lib/pio/open_flow/message.rb
|
492
496
|
- lib/pio/open_flow/open_flow_header.rb
|
497
|
+
- lib/pio/open_flow/parser.rb
|
493
498
|
- lib/pio/open_flow/phy_port.rb
|
499
|
+
- lib/pio/open_flow/port_number.rb
|
494
500
|
- lib/pio/open_flow/type.rb
|
495
501
|
- lib/pio/options.rb
|
496
502
|
- lib/pio/packet_in.rb
|
497
|
-
- lib/pio/
|
503
|
+
- lib/pio/packet_out.rb
|
498
504
|
- lib/pio/parse_error.rb
|
499
505
|
- lib/pio/pcap.rb
|
506
|
+
- lib/pio/send_out_port.rb
|
507
|
+
- lib/pio/set_eth_addr.rb
|
508
|
+
- lib/pio/set_ip_addr.rb
|
509
|
+
- lib/pio/set_ip_tos.rb
|
510
|
+
- lib/pio/set_transport_port.rb
|
511
|
+
- lib/pio/set_vlan.rb
|
512
|
+
- lib/pio/set_vlan_priority.rb
|
513
|
+
- lib/pio/set_vlan_vid.rb
|
514
|
+
- lib/pio/strip_vlan_header.rb
|
500
515
|
- lib/pio/type/ethernet_header.rb
|
501
516
|
- lib/pio/type/ip_address.rb
|
502
517
|
- lib/pio/type/ipv4_header.rb
|
@@ -517,6 +532,7 @@ files:
|
|
517
532
|
- spec/pio/echo/reply_spec.rb
|
518
533
|
- spec/pio/echo/request_spec.rb
|
519
534
|
- spec/pio/echo_spec.rb
|
535
|
+
- spec/pio/enqueue_spec.rb
|
520
536
|
- spec/pio/features/reply_spec.rb
|
521
537
|
- spec/pio/features/request_spec.rb
|
522
538
|
- spec/pio/features_spec.rb
|
@@ -531,6 +547,18 @@ files:
|
|
531
547
|
- spec/pio/open_flow/phy_port_spec.rb
|
532
548
|
- spec/pio/open_flow/type_spec.rb
|
533
549
|
- spec/pio/packet_in_spec.rb
|
550
|
+
- spec/pio/packet_out_spec.rb
|
551
|
+
- spec/pio/send_out_port_spec.rb
|
552
|
+
- spec/pio/set_eth_dst_addr_spec.rb
|
553
|
+
- spec/pio/set_eth_src_addr_spec.rb
|
554
|
+
- spec/pio/set_ip_dst_addr_spec.rb
|
555
|
+
- spec/pio/set_ip_src_addr_spec.rb
|
556
|
+
- spec/pio/set_ip_tos_spec.rb
|
557
|
+
- spec/pio/set_transport_dst_port_spec.rb
|
558
|
+
- spec/pio/set_transport_src_port_spec.rb
|
559
|
+
- spec/pio/set_vlan_priority_spec.rb
|
560
|
+
- spec/pio/set_vlan_vid_spec.rb
|
561
|
+
- spec/pio/strip_vlan_header_spec.rb
|
534
562
|
- spec/spec_helper.rb
|
535
563
|
homepage: http://github.com/trema/pio
|
536
564
|
licenses:
|
@@ -570,6 +598,7 @@ test_files:
|
|
570
598
|
- spec/pio/echo/reply_spec.rb
|
571
599
|
- spec/pio/echo/request_spec.rb
|
572
600
|
- spec/pio/echo_spec.rb
|
601
|
+
- spec/pio/enqueue_spec.rb
|
573
602
|
- spec/pio/features/reply_spec.rb
|
574
603
|
- spec/pio/features/request_spec.rb
|
575
604
|
- spec/pio/features_spec.rb
|
@@ -584,6 +613,18 @@ test_files:
|
|
584
613
|
- spec/pio/open_flow/phy_port_spec.rb
|
585
614
|
- spec/pio/open_flow/type_spec.rb
|
586
615
|
- spec/pio/packet_in_spec.rb
|
616
|
+
- spec/pio/packet_out_spec.rb
|
617
|
+
- spec/pio/send_out_port_spec.rb
|
618
|
+
- spec/pio/set_eth_dst_addr_spec.rb
|
619
|
+
- spec/pio/set_eth_src_addr_spec.rb
|
620
|
+
- spec/pio/set_ip_dst_addr_spec.rb
|
621
|
+
- spec/pio/set_ip_src_addr_spec.rb
|
622
|
+
- spec/pio/set_ip_tos_spec.rb
|
623
|
+
- spec/pio/set_transport_dst_port_spec.rb
|
624
|
+
- spec/pio/set_transport_src_port_spec.rb
|
625
|
+
- spec/pio/set_vlan_priority_spec.rb
|
626
|
+
- spec/pio/set_vlan_vid_spec.rb
|
627
|
+
- spec/pio/strip_vlan_header_spec.rb
|
587
628
|
- spec/spec_helper.rb
|
588
629
|
- features/arp_read.feature
|
589
630
|
- features/dhcp_read.feature
|
@@ -632,6 +673,7 @@ test_files:
|
|
632
673
|
- features/packet_data/vendor.raw
|
633
674
|
- features/packet_data/vendor_stats_request.raw
|
634
675
|
- features/packet_in_read.feature
|
676
|
+
- features/packet_out_read.feature
|
635
677
|
- features/step_definitions/packet_data_steps.rb
|
636
678
|
- features/step_definitions/pending_steps.rb
|
637
679
|
- features/support/env.rb
|
data/lib/pio/echo/format.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'bindata'
|
2
|
-
require 'pio/open_flow'
|
3
|
-
|
4
|
-
module Pio
|
5
|
-
class Echo
|
6
|
-
# OpenFlow 1.0 Echo request and reply message parser.
|
7
|
-
class Format < BinData::Record
|
8
|
-
include Pio::OpenFlow::Type
|
9
|
-
|
10
|
-
def message_type
|
11
|
-
open_flow_header.message_type
|
12
|
-
end
|
13
|
-
|
14
|
-
endian :big
|
15
|
-
|
16
|
-
open_flow_header :open_flow_header
|
17
|
-
virtual assert: -> { [ECHO_REQUEST, ECHO_REPLY].include?(message_type) }
|
18
|
-
|
19
|
-
string :body
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
data/lib/pio/hello/format.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'bindata'
|
2
|
-
require 'pio/open_flow'
|
3
|
-
|
4
|
-
module Pio
|
5
|
-
class Hello < Pio::OpenFlow::Message
|
6
|
-
# OpenFlow 1.0 Hello message parser and generator.
|
7
|
-
class Format < BinData::Record
|
8
|
-
include Pio::OpenFlow::Type
|
9
|
-
|
10
|
-
endian :big
|
11
|
-
|
12
|
-
open_flow_header :open_flow_header, message_type_value: HELLO
|
13
|
-
virtual assert: -> { open_flow_header.message_type == HELLO }
|
14
|
-
|
15
|
-
string :body # ignored
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/lib/pio/packet_in/format.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'bindata'
|
2
|
-
require 'pio/open_flow'
|
3
|
-
|
4
|
-
module Pio
|
5
|
-
class PacketIn < Pio::OpenFlow::Message
|
6
|
-
# Why is this packet being sent to the controller?
|
7
|
-
# (enum ofp_packet_in_reason)
|
8
|
-
class Reason < BinData::Primitive
|
9
|
-
REASONS = { no_match: 0, action: 1 }
|
10
|
-
|
11
|
-
uint8 :reason
|
12
|
-
|
13
|
-
def get
|
14
|
-
REASONS.invert.fetch(reason)
|
15
|
-
end
|
16
|
-
|
17
|
-
def set(value)
|
18
|
-
self.reason = REASONS.fetch(value)
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Message body of Packet-In.
|
23
|
-
class Body < BinData::Record
|
24
|
-
endian :big
|
25
|
-
|
26
|
-
uint32 :buffer_id
|
27
|
-
uint16 :total_len, value: -> { data.length }
|
28
|
-
uint16 :in_port
|
29
|
-
reason :reason
|
30
|
-
uint8 :padding
|
31
|
-
hide :padding
|
32
|
-
string :data, read_length: :total_len
|
33
|
-
|
34
|
-
def empty?
|
35
|
-
false
|
36
|
-
end
|
37
|
-
|
38
|
-
def length
|
39
|
-
10 + data.length
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# OpenFlow 1.0 Packet-In message parser and generator.
|
44
|
-
class Format < BinData::Record
|
45
|
-
include Pio::OpenFlow::Type
|
46
|
-
|
47
|
-
endian :big
|
48
|
-
|
49
|
-
open_flow_header :open_flow_header, message_type_value: PACKET_IN
|
50
|
-
virtual assert: -> { open_flow_header.message_type == PACKET_IN }
|
51
|
-
|
52
|
-
body :body
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|