pio 0.18.2 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +40 -344
- data/Rakefile +32 -0
- data/bin/_guard-core +16 -0
- data/bin/byebug +16 -0
- data/bin/cc-tddium-post-worker +16 -0
- data/bin/cdiff +16 -0
- data/bin/coderay +16 -0
- data/bin/colortab +16 -0
- data/bin/coveralls +16 -0
- data/bin/cucumber +16 -0
- data/bin/decolor +16 -0
- data/bin/flay +16 -0
- data/bin/flog +16 -0
- data/bin/guard +16 -0
- data/bin/htmldiff +16 -0
- data/bin/inch +16 -0
- data/bin/ldiff +16 -0
- data/bin/listen +16 -0
- data/bin/minitar +16 -0
- data/bin/pry +16 -0
- data/bin/rake +16 -0
- data/bin/reek +16 -0
- data/bin/relish +16 -0
- data/bin/restclient +16 -0
- data/bin/rspec +16 -0
- data/bin/rubocop +16 -0
- data/bin/ruby-parse +16 -0
- data/bin/ruby-rewrite +16 -0
- data/bin/ruby_parse +16 -0
- data/bin/ruby_parse_extract_error +16 -0
- data/bin/sparkr +16 -0
- data/bin/term_display +16 -0
- data/bin/term_mandel +16 -0
- data/bin/thor +16 -0
- data/bin/unparser +16 -0
- data/bin/yard +16 -0
- data/bin/yardoc +16 -0
- data/bin/yri +16 -0
- data/features/arp.feature +61 -0
- data/features/dhcp.feature +4 -0
- data/features/icmp.feature +130 -0
- data/features/lldp.feature +47 -0
- data/features/open_flow10/echo_reply.feature +95 -0
- data/features/open_flow10/echo_request.feature +95 -0
- data/features/open_flow10/exact_match.feature +36 -0
- data/features/{features_read.feature → open_flow10/features_reply.feature} +54 -17
- data/features/open_flow10/features_request.feature +79 -0
- data/features/{flow_mod_read.feature → open_flow10/flow_mod.feature} +16 -21
- data/features/open_flow10/hello.feature +79 -0
- data/features/open_flow10/packet_in.feature +58 -0
- data/features/{packet_out_read.feature → open_flow10/packet_out.feature} +4 -5
- data/features/open_flow10/port_status.feature +23 -0
- data/features/open_flow13/echo_reply.feature +115 -0
- data/features/open_flow13/echo_request.feature +115 -0
- data/features/open_flow13/hello.feature +74 -0
- data/features/packet_data/echo13_reply_body.raw +0 -0
- data/features/packet_data/echo13_reply_no_body.raw +0 -0
- data/features/packet_data/echo13_request_body.raw +0 -0
- data/features/packet_data/echo13_request_no_body.raw +0 -0
- data/features/packet_data/hello13_no_version_bitmap.raw +0 -0
- data/features/packet_data/hello13_version_bitmap.raw +0 -0
- data/features/packet_data/udp_no_payload.raw +0 -0
- data/features/packet_data/udp_with_payload.raw +0 -0
- data/features/step_definitions/packet_data_steps.rb +49 -29
- data/features/support/env.rb +3 -0
- data/features/{udp_read.feature → udp.feature} +3 -4
- data/lib/pio.rb +1 -0
- data/lib/pio/echo.rb +67 -0
- data/lib/pio/hello13.rb +111 -0
- data/lib/pio/open_flow/message.rb +2 -1
- data/lib/pio/open_flow/open_flow_header.rb +21 -38
- data/lib/pio/open_flow/transaction_id.rb +25 -0
- data/lib/pio/version.rb +1 -1
- data/pio.gemspec +9 -14
- data/spec/pio/flow_mod_spec.rb +1 -1
- data/spec/pio/hello13_spec.rb +114 -0
- metadata +182 -138
- data/examples/arp_new.rb +0 -16
- data/examples/arp_read.rb +0 -4
- data/examples/dhcp_new.rb +0 -34
- data/examples/dhcp_read.rb +0 -4
- data/examples/echo_new.rb +0 -9
- data/examples/echo_read.rb +0 -4
- data/examples/features_new.rb +0 -28
- data/examples/features_read.rb +0 -4
- data/examples/flow_mod_new.rb +0 -13
- data/examples/flow_mod_read.rb +0 -6
- data/examples/hello_new.rb +0 -4
- data/examples/hello_read.rb +0 -4
- data/examples/icmp_new.rb +0 -21
- data/examples/icmp_read.rb +0 -4
- data/examples/lldp_new.rb +0 -4
- data/examples/lldp_read.rb +0 -4
- data/examples/packet_in_new.rb +0 -17
- data/examples/packet_in_read.rb +0 -5
- data/examples/packet_out_new.rb +0 -18
- data/examples/packet_out_read.rb +0 -6
- data/features/arp_read.feature +0 -10
- data/features/dhcp_read.feature +0 -6
- data/features/echo_read.feature +0 -29
- data/features/exact_match.feature +0 -38
- data/features/hello_read.feature +0 -14
- data/features/icmp_read.feature +0 -55
- data/features/lldp_read.feature +0 -26
- data/features/packet_in_read.feature +0 -22
- data/features/port_status_read.feature +0 -24
- data/features/step_definitions/pending_steps.rb +0 -3
- data/spec/pio/echo/reply_spec.rb +0 -135
- data/spec/pio/echo/request_spec.rb +0 -137
- data/spec/pio/features/reply_spec.rb +0 -137
- data/spec/pio/features/request_spec.rb +0 -112
- data/spec/pio/hello_spec.rb +0 -106
- data/spec/pio/lldp_spec.rb +0 -244
- data/spec/pio/packet_in_spec.rb +0 -146
data/examples/arp_new.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
request = Pio::Arp::Request.new(
|
4
|
-
source_mac: '00:26:82:eb:ea:d1',
|
5
|
-
sender_protocol_address: '192.168.83.3',
|
6
|
-
target_protocol_address: '192.168.83.254'
|
7
|
-
)
|
8
|
-
request.to_binary # => Arp Request frame in binary format.
|
9
|
-
|
10
|
-
reply = Pio::Arp::Reply.new(
|
11
|
-
source_mac: '00:16:9d:1d:9c:c4',
|
12
|
-
destination_mac: '00:26:82:eb:ea:d1',
|
13
|
-
sender_protocol_address: '192.168.83.254',
|
14
|
-
target_protocol_address: '192.168.83.3'
|
15
|
-
)
|
16
|
-
reply.to_binary # => Arp Reply frame in binary format.
|
data/examples/arp_read.rb
DELETED
data/examples/dhcp_new.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
dhcp_client_mac_address = '24:db:ac:41:e5:5b'
|
4
|
-
|
5
|
-
dhcp_server_options =
|
6
|
-
{
|
7
|
-
source_mac: '00:26:82:eb:ea:d1',
|
8
|
-
destination_mac: '24:db:ac:41:e5:5b',
|
9
|
-
ip_source_address: '192.168.0.100',
|
10
|
-
ip_destination_address: '192.168.0.1'
|
11
|
-
}
|
12
|
-
|
13
|
-
# Client side
|
14
|
-
discover = Pio::Dhcp::Discover.new(source_mac: dhcp_client_mac_address)
|
15
|
-
discover.to_binary # => DHCP Discover frame in binary format
|
16
|
-
|
17
|
-
# Server side
|
18
|
-
offer = Pio::Dhcp::Offer.new(dhcp_server_options
|
19
|
-
.merge(transaction_id: discover.transaction_id))
|
20
|
-
offer.to_binary # => DHCP Offer frame in binary format
|
21
|
-
|
22
|
-
# Client side
|
23
|
-
request = Pio::Dhcp::Request.new(
|
24
|
-
source_mac: dhcp_client_mac_address,
|
25
|
-
server_identifier: dhcp_server_options[:ip_source_address],
|
26
|
-
requested_ip_address: dhcp_server_options[:ip_destination_address],
|
27
|
-
transaction_id: offer.transaction_id
|
28
|
-
)
|
29
|
-
request.to_binary # => DHCP Request frame in binary format
|
30
|
-
|
31
|
-
# Server side
|
32
|
-
ack = Pio::Dhcp::Ack.new(dhcp_server_options
|
33
|
-
.merge(transaction_id: request.transaction_id))
|
34
|
-
ack.to_binary # => DHCP Ack frame in binary format
|
data/examples/dhcp_read.rb
DELETED
data/examples/echo_new.rb
DELETED
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
request = Pio::Echo::Request.new
|
4
|
-
request.to_binary # => ECHO Request message in binary format.
|
5
|
-
|
6
|
-
# The ECHO xid (transaction_id)
|
7
|
-
# should be same as that of the request.
|
8
|
-
reply = Pio::Echo::Reply.new(xid: request.xid)
|
9
|
-
reply.to_binary # => ECHO Reply message in binary format.
|
data/examples/echo_read.rb
DELETED
data/examples/features_new.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
request = Pio::Features::Request.new
|
4
|
-
request.to_binary # => Features Request message in binary format.
|
5
|
-
|
6
|
-
# The Features xid (transaction_id)
|
7
|
-
# should be same as that of the request.
|
8
|
-
reply =
|
9
|
-
Pio::Features::Reply.new(xid: request.xid,
|
10
|
-
dpid: 0x123,
|
11
|
-
n_buffers: 0x100,
|
12
|
-
n_tables: 0xfe,
|
13
|
-
capabilities: [:flow_stats, :table_stats,
|
14
|
-
:port_stats, :queue_stats,
|
15
|
-
:arp_match_ip],
|
16
|
-
actions: [:output, :set_vlan_vid,
|
17
|
-
:set_vlan_pcp, :strip_vlan,
|
18
|
-
:set_dl_src, :set_dl_dst,
|
19
|
-
:set_nw_src, :set_nw_dst,
|
20
|
-
:set_nw_tos, :set_tp_src,
|
21
|
-
:set_tp_dst, :enqueue],
|
22
|
-
ports: [{ port_no: 1,
|
23
|
-
hardware_address: '11:22:33:44:55:66',
|
24
|
-
name: 'port123',
|
25
|
-
config: [:port_down],
|
26
|
-
state: [:link_down],
|
27
|
-
curr: [:port_10gb_fd, :port_copper] }])
|
28
|
-
reply.to_binary # => Features Reply message in binary format.
|
data/examples/features_read.rb
DELETED
data/examples/flow_mod_new.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
flow_mod = Pio::FlowMod.new(transaction_id: 0x15,
|
4
|
-
buffer_id: 0xffffffff,
|
5
|
-
match: Pio::Match.new(in_port: 1),
|
6
|
-
cookie: 1,
|
7
|
-
command: :add,
|
8
|
-
priority: 0xffff,
|
9
|
-
out_port: 2,
|
10
|
-
flags: [:send_flow_rem, :check_overwrap],
|
11
|
-
actions: Pio::SendOutPort.new(2))
|
12
|
-
|
13
|
-
flow_mod.to_binary # => Flow mod message in binary format.
|
data/examples/flow_mod_read.rb
DELETED
data/examples/hello_new.rb
DELETED
data/examples/hello_read.rb
DELETED
data/examples/icmp_new.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
request = Pio::Icmp::Request.new(
|
4
|
-
source_mac: '00:16:9d:1d:9c:c4',
|
5
|
-
destination_mac: '00:26:82:eb:ea:d1',
|
6
|
-
ip_source_address: '192.168.83.3',
|
7
|
-
ip_destination_address: '192.168.83.254'
|
8
|
-
)
|
9
|
-
request.to_binary # => ICMP Request frame in binary format.
|
10
|
-
|
11
|
-
reply = Pio::Icmp::Reply.new(
|
12
|
-
source_mac: '00:26:82:eb:ea:d1',
|
13
|
-
destination_mac: '00:16:9d:1d:9c:c4',
|
14
|
-
ip_source_address: '192.168.83.254',
|
15
|
-
ip_destination_address: '192.168.83.3',
|
16
|
-
# The ICMP Identifier and the ICMP Sequence number
|
17
|
-
# should be same as those of the request.
|
18
|
-
identifier: request.icmp_identifier,
|
19
|
-
sequence_number: request.icmp_sequence_number
|
20
|
-
)
|
21
|
-
reply.to_binary # => ICMP Reply frame in binary format.
|
data/examples/icmp_read.rb
DELETED
data/examples/lldp_new.rb
DELETED
data/examples/lldp_read.rb
DELETED
data/examples/packet_in_new.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
data_dump = [
|
4
|
-
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0x5d, 0x10, 0x31, 0x37,
|
5
|
-
0x79, 0x08, 0x06, 0x00, 0x01, 0x08, 0x00, 0x06, 0x04, 0x00, 0x01,
|
6
|
-
0xac, 0x5d, 0x10, 0x31, 0x37, 0x79, 0xc0, 0xa8, 0x02, 0xfe, 0xff,
|
7
|
-
0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0xa8, 0x02, 0x05, 0x00, 0x00,
|
8
|
-
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
9
|
-
0x00, 0x00, 0x00, 0x00, 0x00
|
10
|
-
].pack('C*')
|
11
|
-
|
12
|
-
packet_in = Pio::PacketIn.new(transaction_id: 0,
|
13
|
-
buffer_id: 0xffffff00,
|
14
|
-
in_port: 1,
|
15
|
-
reason: :no_match,
|
16
|
-
raw_data: data_dump)
|
17
|
-
packet_in.to_binary # => Packet-In message in binary format.
|
data/examples/packet_in_read.rb
DELETED
data/examples/packet_out_new.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'pio'
|
2
|
-
|
3
|
-
data_dump = [
|
4
|
-
0x01, 0x80, 0xc2, 0x00, 0x00, 0x0e, 0x01, 0x02, 0x03, 0x04,
|
5
|
-
0x05, 0x06, 0x88, 0xcc, 0x02, 0x09, 0x07, 0x00, 0x00, 0x00,
|
6
|
-
0x00, 0x00, 0x00, 0x01, 0x23, 0x04, 0x05, 0x07, 0x00, 0x00,
|
7
|
-
0x00, 0x0c, 0x06, 0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
|
8
|
-
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
9
|
-
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
10
|
-
0x00, 0x00, 0x00, 0x00
|
11
|
-
].pack('C*')
|
12
|
-
|
13
|
-
packet_out = Pio::PacketOut.new(transaction_id: 0x16,
|
14
|
-
buffer_id: 0xffffffff,
|
15
|
-
in_port: 0xffff,
|
16
|
-
actions: Pio::SendOutPort.new(2),
|
17
|
-
raw_data: data_dump)
|
18
|
-
packet_out.to_binary # => Packet-Out message in binary format.
|
data/examples/packet_out_read.rb
DELETED
data/features/arp_read.feature
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
Feature: Pio::Arp.read
|
2
|
-
Scenario: arp.pcap
|
3
|
-
Given a packet data file "arp.pcap"
|
4
|
-
When I try to parse the file with "Arp" class
|
5
|
-
Then it should finish successfully
|
6
|
-
|
7
|
-
Scenario: arp-storm.pcap
|
8
|
-
Given a packet data file "arp-storm.pcap"
|
9
|
-
When I try to parse the file with "Arp" class
|
10
|
-
Then it should finish successfully
|
data/features/dhcp_read.feature
DELETED
data/features/echo_read.feature
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
Feature: Pio::Echo.read
|
2
|
-
Scenario: echo_request.raw
|
3
|
-
Given a packet data file "echo_request.raw"
|
4
|
-
When I try to parse the file with "Echo::Request" class
|
5
|
-
Then it should finish successfully
|
6
|
-
And the parsed data have the following field and value:
|
7
|
-
| field | value |
|
8
|
-
| class | Pio::Echo::Request |
|
9
|
-
| ofp_version | 1 |
|
10
|
-
| message_type | 2 |
|
11
|
-
| message_length | 8 |
|
12
|
-
| transaction_id | 0 |
|
13
|
-
| xid | 0 |
|
14
|
-
| body | |
|
15
|
-
|
16
|
-
Scenario: echo_reply.raw
|
17
|
-
Given a packet data file "echo_reply.raw"
|
18
|
-
When I try to parse the file with "Echo::Reply" class
|
19
|
-
Then it should finish successfully
|
20
|
-
And the parsed data have the following field and value:
|
21
|
-
| field | value |
|
22
|
-
| class | Pio::Echo::Reply |
|
23
|
-
| ofp_version | 1 |
|
24
|
-
| message_type | 3 |
|
25
|
-
| message_length | 8 |
|
26
|
-
| transaction_id | 6 |
|
27
|
-
| xid | 6 |
|
28
|
-
| body | |
|
29
|
-
|
@@ -1,38 +0,0 @@
|
|
1
|
-
Feature: Pio::ExactMatch.new
|
2
|
-
Scenario: packet_in_arp_request.raw
|
3
|
-
Given a packet data file "packet_in_arp_request.raw"
|
4
|
-
When I try to create an exact match from the packet
|
5
|
-
And the parsed data have the following field and value:
|
6
|
-
| field | value |
|
7
|
-
| wildcards | {} |
|
8
|
-
| in_port | 1 |
|
9
|
-
| dl_src | ac:5d:10:31:37:79 |
|
10
|
-
| dl_dst | ff:ff:ff:ff:ff:ff |
|
11
|
-
| dl_vlan | 65535 |
|
12
|
-
| dl_vlan_pcp | 0 |
|
13
|
-
| dl_type | 2054 |
|
14
|
-
| nw_tos | 0 |
|
15
|
-
| nw_proto | 1 |
|
16
|
-
| nw_src | 192.168.2.254 |
|
17
|
-
| nw_dst | 192.168.2.5 |
|
18
|
-
| tp_src | 0 |
|
19
|
-
| tp_dst | 0 |
|
20
|
-
|
21
|
-
Scenario: packet_in_cbench.raw (ARP request)
|
22
|
-
Given a packet data file "packet_in_cbench.raw"
|
23
|
-
When I try to create an exact match from the packet
|
24
|
-
And the parsed data have the following field and value:
|
25
|
-
| field | value |
|
26
|
-
| wildcards | {} |
|
27
|
-
| in_port | 1 |
|
28
|
-
| dl_src | 00:00:00:00:00:01 |
|
29
|
-
| dl_dst | 80:00:00:00:00:01 |
|
30
|
-
| dl_vlan | 65535 |
|
31
|
-
| dl_vlan_pcp | 0 |
|
32
|
-
| dl_type | 2048 |
|
33
|
-
| nw_tos | 0 |
|
34
|
-
| nw_proto | 255 |
|
35
|
-
| nw_src | 192.168.0.40 |
|
36
|
-
| nw_dst | 192.168.1.40 |
|
37
|
-
| tp_src | 31256 |
|
38
|
-
| tp_dst | 22635 |
|
data/features/hello_read.feature
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
Feature: Pio::Hello.read
|
2
|
-
Scenario: hello.raw
|
3
|
-
Given a packet data file "hello.raw"
|
4
|
-
When I try to parse the file with "Hello" class
|
5
|
-
Then it should finish successfully
|
6
|
-
And the parsed data have the following field and value:
|
7
|
-
| field | value |
|
8
|
-
| class | Pio::Hello |
|
9
|
-
| ofp_version | 1 |
|
10
|
-
| message_type | 0 |
|
11
|
-
| message_length | 8 |
|
12
|
-
| transaction_id | 23 |
|
13
|
-
| xid | 23 |
|
14
|
-
| body | |
|
data/features/icmp_read.feature
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
Feature: Pio::Icmp.read
|
2
|
-
Scenario: icmp.pcap
|
3
|
-
Given a packet data file "icmp.pcap"
|
4
|
-
When I try to parse the file with "Icmp" class
|
5
|
-
Then it should finish successfully
|
6
|
-
And the parsed data #1 have the following field and value:
|
7
|
-
| field | value |
|
8
|
-
| class | Pio::Icmp::Request |
|
9
|
-
| destination_mac | 00:13:46:0b:22:ba |
|
10
|
-
| source_mac | 00:16:ce:6e:8b:24 |
|
11
|
-
| ether_type | 2048 |
|
12
|
-
| ip_version | 4 |
|
13
|
-
| ip_header_length | 5 |
|
14
|
-
| ip_type_of_service | 0 |
|
15
|
-
| ip_total_length | 60 |
|
16
|
-
| ip_identifier | 36507 |
|
17
|
-
| ip_flag | 0 |
|
18
|
-
| ip_fragment | 0 |
|
19
|
-
| ip_ttl | 128 |
|
20
|
-
| ip_protocol | 1 |
|
21
|
-
| ip_header_checksum | 10850 |
|
22
|
-
| ip_source_address | 192.168.0.114 |
|
23
|
-
| ip_destination_address | 192.168.0.1 |
|
24
|
-
| ip_option | |
|
25
|
-
| icmp_type | 8 |
|
26
|
-
| icmp_code | 0 |
|
27
|
-
| icmp_checksum | 18780 |
|
28
|
-
| icmp_identifier | 768 |
|
29
|
-
| icmp_sequence_number | 256 |
|
30
|
-
| echo_data | abcdefghijklmnopqrstuvwabcdefghi |
|
31
|
-
And the parsed data #2 have the following field and value:
|
32
|
-
| field | value |
|
33
|
-
| class | Pio::Icmp::Reply |
|
34
|
-
| destination_mac | 00:16:ce:6e:8b:24 |
|
35
|
-
| source_mac | 00:13:46:0b:22:ba |
|
36
|
-
| ether_type | 2048 |
|
37
|
-
| ip_version | 4 |
|
38
|
-
| ip_header_length | 5 |
|
39
|
-
| ip_type_of_service | 0 |
|
40
|
-
| ip_total_length | 60 |
|
41
|
-
| ip_identifier | 24150 |
|
42
|
-
| ip_flag | 0 |
|
43
|
-
| ip_fragment | 0 |
|
44
|
-
| ip_ttl | 127 |
|
45
|
-
| ip_protocol | 1 |
|
46
|
-
| ip_header_checksum | 23463 |
|
47
|
-
| ip_source_address | 192.168.0.1 |
|
48
|
-
| ip_destination_address | 192.168.0.114 |
|
49
|
-
| ip_option | |
|
50
|
-
| icmp_type | 0 |
|
51
|
-
| icmp_code | 0 |
|
52
|
-
| icmp_checksum | 20828 |
|
53
|
-
| icmp_identifier | 768 |
|
54
|
-
| icmp_sequence_number | 256 |
|
55
|
-
| echo_data | abcdefghijklmnopqrstuvwabcdefghi |
|
data/features/lldp_read.feature
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
Feature: Pio::Lldp.read
|
2
|
-
Scenario: lldp.minimal.pcap
|
3
|
-
Given a packet data file "lldp.minimal.pcap"
|
4
|
-
When I try to parse the file with "Lldp" class
|
5
|
-
Then it should finish successfully
|
6
|
-
Then the parsed data #1 have the following field and value:
|
7
|
-
| field | value |
|
8
|
-
| class | Pio::Lldp |
|
9
|
-
| destination_mac | 01:80:c2:00:00:0e |
|
10
|
-
| source_mac | 00:04:96:1f:a7:26 |
|
11
|
-
| ether_type | 35020 |
|
12
|
-
| chassis_id | 19698525990 |
|
13
|
-
| dpid | 19698525990 |
|
14
|
-
| port_id | 1/3 |
|
15
|
-
| ttl | 120 |
|
16
|
-
| port_description | |
|
17
|
-
| system_name | |
|
18
|
-
| system_description | |
|
19
|
-
| system_capabilities | |
|
20
|
-
| management_address | |
|
21
|
-
| organizationally_specific | |
|
22
|
-
|
23
|
-
Scenario: lldp.detailed.pcap
|
24
|
-
Given a packet data file "lldp.detailed.pcap"
|
25
|
-
When I try to parse the file with "Lldp" class
|
26
|
-
Then it should finish successfully
|
@@ -1,22 +0,0 @@
|
|
1
|
-
Feature: Pio::PacketIn.read
|
2
|
-
Scenario: packet_in_arp_request.raw
|
3
|
-
Given a packet data file "packet_in_arp_request.raw"
|
4
|
-
When I try to parse the file with "PacketIn" class
|
5
|
-
Then it should finish successfully
|
6
|
-
And the parsed data have the following field and value:
|
7
|
-
| field | value |
|
8
|
-
| class | Pio::PacketIn |
|
9
|
-
| ofp_version | 1 |
|
10
|
-
| message_type | 10 |
|
11
|
-
| message_length | 78 |
|
12
|
-
| transaction_id | 0 |
|
13
|
-
| xid | 0 |
|
14
|
-
| buffer_id | 4294967040 |
|
15
|
-
| total_len | 60 |
|
16
|
-
| in_port | 1 |
|
17
|
-
| reason | no_match |
|
18
|
-
| raw_data.length | 60 |
|
19
|
-
| source_mac | ac:5d:10:31:37:79 |
|
20
|
-
| source_mac.class | Pio::Mac |
|
21
|
-
| destination_mac | ff:ff:ff:ff:ff:ff |
|
22
|
-
| destination_mac.class | Pio::Mac |
|