Signed-off-by: Minoru TAKAHASHI <[email protected]>
---
 ...proto-OFP15-aggregate_stats_request.packet.json |  18 +++
 .../libofproto-OFP15-barrier_reply.packet.json     |   3 +
 .../libofproto-OFP15-barrier_request.packet.json   |   3 +
 .../of15/libofproto-OFP15-desc_reply.packet.json   |  15 +++
 .../of15/libofproto-OFP15-desc_request.packet.json |   6 +
 .../of15/libofproto-OFP15-echo_reply.packet.json   |   5 +
 .../of15/libofproto-OFP15-echo_request.packet.json |   5 +
 .../of15/libofproto-OFP15-error_msg.packet.json    |   7 ++
 ...fproto-OFP15-error_msg_experimenter.packet.json |   8 ++
 ...libofproto-OFP15-experimenter_reply.packet.json |  13 +++
 ...bofproto-OFP15-experimenter_request.packet.json |   9 ++
 .../libofproto-OFP15-features_reply.packet.json    |   9 ++
 .../libofproto-OFP15-features_request.packet.json  |   3 +
 ...libofproto-OFP15-flow_monitor_reply.packet.json |  66 +++++++++++
 ...bofproto-OFP15-flow_monitor_request.packet.json |  27 +++++
 ...libofproto-OFP15-flow_stats_request.packet.json |  18 +++
 .../libofproto-OFP15-get_async_reply.packet.json   | 122 +++++++++++++++++++++
 .../libofproto-OFP15-get_async_request.packet.json |   3 +
 .../libofproto-OFP15-get_config_reply.packet.json  |   6 +
 ...libofproto-OFP15-get_config_request.packet.json |   3 +
 ...bofproto-OFP15-group_features_reply.packet.json |  24 ++++
 ...fproto-OFP15-group_features_request.packet.json |   6 +
 .../libofproto-OFP15-group_stats_reply.packet.json |  27 +++++
 ...ibofproto-OFP15-group_stats_request.packet.json |   7 ++
 .../json/of15/libofproto-OFP15-hello.packet.json   |  20 ++++
 .../libofproto-OFP15-meter_desc_reply.packet.json  |  25 +++++
 ...libofproto-OFP15-meter_desc_request.packet.json |   7 ++
 ...bofproto-OFP15-meter_features_reply.packet.json |  17 +++
 ...fproto-OFP15-meter_features_request.packet.json |   6 +
 .../of15/libofproto-OFP15-meter_mod.packet.json    |  35 ++++++
 .../libofproto-OFP15-meter_stats_reply.packet.json |  27 +++++
 ...ibofproto-OFP15-meter_stats_request.packet.json |   7 ++
 .../libofproto-OFP15-port_desc_reply.packet.json   | 103 +++++++++++++++++
 .../of15/libofproto-OFP15-port_mod.packet.json     |  60 ++++++++++
 .../libofproto-OFP15-port_stats_reply.packet.json  | 113 +++++++++++++++++++
 ...libofproto-OFP15-port_stats_request.packet.json |   7 ++
 .../of15/libofproto-OFP15-port_status.packet.json  |  76 +++++++++++++
 .../libofproto-OFP15-queue_desc_reply.packet.json  |  81 ++++++++++++++
 .../libofproto-OFP15-queue_stats_reply.packet.json |  80 ++++++++++++++
 ...ibofproto-OFP15-queue_stats_request.packet.json |   8 ++
 .../libofproto-OFP15-requestforward.packet.json    |  62 +++++++++++
 .../of15/libofproto-OFP15-role_status.packet.json  |  41 +++++++
 .../of15/libofproto-OFP15-set_async.packet.json    | 122 +++++++++++++++++++++
 .../of15/libofproto-OFP15-set_config.packet.json   |   6 +
 .../libofproto-OFP15-table_desc_reply.packet.json  |  83 ++++++++++++++
 ...libofproto-OFP15-table_desc_request.packet.json |   6 +
 .../of15/libofproto-OFP15-table_mod.packet.json    |  56 ++++++++++
 .../libofproto-OFP15-table_stats_reply.packet.json |  24 ++++
 ...ibofproto-OFP15-table_stats_request.packet.json |   6 +
 .../of15/libofproto-OFP15-table_status.packet.json |  62 +++++++++++
 50 files changed, 1553 insertions(+)
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json
 create mode 100644 
ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json

diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
new file mode 100644
index 0000000..248131f
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-aggregate_stats_request.packet.json
@@ -0,0 +1,18 @@
+{
+   "OFPAggregateStatsRequest": {
+      "cookie": 0, 
+      "cookie_mask": 0, 
+      "flags": 0, 
+      "match": {
+         "OFPMatch": {
+            "length": 4, 
+            "oxm_fields": [], 
+            "type": 1
+         }
+      }, 
+      "out_group": 4294967295, 
+      "out_port": 4294967295, 
+      "table_id": 255, 
+      "type": 2
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json
new file mode 100644
index 0000000..11f8cfc
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_reply.packet.json
@@ -0,0 +1,3 @@
+{
+   "OFPBarrierReply": {}
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json
new file mode 100644
index 0000000..2aae9ec
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-barrier_request.packet.json
@@ -0,0 +1,3 @@
+{
+   "OFPBarrierRequest": {}
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json
new file mode 100644
index 0000000..26e5dc2
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_reply.packet.json
@@ -0,0 +1,15 @@
+{
+   "OFPDescStatsReply": {
+      "body": {
+         "OFPDescStats": {
+            "dp_desc": "dp", 
+            "hw_desc": "hw", 
+            "mfr_desc": "mfr", 
+            "serial_num": "serial", 
+            "sw_desc": "sw"
+         }
+      }, 
+      "flags": 0, 
+      "type": 0
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json
new file mode 100644
index 0000000..5b23f8b
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-desc_request.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPDescStatsRequest": {
+      "flags": 0, 
+      "type": 0
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json
new file mode 100644
index 0000000..2a57363
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_reply.packet.json
@@ -0,0 +1,5 @@
+{
+   "OFPEchoReply": {
+      "data": "aG9nZQ=="
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json
new file mode 100644
index 0000000..e1f2af4
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-echo_request.packet.json
@@ -0,0 +1,5 @@
+{
+   "OFPEchoRequest": {
+      "data": "aG9nZQ=="
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json
new file mode 100644
index 0000000..e9ab2b5
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg.packet.json
@@ -0,0 +1,7 @@
+{
+   "OFPErrorMsg": {
+      "code": 11, 
+      "data": "ZnVnYWZ1Z2E=", 
+      "type": 2
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json
new file mode 100644
index 0000000..37bfb6a
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-error_msg_experimenter.packet.json
@@ -0,0 +1,8 @@
+{
+   "OFPErrorExperimenterMsg": {
+      "data": "amlra2VuIGRhdGE=", 
+      "exp_type": 60000, 
+      "experimenter": 999999, 
+      "type": 65535
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json
new file mode 100644
index 0000000..1eb06b8
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_reply.packet.json
@@ -0,0 +1,13 @@
+{
+   "OFPExperimenterStatsReply": {
+      "body": {
+         "OFPExperimenterMultipart": {
+            "data": "dGVzdGRhdGE5OTk5OTk5OQ==", 
+            "exp_type": 3405674359, 
+            "experimenter": 3735928495
+         }
+      }, 
+      "flags": 0, 
+      "type": 65535
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json
new file mode 100644
index 0000000..93af303
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-experimenter_request.packet.json
@@ -0,0 +1,9 @@
+{
+   "OFPExperimenterStatsRequest": {
+      "data": "aG9nZWhvZ2U=", 
+      "exp_type": 3405678728, 
+      "experimenter": 3735928495, 
+      "flags": 0, 
+      "type": 65535
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json
new file mode 100644
index 0000000..12e8744
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_reply.packet.json
@@ -0,0 +1,9 @@
+{
+   "OFPSwitchFeatures": {
+      "auxiliary_id": 99, 
+      "capabilities": 79, 
+      "datapath_id": 9210263729383, 
+      "n_buffers": 0, 
+      "n_tables": 255
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json
new file mode 100644
index 0000000..8f48ad5
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-features_request.packet.json
@@ -0,0 +1,3 @@
+{
+   "OFPFeaturesRequest": {}
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json
new file mode 100644
index 0000000..8c02887
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_reply.packet.json
@@ -0,0 +1,66 @@
+{
+   "OFPFlowMonitorReply": {
+      "body": [
+         {
+            "OFPFlowUpdateFull": {
+               "cookie": 0, 
+               "event": 0, 
+               "hard_timeout": 700, 
+               "idle_timeout": 600, 
+               "instructions": [
+                  {
+                     "OFPInstructionActions": {
+                        "actions": [
+                           {
+                              "OFPActionOutput": {
+                                 "len": 16, 
+                                 "max_len": 0, 
+                                 "port": 4294967290, 
+                                 "type": 0
+                              }
+                           }
+                        ], 
+                        "len": 24, 
+                        "type": 4
+                     }
+                  }
+               ], 
+               "length": 64, 
+               "match": {
+                  "OFPMatch": {
+                     "length": 10, 
+                     "oxm_fields": [
+                        {
+                           "OXMTlv": {
+                              "field": "eth_type", 
+                              "mask": null, 
+                              "value": 2054
+                           }
+                        }
+                     ], 
+                     "type": 1
+                  }
+               }, 
+               "priority": 3, 
+               "reason": 0, 
+               "table_id": 0
+            }
+         }, 
+         {
+            "OFPFlowUpdateAbbrev": {
+               "event": 4, 
+               "length": 8, 
+               "xid": 1234
+            }
+         }, 
+         {
+            "OFPFlowUpdatePaused": {
+               "event": 5, 
+               "length": 8
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 16
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json
new file mode 100644
index 0000000..aed7dda
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_monitor_request.packet.json
@@ -0,0 +1,27 @@
+{
+   "OFPFlowMonitorRequest": {
+      "command": 0, 
+      "flags": 0, 
+      "match": {
+         "OFPMatch": {
+            "length": 14, 
+            "oxm_fields": [
+               {
+                  "OXMTlv": {
+                     "field": "eth_dst", 
+                     "mask": null, 
+                     "value": "f2:0b:a4:7d:f8:ea"
+                  }
+               }
+            ], 
+            "type": 1
+         }
+      }, 
+      "monitor_flags": 15, 
+      "monitor_id": 100000000, 
+      "out_group": 4294967295, 
+      "out_port": 22, 
+      "table_id": 33, 
+      "type": 16
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json
new file mode 100644
index 0000000..2baccad
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-flow_stats_request.packet.json
@@ -0,0 +1,18 @@
+{
+   "OFPFlowStatsRequest": {
+      "cookie": 0, 
+      "cookie_mask": 0, 
+      "flags": 0, 
+      "match": {
+         "OFPMatch": {
+            "length": 4, 
+            "oxm_fields": [], 
+            "type": 1
+         }
+      }, 
+      "out_group": 4294967295, 
+      "out_port": 4294967295, 
+      "table_id": 0, 
+      "type": 1
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json
new file mode 100644
index 0000000..82c9e79
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_reply.packet.json
@@ -0,0 +1,122 @@
+{
+   "OFPGetAsyncReply": {
+      "properties": [
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 0
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 1
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 2
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 3
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 4
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 5
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 6
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 7
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 24, 
+               "type": 8
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 24, 
+               "type": 9
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 10
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 11
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropExperimenter": {
+               "data": [], 
+               "exp_type": 0, 
+               "experimenter": 101, 
+               "length": 12, 
+               "type": 65534
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropExperimenter": {
+               "data": [
+                  1
+               ], 
+               "exp_type": 1, 
+               "experimenter": 101, 
+               "length": 16, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropExperimenter": {
+               "data": [
+                  1, 
+                  2
+               ], 
+               "exp_type": 2, 
+               "experimenter": 101, 
+               "length": 20, 
+               "type": 65535
+            }
+         }
+      ]
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json
new file mode 100644
index 0000000..7daa5a0
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_async_request.packet.json
@@ -0,0 +1,3 @@
+{
+   "OFPGetAsyncRequest": {}
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json
new file mode 100644
index 0000000..62b37b4
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_reply.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPGetConfigReply": {
+      "flags": 0, 
+      "miss_send_len": 128
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json
new file mode 100644
index 0000000..06fe51f
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-get_config_request.packet.json
@@ -0,0 +1,3 @@
+{
+   "OFPGetConfigRequest": {}
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json
new file mode 100644
index 0000000..f059f99
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_reply.packet.json
@@ -0,0 +1,24 @@
+{
+   "OFPGroupFeaturesStatsReply": {
+      "body": {
+         "OFPGroupFeaturesStats": {
+            "actions": [
+               67082241, 
+               67082241, 
+               67082241, 
+               67082241
+            ], 
+            "capabilities": 5, 
+            "max_groups": [
+               16777216, 
+               16777216, 
+               16777216, 
+               16777216
+            ], 
+            "types": 15
+         }
+      }, 
+      "flags": 0, 
+      "type": 8
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json
new file mode 100644
index 0000000..edba5dc
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_features_request.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPGroupFeaturesStatsRequest": {
+      "flags": 0, 
+      "type": 8
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json
new file mode 100644
index 0000000..cb979e5
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_reply.packet.json
@@ -0,0 +1,27 @@
+{
+   "OFPGroupStatsReply": {
+      "body": [
+         {
+            "OFPGroupStats": {
+               "bucket_stats": [
+                  {
+                     "OFPBucketCounter": {
+                        "byte_count": 2345, 
+                        "packet_count": 234
+                     }
+                  }
+               ], 
+               "byte_count": 12345, 
+               "duration_nsec": 609036000, 
+               "duration_sec": 9, 
+               "group_id": 1, 
+               "length": 56, 
+               "packet_count": 123, 
+               "ref_count": 2
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 6
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json
new file mode 100644
index 0000000..b200a81
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-group_stats_request.packet.json
@@ -0,0 +1,7 @@
+{
+   "OFPGroupStatsRequest": {
+      "flags": 0, 
+      "group_id": 4294967292, 
+      "type": 6
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json
new file mode 100644
index 0000000..d03ff84
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-hello.packet.json
@@ -0,0 +1,20 @@
+{
+   "OFPHello": {
+      "elements": [
+         {
+            "OFPHelloElemVersionBitmap": {
+               "length": 8, 
+               "type": 1, 
+               "versions": [
+                  1, 
+                  2, 
+                  3, 
+                  9, 
+                  10, 
+                  30
+               ]
+            }
+         }
+      ]
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json
new file mode 100644
index 0000000..4ea5bfc
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_reply.packet.json
@@ -0,0 +1,25 @@
+{
+   "OFPMeterDescStatsReply": {
+      "body": [
+         {
+            "OFPMeterDescStats": {
+               "bands": [
+                  {
+                     "OFPMeterBandDrop": {
+                        "burst_size": 10,
+                        "len": 16,
+                        "rate": 1000,
+                        "type": 1
+                     }
+                  }
+               ],
+               "flags": 14,
+               "length": 24,
+               "meter_id": 100
+            }
+         }
+      ],
+      "flags": 0,
+      "type": 10
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json
new file mode 100644
index 0000000..fdc1adc
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_desc_request.packet.json
@@ -0,0 +1,7 @@
+{
+   "OFPMeterDescStatsRequest": {
+      "flags": 0,
+      "meter_id": 4294967295,
+      "type": 10
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json
new file mode 100644
index 0000000..e3f6918
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_reply.packet.json
@@ -0,0 +1,17 @@
+{
+   "OFPMeterFeaturesStatsReply": {
+      "body": [
+         {
+            "OFPMeterFeaturesStats": {
+               "band_types": 2147483654, 
+               "capabilities": 15, 
+               "max_bands": 255, 
+               "max_color": 0, 
+               "max_meter": 16777216
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 11
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json
new file mode 100644
index 0000000..7363a34
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_features_request.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPMeterFeaturesStatsRequest": {
+      "flags": 0, 
+      "type": 11
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json
new file mode 100644
index 0000000..eba4540
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_mod.packet.json
@@ -0,0 +1,35 @@
+{
+   "OFPMeterMod": {
+      "bands": [
+         {
+            "OFPMeterBandDrop": {
+               "burst_size": 10, 
+               "len": 16, 
+               "rate": 1000, 
+               "type": 1
+            }
+         }, 
+         {
+            "OFPMeterBandDscpRemark": {
+               "burst_size": 10, 
+               "len": 16, 
+               "prec_level": 1, 
+               "rate": 1000, 
+               "type": 2
+            }
+         }, 
+         {
+            "OFPMeterBandExperimenter": {
+               "burst_size": 10, 
+               "experimenter": 999, 
+               "len": 16, 
+               "rate": 1000, 
+               "type": 65535
+            }
+         }
+      ], 
+      "command": 0, 
+      "flags": 14, 
+      "meter_id": 100
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json
new file mode 100644
index 0000000..1bb4b39
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_reply.packet.json
@@ -0,0 +1,27 @@
+{
+   "OFPMeterStatsReply": {
+      "body": [
+         {
+            "OFPMeterStats": {
+               "band_stats": [
+                  {
+                     "OFPMeterBandStats": {
+                        "byte_band_count": 0,
+                        "packet_band_count": 0
+                     }
+                  }
+               ],
+               "byte_in_count": 0,
+               "duration_nsec": 480000,
+               "duration_sec": 0,
+               "ref_count": 0,
+               "len": 56,
+               "meter_id": 100,
+               "packet_in_count": 0
+            }
+         }
+      ],
+      "flags": 0,
+      "type": 9
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json
new file mode 100644
index 0000000..8d45799
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-meter_stats_request.packet.json
@@ -0,0 +1,7 @@
+{
+   "OFPMeterStatsRequest": {
+      "flags": 0, 
+      "meter_id": 4294967295, 
+      "type": 9
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json
new file mode 100644
index 0000000..c281c0f
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_desc_reply.packet.json
@@ -0,0 +1,103 @@
+{
+   "OFPPortDescStatsReply": {
+      "body": [
+         {
+            "OFPPort": {
+               "config": 0, 
+               "hw_addr": "f2:0b:a4:d0:3f:70", 
+               "length": 168, 
+               "name": "Port7", 
+               "port_no": 7, 
+               "properties": [
+                  {
+                     "OFPPortDescPropEthernet": {
+                        "advertised": 10240, 
+                        "curr": 10248, 
+                        "curr_speed": 5000, 
+                        "length": 32, 
+                        "max_speed": 5000, 
+                        "peer": 10248, 
+                        "supported": 10248, 
+                        "type": 0
+                     }
+                  }, 
+                  {
+                     "OFPPortDescPropOptical": {
+                        "length": 40, 
+                        "rx_grid_freq_lmda": 1500, 
+                        "rx_max_freq_lmda": 2000, 
+                        "rx_min_freq_lmda": 1000, 
+                        "supported": 1, 
+                        "tx_grid_freq_lmda": 1500, 
+                        "tx_max_freq_lmda": 2000, 
+                        "tx_min_freq_lmda": 1000, 
+                        "tx_pwr_max": 2000, 
+                        "tx_pwr_min": 1000, 
+                        "type": 1
+                     }
+                  }, 
+                  {
+                     "OFPPortDescPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPPortDescPropExperimenter": {
+                        "data": [
+                           1
+                        ], 
+                        "exp_type": 1, 
+                        "experimenter": 101, 
+                        "length": 16, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPPortDescPropExperimenter": {
+                        "data": [
+                           1, 
+                           2
+                        ], 
+                        "exp_type": 2, 
+                        "experimenter": 101, 
+                        "length": 20, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "state": 4
+            }
+         }, 
+         {
+            "OFPPort": {
+               "config": 0, 
+               "hw_addr": "f2:0b:a4:7d:f8:ea", 
+               "length": 72, 
+               "name": "Port6", 
+               "port_no": 6, 
+               "properties": [
+                  {
+                     "OFPPortDescPropEthernet": {
+                        "advertised": 10240, 
+                        "curr": 10248, 
+                        "curr_speed": 5000, 
+                        "length": 32, 
+                        "max_speed": 5000, 
+                        "peer": 10248, 
+                        "supported": 10248, 
+                        "type": 0
+                     }
+                  }
+               ], 
+               "state": 4
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 13
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json
new file mode 100644
index 0000000..a255b9d
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_mod.packet.json
@@ -0,0 +1,60 @@
+{
+   "OFPPortMod": {
+      "config": 0, 
+      "hw_addr": "00:11:00:00:11:11", 
+      "mask": 0, 
+      "port_no": 1, 
+      "properties": [
+         {
+            "OFPPortModPropEthernet": {
+               "advertise": 4096, 
+               "length": 8, 
+               "type": 0
+            }
+         }, 
+         {
+            "OFPPortModPropOptical": {
+               "configure": 3, 
+               "fl_offset": 2000, 
+               "freq_lmda": 1500, 
+               "grid_span": 3000, 
+               "length": 24, 
+               "tx_pwr": 300, 
+               "type": 1
+            }
+         }, 
+         {
+            "OFPPortModPropExperimenter": {
+               "data": [], 
+               "exp_type": 0, 
+               "experimenter": 101, 
+               "length": 12, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPPortModPropExperimenter": {
+               "data": [
+                  1
+               ], 
+               "exp_type": 1, 
+               "experimenter": 101, 
+               "length": 16, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPPortModPropExperimenter": {
+               "data": [
+                  1, 
+                  2
+               ], 
+               "exp_type": 2, 
+               "experimenter": 101, 
+               "length": 20, 
+               "type": 65535
+            }
+         }
+      ]
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json
new file mode 100644
index 0000000..4ea4174
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_reply.packet.json
@@ -0,0 +1,113 @@
+{
+   "OFPPortStatsReply": {
+      "body": [
+         {
+            "OFPPortStats": {
+               "duration_nsec": 0, 
+               "duration_sec": 0, 
+               "length": 224, 
+               "port_no": 7, 
+               "properties": [
+                  {
+                     "OFPPortStatsPropEthernet": {
+                        "collisions": 0, 
+                        "length": 40, 
+                        "rx_crc_err": 0, 
+                        "rx_frame_err": 0, 
+                        "rx_over_err": 0, 
+                        "type": 0
+                     }
+                  }, 
+                  {
+                     "OFPPortStatsPropOptical": {
+                        "bias_current": 300, 
+                        "flags": 3, 
+                        "length": 44, 
+                        "rx_freq_lmda": 1500, 
+                        "rx_grid_span": 500, 
+                        "rx_offset": 700, 
+                        "rx_pwr": 2000, 
+                        "temperature": 273, 
+                        "tx_freq_lmda": 1500, 
+                        "tx_grid_span": 500, 
+                        "tx_offset": 700, 
+                        "tx_pwr": 2000, 
+                        "type": 1
+                     }
+                  }, 
+                  {
+                     "OFPPortStatsPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPPortStatsPropExperimenter": {
+                        "data": [
+                           1
+                        ], 
+                        "exp_type": 1, 
+                        "experimenter": 101, 
+                        "length": 16, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPPortStatsPropExperimenter": {
+                        "data": [
+                           1, 
+                           2
+                        ], 
+                        "exp_type": 2, 
+                        "experimenter": 101, 
+                        "length": 20, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "rx_bytes": 0, 
+               "rx_dropped": 0, 
+               "rx_errors": 0, 
+               "rx_packets": 0, 
+               "tx_bytes": 336, 
+               "tx_dropped": 0, 
+               "tx_errors": 0, 
+               "tx_packets": 4
+            }
+         }, 
+         {
+            "OFPPortStats": {
+               "duration_nsec": 0, 
+               "duration_sec": 0, 
+               "length": 120, 
+               "port_no": 6, 
+               "properties": [
+                  {
+                     "OFPPortStatsPropEthernet": {
+                        "collisions": 0, 
+                        "length": 40, 
+                        "rx_crc_err": 0, 
+                        "rx_frame_err": 0, 
+                        "rx_over_err": 0, 
+                        "type": 0
+                     }
+                  }
+               ], 
+               "rx_bytes": 336, 
+               "rx_dropped": 0, 
+               "rx_errors": 0, 
+               "rx_packets": 4, 
+               "tx_bytes": 336, 
+               "tx_dropped": 0, 
+               "tx_errors": 0, 
+               "tx_packets": 4
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 4
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json
new file mode 100644
index 0000000..5228710
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_stats_request.packet.json
@@ -0,0 +1,7 @@
+{
+   "OFPPortStatsRequest": {
+      "flags": 0, 
+      "port_no": 4294967295, 
+      "type": 4
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json
new file mode 100644
index 0000000..b273ac2
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-port_status.packet.json
@@ -0,0 +1,76 @@
+{
+   "OFPPortStatus": {
+      "desc": {
+         "OFPPort": {
+            "config": 0, 
+            "hw_addr": "f2:0b:a4:d0:3f:70", 
+            "length": 168, 
+            "name": "\u79c1\u306e\u30dd\u30fc\u30c8", 
+            "port_no": 7, 
+            "properties": [
+               {
+                  "OFPPortDescPropEthernet": {
+                     "advertised": 10240, 
+                     "curr": 10248, 
+                     "curr_speed": 5000, 
+                     "length": 32, 
+                     "max_speed": 5000, 
+                     "peer": 10248, 
+                     "supported": 10248, 
+                     "type": 0
+                  }
+               }, 
+               {
+                  "OFPPortDescPropOptical": {
+                     "length": 40, 
+                     "rx_grid_freq_lmda": 1500, 
+                     "rx_max_freq_lmda": 2000, 
+                     "rx_min_freq_lmda": 1000, 
+                     "supported": 1, 
+                     "tx_grid_freq_lmda": 1500, 
+                     "tx_max_freq_lmda": 2000, 
+                     "tx_min_freq_lmda": 1000, 
+                     "tx_pwr_max": 2000, 
+                     "tx_pwr_min": 1000, 
+                     "type": 1
+                  }
+               }, 
+               {
+                  "OFPPortDescPropExperimenter": {
+                     "data": [], 
+                     "exp_type": 0, 
+                     "experimenter": 101, 
+                     "length": 12, 
+                     "type": 65535
+                  }
+               }, 
+               {
+                  "OFPPortDescPropExperimenter": {
+                     "data": [
+                        1
+                     ], 
+                     "exp_type": 1, 
+                     "experimenter": 101, 
+                     "length": 16, 
+                     "type": 65535
+                  }
+               }, 
+               {
+                  "OFPPortDescPropExperimenter": {
+                     "data": [
+                        1, 
+                        2
+                     ], 
+                     "exp_type": 2, 
+                     "experimenter": 101, 
+                     "length": 20, 
+                     "type": 65535
+                  }
+               }
+            ], 
+            "state": 4
+         }
+      }, 
+      "reason": 0
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json
new file mode 100644
index 0000000..26c8f7d
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_desc_reply.packet.json
@@ -0,0 +1,81 @@
+{
+   "OFPQueueDescStatsReply": {
+      "body": [
+         {
+            "OFPQueueDesc": {
+               "len": 32, 
+               "port_no": 7, 
+               "properties": [
+                  {
+                     "OFPQueueDescPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "queue_id": 0
+            }
+         }, 
+         {
+            "OFPQueueDesc": {
+               "len": 88, 
+               "port_no": 8, 
+               "properties": [
+                  {
+                     "OFPQueueDescPropMinRate": {
+                        "length": 8, 
+                        "rate": 300, 
+                        "type": 1
+                     }
+                  }, 
+                  {
+                     "OFPQueueDescPropMaxRate": {
+                        "length": 8, 
+                        "rate": 900, 
+                        "type": 2
+                     }
+                  }, 
+                  {
+                     "OFPQueueDescPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPQueueDescPropExperimenter": {
+                        "data": [
+                           1
+                        ], 
+                        "exp_type": 1, 
+                        "experimenter": 101, 
+                        "length": 16, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPQueueDescPropExperimenter": {
+                        "data": [
+                           1, 
+                           2
+                        ], 
+                        "exp_type": 2, 
+                        "experimenter": 101, 
+                        "length": 20, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "queue_id": 1
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 15
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json
new file mode 100644
index 0000000..2c19097
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_reply.packet.json
@@ -0,0 +1,80 @@
+{
+   "OFPQueueStatsReply": {
+      "body": [
+         {
+            "OFPQueueStats": {
+               "duration_nsec": 0, 
+               "duration_sec": 0, 
+               "length": 104, 
+               "port_no": 7, 
+               "properties": [
+                  {
+                     "OFPQueueStatsPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPQueueStatsPropExperimenter": {
+                        "data": [
+                           1
+                        ], 
+                        "exp_type": 1, 
+                        "experimenter": 101, 
+                        "length": 16, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPQueueStatsPropExperimenter": {
+                        "data": [
+                           1, 
+                           2
+                        ], 
+                        "exp_type": 2, 
+                        "experimenter": 101, 
+                        "length": 20, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "queue_id": 1, 
+               "tx_bytes": 0, 
+               "tx_errors": 0, 
+               "tx_packets": 0
+            }
+         }, 
+         {
+            "OFPQueueStats": {
+               "duration_nsec": 0, 
+               "duration_sec": 0, 
+               "length": 48, 
+               "port_no": 6, 
+               "properties": [], 
+               "queue_id": 1, 
+               "tx_bytes": 0, 
+               "tx_errors": 0, 
+               "tx_packets": 0
+            }
+         }, 
+         {
+            "OFPQueueStats": {
+               "duration_nsec": 0, 
+               "duration_sec": 0, 
+               "length": 48, 
+               "port_no": 7, 
+               "properties": [], 
+               "queue_id": 2, 
+               "tx_bytes": 0, 
+               "tx_errors": 0, 
+               "tx_packets": 0
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 5
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json
new file mode 100644
index 0000000..7a12acc
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-queue_stats_request.packet.json
@@ -0,0 +1,8 @@
+{
+   "OFPQueueStatsRequest": {
+      "flags": 0, 
+      "port_no": 4294967295, 
+      "queue_id": 4294967295, 
+      "type": 5
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json
new file mode 100644
index 0000000..81b09f1
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-requestforward.packet.json
@@ -0,0 +1,62 @@
+{
+   "OFPRequestForward": {
+      "request": {
+         "OFPGroupMod": {
+            "buckets": [
+               {
+                "OFPBucket": {
+                    "action_array_len": 24,
+                    "actions": [
+                        {
+                            "OFPActionPopVlan": {
+                                "len": 8,
+                                "type": 18
+                            }
+                        },
+                        {
+                            "OFPActionSetField": {
+                                "field": {
+                                    "OXMTlv": {
+                                        "field": "ipv4_dst",
+                                        "mask": null,
+                                        "value": "192.168.2.9"
+                                    }
+                                }
+                            }
+                        }
+                    ],
+                    "bucket_id": 305419896,
+                    "len": 56,
+                    "properties": [
+                        {
+                            "OFPGroupBucketPropWeight": {
+                                "length": 8,
+                                "type": 0,
+                                "weight": 52428
+                            }
+                        },
+                        {
+                            "OFPGroupBucketPropWatch": {
+                                "length": 8,
+                                "type": 1,
+                                "watch": 56797
+                            }
+                        },
+                        {
+                            "OFPGroupBucketPropWatch": {
+                                "length": 8,
+                                "type": 2,
+                                "watch": 4008636142
+                            }
+                        }
+                    ]
+                }
+               }
+            ],
+            "command": 0,
+            "group_id": 1,
+            "type": 0
+         }
+      }
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json
new file mode 100644
index 0000000..08e46df
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-role_status.packet.json
@@ -0,0 +1,41 @@
+{
+   "OFPRoleStatus": {
+      "generation_id": 7, 
+      "properties": [
+         {
+            "OFPRolePropExperimenter": {
+               "data": [], 
+               "exp_type": 0, 
+               "experimenter": 101, 
+               "length": 12, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPRolePropExperimenter": {
+               "data": [
+                  1
+               ], 
+               "exp_type": 1, 
+               "experimenter": 101, 
+               "length": 16, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPRolePropExperimenter": {
+               "data": [
+                  1, 
+                  2
+               ], 
+               "exp_type": 2, 
+               "experimenter": 101, 
+               "length": 20, 
+               "type": 65535
+            }
+         }
+      ], 
+      "reason": 0, 
+      "role": 2
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json
new file mode 100644
index 0000000..0802c14
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_async.packet.json
@@ -0,0 +1,122 @@
+{
+   "OFPSetAsync": {
+      "properties": [
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 0
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 1
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 2
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 3
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 4
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 5
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 6
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 7
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 24, 
+               "type": 8
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 24, 
+               "type": 9
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 10
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropReasons": {
+               "length": 8, 
+               "mask": 3, 
+               "type": 11
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropExperimenter": {
+               "data": [], 
+               "exp_type": 0, 
+               "experimenter": 101, 
+               "length": 12, 
+               "type": 65534
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropExperimenter": {
+               "data": [
+                  1
+               ], 
+               "exp_type": 1, 
+               "experimenter": 101, 
+               "length": 16, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPAsyncConfigPropExperimenter": {
+               "data": [
+                  1, 
+                  2
+               ], 
+               "exp_type": 2, 
+               "experimenter": 101, 
+               "length": 20, 
+               "type": 65535
+            }
+         }
+      ]
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json
new file mode 100644
index 0000000..cd5398b
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-set_config.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPSetConfig": {
+      "flags": 0, 
+      "miss_send_len": 128
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json
new file mode 100644
index 0000000..1f3d714
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_reply.packet.json
@@ -0,0 +1,83 @@
+{
+   "OFPTableDescStatsReply": {
+      "body": [
+         {
+            "OFPTableDesc": {
+               "config": 0, 
+               "length": 24, 
+               "properties": [
+                  {
+                     "OFPTableModPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "table_id": 7
+            }
+         }, 
+         {
+            "OFPTableDesc": {
+               "config": 0, 
+               "length": 80, 
+               "properties": [
+                  {
+                     "OFPTableModPropEviction": {
+                        "flags": 0, 
+                        "length": 8, 
+                        "type": 2
+                     }
+                  }, 
+                  {
+                     "OFPTableModPropVacancy": {
+                        "length": 8, 
+                        "type": 3, 
+                        "vacancy": 0, 
+                        "vacancy_down": 0, 
+                        "vacancy_up": 0
+                     }
+                  }, 
+                  {
+                     "OFPTableModPropExperimenter": {
+                        "data": [], 
+                        "exp_type": 0, 
+                        "experimenter": 101, 
+                        "length": 12, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPTableModPropExperimenter": {
+                        "data": [
+                           1
+                        ], 
+                        "exp_type": 1, 
+                        "experimenter": 101, 
+                        "length": 16, 
+                        "type": 65535
+                     }
+                  }, 
+                  {
+                     "OFPTableModPropExperimenter": {
+                        "data": [
+                           1, 
+                           2
+                        ], 
+                        "exp_type": 2, 
+                        "experimenter": 101, 
+                        "length": 20, 
+                        "type": 65535
+                     }
+                  }
+               ], 
+               "table_id": 8
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 14
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json
new file mode 100644
index 0000000..f5a4cde
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_desc_request.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPTableDescStatsRequest": {
+      "flags": 0, 
+      "type": 14
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json
new file mode 100644
index 0000000..97acd14
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_mod.packet.json
@@ -0,0 +1,56 @@
+{
+   "OFPTableMod": {
+      "config": 0, 
+      "properties": [
+         {
+            "OFPTableModPropEviction": {
+               "flags": 0, 
+               "length": 8, 
+               "type": 2
+            }
+         }, 
+         {
+            "OFPTableModPropVacancy": {
+               "length": 8, 
+               "type": 3, 
+               "vacancy": 0, 
+               "vacancy_down": 0, 
+               "vacancy_up": 0
+            }
+         }, 
+         {
+            "OFPTableModPropExperimenter": {
+               "data": [], 
+               "exp_type": 0, 
+               "experimenter": 101, 
+               "length": 12, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPTableModPropExperimenter": {
+               "data": [
+                  1
+               ], 
+               "exp_type": 1, 
+               "experimenter": 101, 
+               "length": 16, 
+               "type": 65535
+            }
+         }, 
+         {
+            "OFPTableModPropExperimenter": {
+               "data": [
+                  1, 
+                  2
+               ], 
+               "exp_type": 2, 
+               "experimenter": 101, 
+               "length": 20, 
+               "type": 65535
+            }
+         }
+      ], 
+      "table_id": 255
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json
new file mode 100644
index 0000000..94801ad
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_reply.packet.json
@@ -0,0 +1,24 @@
+{
+   "OFPTableStatsReply": {
+      "body": [
+         {
+            "OFPTableStats": {
+               "active_count": 4, 
+               "lookup_count": 4, 
+               "matched_count": 4, 
+               "table_id": 0
+            }
+         }, 
+         {
+            "OFPTableStats": {
+               "active_count": 4, 
+               "lookup_count": 4, 
+               "matched_count": 4, 
+               "table_id": 1
+            }
+         }
+      ], 
+      "flags": 0, 
+      "type": 3
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json
 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json
new file mode 100644
index 0000000..1f965d7
--- /dev/null
+++ 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_stats_request.packet.json
@@ -0,0 +1,6 @@
+{
+   "OFPTableStatsRequest": {
+      "flags": 0, 
+      "type": 3
+   }
+}
diff --git 
a/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json 
b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json
new file mode 100644
index 0000000..fde5fb7
--- /dev/null
+++ b/ryu/tests/unit/ofproto/json/of15/libofproto-OFP15-table_status.packet.json
@@ -0,0 +1,62 @@
+{
+   "OFPTableStatus": {
+      "reason": 3, 
+      "table": {
+         "OFPTableDesc": {
+            "config": 0, 
+            "length": 80, 
+            "properties": [
+               {
+                  "OFPTableModPropEviction": {
+                     "flags": 0, 
+                     "length": 8, 
+                     "type": 2
+                  }
+               }, 
+               {
+                  "OFPTableModPropVacancy": {
+                     "length": 8, 
+                     "type": 3, 
+                     "vacancy": 0, 
+                     "vacancy_down": 0, 
+                     "vacancy_up": 0
+                  }
+               }, 
+               {
+                  "OFPTableModPropExperimenter": {
+                     "data": [], 
+                     "exp_type": 0, 
+                     "experimenter": 101, 
+                     "length": 12, 
+                     "type": 65535
+                  }
+               }, 
+               {
+                  "OFPTableModPropExperimenter": {
+                     "data": [
+                        1
+                     ], 
+                     "exp_type": 1, 
+                     "experimenter": 101, 
+                     "length": 16, 
+                     "type": 65535
+                  }
+               }, 
+               {
+                  "OFPTableModPropExperimenter": {
+                     "data": [
+                        1, 
+                        2
+                     ], 
+                     "exp_type": 2, 
+                     "experimenter": 101, 
+                     "length": 20, 
+                     "type": 65535
+                  }
+               }
+            ], 
+            "table_id": 8
+         }
+      }
+   }
+}
-- 
1.9.1


------------------------------------------------------------------------------
Monitor Your Dynamic Infrastructure at Any Scale With Datadog!
Get real-time metrics from all of your servers, apps and tools
in one place.
SourceForge users - Click here to start your Free Trial of Datadog now!
http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140
_______________________________________________
Ryu-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to